diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 95f5492..cfba63d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -73,23 +73,15 @@ BRANCH=dev sh internal/tools/sync_proto.sh 2. Update the `TestImage` value in [`qdrant_test/image_test.go`](https://github.com/qdrant/go-client/blob/master/qdrant_test/image_test.go) to `qdrant/qdrant:dev`. -3. Remove the gRPC server definitions from the auto-generated code. - -There is currently [no way](https://github.com/golang/protobuf/issues/373) to skip generating Go server definitions. - -You’ll need to manually delete them from [`snapshots_service_grpc.pb.go`](https://github.com/qdrant/go-client/blob/master/qdrant/snapshots_service_grpc.pb.go), [`points_service_grpc.pb.go`](https://github.com/qdrant/go-client/blob/master/qdrant/points_service.pb.go), and [`collections_service_grpc.pb.go`](https://github.com/qdrant/go-client/blob/master/qdrant/collections_service_grpc.pb.go). - -Remove lines starting from comments like `// CollectionsServer is the server API for Collections service.` until the end of the file. [Here’s an example commit](https://github.com/qdrant/go-client/commit/6d04e31bb2acccf54f964a634df8930533642892). - -4. Implement new Qdrant methods in [`points.go`](https://github.com/qdrant/go-client/blob/master/qdrant/points.go), [`collections.go`](https://github.com/qdrant/go-client/blob/master/qdrant/collections.go), or [`qdrant.go`](https://github.com/qdrant/go-client/blob/master/qdrant/qdrant.go) as needed and associated tests in [`qdrant_test/`](https://github.com/qdrant/go-client/tree/master/qdrant_test). +3. Implement new Qdrant methods in [`points.go`](https://github.com/qdrant/go-client/blob/master/qdrant/points.go), [`collections.go`](https://github.com/qdrant/go-client/blob/master/qdrant/collections.go), or [`qdrant.go`](https://github.com/qdrant/go-client/blob/master/qdrant/qdrant.go) as needed and associated tests in [`qdrant_test/`](https://github.com/qdrant/go-client/tree/master/qdrant_test). Since the API reference is published at https://pkg.go.dev/github.com/qdrant/go-client, the docstrings have to be appropriate. -5. If there are any new `oneOf` properties in the proto definitions, add helper constructors to [`oneof_factory.go`](https://github.com/qdrant/go-client/blob/master/qdrant/oneof_factory.go) following the existing patterns. +4. If there are any new `oneOf` properties in the proto definitions, add helper constructors to [`oneof_factory.go`](https://github.com/qdrant/go-client/blob/master/qdrant/oneof_factory.go) following the existing patterns. -6. Run the linter, formatter and tests as per the instructions above. +5. Run the linter, formatter and tests as per the instructions above. -7. Submit your pull request and get those approvals. +6. Submit your pull request and get those approvals. ### Releasing a New Version diff --git a/examples/main.go b/examples/main.go index e6f92fa..c0c2a3b 100644 --- a/examples/main.go +++ b/examples/main.go @@ -38,12 +38,6 @@ func main() { log.Fatalf("Could not get health: %v", err) } log.Printf("Qdrant version: %s", healthCheckResult.GetVersion()) - // Delete collection - err = client.DeleteCollection(ctx, collectionName) - if err != nil { - log.Fatalf("Could not delete collection: %v", err) - } - log.Println("Collection", collectionName, "deleted") // Create collection err = client.CreateCollection(ctx, &qdrant.CreateCollection{ CollectionName: collectionName, @@ -151,4 +145,10 @@ func main() { log.Fatalf("Could not search points: %v", err) } log.Printf("Found points: %s", filteredPoints) + // Delete collection + err = client.DeleteCollection(ctx, collectionName) + if err != nil { + log.Fatalf("Could not delete collection: %v", err) + } + log.Println("Collection", collectionName, "deleted") } diff --git a/internal/proto/collections.proto b/internal/proto/collections.proto index ed77244..7f3a6af 100644 --- a/internal/proto/collections.proto +++ b/internal/proto/collections.proto @@ -144,6 +144,17 @@ enum CompressionRatio { x64 = 4; } +message MaxOptimizationThreads { + enum Setting { + Auto = 0; + } + + oneof variant { + uint64 value = 1; + Setting setting = 2; + } +} + message OptimizerStatus { bool ok = 1; string error = 2; @@ -236,7 +247,7 @@ message OptimizersConfigDiff { optional uint64 max_segment_size = 4; /* Maximum size (in kilobytes) of vectors to store in-memory per segment. - Segments larger than this threshold will be stored as read-only memmaped file. + Segments larger than this threshold will be stored as read-only memmapped file. Memmap storage is disabled by default, to enable it, set this threshold to a reasonable value. @@ -259,13 +270,17 @@ message OptimizersConfigDiff { Interval between forced flushes. */ optional uint64 flush_interval_sec = 7; + + // Deprecated in favor of `max_optimization_threads` + optional uint64 deprecated_max_optimization_threads = 8; + /* Max number of threads (jobs) for running optimizations per shard. Note: each optimization job will also use `max_indexing_threads` threads by itself for index building. - If null - have no limit and choose dynamically to saturate CPU. + If "auto" - have no limit and choose dynamically to saturate CPU. If 0 - no optimization threads, optimizations will be disabled. */ - optional uint64 max_optimization_threads = 8; + optional MaxOptimizationThreads max_optimization_threads = 9; } message ScalarQuantization { @@ -319,6 +334,13 @@ message StrictModeConfig { optional uint32 search_max_hnsw_ef = 6; optional bool search_allow_exact = 7; optional float search_max_oversampling = 8; + optional uint64 upsert_max_batchsize = 9; + optional uint64 max_collection_vector_size_bytes = 10; + optional uint32 read_rate_limit = 11; // Max number of read operations per minute per replica + optional uint32 write_rate_limit = 12; // Max number of write operations per minute per replica + optional uint64 max_collection_payload_size_bytes = 13; + optional uint64 filter_max_conditions = 14; + optional uint64 condition_max_size = 15; } message CreateCollection { @@ -350,6 +372,7 @@ message UpdateCollection { optional VectorsConfigDiff vectors_config = 6; // New vector parameters optional QuantizationConfigDiff quantization_config = 7; // Quantization configuration of vector optional SparseVectorConfig sparse_vectors_config = 8; // New sparse vector parameters + optional StrictModeConfig strict_mode_config = 9; // New strict mode configuration } message DeleteCollection { @@ -429,6 +452,7 @@ message TextIndexParams { } message BoolIndexParams { + optional bool on_disk = 1; // If true - store index on disk. } message DatetimeIndexParams { @@ -529,7 +553,8 @@ enum ReplicaState { Listener = 4; // A shard which receives data, but is not used for search; Useful for backup shards PartialSnapshot = 5; // Deprecated: snapshot shard transfer is in progress; Updates should not be sent to (and are ignored by) the shard Recovery = 6; // Shard is undergoing recovered by an external node; Normally rejects updates, accepts updates if force is true - Resharding = 7; // Points are being migrated to this shard as part of resharding + Resharding = 7; // Points are being migrated to this shard as part of scale-up resharding + ReshardingScaleDown = 8; // Points are being migrated to this shard as part of scale-down resharding } message ShardKey { @@ -565,6 +590,15 @@ message ReshardingInfo { uint32 shard_id = 1; uint64 peer_id = 2; optional ShardKey shard_key = 3; + ReshardingDirection direction = 4; +} + +/* + Resharding direction, scale up or down in number of shards +*/ +enum ReshardingDirection { + Up = 0; // Scale up, add a new shard + Down = 1; // Scale down, remove a shard } message CollectionClusterInfoResponse { @@ -573,8 +607,7 @@ message CollectionClusterInfoResponse { repeated LocalShardInfo local_shards = 3; // Local shards repeated RemoteShardInfo remote_shards = 4; // Remote shards repeated ShardTransferInfo shard_transfers = 5; // Shard transfers - // TODO(resharding): enable on release: - // repeated ReshardingInfo resharding_operations = 6; // Resharding operations + repeated ReshardingInfo resharding_operations = 6; // Resharding operations } message MoveShard { diff --git a/internal/proto/points.proto b/internal/proto/points.proto index d3f99fb..ff572f5 100644 --- a/internal/proto/points.proto +++ b/internal/proto/points.proto @@ -45,11 +45,48 @@ message SparseIndices { repeated uint32 data = 1; } +message Document { + string text = 1; // Text of the document + string model = 3; // Model name + map options = 4; // Model options +} + +message Image { + Value image = 1; // Image data, either base64 encoded or URL + string model = 2; // Model name + map options = 3; // Model options +} + +message InferenceObject { + Value object = 1; // Object to infer + string model = 2; // Model name + map options = 3; // Model options +} + // Legacy vector format, which determines the vector type by the configuration of its fields. message Vector { - repeated float data = 1; // Vector data (flatten for multi vectors) - optional SparseIndices indices = 2; // Sparse indices for sparse vectors - optional uint32 vectors_count = 3; // Number of vectors per multi vector + repeated float data = 1; // Vector data (flatten for multi vectors), deprecated + optional SparseIndices indices = 2; // Sparse indices for sparse vectors, deprecated + optional uint32 vectors_count = 3; // Number of vectors per multi vector, deprecated + oneof vector { + DenseVector dense = 101; // Dense vector + SparseVector sparse = 102; // Sparse vector + MultiDenseVector multi_dense = 103; // Multi dense vector + Document document = 104; + Image image = 105; + InferenceObject object = 106; + } +} + +message VectorOutput { + repeated float data = 1; // Vector data (flatten for multi vectors), deprecated + optional SparseIndices indices = 2; // Sparse indices for sparse vectors, deprecated + optional uint32 vectors_count = 3; // Number of vectors per multi vector, deprecated + oneof vector { + DenseVector dense = 101; // Dense vector + SparseVector sparse = 102; // Sparse vector + MultiDenseVector multi_dense = 103; // Multi dense vector + } } message DenseVector { @@ -72,6 +109,9 @@ message VectorInput { DenseVector dense = 2; SparseVector sparse = 3; MultiDenseVector multi_dense = 4; + Document document = 5; + Image image = 6; + InferenceObject object = 7; } } @@ -213,6 +253,10 @@ message NamedVectors { map vectors = 1; } +message NamedVectorsOutput { + map vectors = 1; +} + message Vectors { oneof vectors_options { Vector vector = 1; @@ -220,6 +264,13 @@ message Vectors { } } +message VectorsOutput { + oneof vectors_options { + VectorOutput vector = 1; + NamedVectorsOutput vectors = 2; + } +} + message VectorsSelector { repeated string names = 1; // List of vectors to include into result } @@ -736,7 +787,7 @@ message ScoredPoint { float score = 3; // Similarity score reserved 4; // deprecated "vector" field uint64 version = 5; // Last update operation applied to this point - optional Vectors vectors = 6; // Vectors to search + optional VectorsOutput vectors = 6; // Vectors to search optional ShardKey shard_key = 7; // Shard key optional OrderValue order_value = 8; // Order by value } @@ -765,21 +816,25 @@ message GroupsResult { message SearchResponse { repeated ScoredPoint result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message QueryResponse { repeated ScoredPoint result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message QueryBatchResponse { repeated BatchResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message QueryGroupsResponse { GroupsResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message BatchResult { @@ -789,16 +844,19 @@ message BatchResult { message SearchBatchResponse { repeated BatchResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message SearchGroupsResponse { GroupsResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message CountResponse { CountResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message ScrollResponse { @@ -815,7 +873,7 @@ message RetrievedPoint { PointId id = 1; map payload = 2; reserved 3; // deprecated "vector" field - optional Vectors vectors = 4; + optional VectorsOutput vectors = 4; optional ShardKey shard_key = 5; // Shard key optional OrderValue order_value = 6; // Order-by value } @@ -828,26 +886,31 @@ message GetResponse { message RecommendResponse { repeated ScoredPoint result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message RecommendBatchResponse { repeated BatchResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message DiscoverResponse { repeated ScoredPoint result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message DiscoverBatchResponse { repeated BatchResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message RecommendGroupsResponse { GroupsResult result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message UpdateBatchResponse { @@ -863,11 +926,13 @@ message FacetResponse { message SearchMatrixPairsResponse { SearchMatrixPairs result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } message SearchMatrixOffsetsResponse { SearchMatrixOffsets result = 1; double time = 2; // Time spent to process + optional HardwareUsage usage = 3; } // --------------------------------------------- @@ -894,6 +959,7 @@ message Condition { Filter filter = 4; IsNullCondition is_null = 5; NestedCondition nested = 6; + HasVectorCondition has_vector = 7; } } @@ -909,6 +975,10 @@ message HasIdCondition { repeated PointId has_id = 1; } +message HasVectorCondition { + string has_vector = 1; +} + message NestedCondition { string key = 1; // Path to nested object Filter filter = 2; // Filter condition @@ -1020,3 +1090,13 @@ message GeoPoint { double lon = 1; double lat = 2; } + +// --------------------------------------------- +// ------------ Hardware measurements ---------- +// --------------------------------------------- + +message HardwareUsage { + uint64 cpu = 1; + uint64 io_read = 2; + uint64 io_write = 3; +} diff --git a/internal/tools/sync_proto.sh b/internal/tools/sync_proto.sh index 5e2a832..a6d2bbe 100755 --- a/internal/tools/sync_proto.sh +++ b/internal/tools/sync_proto.sh @@ -27,7 +27,7 @@ rm $CLIENT_DIR/qdrant_internal_service.proto rm $CLIENT_DIR/raft_service.proto rm $CLIENT_DIR/health_check.proto rm $CLIENT_DIR/shard_snapshots_service.proto -sed -i ' +sed -i '' ' /collections_internal_service.proto/d; /points_internal_service.proto/d; /qdrant_internal_service.proto/d; @@ -37,6 +37,6 @@ sed -i ' ' $CLIENT_DIR/qdrant.proto # Remove csharp option from proto files -sed -i '/option csharp_namespace = .*/d' $CLIENT_DIR/*.proto +sed -i '' '/option csharp_namespace = .*/d' $CLIENT_DIR/*.proto ./internal/tools/generate_proto_go.sh diff --git a/qdrant/client.go b/qdrant/client.go index f8098b4..8a34da3 100644 --- a/qdrant/client.go +++ b/qdrant/client.go @@ -72,3 +72,8 @@ func (c *Client) GetConnection() *grpc.ClientConn { func (c *Client) Close() error { return c.grpcClient.Close() } + +// Creates a pointer to a value of any type. +func PtrOf[T any](t T) *T { + return &t +} diff --git a/qdrant/collections.pb.go b/qdrant/collections.pb.go index 522aa98..8681fb8 100644 --- a/qdrant/collections.pb.go +++ b/qdrant/collections.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.34.2 -// protoc v5.27.3 +// protoc v5.28.0 // source: collections.proto package qdrant @@ -543,14 +543,15 @@ func (TokenizerType) EnumDescriptor() ([]byte, []int) { type ReplicaState int32 const ( - ReplicaState_Active ReplicaState = 0 // Active and sound - ReplicaState_Dead ReplicaState = 1 // Failed for some reason - ReplicaState_Partial ReplicaState = 2 // The shard is partially loaded and is currently receiving data from other shards - ReplicaState_Initializing ReplicaState = 3 // Collection is being created - ReplicaState_Listener ReplicaState = 4 // A shard which receives data, but is not used for search; Useful for backup shards - ReplicaState_PartialSnapshot ReplicaState = 5 // Deprecated: snapshot shard transfer is in progress; Updates should not be sent to (and are ignored by) the shard - ReplicaState_Recovery ReplicaState = 6 // Shard is undergoing recovered by an external node; Normally rejects updates, accepts updates if force is true - ReplicaState_Resharding ReplicaState = 7 // Points are being migrated to this shard as part of resharding + ReplicaState_Active ReplicaState = 0 // Active and sound + ReplicaState_Dead ReplicaState = 1 // Failed for some reason + ReplicaState_Partial ReplicaState = 2 // The shard is partially loaded and is currently receiving data from other shards + ReplicaState_Initializing ReplicaState = 3 // Collection is being created + ReplicaState_Listener ReplicaState = 4 // A shard which receives data, but is not used for search; Useful for backup shards + ReplicaState_PartialSnapshot ReplicaState = 5 // Deprecated: snapshot shard transfer is in progress; Updates should not be sent to (and are ignored by) the shard + ReplicaState_Recovery ReplicaState = 6 // Shard is undergoing recovered by an external node; Normally rejects updates, accepts updates if force is true + ReplicaState_Resharding ReplicaState = 7 // Points are being migrated to this shard as part of scale-up resharding + ReplicaState_ReshardingScaleDown ReplicaState = 8 // Points are being migrated to this shard as part of scale-down resharding ) // Enum value maps for ReplicaState. @@ -564,16 +565,18 @@ var ( 5: "PartialSnapshot", 6: "Recovery", 7: "Resharding", + 8: "ReshardingScaleDown", } ReplicaState_value = map[string]int32{ - "Active": 0, - "Dead": 1, - "Partial": 2, - "Initializing": 3, - "Listener": 4, - "PartialSnapshot": 5, - "Recovery": 6, - "Resharding": 7, + "Active": 0, + "Dead": 1, + "Partial": 2, + "Initializing": 3, + "Listener": 4, + "PartialSnapshot": 5, + "Recovery": 6, + "Resharding": 7, + "ReshardingScaleDown": 8, } ) @@ -604,6 +607,53 @@ func (ReplicaState) EnumDescriptor() ([]byte, []int) { return file_collections_proto_rawDescGZIP(), []int{10} } +// Resharding direction, scale up or down in number of shards +type ReshardingDirection int32 + +const ( + ReshardingDirection_Up ReshardingDirection = 0 // Scale up, add a new shard + ReshardingDirection_Down ReshardingDirection = 1 // Scale down, remove a shard +) + +// Enum value maps for ReshardingDirection. +var ( + ReshardingDirection_name = map[int32]string{ + 0: "Up", + 1: "Down", + } + ReshardingDirection_value = map[string]int32{ + "Up": 0, + "Down": 1, + } +) + +func (x ReshardingDirection) Enum() *ReshardingDirection { + p := new(ReshardingDirection) + *p = x + return p +} + +func (x ReshardingDirection) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ReshardingDirection) Descriptor() protoreflect.EnumDescriptor { + return file_collections_proto_enumTypes[11].Descriptor() +} + +func (ReshardingDirection) Type() protoreflect.EnumType { + return &file_collections_proto_enumTypes[11] +} + +func (x ReshardingDirection) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ReshardingDirection.Descriptor instead. +func (ReshardingDirection) EnumDescriptor() ([]byte, []int) { + return file_collections_proto_rawDescGZIP(), []int{11} +} + type ShardTransferMethod int32 const ( @@ -640,11 +690,11 @@ func (x ShardTransferMethod) String() string { } func (ShardTransferMethod) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[11].Descriptor() + return file_collections_proto_enumTypes[12].Descriptor() } func (ShardTransferMethod) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[11] + return &file_collections_proto_enumTypes[12] } func (x ShardTransferMethod) Number() protoreflect.EnumNumber { @@ -653,7 +703,50 @@ func (x ShardTransferMethod) Number() protoreflect.EnumNumber { // Deprecated: Use ShardTransferMethod.Descriptor instead. func (ShardTransferMethod) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{11} + return file_collections_proto_rawDescGZIP(), []int{12} +} + +type MaxOptimizationThreads_Setting int32 + +const ( + MaxOptimizationThreads_Auto MaxOptimizationThreads_Setting = 0 +) + +// Enum value maps for MaxOptimizationThreads_Setting. +var ( + MaxOptimizationThreads_Setting_name = map[int32]string{ + 0: "Auto", + } + MaxOptimizationThreads_Setting_value = map[string]int32{ + "Auto": 0, + } +) + +func (x MaxOptimizationThreads_Setting) Enum() *MaxOptimizationThreads_Setting { + p := new(MaxOptimizationThreads_Setting) + *p = x + return p +} + +func (x MaxOptimizationThreads_Setting) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MaxOptimizationThreads_Setting) Descriptor() protoreflect.EnumDescriptor { + return file_collections_proto_enumTypes[13].Descriptor() +} + +func (MaxOptimizationThreads_Setting) Type() protoreflect.EnumType { + return &file_collections_proto_enumTypes[13] +} + +func (x MaxOptimizationThreads_Setting) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MaxOptimizationThreads_Setting.Descriptor instead. +func (MaxOptimizationThreads_Setting) EnumDescriptor() ([]byte, []int) { + return file_collections_proto_rawDescGZIP(), []int{17, 0} } type VectorParams struct { @@ -1610,6 +1703,87 @@ func (x *ListCollectionsResponse) GetTime() float64 { return 0 } +type MaxOptimizationThreads struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Variant: + // + // *MaxOptimizationThreads_Value + // *MaxOptimizationThreads_Setting_ + Variant isMaxOptimizationThreads_Variant `protobuf_oneof:"variant"` +} + +func (x *MaxOptimizationThreads) Reset() { + *x = MaxOptimizationThreads{} + if protoimpl.UnsafeEnabled { + mi := &file_collections_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MaxOptimizationThreads) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MaxOptimizationThreads) ProtoMessage() {} + +func (x *MaxOptimizationThreads) ProtoReflect() protoreflect.Message { + mi := &file_collections_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) +} + +// Deprecated: Use MaxOptimizationThreads.ProtoReflect.Descriptor instead. +func (*MaxOptimizationThreads) Descriptor() ([]byte, []int) { + return file_collections_proto_rawDescGZIP(), []int{17} +} + +func (m *MaxOptimizationThreads) GetVariant() isMaxOptimizationThreads_Variant { + if m != nil { + return m.Variant + } + return nil +} + +func (x *MaxOptimizationThreads) GetValue() uint64 { + if x, ok := x.GetVariant().(*MaxOptimizationThreads_Value); ok { + return x.Value + } + return 0 +} + +func (x *MaxOptimizationThreads) GetSetting() MaxOptimizationThreads_Setting { + if x, ok := x.GetVariant().(*MaxOptimizationThreads_Setting_); ok { + return x.Setting + } + return MaxOptimizationThreads_Auto +} + +type isMaxOptimizationThreads_Variant interface { + isMaxOptimizationThreads_Variant() +} + +type MaxOptimizationThreads_Value struct { + Value uint64 `protobuf:"varint,1,opt,name=value,proto3,oneof"` +} + +type MaxOptimizationThreads_Setting_ struct { + Setting MaxOptimizationThreads_Setting `protobuf:"varint,2,opt,name=setting,proto3,enum=qdrant.MaxOptimizationThreads_Setting,oneof"` +} + +func (*MaxOptimizationThreads_Value) isMaxOptimizationThreads_Variant() {} + +func (*MaxOptimizationThreads_Setting_) isMaxOptimizationThreads_Variant() {} + type OptimizerStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1622,7 +1796,7 @@ type OptimizerStatus struct { func (x *OptimizerStatus) Reset() { *x = OptimizerStatus{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[17] + mi := &file_collections_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1635,7 +1809,7 @@ func (x *OptimizerStatus) String() string { func (*OptimizerStatus) ProtoMessage() {} func (x *OptimizerStatus) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[17] + mi := &file_collections_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1648,7 +1822,7 @@ func (x *OptimizerStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use OptimizerStatus.ProtoReflect.Descriptor instead. func (*OptimizerStatus) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{17} + return file_collections_proto_rawDescGZIP(), []int{18} } func (x *OptimizerStatus) GetOk() bool { @@ -1693,7 +1867,7 @@ type HnswConfigDiff struct { func (x *HnswConfigDiff) Reset() { *x = HnswConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[18] + mi := &file_collections_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1706,7 +1880,7 @@ func (x *HnswConfigDiff) String() string { func (*HnswConfigDiff) ProtoMessage() {} func (x *HnswConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[18] + mi := &file_collections_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1719,7 +1893,7 @@ func (x *HnswConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use HnswConfigDiff.ProtoReflect.Descriptor instead. func (*HnswConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{18} + return file_collections_proto_rawDescGZIP(), []int{19} } func (x *HnswConfigDiff) GetM() uint64 { @@ -1781,7 +1955,7 @@ type SparseIndexConfig struct { func (x *SparseIndexConfig) Reset() { *x = SparseIndexConfig{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[19] + mi := &file_collections_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1794,7 +1968,7 @@ func (x *SparseIndexConfig) String() string { func (*SparseIndexConfig) ProtoMessage() {} func (x *SparseIndexConfig) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[19] + mi := &file_collections_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1807,7 +1981,7 @@ func (x *SparseIndexConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SparseIndexConfig.ProtoReflect.Descriptor instead. func (*SparseIndexConfig) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{19} + return file_collections_proto_rawDescGZIP(), []int{20} } func (x *SparseIndexConfig) GetFullScanThreshold() uint64 { @@ -1843,7 +2017,7 @@ type WalConfigDiff struct { func (x *WalConfigDiff) Reset() { *x = WalConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[20] + mi := &file_collections_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1856,7 +2030,7 @@ func (x *WalConfigDiff) String() string { func (*WalConfigDiff) ProtoMessage() {} func (x *WalConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[20] + mi := &file_collections_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1869,7 +2043,7 @@ func (x *WalConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use WalConfigDiff.ProtoReflect.Descriptor instead. func (*WalConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{20} + return file_collections_proto_rawDescGZIP(), []int{21} } func (x *WalConfigDiff) GetWalCapacityMb() uint64 { @@ -1914,7 +2088,7 @@ type OptimizersConfigDiff struct { // If not set, will be automatically selected considering the number of available CPUs. MaxSegmentSize *uint64 `protobuf:"varint,4,opt,name=max_segment_size,json=maxSegmentSize,proto3,oneof" json:"max_segment_size,omitempty"` // Maximum size (in kilobytes) of vectors to store in-memory per segment. - // Segments larger than this threshold will be stored as read-only memmaped file. + // Segments larger than this threshold will be stored as read-only memmapped file. // // Memmap storage is disabled by default, to enable it, set this threshold to a reasonable value. // @@ -1932,17 +2106,19 @@ type OptimizersConfigDiff struct { IndexingThreshold *uint64 `protobuf:"varint,6,opt,name=indexing_threshold,json=indexingThreshold,proto3,oneof" json:"indexing_threshold,omitempty"` // Interval between forced flushes. FlushIntervalSec *uint64 `protobuf:"varint,7,opt,name=flush_interval_sec,json=flushIntervalSec,proto3,oneof" json:"flush_interval_sec,omitempty"` + // Deprecated in favor of `max_optimization_threads` + DeprecatedMaxOptimizationThreads *uint64 `protobuf:"varint,8,opt,name=deprecated_max_optimization_threads,json=deprecatedMaxOptimizationThreads,proto3,oneof" json:"deprecated_max_optimization_threads,omitempty"` // Max number of threads (jobs) for running optimizations per shard. // Note: each optimization job will also use `max_indexing_threads` threads by itself for index building. - // If null - have no limit and choose dynamically to saturate CPU. + // If "auto" - have no limit and choose dynamically to saturate CPU. // If 0 - no optimization threads, optimizations will be disabled. - MaxOptimizationThreads *uint64 `protobuf:"varint,8,opt,name=max_optimization_threads,json=maxOptimizationThreads,proto3,oneof" json:"max_optimization_threads,omitempty"` + MaxOptimizationThreads *MaxOptimizationThreads `protobuf:"bytes,9,opt,name=max_optimization_threads,json=maxOptimizationThreads,proto3,oneof" json:"max_optimization_threads,omitempty"` } func (x *OptimizersConfigDiff) Reset() { *x = OptimizersConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[21] + mi := &file_collections_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1955,7 +2131,7 @@ func (x *OptimizersConfigDiff) String() string { func (*OptimizersConfigDiff) ProtoMessage() {} func (x *OptimizersConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[21] + mi := &file_collections_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1968,7 +2144,7 @@ func (x *OptimizersConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use OptimizersConfigDiff.ProtoReflect.Descriptor instead. func (*OptimizersConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{21} + return file_collections_proto_rawDescGZIP(), []int{22} } func (x *OptimizersConfigDiff) GetDeletedThreshold() float64 { @@ -2020,13 +2196,20 @@ func (x *OptimizersConfigDiff) GetFlushIntervalSec() uint64 { return 0 } -func (x *OptimizersConfigDiff) GetMaxOptimizationThreads() uint64 { - if x != nil && x.MaxOptimizationThreads != nil { - return *x.MaxOptimizationThreads +func (x *OptimizersConfigDiff) GetDeprecatedMaxOptimizationThreads() uint64 { + if x != nil && x.DeprecatedMaxOptimizationThreads != nil { + return *x.DeprecatedMaxOptimizationThreads } return 0 } +func (x *OptimizersConfigDiff) GetMaxOptimizationThreads() *MaxOptimizationThreads { + if x != nil { + return x.MaxOptimizationThreads + } + return nil +} + type ScalarQuantization struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2040,7 +2223,7 @@ type ScalarQuantization struct { func (x *ScalarQuantization) Reset() { *x = ScalarQuantization{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[22] + mi := &file_collections_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2053,7 +2236,7 @@ func (x *ScalarQuantization) String() string { func (*ScalarQuantization) ProtoMessage() {} func (x *ScalarQuantization) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[22] + mi := &file_collections_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2066,7 +2249,7 @@ func (x *ScalarQuantization) ProtoReflect() protoreflect.Message { // Deprecated: Use ScalarQuantization.ProtoReflect.Descriptor instead. func (*ScalarQuantization) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{22} + return file_collections_proto_rawDescGZIP(), []int{23} } func (x *ScalarQuantization) GetType() QuantizationType { @@ -2102,7 +2285,7 @@ type ProductQuantization struct { func (x *ProductQuantization) Reset() { *x = ProductQuantization{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[23] + mi := &file_collections_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2115,7 +2298,7 @@ func (x *ProductQuantization) String() string { func (*ProductQuantization) ProtoMessage() {} func (x *ProductQuantization) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[23] + mi := &file_collections_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2128,7 +2311,7 @@ func (x *ProductQuantization) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductQuantization.ProtoReflect.Descriptor instead. func (*ProductQuantization) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{23} + return file_collections_proto_rawDescGZIP(), []int{24} } func (x *ProductQuantization) GetCompression() CompressionRatio { @@ -2156,7 +2339,7 @@ type BinaryQuantization struct { func (x *BinaryQuantization) Reset() { *x = BinaryQuantization{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[24] + mi := &file_collections_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2169,7 +2352,7 @@ func (x *BinaryQuantization) String() string { func (*BinaryQuantization) ProtoMessage() {} func (x *BinaryQuantization) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[24] + mi := &file_collections_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2182,7 +2365,7 @@ func (x *BinaryQuantization) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryQuantization.ProtoReflect.Descriptor instead. func (*BinaryQuantization) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{24} + return file_collections_proto_rawDescGZIP(), []int{25} } func (x *BinaryQuantization) GetAlwaysRam() bool { @@ -2208,7 +2391,7 @@ type QuantizationConfig struct { func (x *QuantizationConfig) Reset() { *x = QuantizationConfig{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[25] + mi := &file_collections_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2221,7 +2404,7 @@ func (x *QuantizationConfig) String() string { func (*QuantizationConfig) ProtoMessage() {} func (x *QuantizationConfig) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[25] + mi := &file_collections_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2234,7 +2417,7 @@ func (x *QuantizationConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use QuantizationConfig.ProtoReflect.Descriptor instead. func (*QuantizationConfig) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{25} + return file_collections_proto_rawDescGZIP(), []int{26} } func (m *QuantizationConfig) GetQuantization() isQuantizationConfig_Quantization { @@ -2296,7 +2479,7 @@ type Disabled struct { func (x *Disabled) Reset() { *x = Disabled{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[26] + mi := &file_collections_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2309,7 +2492,7 @@ func (x *Disabled) String() string { func (*Disabled) ProtoMessage() {} func (x *Disabled) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[26] + mi := &file_collections_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2322,7 +2505,7 @@ func (x *Disabled) ProtoReflect() protoreflect.Message { // Deprecated: Use Disabled.ProtoReflect.Descriptor instead. func (*Disabled) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{26} + return file_collections_proto_rawDescGZIP(), []int{27} } type QuantizationConfigDiff struct { @@ -2342,7 +2525,7 @@ type QuantizationConfigDiff struct { func (x *QuantizationConfigDiff) Reset() { *x = QuantizationConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[27] + mi := &file_collections_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2355,7 +2538,7 @@ func (x *QuantizationConfigDiff) String() string { func (*QuantizationConfigDiff) ProtoMessage() {} func (x *QuantizationConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[27] + mi := &file_collections_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2368,7 +2551,7 @@ func (x *QuantizationConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use QuantizationConfigDiff.ProtoReflect.Descriptor instead. func (*QuantizationConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{27} + return file_collections_proto_rawDescGZIP(), []int{28} } func (m *QuantizationConfigDiff) GetQuantization() isQuantizationConfigDiff_Quantization { @@ -2439,20 +2622,27 @@ type StrictModeConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Enabled *bool `protobuf:"varint,1,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"` - MaxQueryLimit *uint32 `protobuf:"varint,2,opt,name=max_query_limit,json=maxQueryLimit,proto3,oneof" json:"max_query_limit,omitempty"` - MaxTimeout *uint32 `protobuf:"varint,3,opt,name=max_timeout,json=maxTimeout,proto3,oneof" json:"max_timeout,omitempty"` - UnindexedFilteringRetrieve *bool `protobuf:"varint,4,opt,name=unindexed_filtering_retrieve,json=unindexedFilteringRetrieve,proto3,oneof" json:"unindexed_filtering_retrieve,omitempty"` - UnindexedFilteringUpdate *bool `protobuf:"varint,5,opt,name=unindexed_filtering_update,json=unindexedFilteringUpdate,proto3,oneof" json:"unindexed_filtering_update,omitempty"` - SearchMaxHnswEf *uint32 `protobuf:"varint,6,opt,name=search_max_hnsw_ef,json=searchMaxHnswEf,proto3,oneof" json:"search_max_hnsw_ef,omitempty"` - SearchAllowExact *bool `protobuf:"varint,7,opt,name=search_allow_exact,json=searchAllowExact,proto3,oneof" json:"search_allow_exact,omitempty"` - SearchMaxOversampling *float32 `protobuf:"fixed32,8,opt,name=search_max_oversampling,json=searchMaxOversampling,proto3,oneof" json:"search_max_oversampling,omitempty"` + Enabled *bool `protobuf:"varint,1,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"` + MaxQueryLimit *uint32 `protobuf:"varint,2,opt,name=max_query_limit,json=maxQueryLimit,proto3,oneof" json:"max_query_limit,omitempty"` + MaxTimeout *uint32 `protobuf:"varint,3,opt,name=max_timeout,json=maxTimeout,proto3,oneof" json:"max_timeout,omitempty"` + UnindexedFilteringRetrieve *bool `protobuf:"varint,4,opt,name=unindexed_filtering_retrieve,json=unindexedFilteringRetrieve,proto3,oneof" json:"unindexed_filtering_retrieve,omitempty"` + UnindexedFilteringUpdate *bool `protobuf:"varint,5,opt,name=unindexed_filtering_update,json=unindexedFilteringUpdate,proto3,oneof" json:"unindexed_filtering_update,omitempty"` + SearchMaxHnswEf *uint32 `protobuf:"varint,6,opt,name=search_max_hnsw_ef,json=searchMaxHnswEf,proto3,oneof" json:"search_max_hnsw_ef,omitempty"` + SearchAllowExact *bool `protobuf:"varint,7,opt,name=search_allow_exact,json=searchAllowExact,proto3,oneof" json:"search_allow_exact,omitempty"` + SearchMaxOversampling *float32 `protobuf:"fixed32,8,opt,name=search_max_oversampling,json=searchMaxOversampling,proto3,oneof" json:"search_max_oversampling,omitempty"` + UpsertMaxBatchsize *uint64 `protobuf:"varint,9,opt,name=upsert_max_batchsize,json=upsertMaxBatchsize,proto3,oneof" json:"upsert_max_batchsize,omitempty"` + MaxCollectionVectorSizeBytes *uint64 `protobuf:"varint,10,opt,name=max_collection_vector_size_bytes,json=maxCollectionVectorSizeBytes,proto3,oneof" json:"max_collection_vector_size_bytes,omitempty"` + ReadRateLimit *uint32 `protobuf:"varint,11,opt,name=read_rate_limit,json=readRateLimit,proto3,oneof" json:"read_rate_limit,omitempty"` // Max number of read operations per minute per replica + WriteRateLimit *uint32 `protobuf:"varint,12,opt,name=write_rate_limit,json=writeRateLimit,proto3,oneof" json:"write_rate_limit,omitempty"` // Max number of write operations per minute per replica + MaxCollectionPayloadSizeBytes *uint64 `protobuf:"varint,13,opt,name=max_collection_payload_size_bytes,json=maxCollectionPayloadSizeBytes,proto3,oneof" json:"max_collection_payload_size_bytes,omitempty"` + FilterMaxConditions *uint64 `protobuf:"varint,14,opt,name=filter_max_conditions,json=filterMaxConditions,proto3,oneof" json:"filter_max_conditions,omitempty"` + ConditionMaxSize *uint64 `protobuf:"varint,15,opt,name=condition_max_size,json=conditionMaxSize,proto3,oneof" json:"condition_max_size,omitempty"` } func (x *StrictModeConfig) Reset() { *x = StrictModeConfig{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[28] + mi := &file_collections_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2465,7 +2655,7 @@ func (x *StrictModeConfig) String() string { func (*StrictModeConfig) ProtoMessage() {} func (x *StrictModeConfig) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[28] + mi := &file_collections_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2478,7 +2668,7 @@ func (x *StrictModeConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use StrictModeConfig.ProtoReflect.Descriptor instead. func (*StrictModeConfig) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{28} + return file_collections_proto_rawDescGZIP(), []int{29} } func (x *StrictModeConfig) GetEnabled() bool { @@ -2537,6 +2727,55 @@ func (x *StrictModeConfig) GetSearchMaxOversampling() float32 { return 0 } +func (x *StrictModeConfig) GetUpsertMaxBatchsize() uint64 { + if x != nil && x.UpsertMaxBatchsize != nil { + return *x.UpsertMaxBatchsize + } + return 0 +} + +func (x *StrictModeConfig) GetMaxCollectionVectorSizeBytes() uint64 { + if x != nil && x.MaxCollectionVectorSizeBytes != nil { + return *x.MaxCollectionVectorSizeBytes + } + return 0 +} + +func (x *StrictModeConfig) GetReadRateLimit() uint32 { + if x != nil && x.ReadRateLimit != nil { + return *x.ReadRateLimit + } + return 0 +} + +func (x *StrictModeConfig) GetWriteRateLimit() uint32 { + if x != nil && x.WriteRateLimit != nil { + return *x.WriteRateLimit + } + return 0 +} + +func (x *StrictModeConfig) GetMaxCollectionPayloadSizeBytes() uint64 { + if x != nil && x.MaxCollectionPayloadSizeBytes != nil { + return *x.MaxCollectionPayloadSizeBytes + } + return 0 +} + +func (x *StrictModeConfig) GetFilterMaxConditions() uint64 { + if x != nil && x.FilterMaxConditions != nil { + return *x.FilterMaxConditions + } + return 0 +} + +func (x *StrictModeConfig) GetConditionMaxSize() uint64 { + if x != nil && x.ConditionMaxSize != nil { + return *x.ConditionMaxSize + } + return 0 +} + type CreateCollection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2562,7 +2801,7 @@ type CreateCollection struct { func (x *CreateCollection) Reset() { *x = CreateCollection{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[29] + mi := &file_collections_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2575,7 +2814,7 @@ func (x *CreateCollection) String() string { func (*CreateCollection) ProtoMessage() {} func (x *CreateCollection) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[29] + mi := &file_collections_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2588,7 +2827,7 @@ func (x *CreateCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateCollection.ProtoReflect.Descriptor instead. func (*CreateCollection) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{29} + return file_collections_proto_rawDescGZIP(), []int{30} } func (x *CreateCollection) GetCollectionName() string { @@ -2709,12 +2948,13 @@ type UpdateCollection struct { VectorsConfig *VectorsConfigDiff `protobuf:"bytes,6,opt,name=vectors_config,json=vectorsConfig,proto3,oneof" json:"vectors_config,omitempty"` // New vector parameters QuantizationConfig *QuantizationConfigDiff `protobuf:"bytes,7,opt,name=quantization_config,json=quantizationConfig,proto3,oneof" json:"quantization_config,omitempty"` // Quantization configuration of vector SparseVectorsConfig *SparseVectorConfig `protobuf:"bytes,8,opt,name=sparse_vectors_config,json=sparseVectorsConfig,proto3,oneof" json:"sparse_vectors_config,omitempty"` // New sparse vector parameters + StrictModeConfig *StrictModeConfig `protobuf:"bytes,9,opt,name=strict_mode_config,json=strictModeConfig,proto3,oneof" json:"strict_mode_config,omitempty"` // New strict mode configuration } func (x *UpdateCollection) Reset() { *x = UpdateCollection{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[30] + mi := &file_collections_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2727,7 +2967,7 @@ func (x *UpdateCollection) String() string { func (*UpdateCollection) ProtoMessage() {} func (x *UpdateCollection) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[30] + mi := &file_collections_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2740,7 +2980,7 @@ func (x *UpdateCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateCollection.ProtoReflect.Descriptor instead. func (*UpdateCollection) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{30} + return file_collections_proto_rawDescGZIP(), []int{31} } func (x *UpdateCollection) GetCollectionName() string { @@ -2799,6 +3039,13 @@ func (x *UpdateCollection) GetSparseVectorsConfig() *SparseVectorConfig { return nil } +func (x *UpdateCollection) GetStrictModeConfig() *StrictModeConfig { + if x != nil { + return x.StrictModeConfig + } + return nil +} + type DeleteCollection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2811,7 +3058,7 @@ type DeleteCollection struct { func (x *DeleteCollection) Reset() { *x = DeleteCollection{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[31] + mi := &file_collections_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2824,7 +3071,7 @@ func (x *DeleteCollection) String() string { func (*DeleteCollection) ProtoMessage() {} func (x *DeleteCollection) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[31] + mi := &file_collections_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2837,7 +3084,7 @@ func (x *DeleteCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCollection.ProtoReflect.Descriptor instead. func (*DeleteCollection) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{31} + return file_collections_proto_rawDescGZIP(), []int{32} } func (x *DeleteCollection) GetCollectionName() string { @@ -2866,7 +3113,7 @@ type CollectionOperationResponse struct { func (x *CollectionOperationResponse) Reset() { *x = CollectionOperationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[32] + mi := &file_collections_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2879,7 +3126,7 @@ func (x *CollectionOperationResponse) String() string { func (*CollectionOperationResponse) ProtoMessage() {} func (x *CollectionOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[32] + mi := &file_collections_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2892,7 +3139,7 @@ func (x *CollectionOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionOperationResponse.ProtoReflect.Descriptor instead. func (*CollectionOperationResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{32} + return file_collections_proto_rawDescGZIP(), []int{33} } func (x *CollectionOperationResponse) GetResult() bool { @@ -2927,7 +3174,7 @@ type CollectionParams struct { func (x *CollectionParams) Reset() { *x = CollectionParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[33] + mi := &file_collections_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +3187,7 @@ func (x *CollectionParams) String() string { func (*CollectionParams) ProtoMessage() {} func (x *CollectionParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[33] + mi := &file_collections_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +3200,7 @@ func (x *CollectionParams) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionParams.ProtoReflect.Descriptor instead. func (*CollectionParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{33} + return file_collections_proto_rawDescGZIP(), []int{34} } func (x *CollectionParams) GetShardNumber() uint32 { @@ -3026,7 +3273,7 @@ type CollectionParamsDiff struct { func (x *CollectionParamsDiff) Reset() { *x = CollectionParamsDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[34] + mi := &file_collections_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3039,7 +3286,7 @@ func (x *CollectionParamsDiff) String() string { func (*CollectionParamsDiff) ProtoMessage() {} func (x *CollectionParamsDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[34] + mi := &file_collections_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3052,7 +3299,7 @@ func (x *CollectionParamsDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionParamsDiff.ProtoReflect.Descriptor instead. func (*CollectionParamsDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{34} + return file_collections_proto_rawDescGZIP(), []int{35} } func (x *CollectionParamsDiff) GetReplicationFactor() uint32 { @@ -3099,7 +3346,7 @@ type CollectionConfig struct { func (x *CollectionConfig) Reset() { *x = CollectionConfig{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[35] + mi := &file_collections_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3112,7 +3359,7 @@ func (x *CollectionConfig) String() string { func (*CollectionConfig) ProtoMessage() {} func (x *CollectionConfig) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[35] + mi := &file_collections_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3125,7 +3372,7 @@ func (x *CollectionConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionConfig.ProtoReflect.Descriptor instead. func (*CollectionConfig) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{35} + return file_collections_proto_rawDescGZIP(), []int{36} } func (x *CollectionConfig) GetParams() *CollectionParams { @@ -3182,7 +3429,7 @@ type KeywordIndexParams struct { func (x *KeywordIndexParams) Reset() { *x = KeywordIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[36] + mi := &file_collections_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3195,7 +3442,7 @@ func (x *KeywordIndexParams) String() string { func (*KeywordIndexParams) ProtoMessage() {} func (x *KeywordIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[36] + mi := &file_collections_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3208,7 +3455,7 @@ func (x *KeywordIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use KeywordIndexParams.ProtoReflect.Descriptor instead. func (*KeywordIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{36} + return file_collections_proto_rawDescGZIP(), []int{37} } func (x *KeywordIndexParams) GetIsTenant() bool { @@ -3239,7 +3486,7 @@ type IntegerIndexParams struct { func (x *IntegerIndexParams) Reset() { *x = IntegerIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[37] + mi := &file_collections_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3252,7 +3499,7 @@ func (x *IntegerIndexParams) String() string { func (*IntegerIndexParams) ProtoMessage() {} func (x *IntegerIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[37] + mi := &file_collections_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3265,7 +3512,7 @@ func (x *IntegerIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use IntegerIndexParams.ProtoReflect.Descriptor instead. func (*IntegerIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{37} + return file_collections_proto_rawDescGZIP(), []int{38} } func (x *IntegerIndexParams) GetLookup() bool { @@ -3308,7 +3555,7 @@ type FloatIndexParams struct { func (x *FloatIndexParams) Reset() { *x = FloatIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[38] + mi := &file_collections_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3321,7 +3568,7 @@ func (x *FloatIndexParams) String() string { func (*FloatIndexParams) ProtoMessage() {} func (x *FloatIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[38] + mi := &file_collections_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3334,7 +3581,7 @@ func (x *FloatIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use FloatIndexParams.ProtoReflect.Descriptor instead. func (*FloatIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{38} + return file_collections_proto_rawDescGZIP(), []int{39} } func (x *FloatIndexParams) GetOnDisk() bool { @@ -3362,7 +3609,7 @@ type GeoIndexParams struct { func (x *GeoIndexParams) Reset() { *x = GeoIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[39] + mi := &file_collections_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3375,7 +3622,7 @@ func (x *GeoIndexParams) String() string { func (*GeoIndexParams) ProtoMessage() {} func (x *GeoIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[39] + mi := &file_collections_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3388,7 +3635,7 @@ func (x *GeoIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use GeoIndexParams.ProtoReflect.Descriptor instead. func (*GeoIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{39} + return file_collections_proto_rawDescGZIP(), []int{40} } func (x *GeoIndexParams) GetOnDisk() bool { @@ -3413,7 +3660,7 @@ type TextIndexParams struct { func (x *TextIndexParams) Reset() { *x = TextIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[40] + mi := &file_collections_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3426,7 +3673,7 @@ func (x *TextIndexParams) String() string { func (*TextIndexParams) ProtoMessage() {} func (x *TextIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[40] + mi := &file_collections_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3439,7 +3686,7 @@ func (x *TextIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use TextIndexParams.ProtoReflect.Descriptor instead. func (*TextIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{40} + return file_collections_proto_rawDescGZIP(), []int{41} } func (x *TextIndexParams) GetTokenizer() TokenizerType { @@ -3481,12 +3728,14 @@ type BoolIndexParams struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + OnDisk *bool `protobuf:"varint,1,opt,name=on_disk,json=onDisk,proto3,oneof" json:"on_disk,omitempty"` // If true - store index on disk. } func (x *BoolIndexParams) Reset() { *x = BoolIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[41] + mi := &file_collections_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3499,7 +3748,7 @@ func (x *BoolIndexParams) String() string { func (*BoolIndexParams) ProtoMessage() {} func (x *BoolIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[41] + mi := &file_collections_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3512,7 +3761,14 @@ func (x *BoolIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use BoolIndexParams.ProtoReflect.Descriptor instead. func (*BoolIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{41} + return file_collections_proto_rawDescGZIP(), []int{42} +} + +func (x *BoolIndexParams) GetOnDisk() bool { + if x != nil && x.OnDisk != nil { + return *x.OnDisk + } + return false } type DatetimeIndexParams struct { @@ -3527,7 +3783,7 @@ type DatetimeIndexParams struct { func (x *DatetimeIndexParams) Reset() { *x = DatetimeIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[42] + mi := &file_collections_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3540,7 +3796,7 @@ func (x *DatetimeIndexParams) String() string { func (*DatetimeIndexParams) ProtoMessage() {} func (x *DatetimeIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[42] + mi := &file_collections_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3553,7 +3809,7 @@ func (x *DatetimeIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use DatetimeIndexParams.ProtoReflect.Descriptor instead. func (*DatetimeIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{42} + return file_collections_proto_rawDescGZIP(), []int{43} } func (x *DatetimeIndexParams) GetOnDisk() bool { @@ -3582,7 +3838,7 @@ type UuidIndexParams struct { func (x *UuidIndexParams) Reset() { *x = UuidIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[43] + mi := &file_collections_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3595,7 +3851,7 @@ func (x *UuidIndexParams) String() string { func (*UuidIndexParams) ProtoMessage() {} func (x *UuidIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[43] + mi := &file_collections_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3608,7 +3864,7 @@ func (x *UuidIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use UuidIndexParams.ProtoReflect.Descriptor instead. func (*UuidIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{43} + return file_collections_proto_rawDescGZIP(), []int{44} } func (x *UuidIndexParams) GetIsTenant() bool { @@ -3646,7 +3902,7 @@ type PayloadIndexParams struct { func (x *PayloadIndexParams) Reset() { *x = PayloadIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[44] + mi := &file_collections_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3659,7 +3915,7 @@ func (x *PayloadIndexParams) String() string { func (*PayloadIndexParams) ProtoMessage() {} func (x *PayloadIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[44] + mi := &file_collections_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3672,7 +3928,7 @@ func (x *PayloadIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadIndexParams.ProtoReflect.Descriptor instead. func (*PayloadIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{44} + return file_collections_proto_rawDescGZIP(), []int{45} } func (m *PayloadIndexParams) GetIndexParams() isPayloadIndexParams_IndexParams { @@ -3803,7 +4059,7 @@ type PayloadSchemaInfo struct { func (x *PayloadSchemaInfo) Reset() { *x = PayloadSchemaInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[45] + mi := &file_collections_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3816,7 +4072,7 @@ func (x *PayloadSchemaInfo) String() string { func (*PayloadSchemaInfo) ProtoMessage() {} func (x *PayloadSchemaInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[45] + mi := &file_collections_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3829,7 +4085,7 @@ func (x *PayloadSchemaInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadSchemaInfo.ProtoReflect.Descriptor instead. func (*PayloadSchemaInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{45} + return file_collections_proto_rawDescGZIP(), []int{46} } func (x *PayloadSchemaInfo) GetDataType() PayloadSchemaType { @@ -3871,7 +4127,7 @@ type CollectionInfo struct { func (x *CollectionInfo) Reset() { *x = CollectionInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[46] + mi := &file_collections_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3884,7 +4140,7 @@ func (x *CollectionInfo) String() string { func (*CollectionInfo) ProtoMessage() {} func (x *CollectionInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[46] + mi := &file_collections_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3897,7 +4153,7 @@ func (x *CollectionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionInfo.ProtoReflect.Descriptor instead. func (*CollectionInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{46} + return file_collections_proto_rawDescGZIP(), []int{47} } func (x *CollectionInfo) GetStatus() CollectionStatus { @@ -3968,7 +4224,7 @@ type ChangeAliases struct { func (x *ChangeAliases) Reset() { *x = ChangeAliases{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[47] + mi := &file_collections_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3981,7 +4237,7 @@ func (x *ChangeAliases) String() string { func (*ChangeAliases) ProtoMessage() {} func (x *ChangeAliases) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[47] + mi := &file_collections_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3994,7 +4250,7 @@ func (x *ChangeAliases) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeAliases.ProtoReflect.Descriptor instead. func (*ChangeAliases) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{47} + return file_collections_proto_rawDescGZIP(), []int{48} } func (x *ChangeAliases) GetActions() []*AliasOperations { @@ -4027,7 +4283,7 @@ type AliasOperations struct { func (x *AliasOperations) Reset() { *x = AliasOperations{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[48] + mi := &file_collections_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4040,7 +4296,7 @@ func (x *AliasOperations) String() string { func (*AliasOperations) ProtoMessage() {} func (x *AliasOperations) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[48] + mi := &file_collections_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4053,7 +4309,7 @@ func (x *AliasOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use AliasOperations.ProtoReflect.Descriptor instead. func (*AliasOperations) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{48} + return file_collections_proto_rawDescGZIP(), []int{49} } func (m *AliasOperations) GetAction() isAliasOperations_Action { @@ -4118,7 +4374,7 @@ type CreateAlias struct { func (x *CreateAlias) Reset() { *x = CreateAlias{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[49] + mi := &file_collections_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4131,7 +4387,7 @@ func (x *CreateAlias) String() string { func (*CreateAlias) ProtoMessage() {} func (x *CreateAlias) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[49] + mi := &file_collections_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4144,7 +4400,7 @@ func (x *CreateAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAlias.ProtoReflect.Descriptor instead. func (*CreateAlias) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{49} + return file_collections_proto_rawDescGZIP(), []int{50} } func (x *CreateAlias) GetCollectionName() string { @@ -4173,7 +4429,7 @@ type RenameAlias struct { func (x *RenameAlias) Reset() { *x = RenameAlias{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[50] + mi := &file_collections_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4186,7 +4442,7 @@ func (x *RenameAlias) String() string { func (*RenameAlias) ProtoMessage() {} func (x *RenameAlias) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[50] + mi := &file_collections_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4199,7 +4455,7 @@ func (x *RenameAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameAlias.ProtoReflect.Descriptor instead. func (*RenameAlias) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{50} + return file_collections_proto_rawDescGZIP(), []int{51} } func (x *RenameAlias) GetOldAliasName() string { @@ -4227,7 +4483,7 @@ type DeleteAlias struct { func (x *DeleteAlias) Reset() { *x = DeleteAlias{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[51] + mi := &file_collections_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4240,7 +4496,7 @@ func (x *DeleteAlias) String() string { func (*DeleteAlias) ProtoMessage() {} func (x *DeleteAlias) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[51] + mi := &file_collections_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4253,7 +4509,7 @@ func (x *DeleteAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAlias.ProtoReflect.Descriptor instead. func (*DeleteAlias) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{51} + return file_collections_proto_rawDescGZIP(), []int{52} } func (x *DeleteAlias) GetAliasName() string { @@ -4272,7 +4528,7 @@ type ListAliasesRequest struct { func (x *ListAliasesRequest) Reset() { *x = ListAliasesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[52] + mi := &file_collections_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4285,7 +4541,7 @@ func (x *ListAliasesRequest) String() string { func (*ListAliasesRequest) ProtoMessage() {} func (x *ListAliasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[52] + mi := &file_collections_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4298,7 +4554,7 @@ func (x *ListAliasesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAliasesRequest.ProtoReflect.Descriptor instead. func (*ListAliasesRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{52} + return file_collections_proto_rawDescGZIP(), []int{53} } type ListCollectionAliasesRequest struct { @@ -4312,7 +4568,7 @@ type ListCollectionAliasesRequest struct { func (x *ListCollectionAliasesRequest) Reset() { *x = ListCollectionAliasesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[53] + mi := &file_collections_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4325,7 +4581,7 @@ func (x *ListCollectionAliasesRequest) String() string { func (*ListCollectionAliasesRequest) ProtoMessage() {} func (x *ListCollectionAliasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[53] + mi := &file_collections_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4338,7 +4594,7 @@ func (x *ListCollectionAliasesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCollectionAliasesRequest.ProtoReflect.Descriptor instead. func (*ListCollectionAliasesRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{53} + return file_collections_proto_rawDescGZIP(), []int{54} } func (x *ListCollectionAliasesRequest) GetCollectionName() string { @@ -4360,7 +4616,7 @@ type AliasDescription struct { func (x *AliasDescription) Reset() { *x = AliasDescription{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[54] + mi := &file_collections_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4373,7 +4629,7 @@ func (x *AliasDescription) String() string { func (*AliasDescription) ProtoMessage() {} func (x *AliasDescription) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[54] + mi := &file_collections_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4386,7 +4642,7 @@ func (x *AliasDescription) ProtoReflect() protoreflect.Message { // Deprecated: Use AliasDescription.ProtoReflect.Descriptor instead. func (*AliasDescription) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{54} + return file_collections_proto_rawDescGZIP(), []int{55} } func (x *AliasDescription) GetAliasName() string { @@ -4415,7 +4671,7 @@ type ListAliasesResponse struct { func (x *ListAliasesResponse) Reset() { *x = ListAliasesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[55] + mi := &file_collections_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4428,7 +4684,7 @@ func (x *ListAliasesResponse) String() string { func (*ListAliasesResponse) ProtoMessage() {} func (x *ListAliasesResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[55] + mi := &file_collections_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4441,7 +4697,7 @@ func (x *ListAliasesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAliasesResponse.ProtoReflect.Descriptor instead. func (*ListAliasesResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{55} + return file_collections_proto_rawDescGZIP(), []int{56} } func (x *ListAliasesResponse) GetAliases() []*AliasDescription { @@ -4469,7 +4725,7 @@ type CollectionClusterInfoRequest struct { func (x *CollectionClusterInfoRequest) Reset() { *x = CollectionClusterInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[56] + mi := &file_collections_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4482,7 +4738,7 @@ func (x *CollectionClusterInfoRequest) String() string { func (*CollectionClusterInfoRequest) ProtoMessage() {} func (x *CollectionClusterInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[56] + mi := &file_collections_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4495,7 +4751,7 @@ func (x *CollectionClusterInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionClusterInfoRequest.ProtoReflect.Descriptor instead. func (*CollectionClusterInfoRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{56} + return file_collections_proto_rawDescGZIP(), []int{57} } func (x *CollectionClusterInfoRequest) GetCollectionName() string { @@ -4520,7 +4776,7 @@ type ShardKey struct { func (x *ShardKey) Reset() { *x = ShardKey{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[57] + mi := &file_collections_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4533,7 +4789,7 @@ func (x *ShardKey) String() string { func (*ShardKey) ProtoMessage() {} func (x *ShardKey) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[57] + mi := &file_collections_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4546,7 +4802,7 @@ func (x *ShardKey) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardKey.ProtoReflect.Descriptor instead. func (*ShardKey) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{57} + return file_collections_proto_rawDescGZIP(), []int{58} } func (m *ShardKey) GetKey() isShardKey_Key { @@ -4600,7 +4856,7 @@ type LocalShardInfo struct { func (x *LocalShardInfo) Reset() { *x = LocalShardInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[58] + mi := &file_collections_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4613,7 +4869,7 @@ func (x *LocalShardInfo) String() string { func (*LocalShardInfo) ProtoMessage() {} func (x *LocalShardInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[58] + mi := &file_collections_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4626,7 +4882,7 @@ func (x *LocalShardInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LocalShardInfo.ProtoReflect.Descriptor instead. func (*LocalShardInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{58} + return file_collections_proto_rawDescGZIP(), []int{59} } func (x *LocalShardInfo) GetShardId() uint32 { @@ -4671,7 +4927,7 @@ type RemoteShardInfo struct { func (x *RemoteShardInfo) Reset() { *x = RemoteShardInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[59] + mi := &file_collections_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4684,7 +4940,7 @@ func (x *RemoteShardInfo) String() string { func (*RemoteShardInfo) ProtoMessage() {} func (x *RemoteShardInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[59] + mi := &file_collections_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4697,7 +4953,7 @@ func (x *RemoteShardInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteShardInfo.ProtoReflect.Descriptor instead. func (*RemoteShardInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{59} + return file_collections_proto_rawDescGZIP(), []int{60} } func (x *RemoteShardInfo) GetShardId() uint32 { @@ -4743,7 +4999,7 @@ type ShardTransferInfo struct { func (x *ShardTransferInfo) Reset() { *x = ShardTransferInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[60] + mi := &file_collections_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4756,7 +5012,7 @@ func (x *ShardTransferInfo) String() string { func (*ShardTransferInfo) ProtoMessage() {} func (x *ShardTransferInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[60] + mi := &file_collections_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4769,7 +5025,7 @@ func (x *ShardTransferInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardTransferInfo.ProtoReflect.Descriptor instead. func (*ShardTransferInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{60} + return file_collections_proto_rawDescGZIP(), []int{61} } func (x *ShardTransferInfo) GetShardId() uint32 { @@ -4812,15 +5068,16 @@ type ReshardingInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` - PeerId uint64 `protobuf:"varint,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` - ShardKey *ShardKey `protobuf:"bytes,3,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` + ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` + PeerId uint64 `protobuf:"varint,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` + ShardKey *ShardKey `protobuf:"bytes,3,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` + Direction ReshardingDirection `protobuf:"varint,4,opt,name=direction,proto3,enum=qdrant.ReshardingDirection" json:"direction,omitempty"` } func (x *ReshardingInfo) Reset() { *x = ReshardingInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[61] + mi := &file_collections_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4833,7 +5090,7 @@ func (x *ReshardingInfo) String() string { func (*ReshardingInfo) ProtoMessage() {} func (x *ReshardingInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[61] + mi := &file_collections_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4846,7 +5103,7 @@ func (x *ReshardingInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReshardingInfo.ProtoReflect.Descriptor instead. func (*ReshardingInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{61} + return file_collections_proto_rawDescGZIP(), []int{62} } func (x *ReshardingInfo) GetShardId() uint32 { @@ -4870,22 +5127,30 @@ func (x *ReshardingInfo) GetShardKey() *ShardKey { return nil } +func (x *ReshardingInfo) GetDirection() ReshardingDirection { + if x != nil { + return x.Direction + } + return ReshardingDirection_Up +} + type CollectionClusterInfoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PeerId uint64 `protobuf:"varint,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` // ID of this peer - ShardCount uint64 `protobuf:"varint,2,opt,name=shard_count,json=shardCount,proto3" json:"shard_count,omitempty"` // Total number of shards - LocalShards []*LocalShardInfo `protobuf:"bytes,3,rep,name=local_shards,json=localShards,proto3" json:"local_shards,omitempty"` // Local shards - RemoteShards []*RemoteShardInfo `protobuf:"bytes,4,rep,name=remote_shards,json=remoteShards,proto3" json:"remote_shards,omitempty"` // Remote shards - ShardTransfers []*ShardTransferInfo `protobuf:"bytes,5,rep,name=shard_transfers,json=shardTransfers,proto3" json:"shard_transfers,omitempty"` // Shard transfers + PeerId uint64 `protobuf:"varint,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` // ID of this peer + ShardCount uint64 `protobuf:"varint,2,opt,name=shard_count,json=shardCount,proto3" json:"shard_count,omitempty"` // Total number of shards + LocalShards []*LocalShardInfo `protobuf:"bytes,3,rep,name=local_shards,json=localShards,proto3" json:"local_shards,omitempty"` // Local shards + RemoteShards []*RemoteShardInfo `protobuf:"bytes,4,rep,name=remote_shards,json=remoteShards,proto3" json:"remote_shards,omitempty"` // Remote shards + ShardTransfers []*ShardTransferInfo `protobuf:"bytes,5,rep,name=shard_transfers,json=shardTransfers,proto3" json:"shard_transfers,omitempty"` // Shard transfers + ReshardingOperations []*ReshardingInfo `protobuf:"bytes,6,rep,name=resharding_operations,json=reshardingOperations,proto3" json:"resharding_operations,omitempty"` // Resharding operations } func (x *CollectionClusterInfoResponse) Reset() { *x = CollectionClusterInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[62] + mi := &file_collections_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4898,7 +5163,7 @@ func (x *CollectionClusterInfoResponse) String() string { func (*CollectionClusterInfoResponse) ProtoMessage() {} func (x *CollectionClusterInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[62] + mi := &file_collections_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4911,7 +5176,7 @@ func (x *CollectionClusterInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionClusterInfoResponse.ProtoReflect.Descriptor instead. func (*CollectionClusterInfoResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{62} + return file_collections_proto_rawDescGZIP(), []int{63} } func (x *CollectionClusterInfoResponse) GetPeerId() uint64 { @@ -4949,6 +5214,13 @@ func (x *CollectionClusterInfoResponse) GetShardTransfers() []*ShardTransferInfo return nil } +func (x *CollectionClusterInfoResponse) GetReshardingOperations() []*ReshardingInfo { + if x != nil { + return x.ReshardingOperations + } + return nil +} + type MoveShard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4964,7 +5236,7 @@ type MoveShard struct { func (x *MoveShard) Reset() { *x = MoveShard{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[63] + mi := &file_collections_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4977,7 +5249,7 @@ func (x *MoveShard) String() string { func (*MoveShard) ProtoMessage() {} func (x *MoveShard) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[63] + mi := &file_collections_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4990,7 +5262,7 @@ func (x *MoveShard) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveShard.ProtoReflect.Descriptor instead. func (*MoveShard) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{63} + return file_collections_proto_rawDescGZIP(), []int{64} } func (x *MoveShard) GetShardId() uint32 { @@ -5043,7 +5315,7 @@ type ReplicateShard struct { func (x *ReplicateShard) Reset() { *x = ReplicateShard{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[64] + mi := &file_collections_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5056,7 +5328,7 @@ func (x *ReplicateShard) String() string { func (*ReplicateShard) ProtoMessage() {} func (x *ReplicateShard) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[64] + mi := &file_collections_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5069,7 +5341,7 @@ func (x *ReplicateShard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplicateShard.ProtoReflect.Descriptor instead. func (*ReplicateShard) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{64} + return file_collections_proto_rawDescGZIP(), []int{65} } func (x *ReplicateShard) GetShardId() uint32 { @@ -5121,7 +5393,7 @@ type AbortShardTransfer struct { func (x *AbortShardTransfer) Reset() { *x = AbortShardTransfer{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[65] + mi := &file_collections_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5134,7 +5406,7 @@ func (x *AbortShardTransfer) String() string { func (*AbortShardTransfer) ProtoMessage() {} func (x *AbortShardTransfer) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[65] + mi := &file_collections_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5147,7 +5419,7 @@ func (x *AbortShardTransfer) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortShardTransfer.ProtoReflect.Descriptor instead. func (*AbortShardTransfer) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{65} + return file_collections_proto_rawDescGZIP(), []int{66} } func (x *AbortShardTransfer) GetShardId() uint32 { @@ -5193,7 +5465,7 @@ type RestartTransfer struct { func (x *RestartTransfer) Reset() { *x = RestartTransfer{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[66] + mi := &file_collections_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5206,7 +5478,7 @@ func (x *RestartTransfer) String() string { func (*RestartTransfer) ProtoMessage() {} func (x *RestartTransfer) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[66] + mi := &file_collections_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5219,7 +5491,7 @@ func (x *RestartTransfer) ProtoReflect() protoreflect.Message { // Deprecated: Use RestartTransfer.ProtoReflect.Descriptor instead. func (*RestartTransfer) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{66} + return file_collections_proto_rawDescGZIP(), []int{67} } func (x *RestartTransfer) GetShardId() uint32 { @@ -5269,7 +5541,7 @@ type Replica struct { func (x *Replica) Reset() { *x = Replica{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[67] + mi := &file_collections_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5282,7 +5554,7 @@ func (x *Replica) String() string { func (*Replica) ProtoMessage() {} func (x *Replica) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[67] + mi := &file_collections_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5295,7 +5567,7 @@ func (x *Replica) ProtoReflect() protoreflect.Message { // Deprecated: Use Replica.ProtoReflect.Descriptor instead. func (*Replica) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{67} + return file_collections_proto_rawDescGZIP(), []int{68} } func (x *Replica) GetShardId() uint32 { @@ -5326,7 +5598,7 @@ type CreateShardKey struct { func (x *CreateShardKey) Reset() { *x = CreateShardKey{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[68] + mi := &file_collections_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5339,7 +5611,7 @@ func (x *CreateShardKey) String() string { func (*CreateShardKey) ProtoMessage() {} func (x *CreateShardKey) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[68] + mi := &file_collections_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5352,7 +5624,7 @@ func (x *CreateShardKey) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateShardKey.ProtoReflect.Descriptor instead. func (*CreateShardKey) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{68} + return file_collections_proto_rawDescGZIP(), []int{69} } func (x *CreateShardKey) GetShardKey() *ShardKey { @@ -5394,7 +5666,7 @@ type DeleteShardKey struct { func (x *DeleteShardKey) Reset() { *x = DeleteShardKey{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[69] + mi := &file_collections_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5407,7 +5679,7 @@ func (x *DeleteShardKey) String() string { func (*DeleteShardKey) ProtoMessage() {} func (x *DeleteShardKey) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[69] + mi := &file_collections_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5420,7 +5692,7 @@ func (x *DeleteShardKey) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteShardKey.ProtoReflect.Descriptor instead. func (*DeleteShardKey) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{69} + return file_collections_proto_rawDescGZIP(), []int{70} } func (x *DeleteShardKey) GetShardKey() *ShardKey { @@ -5452,7 +5724,7 @@ type UpdateCollectionClusterSetupRequest struct { func (x *UpdateCollectionClusterSetupRequest) Reset() { *x = UpdateCollectionClusterSetupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[70] + mi := &file_collections_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5465,7 +5737,7 @@ func (x *UpdateCollectionClusterSetupRequest) String() string { func (*UpdateCollectionClusterSetupRequest) ProtoMessage() {} func (x *UpdateCollectionClusterSetupRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[70] + mi := &file_collections_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5478,7 +5750,7 @@ func (x *UpdateCollectionClusterSetupRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use UpdateCollectionClusterSetupRequest.ProtoReflect.Descriptor instead. func (*UpdateCollectionClusterSetupRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{70} + return file_collections_proto_rawDescGZIP(), []int{71} } func (x *UpdateCollectionClusterSetupRequest) GetCollectionName() string { @@ -5615,7 +5887,7 @@ type UpdateCollectionClusterSetupResponse struct { func (x *UpdateCollectionClusterSetupResponse) Reset() { *x = UpdateCollectionClusterSetupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[71] + mi := &file_collections_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5628,7 +5900,7 @@ func (x *UpdateCollectionClusterSetupResponse) String() string { func (*UpdateCollectionClusterSetupResponse) ProtoMessage() {} func (x *UpdateCollectionClusterSetupResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[71] + mi := &file_collections_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5641,7 +5913,7 @@ func (x *UpdateCollectionClusterSetupResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use UpdateCollectionClusterSetupResponse.ProtoReflect.Descriptor instead. func (*UpdateCollectionClusterSetupResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{71} + return file_collections_proto_rawDescGZIP(), []int{72} } func (x *UpdateCollectionClusterSetupResponse) GetResult() bool { @@ -5664,7 +5936,7 @@ type CreateShardKeyRequest struct { func (x *CreateShardKeyRequest) Reset() { *x = CreateShardKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[72] + mi := &file_collections_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5677,7 +5949,7 @@ func (x *CreateShardKeyRequest) String() string { func (*CreateShardKeyRequest) ProtoMessage() {} func (x *CreateShardKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[72] + mi := &file_collections_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5690,7 +5962,7 @@ func (x *CreateShardKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateShardKeyRequest.ProtoReflect.Descriptor instead. func (*CreateShardKeyRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{72} + return file_collections_proto_rawDescGZIP(), []int{73} } func (x *CreateShardKeyRequest) GetCollectionName() string { @@ -5727,7 +5999,7 @@ type DeleteShardKeyRequest struct { func (x *DeleteShardKeyRequest) Reset() { *x = DeleteShardKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[73] + mi := &file_collections_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5740,7 +6012,7 @@ func (x *DeleteShardKeyRequest) String() string { func (*DeleteShardKeyRequest) ProtoMessage() {} func (x *DeleteShardKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[73] + mi := &file_collections_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5753,7 +6025,7 @@ func (x *DeleteShardKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteShardKeyRequest.ProtoReflect.Descriptor instead. func (*DeleteShardKeyRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{73} + return file_collections_proto_rawDescGZIP(), []int{74} } func (x *DeleteShardKeyRequest) GetCollectionName() string { @@ -5788,7 +6060,7 @@ type CreateShardKeyResponse struct { func (x *CreateShardKeyResponse) Reset() { *x = CreateShardKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[74] + mi := &file_collections_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5801,7 +6073,7 @@ func (x *CreateShardKeyResponse) String() string { func (*CreateShardKeyResponse) ProtoMessage() {} func (x *CreateShardKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[74] + mi := &file_collections_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5814,7 +6086,7 @@ func (x *CreateShardKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateShardKeyResponse.ProtoReflect.Descriptor instead. func (*CreateShardKeyResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{74} + return file_collections_proto_rawDescGZIP(), []int{75} } func (x *CreateShardKeyResponse) GetResult() bool { @@ -5835,7 +6107,7 @@ type DeleteShardKeyResponse struct { func (x *DeleteShardKeyResponse) Reset() { *x = DeleteShardKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[75] + mi := &file_collections_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5848,7 +6120,7 @@ func (x *DeleteShardKeyResponse) String() string { func (*DeleteShardKeyResponse) ProtoMessage() {} func (x *DeleteShardKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[75] + mi := &file_collections_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5861,7 +6133,7 @@ func (x *DeleteShardKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteShardKeyResponse.ProtoReflect.Descriptor instead. func (*DeleteShardKeyResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{75} + return file_collections_proto_rawDescGZIP(), []int{76} } func (x *DeleteShardKeyResponse) GetResult() bool { @@ -6017,306 +6289,369 @@ var file_collections_proto_rawDesc = []byte{ 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x37, 0x0a, - 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd9, 0x02, 0x0a, 0x0e, 0x48, 0x6e, 0x73, 0x77, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x11, 0x0a, 0x01, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x01, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, - 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, - 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x02, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x6d, 0x61, 0x78, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x04, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x20, - 0x0a, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x05, 0x52, 0x08, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x88, 0x01, 0x01, - 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x6d, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x66, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x75, 0x6c, 0x6c, - 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, - 0x64, 0x69, 0x73, 0x6b, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x6d, 0x22, 0xca, 0x01, 0x0a, 0x11, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x13, 0x66, 0x75, 0x6c, 0x6c, - 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, - 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, - 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x08, 0x64, - 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x48, - 0x02, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x94, 0x01, + 0x0a, 0x16, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x42, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x78, 0x4f, 0x70, + 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x22, 0x13, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x08, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x6f, 0x10, 0x00, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x6e, 0x74, 0x22, 0x37, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd9, 0x02, + 0x0a, 0x0e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, + 0x12, 0x11, 0x0a, 0x01, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x01, 0x6d, + 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x66, 0x43, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x66, + 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x6c, + 0x53, 0x63, 0x61, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x35, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, + 0x52, 0x12, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, + 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, + 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x08, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x4d, 0x88, 0x01, 0x01, 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x6d, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, - 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x9a, 0x01, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, - 0x66, 0x12, 0x2b, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x61, - 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x31, - 0x0a, 0x12, 0x77, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, - 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x10, 0x77, 0x61, - 0x6c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x68, 0x65, 0x61, 0x64, 0x88, 0x01, - 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, - 0x74, 0x79, 0x5f, 0x6d, 0x62, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x68, 0x65, 0x61, 0x64, 0x22, 0x89, 0x05, 0x0a, - 0x14, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x30, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, - 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x76, 0x61, 0x63, 0x75, 0x75, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x22, 0xca, 0x01, 0x0a, 0x11, 0x53, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x33, 0x0a, 0x13, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x11, + 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, + 0x01, 0x01, 0x12, 0x31, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x48, 0x02, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, + 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x2b, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x5f, + 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x61, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, + 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x77, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x01, 0x52, 0x10, 0x77, 0x61, 0x6c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x41, 0x68, 0x65, 0x61, 0x64, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x61, 0x6c, + 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x62, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x68, + 0x65, 0x61, 0x64, 0x22, 0xa5, 0x06, 0x0a, 0x14, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, + 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x30, 0x0a, 0x11, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, + 0x0a, 0x18, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x01, 0x52, 0x15, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x14, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x03, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, + 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x04, 0x52, 0x0f, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, + 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x05, 0x52, 0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x6c, + 0x75, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x10, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, + 0x23, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, + 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x20, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x74, 0x69, 0x6d, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x5d, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x78, + 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x73, 0x48, 0x08, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x88, 0x01, 0x01, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x15, 0x76, 0x61, 0x63, - 0x75, 0x75, 0x6d, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, - 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x0e, 0x6d, 0x61, - 0x78, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x2e, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0f, 0x6d, 0x65, 0x6d, - 0x6d, 0x61, 0x70, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x32, 0x0a, 0x12, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x11, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x06, 0x52, 0x10, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, - 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, - 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4f, - 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x61, - 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x65, 0x6d, - 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x53, 0x63, 0x61, - 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, - 0x00, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, - 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, 0x61, 0x6d, 0x88, - 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0x84, - 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, - 0x52, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, - 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0x47, 0x0a, 0x12, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x51, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x61, - 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x00, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0xc9, - 0x01, 0x0a, 0x12, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x63, 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x37, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, - 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x69, - 0x6e, 0x61, 0x72, 0x79, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x0a, 0x0a, 0x08, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x16, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, - 0x66, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, - 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x12, 0x2e, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, - 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xea, 0x04, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x69, 0x63, - 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x61, - 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x0a, - 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, - 0x1c, 0x75, 0x6e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x1a, 0x75, 0x6e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x75, 0x6e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x18, 0x75, 0x6e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x12, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, 0x66, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x05, 0x52, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x78, - 0x48, 0x6e, 0x73, 0x77, 0x45, 0x66, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, - 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07, 0x52, - 0x15, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x78, 0x4f, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x75, - 0x6e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x65, + 0x62, 0x65, 0x72, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x12, + 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1f, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x02, 0x48, 0x00, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, + 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, + 0x6d, 0x22, 0x84, 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, + 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6c, 0x77, + 0x61, 0x79, 0x73, 0x52, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, + 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0x47, 0x0a, 0x12, 0x42, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, + 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, 0x61, 0x6d, 0x88, + 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, + 0x6d, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, + 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x37, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x0e, 0x0a, + 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x0a, 0x0a, + 0x08, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x16, 0x51, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x44, 0x69, 0x66, 0x66, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, + 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc3, 0x09, 0x0a, 0x10, 0x53, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, + 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, + 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x61, + 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x45, 0x0a, 0x1c, 0x75, 0x6e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x1a, 0x75, 0x6e, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x75, 0x6e, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x18, 0x75, + 0x6e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x12, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, 0x66, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, - 0x69, 0x6e, 0x67, 0x22, 0xce, 0x09, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, - 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, - 0x39, 0x0a, 0x0a, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x61, 0x6c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x01, 0x52, 0x09, 0x77, 0x61, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x70, - 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, - 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, - 0x69, 0x66, 0x66, 0x48, 0x02, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x6f, - 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, - 0x0a, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x06, 0x52, - 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, - 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, - 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x08, 0x52, 0x16, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x13, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0a, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, - 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x0b, - 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x05, 0x52, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x4d, 0x61, 0x78, 0x48, 0x6e, 0x73, 0x77, 0x45, 0x66, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x61, + 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x3b, 0x0a, 0x17, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, + 0x48, 0x07, 0x52, 0x15, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x78, 0x4f, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, + 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x12, 0x75, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x78, 0x42, 0x61, 0x74, 0x63, 0x68, 0x73, 0x69, 0x7a, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x09, 0x52, + 0x1c, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x2b, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0a, 0x52, 0x0d, 0x72, 0x65, 0x61, + 0x64, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, + 0x10, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0b, 0x52, 0x0e, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x21, + 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x1d, 0x6d, 0x61, 0x78, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0d, 0x52, 0x13, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x0e, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, + 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, + 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x75, 0x6e, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, 0x66, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, + 0x67, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6d, + 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, + 0xce, 0x09, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, + 0x0b, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x6e, + 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x77, + 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x01, 0x52, 0x09, 0x77, 0x61, 0x6c, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, + 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, + 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, + 0x02, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0b, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b, + 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x69, 0x73, + 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x06, 0x52, 0x0d, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, + 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x11, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, + 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x08, 0x52, 0x16, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x35, 0x0a, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, + 0x52, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x0a, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x0b, 0x52, 0x0e, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x53, 0x0a, 0x15, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0c, 0x52, 0x13, 0x73, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0d, 0x52, 0x10, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, + 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, + 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, + 0x22, 0xfb, 0x05, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, + 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, + 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x48, 0x02, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x68, 0x6e, 0x73, 0x77, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x03, 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x04, 0x52, 0x0d, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, + 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x05, 0x52, 0x12, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x10, 0x20, 0x01, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, - 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0c, + 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x06, 0x52, 0x13, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x11, + 0x63, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x63, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0d, + 0x72, 0x69, 0x63, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x07, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, - 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, - 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, 0x72, - 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, - 0x08, 0x03, 0x10, 0x04, 0x22, 0x97, 0x05, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, 0x52, 0x10, 0x6f, - 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, - 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x48, - 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, - 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x03, 0x52, 0x0a, 0x68, 0x6e, 0x73, - 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0e, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x04, 0x52, - 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, - 0x01, 0x12, 0x54, 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x05, - 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x73, 0x70, 0x61, 0x72, 0x73, - 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x06, 0x52, 0x13, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, - 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x66, + 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, + 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x66, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, @@ -6465,432 +6800,447 @@ var file_collections_proto_rawDesc = []byte{ 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, - 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x22, 0x11, 0x0a, + 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x22, 0x3b, 0x0a, 0x0f, 0x42, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0x78, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, - 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, - 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, - 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x69, - 0x73, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x73, - 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x6b, 0x0a, 0x0f, 0x55, 0x75, - 0x69, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x0a, - 0x09, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x08, 0x69, 0x73, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x01, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x22, 0xfa, 0x04, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, - 0x0a, 0x14, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x6b, 0x65, 0x79, 0x77, - 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, - 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, + 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x22, 0x78, 0x0a, 0x13, 0x44, 0x61, + 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, + 0x26, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, + 0x69, 0x73, 0x6b, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x22, 0x6b, 0x0a, 0x0f, 0x55, 0x75, 0x69, 0x64, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x69, 0x73, + 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, + 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x6e, + 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x73, 0x5f, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, + 0x6b, 0x22, 0xfa, 0x04, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x6c, + 0x6f, 0x61, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, + 0x52, 0x10, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x67, 0x65, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x74, 0x65, + 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, + 0x11, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x51, 0x0a, 0x15, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, + 0x65, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x48, 0x00, 0x52, 0x13, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x75, 0x75, 0x69, 0x64, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x75, 0x69, 0x64, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x75, + 0x75, 0x69, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0e, + 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb7, + 0x01, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x48, - 0x0a, 0x12, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x10, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x67, 0x65, - 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x11, - 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x48, 0x00, 0x52, 0x0f, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x51, 0x0a, 0x15, 0x64, 0x61, - 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x13, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, - 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, - 0x11, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x55, 0x75, 0x69, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x48, 0x00, 0x52, 0x0f, 0x75, 0x75, 0x69, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xe2, - 0x04, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, - 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x0e, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x26, 0x0a, 0x0c, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x13, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x5b, 0x0a, - 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, - 0x06, 0x10, 0x07, 0x22, 0x6d, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x12, 0x38, 0x0a, 0x0c, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x72, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, - 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x0b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x6c, - 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, - 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x2c, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x14, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, - 0x10, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x13, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x32, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x47, 0x0a, 0x08, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, - 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x06, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xbc, 0x01, 0x0a, 0x0e, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, - 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x73, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, + 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xe2, 0x04, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, + 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x73, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, + 0x0a, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, + 0x13, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x5b, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x6d, 0x0a, + 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x31, + 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xc9, 0x01, 0x0a, + 0x0f, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x38, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x72, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, + 0x00, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x08, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x59, 0x0a, 0x0b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x24, + 0x0a, 0x0e, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, + 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2c, 0x0a, 0x0b, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, + 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x10, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, + 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x08, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x05, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x22, 0xbc, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, - 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, - 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, - 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x22, - 0x9b, 0x01, 0x0a, 0x11, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x79, 0x6e, - 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x22, 0x86, 0x01, - 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, - 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x96, 0x02, 0x0a, 0x1d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3c, 0x0a, - 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, - 0xe0, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, - 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, - 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x01, 0x52, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x22, 0xe5, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, - 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, - 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x48, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x12, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, - 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, - 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x64, 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, - 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, - 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, - 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x22, 0x3d, 0x0a, 0x07, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xe4, 0x01, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0d, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x22, 0x3f, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x22, 0xc6, 0x04, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x6f, 0x76, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x62, 0x6f, - 0x72, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, - 0x0d, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x34, - 0x0a, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x10, - 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, - 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x3e, 0x0a, 0x24, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, - 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, - 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x30, 0x0a, 0x16, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, + 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x32, + 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x39, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, + 0x65, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xe3, 0x02, 0x0a, 0x1d, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, + 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x14, 0x72, 0x65, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x01, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x22, 0xe5, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, + 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, + 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x48, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, + 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xa4, 0x01, 0x0a, + 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, + 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, + 0x72, 0x49, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, + 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, + 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x22, 0x3d, 0x0a, 0x07, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xe4, 0x01, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2d, + 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, + 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x22, 0x3f, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x22, 0xc6, 0x04, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, + 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, 0x09, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x61, + 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x0d, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x12, 0x34, 0x0a, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x10, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0e, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x44, + 0x0a, 0x10, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x3e, 0x0a, 0x24, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x30, 0x0a, 0x16, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x01, 0x0a, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x30, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x9d, 0x01, 0x0a, + 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x30, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x30, 0x0a, 0x16, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2a, 0x3c, - 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x61, 0x74, - 0x33, 0x32, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x10, 0x03, 0x2a, 0x1d, 0x0a, 0x08, - 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, - 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x64, 0x66, 0x10, 0x01, 0x2a, 0x23, 0x0a, 0x15, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x6d, 0x10, 0x00, - 0x2a, 0x4f, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x13, 0x0a, 0x0f, - 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x6f, 0x73, 0x69, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x0a, 0x0a, - 0x06, 0x45, 0x75, 0x63, 0x6c, 0x69, 0x64, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x6f, 0x74, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x61, 0x6e, 0x68, 0x61, 0x74, 0x74, 0x61, 0x6e, 0x10, - 0x04, 0x2a, 0x59, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, - 0x06, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x65, 0x64, - 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x72, 0x65, 0x79, 0x10, 0x04, 0x2a, 0x7e, 0x0a, 0x11, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, - 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x65, 0x6f, 0x10, 0x04, - 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x6f, - 0x6f, 0x6c, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, - 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x75, 0x69, 0x64, 0x10, 0x08, 0x2a, 0x35, 0x0a, 0x10, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x74, - 0x38, 0x10, 0x01, 0x2a, 0x3d, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x06, 0x0a, 0x02, 0x78, 0x34, 0x10, 0x00, 0x12, - 0x06, 0x0a, 0x02, 0x78, 0x38, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x31, 0x36, 0x10, 0x02, - 0x12, 0x07, 0x0a, 0x03, 0x78, 0x33, 0x32, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x36, 0x34, - 0x10, 0x04, 0x2a, 0x26, 0x0a, 0x0e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x6f, 0x10, 0x00, 0x12, 0x0a, - 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x0d, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x6f, 0x72, 0x64, 0x10, 0x03, 0x12, 0x10, - 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x6c, 0x10, 0x04, - 0x2a, 0x84, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, - 0x04, 0x44, 0x65, 0x61, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x61, 0x6c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, - 0x7a, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x65, 0x72, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x79, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x07, 0x2a, 0x61, 0x0a, 0x13, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x11, - 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x10, - 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x10, 0x01, 0x12, - 0x0c, 0x0a, 0x08, 0x57, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x10, 0x02, 0x12, 0x1b, 0x0a, - 0x17, 0x52, 0x65, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x10, 0x03, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x30, + 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x2a, 0x3c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x6f, + 0x61, 0x74, 0x33, 0x32, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x10, + 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x10, 0x03, 0x2a, 0x1d, + 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, + 0x6e, 0x65, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x64, 0x66, 0x10, 0x01, 0x2a, 0x23, 0x0a, + 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x6d, + 0x10, 0x00, 0x2a, 0x4f, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x13, + 0x0a, 0x0f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x6f, 0x73, 0x69, 0x6e, 0x65, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x45, 0x75, 0x63, 0x6c, 0x69, 0x64, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x44, + 0x6f, 0x74, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x61, 0x6e, 0x68, 0x61, 0x74, 0x74, 0x61, + 0x6e, 0x10, 0x04, 0x2a, 0x59, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, + 0x65, 0x64, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x72, 0x65, 0x79, 0x10, 0x04, 0x2a, 0x7e, + 0x0a, 0x11, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, + 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x10, 0x02, 0x12, 0x09, + 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x65, 0x6f, + 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, + 0x42, 0x6f, 0x6f, 0x6c, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, + 0x6d, 0x65, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x75, 0x69, 0x64, 0x10, 0x08, 0x2a, 0x35, + 0x0a, 0x10, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, + 0x6e, 0x74, 0x38, 0x10, 0x01, 0x2a, 0x3d, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x06, 0x0a, 0x02, 0x78, 0x34, 0x10, + 0x00, 0x12, 0x06, 0x0a, 0x02, 0x78, 0x38, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x31, 0x36, + 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x33, 0x32, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x78, + 0x36, 0x34, 0x10, 0x04, 0x2a, 0x26, 0x0a, 0x0e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x6f, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x0d, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x68, 0x69, 0x74, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x6f, 0x72, 0x64, 0x10, 0x03, + 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x6c, + 0x10, 0x04, 0x2a, 0x9d, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x44, 0x65, 0x61, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x61, 0x6c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, + 0x6c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x52, + 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x65, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x10, 0x08, 0x2a, 0x27, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x70, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x01, 0x2a, 0x61, 0x0a, 0x13, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x10, + 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x10, 0x03, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6905,8 +7255,8 @@ func file_collections_proto_rawDescGZIP() []byte { return file_collections_proto_rawDescData } -var file_collections_proto_enumTypes = make([]protoimpl.EnumInfo, 12) -var file_collections_proto_msgTypes = make([]protoimpl.MessageInfo, 80) +var file_collections_proto_enumTypes = make([]protoimpl.EnumInfo, 14) +var file_collections_proto_msgTypes = make([]protoimpl.MessageInfo, 81) var file_collections_proto_goTypes = []any{ (Datatype)(0), // 0: qdrant.Datatype (Modifier)(0), // 1: qdrant.Modifier @@ -6919,193 +7269,201 @@ var file_collections_proto_goTypes = []any{ (ShardingMethod)(0), // 8: qdrant.ShardingMethod (TokenizerType)(0), // 9: qdrant.TokenizerType (ReplicaState)(0), // 10: qdrant.ReplicaState - (ShardTransferMethod)(0), // 11: qdrant.ShardTransferMethod - (*VectorParams)(nil), // 12: qdrant.VectorParams - (*VectorParamsDiff)(nil), // 13: qdrant.VectorParamsDiff - (*VectorParamsMap)(nil), // 14: qdrant.VectorParamsMap - (*VectorParamsDiffMap)(nil), // 15: qdrant.VectorParamsDiffMap - (*VectorsConfig)(nil), // 16: qdrant.VectorsConfig - (*VectorsConfigDiff)(nil), // 17: qdrant.VectorsConfigDiff - (*SparseVectorParams)(nil), // 18: qdrant.SparseVectorParams - (*SparseVectorConfig)(nil), // 19: qdrant.SparseVectorConfig - (*MultiVectorConfig)(nil), // 20: qdrant.MultiVectorConfig - (*GetCollectionInfoRequest)(nil), // 21: qdrant.GetCollectionInfoRequest - (*CollectionExistsRequest)(nil), // 22: qdrant.CollectionExistsRequest - (*CollectionExists)(nil), // 23: qdrant.CollectionExists - (*CollectionExistsResponse)(nil), // 24: qdrant.CollectionExistsResponse - (*ListCollectionsRequest)(nil), // 25: qdrant.ListCollectionsRequest - (*CollectionDescription)(nil), // 26: qdrant.CollectionDescription - (*GetCollectionInfoResponse)(nil), // 27: qdrant.GetCollectionInfoResponse - (*ListCollectionsResponse)(nil), // 28: qdrant.ListCollectionsResponse - (*OptimizerStatus)(nil), // 29: qdrant.OptimizerStatus - (*HnswConfigDiff)(nil), // 30: qdrant.HnswConfigDiff - (*SparseIndexConfig)(nil), // 31: qdrant.SparseIndexConfig - (*WalConfigDiff)(nil), // 32: qdrant.WalConfigDiff - (*OptimizersConfigDiff)(nil), // 33: qdrant.OptimizersConfigDiff - (*ScalarQuantization)(nil), // 34: qdrant.ScalarQuantization - (*ProductQuantization)(nil), // 35: qdrant.ProductQuantization - (*BinaryQuantization)(nil), // 36: qdrant.BinaryQuantization - (*QuantizationConfig)(nil), // 37: qdrant.QuantizationConfig - (*Disabled)(nil), // 38: qdrant.Disabled - (*QuantizationConfigDiff)(nil), // 39: qdrant.QuantizationConfigDiff - (*StrictModeConfig)(nil), // 40: qdrant.StrictModeConfig - (*CreateCollection)(nil), // 41: qdrant.CreateCollection - (*UpdateCollection)(nil), // 42: qdrant.UpdateCollection - (*DeleteCollection)(nil), // 43: qdrant.DeleteCollection - (*CollectionOperationResponse)(nil), // 44: qdrant.CollectionOperationResponse - (*CollectionParams)(nil), // 45: qdrant.CollectionParams - (*CollectionParamsDiff)(nil), // 46: qdrant.CollectionParamsDiff - (*CollectionConfig)(nil), // 47: qdrant.CollectionConfig - (*KeywordIndexParams)(nil), // 48: qdrant.KeywordIndexParams - (*IntegerIndexParams)(nil), // 49: qdrant.IntegerIndexParams - (*FloatIndexParams)(nil), // 50: qdrant.FloatIndexParams - (*GeoIndexParams)(nil), // 51: qdrant.GeoIndexParams - (*TextIndexParams)(nil), // 52: qdrant.TextIndexParams - (*BoolIndexParams)(nil), // 53: qdrant.BoolIndexParams - (*DatetimeIndexParams)(nil), // 54: qdrant.DatetimeIndexParams - (*UuidIndexParams)(nil), // 55: qdrant.UuidIndexParams - (*PayloadIndexParams)(nil), // 56: qdrant.PayloadIndexParams - (*PayloadSchemaInfo)(nil), // 57: qdrant.PayloadSchemaInfo - (*CollectionInfo)(nil), // 58: qdrant.CollectionInfo - (*ChangeAliases)(nil), // 59: qdrant.ChangeAliases - (*AliasOperations)(nil), // 60: qdrant.AliasOperations - (*CreateAlias)(nil), // 61: qdrant.CreateAlias - (*RenameAlias)(nil), // 62: qdrant.RenameAlias - (*DeleteAlias)(nil), // 63: qdrant.DeleteAlias - (*ListAliasesRequest)(nil), // 64: qdrant.ListAliasesRequest - (*ListCollectionAliasesRequest)(nil), // 65: qdrant.ListCollectionAliasesRequest - (*AliasDescription)(nil), // 66: qdrant.AliasDescription - (*ListAliasesResponse)(nil), // 67: qdrant.ListAliasesResponse - (*CollectionClusterInfoRequest)(nil), // 68: qdrant.CollectionClusterInfoRequest - (*ShardKey)(nil), // 69: qdrant.ShardKey - (*LocalShardInfo)(nil), // 70: qdrant.LocalShardInfo - (*RemoteShardInfo)(nil), // 71: qdrant.RemoteShardInfo - (*ShardTransferInfo)(nil), // 72: qdrant.ShardTransferInfo - (*ReshardingInfo)(nil), // 73: qdrant.ReshardingInfo - (*CollectionClusterInfoResponse)(nil), // 74: qdrant.CollectionClusterInfoResponse - (*MoveShard)(nil), // 75: qdrant.MoveShard - (*ReplicateShard)(nil), // 76: qdrant.ReplicateShard - (*AbortShardTransfer)(nil), // 77: qdrant.AbortShardTransfer - (*RestartTransfer)(nil), // 78: qdrant.RestartTransfer - (*Replica)(nil), // 79: qdrant.Replica - (*CreateShardKey)(nil), // 80: qdrant.CreateShardKey - (*DeleteShardKey)(nil), // 81: qdrant.DeleteShardKey - (*UpdateCollectionClusterSetupRequest)(nil), // 82: qdrant.UpdateCollectionClusterSetupRequest - (*UpdateCollectionClusterSetupResponse)(nil), // 83: qdrant.UpdateCollectionClusterSetupResponse - (*CreateShardKeyRequest)(nil), // 84: qdrant.CreateShardKeyRequest - (*DeleteShardKeyRequest)(nil), // 85: qdrant.DeleteShardKeyRequest - (*CreateShardKeyResponse)(nil), // 86: qdrant.CreateShardKeyResponse - (*DeleteShardKeyResponse)(nil), // 87: qdrant.DeleteShardKeyResponse - nil, // 88: qdrant.VectorParamsMap.MapEntry - nil, // 89: qdrant.VectorParamsDiffMap.MapEntry - nil, // 90: qdrant.SparseVectorConfig.MapEntry - nil, // 91: qdrant.CollectionInfo.PayloadSchemaEntry + (ReshardingDirection)(0), // 11: qdrant.ReshardingDirection + (ShardTransferMethod)(0), // 12: qdrant.ShardTransferMethod + (MaxOptimizationThreads_Setting)(0), // 13: qdrant.MaxOptimizationThreads.Setting + (*VectorParams)(nil), // 14: qdrant.VectorParams + (*VectorParamsDiff)(nil), // 15: qdrant.VectorParamsDiff + (*VectorParamsMap)(nil), // 16: qdrant.VectorParamsMap + (*VectorParamsDiffMap)(nil), // 17: qdrant.VectorParamsDiffMap + (*VectorsConfig)(nil), // 18: qdrant.VectorsConfig + (*VectorsConfigDiff)(nil), // 19: qdrant.VectorsConfigDiff + (*SparseVectorParams)(nil), // 20: qdrant.SparseVectorParams + (*SparseVectorConfig)(nil), // 21: qdrant.SparseVectorConfig + (*MultiVectorConfig)(nil), // 22: qdrant.MultiVectorConfig + (*GetCollectionInfoRequest)(nil), // 23: qdrant.GetCollectionInfoRequest + (*CollectionExistsRequest)(nil), // 24: qdrant.CollectionExistsRequest + (*CollectionExists)(nil), // 25: qdrant.CollectionExists + (*CollectionExistsResponse)(nil), // 26: qdrant.CollectionExistsResponse + (*ListCollectionsRequest)(nil), // 27: qdrant.ListCollectionsRequest + (*CollectionDescription)(nil), // 28: qdrant.CollectionDescription + (*GetCollectionInfoResponse)(nil), // 29: qdrant.GetCollectionInfoResponse + (*ListCollectionsResponse)(nil), // 30: qdrant.ListCollectionsResponse + (*MaxOptimizationThreads)(nil), // 31: qdrant.MaxOptimizationThreads + (*OptimizerStatus)(nil), // 32: qdrant.OptimizerStatus + (*HnswConfigDiff)(nil), // 33: qdrant.HnswConfigDiff + (*SparseIndexConfig)(nil), // 34: qdrant.SparseIndexConfig + (*WalConfigDiff)(nil), // 35: qdrant.WalConfigDiff + (*OptimizersConfigDiff)(nil), // 36: qdrant.OptimizersConfigDiff + (*ScalarQuantization)(nil), // 37: qdrant.ScalarQuantization + (*ProductQuantization)(nil), // 38: qdrant.ProductQuantization + (*BinaryQuantization)(nil), // 39: qdrant.BinaryQuantization + (*QuantizationConfig)(nil), // 40: qdrant.QuantizationConfig + (*Disabled)(nil), // 41: qdrant.Disabled + (*QuantizationConfigDiff)(nil), // 42: qdrant.QuantizationConfigDiff + (*StrictModeConfig)(nil), // 43: qdrant.StrictModeConfig + (*CreateCollection)(nil), // 44: qdrant.CreateCollection + (*UpdateCollection)(nil), // 45: qdrant.UpdateCollection + (*DeleteCollection)(nil), // 46: qdrant.DeleteCollection + (*CollectionOperationResponse)(nil), // 47: qdrant.CollectionOperationResponse + (*CollectionParams)(nil), // 48: qdrant.CollectionParams + (*CollectionParamsDiff)(nil), // 49: qdrant.CollectionParamsDiff + (*CollectionConfig)(nil), // 50: qdrant.CollectionConfig + (*KeywordIndexParams)(nil), // 51: qdrant.KeywordIndexParams + (*IntegerIndexParams)(nil), // 52: qdrant.IntegerIndexParams + (*FloatIndexParams)(nil), // 53: qdrant.FloatIndexParams + (*GeoIndexParams)(nil), // 54: qdrant.GeoIndexParams + (*TextIndexParams)(nil), // 55: qdrant.TextIndexParams + (*BoolIndexParams)(nil), // 56: qdrant.BoolIndexParams + (*DatetimeIndexParams)(nil), // 57: qdrant.DatetimeIndexParams + (*UuidIndexParams)(nil), // 58: qdrant.UuidIndexParams + (*PayloadIndexParams)(nil), // 59: qdrant.PayloadIndexParams + (*PayloadSchemaInfo)(nil), // 60: qdrant.PayloadSchemaInfo + (*CollectionInfo)(nil), // 61: qdrant.CollectionInfo + (*ChangeAliases)(nil), // 62: qdrant.ChangeAliases + (*AliasOperations)(nil), // 63: qdrant.AliasOperations + (*CreateAlias)(nil), // 64: qdrant.CreateAlias + (*RenameAlias)(nil), // 65: qdrant.RenameAlias + (*DeleteAlias)(nil), // 66: qdrant.DeleteAlias + (*ListAliasesRequest)(nil), // 67: qdrant.ListAliasesRequest + (*ListCollectionAliasesRequest)(nil), // 68: qdrant.ListCollectionAliasesRequest + (*AliasDescription)(nil), // 69: qdrant.AliasDescription + (*ListAliasesResponse)(nil), // 70: qdrant.ListAliasesResponse + (*CollectionClusterInfoRequest)(nil), // 71: qdrant.CollectionClusterInfoRequest + (*ShardKey)(nil), // 72: qdrant.ShardKey + (*LocalShardInfo)(nil), // 73: qdrant.LocalShardInfo + (*RemoteShardInfo)(nil), // 74: qdrant.RemoteShardInfo + (*ShardTransferInfo)(nil), // 75: qdrant.ShardTransferInfo + (*ReshardingInfo)(nil), // 76: qdrant.ReshardingInfo + (*CollectionClusterInfoResponse)(nil), // 77: qdrant.CollectionClusterInfoResponse + (*MoveShard)(nil), // 78: qdrant.MoveShard + (*ReplicateShard)(nil), // 79: qdrant.ReplicateShard + (*AbortShardTransfer)(nil), // 80: qdrant.AbortShardTransfer + (*RestartTransfer)(nil), // 81: qdrant.RestartTransfer + (*Replica)(nil), // 82: qdrant.Replica + (*CreateShardKey)(nil), // 83: qdrant.CreateShardKey + (*DeleteShardKey)(nil), // 84: qdrant.DeleteShardKey + (*UpdateCollectionClusterSetupRequest)(nil), // 85: qdrant.UpdateCollectionClusterSetupRequest + (*UpdateCollectionClusterSetupResponse)(nil), // 86: qdrant.UpdateCollectionClusterSetupResponse + (*CreateShardKeyRequest)(nil), // 87: qdrant.CreateShardKeyRequest + (*DeleteShardKeyRequest)(nil), // 88: qdrant.DeleteShardKeyRequest + (*CreateShardKeyResponse)(nil), // 89: qdrant.CreateShardKeyResponse + (*DeleteShardKeyResponse)(nil), // 90: qdrant.DeleteShardKeyResponse + nil, // 91: qdrant.VectorParamsMap.MapEntry + nil, // 92: qdrant.VectorParamsDiffMap.MapEntry + nil, // 93: qdrant.SparseVectorConfig.MapEntry + nil, // 94: qdrant.CollectionInfo.PayloadSchemaEntry } var file_collections_proto_depIdxs = []int32{ - 3, // 0: qdrant.VectorParams.distance:type_name -> qdrant.Distance - 30, // 1: qdrant.VectorParams.hnsw_config:type_name -> qdrant.HnswConfigDiff - 37, // 2: qdrant.VectorParams.quantization_config:type_name -> qdrant.QuantizationConfig - 0, // 3: qdrant.VectorParams.datatype:type_name -> qdrant.Datatype - 20, // 4: qdrant.VectorParams.multivector_config:type_name -> qdrant.MultiVectorConfig - 30, // 5: qdrant.VectorParamsDiff.hnsw_config:type_name -> qdrant.HnswConfigDiff - 39, // 6: qdrant.VectorParamsDiff.quantization_config:type_name -> qdrant.QuantizationConfigDiff - 88, // 7: qdrant.VectorParamsMap.map:type_name -> qdrant.VectorParamsMap.MapEntry - 89, // 8: qdrant.VectorParamsDiffMap.map:type_name -> qdrant.VectorParamsDiffMap.MapEntry - 12, // 9: qdrant.VectorsConfig.params:type_name -> qdrant.VectorParams - 14, // 10: qdrant.VectorsConfig.params_map:type_name -> qdrant.VectorParamsMap - 13, // 11: qdrant.VectorsConfigDiff.params:type_name -> qdrant.VectorParamsDiff - 15, // 12: qdrant.VectorsConfigDiff.params_map:type_name -> qdrant.VectorParamsDiffMap - 31, // 13: qdrant.SparseVectorParams.index:type_name -> qdrant.SparseIndexConfig - 1, // 14: qdrant.SparseVectorParams.modifier:type_name -> qdrant.Modifier - 90, // 15: qdrant.SparseVectorConfig.map:type_name -> qdrant.SparseVectorConfig.MapEntry - 2, // 16: qdrant.MultiVectorConfig.comparator:type_name -> qdrant.MultiVectorComparator - 23, // 17: qdrant.CollectionExistsResponse.result:type_name -> qdrant.CollectionExists - 58, // 18: qdrant.GetCollectionInfoResponse.result:type_name -> qdrant.CollectionInfo - 26, // 19: qdrant.ListCollectionsResponse.collections:type_name -> qdrant.CollectionDescription - 0, // 20: qdrant.SparseIndexConfig.datatype:type_name -> qdrant.Datatype - 6, // 21: qdrant.ScalarQuantization.type:type_name -> qdrant.QuantizationType - 7, // 22: qdrant.ProductQuantization.compression:type_name -> qdrant.CompressionRatio - 34, // 23: qdrant.QuantizationConfig.scalar:type_name -> qdrant.ScalarQuantization - 35, // 24: qdrant.QuantizationConfig.product:type_name -> qdrant.ProductQuantization - 36, // 25: qdrant.QuantizationConfig.binary:type_name -> qdrant.BinaryQuantization - 34, // 26: qdrant.QuantizationConfigDiff.scalar:type_name -> qdrant.ScalarQuantization - 35, // 27: qdrant.QuantizationConfigDiff.product:type_name -> qdrant.ProductQuantization - 38, // 28: qdrant.QuantizationConfigDiff.disabled:type_name -> qdrant.Disabled - 36, // 29: qdrant.QuantizationConfigDiff.binary:type_name -> qdrant.BinaryQuantization - 30, // 30: qdrant.CreateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff - 32, // 31: qdrant.CreateCollection.wal_config:type_name -> qdrant.WalConfigDiff - 33, // 32: qdrant.CreateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff - 16, // 33: qdrant.CreateCollection.vectors_config:type_name -> qdrant.VectorsConfig - 37, // 34: qdrant.CreateCollection.quantization_config:type_name -> qdrant.QuantizationConfig - 8, // 35: qdrant.CreateCollection.sharding_method:type_name -> qdrant.ShardingMethod - 19, // 36: qdrant.CreateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig - 40, // 37: qdrant.CreateCollection.strict_mode_config:type_name -> qdrant.StrictModeConfig - 33, // 38: qdrant.UpdateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff - 46, // 39: qdrant.UpdateCollection.params:type_name -> qdrant.CollectionParamsDiff - 30, // 40: qdrant.UpdateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff - 17, // 41: qdrant.UpdateCollection.vectors_config:type_name -> qdrant.VectorsConfigDiff - 39, // 42: qdrant.UpdateCollection.quantization_config:type_name -> qdrant.QuantizationConfigDiff - 19, // 43: qdrant.UpdateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig - 16, // 44: qdrant.CollectionParams.vectors_config:type_name -> qdrant.VectorsConfig - 8, // 45: qdrant.CollectionParams.sharding_method:type_name -> qdrant.ShardingMethod - 19, // 46: qdrant.CollectionParams.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig - 45, // 47: qdrant.CollectionConfig.params:type_name -> qdrant.CollectionParams - 30, // 48: qdrant.CollectionConfig.hnsw_config:type_name -> qdrant.HnswConfigDiff - 33, // 49: qdrant.CollectionConfig.optimizer_config:type_name -> qdrant.OptimizersConfigDiff - 32, // 50: qdrant.CollectionConfig.wal_config:type_name -> qdrant.WalConfigDiff - 37, // 51: qdrant.CollectionConfig.quantization_config:type_name -> qdrant.QuantizationConfig - 40, // 52: qdrant.CollectionConfig.strict_mode_config:type_name -> qdrant.StrictModeConfig - 9, // 53: qdrant.TextIndexParams.tokenizer:type_name -> qdrant.TokenizerType - 48, // 54: qdrant.PayloadIndexParams.keyword_index_params:type_name -> qdrant.KeywordIndexParams - 49, // 55: qdrant.PayloadIndexParams.integer_index_params:type_name -> qdrant.IntegerIndexParams - 50, // 56: qdrant.PayloadIndexParams.float_index_params:type_name -> qdrant.FloatIndexParams - 51, // 57: qdrant.PayloadIndexParams.geo_index_params:type_name -> qdrant.GeoIndexParams - 52, // 58: qdrant.PayloadIndexParams.text_index_params:type_name -> qdrant.TextIndexParams - 53, // 59: qdrant.PayloadIndexParams.bool_index_params:type_name -> qdrant.BoolIndexParams - 54, // 60: qdrant.PayloadIndexParams.datetime_index_params:type_name -> qdrant.DatetimeIndexParams - 55, // 61: qdrant.PayloadIndexParams.uuid_index_params:type_name -> qdrant.UuidIndexParams - 5, // 62: qdrant.PayloadSchemaInfo.data_type:type_name -> qdrant.PayloadSchemaType - 56, // 63: qdrant.PayloadSchemaInfo.params:type_name -> qdrant.PayloadIndexParams - 4, // 64: qdrant.CollectionInfo.status:type_name -> qdrant.CollectionStatus - 29, // 65: qdrant.CollectionInfo.optimizer_status:type_name -> qdrant.OptimizerStatus - 47, // 66: qdrant.CollectionInfo.config:type_name -> qdrant.CollectionConfig - 91, // 67: qdrant.CollectionInfo.payload_schema:type_name -> qdrant.CollectionInfo.PayloadSchemaEntry - 60, // 68: qdrant.ChangeAliases.actions:type_name -> qdrant.AliasOperations - 61, // 69: qdrant.AliasOperations.create_alias:type_name -> qdrant.CreateAlias - 62, // 70: qdrant.AliasOperations.rename_alias:type_name -> qdrant.RenameAlias - 63, // 71: qdrant.AliasOperations.delete_alias:type_name -> qdrant.DeleteAlias - 66, // 72: qdrant.ListAliasesResponse.aliases:type_name -> qdrant.AliasDescription - 10, // 73: qdrant.LocalShardInfo.state:type_name -> qdrant.ReplicaState - 69, // 74: qdrant.LocalShardInfo.shard_key:type_name -> qdrant.ShardKey - 10, // 75: qdrant.RemoteShardInfo.state:type_name -> qdrant.ReplicaState - 69, // 76: qdrant.RemoteShardInfo.shard_key:type_name -> qdrant.ShardKey - 69, // 77: qdrant.ReshardingInfo.shard_key:type_name -> qdrant.ShardKey - 70, // 78: qdrant.CollectionClusterInfoResponse.local_shards:type_name -> qdrant.LocalShardInfo - 71, // 79: qdrant.CollectionClusterInfoResponse.remote_shards:type_name -> qdrant.RemoteShardInfo - 72, // 80: qdrant.CollectionClusterInfoResponse.shard_transfers:type_name -> qdrant.ShardTransferInfo - 11, // 81: qdrant.MoveShard.method:type_name -> qdrant.ShardTransferMethod - 11, // 82: qdrant.ReplicateShard.method:type_name -> qdrant.ShardTransferMethod - 11, // 83: qdrant.RestartTransfer.method:type_name -> qdrant.ShardTransferMethod - 69, // 84: qdrant.CreateShardKey.shard_key:type_name -> qdrant.ShardKey - 69, // 85: qdrant.DeleteShardKey.shard_key:type_name -> qdrant.ShardKey - 75, // 86: qdrant.UpdateCollectionClusterSetupRequest.move_shard:type_name -> qdrant.MoveShard - 76, // 87: qdrant.UpdateCollectionClusterSetupRequest.replicate_shard:type_name -> qdrant.ReplicateShard - 77, // 88: qdrant.UpdateCollectionClusterSetupRequest.abort_transfer:type_name -> qdrant.AbortShardTransfer - 79, // 89: qdrant.UpdateCollectionClusterSetupRequest.drop_replica:type_name -> qdrant.Replica - 80, // 90: qdrant.UpdateCollectionClusterSetupRequest.create_shard_key:type_name -> qdrant.CreateShardKey - 81, // 91: qdrant.UpdateCollectionClusterSetupRequest.delete_shard_key:type_name -> qdrant.DeleteShardKey - 78, // 92: qdrant.UpdateCollectionClusterSetupRequest.restart_transfer:type_name -> qdrant.RestartTransfer - 80, // 93: qdrant.CreateShardKeyRequest.request:type_name -> qdrant.CreateShardKey - 81, // 94: qdrant.DeleteShardKeyRequest.request:type_name -> qdrant.DeleteShardKey - 12, // 95: qdrant.VectorParamsMap.MapEntry.value:type_name -> qdrant.VectorParams - 13, // 96: qdrant.VectorParamsDiffMap.MapEntry.value:type_name -> qdrant.VectorParamsDiff - 18, // 97: qdrant.SparseVectorConfig.MapEntry.value:type_name -> qdrant.SparseVectorParams - 57, // 98: qdrant.CollectionInfo.PayloadSchemaEntry.value:type_name -> qdrant.PayloadSchemaInfo - 99, // [99:99] is the sub-list for method output_type - 99, // [99:99] is the sub-list for method input_type - 99, // [99:99] is the sub-list for extension type_name - 99, // [99:99] is the sub-list for extension extendee - 0, // [0:99] is the sub-list for field type_name + 3, // 0: qdrant.VectorParams.distance:type_name -> qdrant.Distance + 33, // 1: qdrant.VectorParams.hnsw_config:type_name -> qdrant.HnswConfigDiff + 40, // 2: qdrant.VectorParams.quantization_config:type_name -> qdrant.QuantizationConfig + 0, // 3: qdrant.VectorParams.datatype:type_name -> qdrant.Datatype + 22, // 4: qdrant.VectorParams.multivector_config:type_name -> qdrant.MultiVectorConfig + 33, // 5: qdrant.VectorParamsDiff.hnsw_config:type_name -> qdrant.HnswConfigDiff + 42, // 6: qdrant.VectorParamsDiff.quantization_config:type_name -> qdrant.QuantizationConfigDiff + 91, // 7: qdrant.VectorParamsMap.map:type_name -> qdrant.VectorParamsMap.MapEntry + 92, // 8: qdrant.VectorParamsDiffMap.map:type_name -> qdrant.VectorParamsDiffMap.MapEntry + 14, // 9: qdrant.VectorsConfig.params:type_name -> qdrant.VectorParams + 16, // 10: qdrant.VectorsConfig.params_map:type_name -> qdrant.VectorParamsMap + 15, // 11: qdrant.VectorsConfigDiff.params:type_name -> qdrant.VectorParamsDiff + 17, // 12: qdrant.VectorsConfigDiff.params_map:type_name -> qdrant.VectorParamsDiffMap + 34, // 13: qdrant.SparseVectorParams.index:type_name -> qdrant.SparseIndexConfig + 1, // 14: qdrant.SparseVectorParams.modifier:type_name -> qdrant.Modifier + 93, // 15: qdrant.SparseVectorConfig.map:type_name -> qdrant.SparseVectorConfig.MapEntry + 2, // 16: qdrant.MultiVectorConfig.comparator:type_name -> qdrant.MultiVectorComparator + 25, // 17: qdrant.CollectionExistsResponse.result:type_name -> qdrant.CollectionExists + 61, // 18: qdrant.GetCollectionInfoResponse.result:type_name -> qdrant.CollectionInfo + 28, // 19: qdrant.ListCollectionsResponse.collections:type_name -> qdrant.CollectionDescription + 13, // 20: qdrant.MaxOptimizationThreads.setting:type_name -> qdrant.MaxOptimizationThreads.Setting + 0, // 21: qdrant.SparseIndexConfig.datatype:type_name -> qdrant.Datatype + 31, // 22: qdrant.OptimizersConfigDiff.max_optimization_threads:type_name -> qdrant.MaxOptimizationThreads + 6, // 23: qdrant.ScalarQuantization.type:type_name -> qdrant.QuantizationType + 7, // 24: qdrant.ProductQuantization.compression:type_name -> qdrant.CompressionRatio + 37, // 25: qdrant.QuantizationConfig.scalar:type_name -> qdrant.ScalarQuantization + 38, // 26: qdrant.QuantizationConfig.product:type_name -> qdrant.ProductQuantization + 39, // 27: qdrant.QuantizationConfig.binary:type_name -> qdrant.BinaryQuantization + 37, // 28: qdrant.QuantizationConfigDiff.scalar:type_name -> qdrant.ScalarQuantization + 38, // 29: qdrant.QuantizationConfigDiff.product:type_name -> qdrant.ProductQuantization + 41, // 30: qdrant.QuantizationConfigDiff.disabled:type_name -> qdrant.Disabled + 39, // 31: qdrant.QuantizationConfigDiff.binary:type_name -> qdrant.BinaryQuantization + 33, // 32: qdrant.CreateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff + 35, // 33: qdrant.CreateCollection.wal_config:type_name -> qdrant.WalConfigDiff + 36, // 34: qdrant.CreateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff + 18, // 35: qdrant.CreateCollection.vectors_config:type_name -> qdrant.VectorsConfig + 40, // 36: qdrant.CreateCollection.quantization_config:type_name -> qdrant.QuantizationConfig + 8, // 37: qdrant.CreateCollection.sharding_method:type_name -> qdrant.ShardingMethod + 21, // 38: qdrant.CreateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig + 43, // 39: qdrant.CreateCollection.strict_mode_config:type_name -> qdrant.StrictModeConfig + 36, // 40: qdrant.UpdateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff + 49, // 41: qdrant.UpdateCollection.params:type_name -> qdrant.CollectionParamsDiff + 33, // 42: qdrant.UpdateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff + 19, // 43: qdrant.UpdateCollection.vectors_config:type_name -> qdrant.VectorsConfigDiff + 42, // 44: qdrant.UpdateCollection.quantization_config:type_name -> qdrant.QuantizationConfigDiff + 21, // 45: qdrant.UpdateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig + 43, // 46: qdrant.UpdateCollection.strict_mode_config:type_name -> qdrant.StrictModeConfig + 18, // 47: qdrant.CollectionParams.vectors_config:type_name -> qdrant.VectorsConfig + 8, // 48: qdrant.CollectionParams.sharding_method:type_name -> qdrant.ShardingMethod + 21, // 49: qdrant.CollectionParams.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig + 48, // 50: qdrant.CollectionConfig.params:type_name -> qdrant.CollectionParams + 33, // 51: qdrant.CollectionConfig.hnsw_config:type_name -> qdrant.HnswConfigDiff + 36, // 52: qdrant.CollectionConfig.optimizer_config:type_name -> qdrant.OptimizersConfigDiff + 35, // 53: qdrant.CollectionConfig.wal_config:type_name -> qdrant.WalConfigDiff + 40, // 54: qdrant.CollectionConfig.quantization_config:type_name -> qdrant.QuantizationConfig + 43, // 55: qdrant.CollectionConfig.strict_mode_config:type_name -> qdrant.StrictModeConfig + 9, // 56: qdrant.TextIndexParams.tokenizer:type_name -> qdrant.TokenizerType + 51, // 57: qdrant.PayloadIndexParams.keyword_index_params:type_name -> qdrant.KeywordIndexParams + 52, // 58: qdrant.PayloadIndexParams.integer_index_params:type_name -> qdrant.IntegerIndexParams + 53, // 59: qdrant.PayloadIndexParams.float_index_params:type_name -> qdrant.FloatIndexParams + 54, // 60: qdrant.PayloadIndexParams.geo_index_params:type_name -> qdrant.GeoIndexParams + 55, // 61: qdrant.PayloadIndexParams.text_index_params:type_name -> qdrant.TextIndexParams + 56, // 62: qdrant.PayloadIndexParams.bool_index_params:type_name -> qdrant.BoolIndexParams + 57, // 63: qdrant.PayloadIndexParams.datetime_index_params:type_name -> qdrant.DatetimeIndexParams + 58, // 64: qdrant.PayloadIndexParams.uuid_index_params:type_name -> qdrant.UuidIndexParams + 5, // 65: qdrant.PayloadSchemaInfo.data_type:type_name -> qdrant.PayloadSchemaType + 59, // 66: qdrant.PayloadSchemaInfo.params:type_name -> qdrant.PayloadIndexParams + 4, // 67: qdrant.CollectionInfo.status:type_name -> qdrant.CollectionStatus + 32, // 68: qdrant.CollectionInfo.optimizer_status:type_name -> qdrant.OptimizerStatus + 50, // 69: qdrant.CollectionInfo.config:type_name -> qdrant.CollectionConfig + 94, // 70: qdrant.CollectionInfo.payload_schema:type_name -> qdrant.CollectionInfo.PayloadSchemaEntry + 63, // 71: qdrant.ChangeAliases.actions:type_name -> qdrant.AliasOperations + 64, // 72: qdrant.AliasOperations.create_alias:type_name -> qdrant.CreateAlias + 65, // 73: qdrant.AliasOperations.rename_alias:type_name -> qdrant.RenameAlias + 66, // 74: qdrant.AliasOperations.delete_alias:type_name -> qdrant.DeleteAlias + 69, // 75: qdrant.ListAliasesResponse.aliases:type_name -> qdrant.AliasDescription + 10, // 76: qdrant.LocalShardInfo.state:type_name -> qdrant.ReplicaState + 72, // 77: qdrant.LocalShardInfo.shard_key:type_name -> qdrant.ShardKey + 10, // 78: qdrant.RemoteShardInfo.state:type_name -> qdrant.ReplicaState + 72, // 79: qdrant.RemoteShardInfo.shard_key:type_name -> qdrant.ShardKey + 72, // 80: qdrant.ReshardingInfo.shard_key:type_name -> qdrant.ShardKey + 11, // 81: qdrant.ReshardingInfo.direction:type_name -> qdrant.ReshardingDirection + 73, // 82: qdrant.CollectionClusterInfoResponse.local_shards:type_name -> qdrant.LocalShardInfo + 74, // 83: qdrant.CollectionClusterInfoResponse.remote_shards:type_name -> qdrant.RemoteShardInfo + 75, // 84: qdrant.CollectionClusterInfoResponse.shard_transfers:type_name -> qdrant.ShardTransferInfo + 76, // 85: qdrant.CollectionClusterInfoResponse.resharding_operations:type_name -> qdrant.ReshardingInfo + 12, // 86: qdrant.MoveShard.method:type_name -> qdrant.ShardTransferMethod + 12, // 87: qdrant.ReplicateShard.method:type_name -> qdrant.ShardTransferMethod + 12, // 88: qdrant.RestartTransfer.method:type_name -> qdrant.ShardTransferMethod + 72, // 89: qdrant.CreateShardKey.shard_key:type_name -> qdrant.ShardKey + 72, // 90: qdrant.DeleteShardKey.shard_key:type_name -> qdrant.ShardKey + 78, // 91: qdrant.UpdateCollectionClusterSetupRequest.move_shard:type_name -> qdrant.MoveShard + 79, // 92: qdrant.UpdateCollectionClusterSetupRequest.replicate_shard:type_name -> qdrant.ReplicateShard + 80, // 93: qdrant.UpdateCollectionClusterSetupRequest.abort_transfer:type_name -> qdrant.AbortShardTransfer + 82, // 94: qdrant.UpdateCollectionClusterSetupRequest.drop_replica:type_name -> qdrant.Replica + 83, // 95: qdrant.UpdateCollectionClusterSetupRequest.create_shard_key:type_name -> qdrant.CreateShardKey + 84, // 96: qdrant.UpdateCollectionClusterSetupRequest.delete_shard_key:type_name -> qdrant.DeleteShardKey + 81, // 97: qdrant.UpdateCollectionClusterSetupRequest.restart_transfer:type_name -> qdrant.RestartTransfer + 83, // 98: qdrant.CreateShardKeyRequest.request:type_name -> qdrant.CreateShardKey + 84, // 99: qdrant.DeleteShardKeyRequest.request:type_name -> qdrant.DeleteShardKey + 14, // 100: qdrant.VectorParamsMap.MapEntry.value:type_name -> qdrant.VectorParams + 15, // 101: qdrant.VectorParamsDiffMap.MapEntry.value:type_name -> qdrant.VectorParamsDiff + 20, // 102: qdrant.SparseVectorConfig.MapEntry.value:type_name -> qdrant.SparseVectorParams + 60, // 103: qdrant.CollectionInfo.PayloadSchemaEntry.value:type_name -> qdrant.PayloadSchemaInfo + 104, // [104:104] is the sub-list for method output_type + 104, // [104:104] is the sub-list for method input_type + 104, // [104:104] is the sub-list for extension type_name + 104, // [104:104] is the sub-list for extension extendee + 0, // [0:104] is the sub-list for field type_name } func init() { file_collections_proto_init() } @@ -7319,7 +7677,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*OptimizerStatus); i { + switch v := v.(*MaxOptimizationThreads); i { case 0: return &v.state case 1: @@ -7331,7 +7689,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*HnswConfigDiff); i { + switch v := v.(*OptimizerStatus); i { case 0: return &v.state case 1: @@ -7343,7 +7701,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*SparseIndexConfig); i { + switch v := v.(*HnswConfigDiff); i { case 0: return &v.state case 1: @@ -7355,7 +7713,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*WalConfigDiff); i { + switch v := v.(*SparseIndexConfig); i { case 0: return &v.state case 1: @@ -7367,7 +7725,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*OptimizersConfigDiff); i { + switch v := v.(*WalConfigDiff); i { case 0: return &v.state case 1: @@ -7379,7 +7737,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*ScalarQuantization); i { + switch v := v.(*OptimizersConfigDiff); i { case 0: return &v.state case 1: @@ -7391,7 +7749,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*ProductQuantization); i { + switch v := v.(*ScalarQuantization); i { case 0: return &v.state case 1: @@ -7403,7 +7761,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*BinaryQuantization); i { + switch v := v.(*ProductQuantization); i { case 0: return &v.state case 1: @@ -7415,7 +7773,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*QuantizationConfig); i { + switch v := v.(*BinaryQuantization); i { case 0: return &v.state case 1: @@ -7427,7 +7785,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*Disabled); i { + switch v := v.(*QuantizationConfig); i { case 0: return &v.state case 1: @@ -7439,7 +7797,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*QuantizationConfigDiff); i { + switch v := v.(*Disabled); i { case 0: return &v.state case 1: @@ -7451,7 +7809,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*StrictModeConfig); i { + switch v := v.(*QuantizationConfigDiff); i { case 0: return &v.state case 1: @@ -7463,7 +7821,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*CreateCollection); i { + switch v := v.(*StrictModeConfig); i { case 0: return &v.state case 1: @@ -7475,7 +7833,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCollection); i { + switch v := v.(*CreateCollection); i { case 0: return &v.state case 1: @@ -7487,7 +7845,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*DeleteCollection); i { + switch v := v.(*UpdateCollection); i { case 0: return &v.state case 1: @@ -7499,7 +7857,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*CollectionOperationResponse); i { + switch v := v.(*DeleteCollection); i { case 0: return &v.state case 1: @@ -7511,7 +7869,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*CollectionParams); i { + switch v := v.(*CollectionOperationResponse); i { case 0: return &v.state case 1: @@ -7523,7 +7881,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*CollectionParamsDiff); i { + switch v := v.(*CollectionParams); i { case 0: return &v.state case 1: @@ -7535,7 +7893,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*CollectionConfig); i { + switch v := v.(*CollectionParamsDiff); i { case 0: return &v.state case 1: @@ -7547,7 +7905,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*KeywordIndexParams); i { + switch v := v.(*CollectionConfig); i { case 0: return &v.state case 1: @@ -7559,7 +7917,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*IntegerIndexParams); i { + switch v := v.(*KeywordIndexParams); i { case 0: return &v.state case 1: @@ -7571,7 +7929,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*FloatIndexParams); i { + switch v := v.(*IntegerIndexParams); i { case 0: return &v.state case 1: @@ -7583,7 +7941,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*GeoIndexParams); i { + switch v := v.(*FloatIndexParams); i { case 0: return &v.state case 1: @@ -7595,7 +7953,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*TextIndexParams); i { + switch v := v.(*GeoIndexParams); i { case 0: return &v.state case 1: @@ -7607,7 +7965,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*BoolIndexParams); i { + switch v := v.(*TextIndexParams); i { case 0: return &v.state case 1: @@ -7619,7 +7977,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*DatetimeIndexParams); i { + switch v := v.(*BoolIndexParams); i { case 0: return &v.state case 1: @@ -7631,7 +7989,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*UuidIndexParams); i { + switch v := v.(*DatetimeIndexParams); i { case 0: return &v.state case 1: @@ -7643,7 +8001,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*PayloadIndexParams); i { + switch v := v.(*UuidIndexParams); i { case 0: return &v.state case 1: @@ -7655,7 +8013,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*PayloadSchemaInfo); i { + switch v := v.(*PayloadIndexParams); i { case 0: return &v.state case 1: @@ -7667,7 +8025,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*CollectionInfo); i { + switch v := v.(*PayloadSchemaInfo); i { case 0: return &v.state case 1: @@ -7679,7 +8037,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*ChangeAliases); i { + switch v := v.(*CollectionInfo); i { case 0: return &v.state case 1: @@ -7691,7 +8049,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*AliasOperations); i { + switch v := v.(*ChangeAliases); i { case 0: return &v.state case 1: @@ -7703,7 +8061,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*CreateAlias); i { + switch v := v.(*AliasOperations); i { case 0: return &v.state case 1: @@ -7715,7 +8073,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*RenameAlias); i { + switch v := v.(*CreateAlias); i { case 0: return &v.state case 1: @@ -7727,7 +8085,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAlias); i { + switch v := v.(*RenameAlias); i { case 0: return &v.state case 1: @@ -7739,7 +8097,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*ListAliasesRequest); i { + switch v := v.(*DeleteAlias); i { case 0: return &v.state case 1: @@ -7751,7 +8109,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*ListCollectionAliasesRequest); i { + switch v := v.(*ListAliasesRequest); i { case 0: return &v.state case 1: @@ -7763,7 +8121,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*AliasDescription); i { + switch v := v.(*ListCollectionAliasesRequest); i { case 0: return &v.state case 1: @@ -7775,7 +8133,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*ListAliasesResponse); i { + switch v := v.(*AliasDescription); i { case 0: return &v.state case 1: @@ -7787,7 +8145,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*CollectionClusterInfoRequest); i { + switch v := v.(*ListAliasesResponse); i { case 0: return &v.state case 1: @@ -7799,7 +8157,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*ShardKey); i { + switch v := v.(*CollectionClusterInfoRequest); i { case 0: return &v.state case 1: @@ -7811,7 +8169,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*LocalShardInfo); i { + switch v := v.(*ShardKey); i { case 0: return &v.state case 1: @@ -7823,7 +8181,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*RemoteShardInfo); i { + switch v := v.(*LocalShardInfo); i { case 0: return &v.state case 1: @@ -7835,7 +8193,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*ShardTransferInfo); i { + switch v := v.(*RemoteShardInfo); i { case 0: return &v.state case 1: @@ -7847,7 +8205,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*ReshardingInfo); i { + switch v := v.(*ShardTransferInfo); i { case 0: return &v.state case 1: @@ -7859,7 +8217,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*CollectionClusterInfoResponse); i { + switch v := v.(*ReshardingInfo); i { case 0: return &v.state case 1: @@ -7871,7 +8229,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*MoveShard); i { + switch v := v.(*CollectionClusterInfoResponse); i { case 0: return &v.state case 1: @@ -7883,7 +8241,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*ReplicateShard); i { + switch v := v.(*MoveShard); i { case 0: return &v.state case 1: @@ -7895,7 +8253,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*AbortShardTransfer); i { + switch v := v.(*ReplicateShard); i { case 0: return &v.state case 1: @@ -7907,7 +8265,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*RestartTransfer); i { + switch v := v.(*AbortShardTransfer); i { case 0: return &v.state case 1: @@ -7919,7 +8277,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[67].Exporter = func(v any, i int) any { - switch v := v.(*Replica); i { + switch v := v.(*RestartTransfer); i { case 0: return &v.state case 1: @@ -7931,7 +8289,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[68].Exporter = func(v any, i int) any { - switch v := v.(*CreateShardKey); i { + switch v := v.(*Replica); i { case 0: return &v.state case 1: @@ -7943,7 +8301,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[69].Exporter = func(v any, i int) any { - switch v := v.(*DeleteShardKey); i { + switch v := v.(*CreateShardKey); i { case 0: return &v.state case 1: @@ -7955,7 +8313,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[70].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCollectionClusterSetupRequest); i { + switch v := v.(*DeleteShardKey); i { case 0: return &v.state case 1: @@ -7967,7 +8325,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[71].Exporter = func(v any, i int) any { - switch v := v.(*UpdateCollectionClusterSetupResponse); i { + switch v := v.(*UpdateCollectionClusterSetupRequest); i { case 0: return &v.state case 1: @@ -7979,7 +8337,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*CreateShardKeyRequest); i { + switch v := v.(*UpdateCollectionClusterSetupResponse); i { case 0: return &v.state case 1: @@ -7991,7 +8349,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[73].Exporter = func(v any, i int) any { - switch v := v.(*DeleteShardKeyRequest); i { + switch v := v.(*CreateShardKeyRequest); i { case 0: return &v.state case 1: @@ -8003,7 +8361,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[74].Exporter = func(v any, i int) any { - switch v := v.(*CreateShardKeyResponse); i { + switch v := v.(*DeleteShardKeyRequest); i { case 0: return &v.state case 1: @@ -8015,6 +8373,18 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[75].Exporter = func(v any, i int) any { + switch v := v.(*CreateShardKeyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_collections_proto_msgTypes[76].Exporter = func(v any, i int) any { switch v := v.(*DeleteShardKeyResponse); i { case 0: return &v.state @@ -8038,29 +8408,32 @@ func file_collections_proto_init() { (*VectorsConfigDiff_ParamsMap)(nil), } file_collections_proto_msgTypes[6].OneofWrappers = []any{} - file_collections_proto_msgTypes[18].OneofWrappers = []any{} + file_collections_proto_msgTypes[17].OneofWrappers = []any{ + (*MaxOptimizationThreads_Value)(nil), + (*MaxOptimizationThreads_Setting_)(nil), + } file_collections_proto_msgTypes[19].OneofWrappers = []any{} file_collections_proto_msgTypes[20].OneofWrappers = []any{} file_collections_proto_msgTypes[21].OneofWrappers = []any{} file_collections_proto_msgTypes[22].OneofWrappers = []any{} file_collections_proto_msgTypes[23].OneofWrappers = []any{} file_collections_proto_msgTypes[24].OneofWrappers = []any{} - file_collections_proto_msgTypes[25].OneofWrappers = []any{ + file_collections_proto_msgTypes[25].OneofWrappers = []any{} + file_collections_proto_msgTypes[26].OneofWrappers = []any{ (*QuantizationConfig_Scalar)(nil), (*QuantizationConfig_Product)(nil), (*QuantizationConfig_Binary)(nil), } - file_collections_proto_msgTypes[27].OneofWrappers = []any{ + file_collections_proto_msgTypes[28].OneofWrappers = []any{ (*QuantizationConfigDiff_Scalar)(nil), (*QuantizationConfigDiff_Product)(nil), (*QuantizationConfigDiff_Disabled)(nil), (*QuantizationConfigDiff_Binary)(nil), } - file_collections_proto_msgTypes[28].OneofWrappers = []any{} file_collections_proto_msgTypes[29].OneofWrappers = []any{} file_collections_proto_msgTypes[30].OneofWrappers = []any{} file_collections_proto_msgTypes[31].OneofWrappers = []any{} - file_collections_proto_msgTypes[33].OneofWrappers = []any{} + file_collections_proto_msgTypes[32].OneofWrappers = []any{} file_collections_proto_msgTypes[34].OneofWrappers = []any{} file_collections_proto_msgTypes[35].OneofWrappers = []any{} file_collections_proto_msgTypes[36].OneofWrappers = []any{} @@ -8068,9 +8441,11 @@ func file_collections_proto_init() { file_collections_proto_msgTypes[38].OneofWrappers = []any{} file_collections_proto_msgTypes[39].OneofWrappers = []any{} file_collections_proto_msgTypes[40].OneofWrappers = []any{} + file_collections_proto_msgTypes[41].OneofWrappers = []any{} file_collections_proto_msgTypes[42].OneofWrappers = []any{} file_collections_proto_msgTypes[43].OneofWrappers = []any{} - file_collections_proto_msgTypes[44].OneofWrappers = []any{ + file_collections_proto_msgTypes[44].OneofWrappers = []any{} + file_collections_proto_msgTypes[45].OneofWrappers = []any{ (*PayloadIndexParams_KeywordIndexParams)(nil), (*PayloadIndexParams_IntegerIndexParams)(nil), (*PayloadIndexParams_FloatIndexParams)(nil), @@ -8080,28 +8455,28 @@ func file_collections_proto_init() { (*PayloadIndexParams_DatetimeIndexParams)(nil), (*PayloadIndexParams_UuidIndexParams)(nil), } - file_collections_proto_msgTypes[45].OneofWrappers = []any{} file_collections_proto_msgTypes[46].OneofWrappers = []any{} file_collections_proto_msgTypes[47].OneofWrappers = []any{} - file_collections_proto_msgTypes[48].OneofWrappers = []any{ + file_collections_proto_msgTypes[48].OneofWrappers = []any{} + file_collections_proto_msgTypes[49].OneofWrappers = []any{ (*AliasOperations_CreateAlias)(nil), (*AliasOperations_RenameAlias)(nil), (*AliasOperations_DeleteAlias)(nil), } - file_collections_proto_msgTypes[57].OneofWrappers = []any{ + file_collections_proto_msgTypes[58].OneofWrappers = []any{ (*ShardKey_Keyword)(nil), (*ShardKey_Number)(nil), } - file_collections_proto_msgTypes[58].OneofWrappers = []any{} file_collections_proto_msgTypes[59].OneofWrappers = []any{} file_collections_proto_msgTypes[60].OneofWrappers = []any{} file_collections_proto_msgTypes[61].OneofWrappers = []any{} - file_collections_proto_msgTypes[63].OneofWrappers = []any{} + file_collections_proto_msgTypes[62].OneofWrappers = []any{} file_collections_proto_msgTypes[64].OneofWrappers = []any{} file_collections_proto_msgTypes[65].OneofWrappers = []any{} file_collections_proto_msgTypes[66].OneofWrappers = []any{} - file_collections_proto_msgTypes[68].OneofWrappers = []any{} - file_collections_proto_msgTypes[70].OneofWrappers = []any{ + file_collections_proto_msgTypes[67].OneofWrappers = []any{} + file_collections_proto_msgTypes[69].OneofWrappers = []any{} + file_collections_proto_msgTypes[71].OneofWrappers = []any{ (*UpdateCollectionClusterSetupRequest_MoveShard)(nil), (*UpdateCollectionClusterSetupRequest_ReplicateShard)(nil), (*UpdateCollectionClusterSetupRequest_AbortTransfer)(nil), @@ -8110,15 +8485,15 @@ func file_collections_proto_init() { (*UpdateCollectionClusterSetupRequest_DeleteShardKey)(nil), (*UpdateCollectionClusterSetupRequest_RestartTransfer)(nil), } - file_collections_proto_msgTypes[72].OneofWrappers = []any{} file_collections_proto_msgTypes[73].OneofWrappers = []any{} + file_collections_proto_msgTypes[74].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_collections_proto_rawDesc, - NumEnums: 12, - NumMessages: 80, + NumEnums: 14, + NumMessages: 81, NumExtensions: 0, NumServices: 0, }, diff --git a/qdrant/collections_service.pb.go b/qdrant/collections_service.pb.go index dca1d24..ed96127 100644 --- a/qdrant/collections_service.pb.go +++ b/qdrant/collections_service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.34.2 -// protoc v5.27.3 +// protoc v5.28.0 // source: collections_service.proto package qdrant diff --git a/qdrant/collections_service_grpc.pb.go b/qdrant/collections_service_grpc.pb.go index 35c1e8c..da5f1fd 100644 --- a/qdrant/collections_service_grpc.pb.go +++ b/qdrant/collections_service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.27.3 +// - protoc v5.28.0 // source: collections_service.proto package qdrant @@ -9,6 +9,8 @@ package qdrant import ( context "context" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" ) // This is a compile-time assertion to ensure that this generated file @@ -201,3 +203,401 @@ func (c *collectionsClient) DeleteShardKey(ctx context.Context, in *DeleteShardK } return out, nil } + +// CollectionsServer is the server API for Collections service. +// All implementations must embed UnimplementedCollectionsServer +// for forward compatibility. +type CollectionsServer interface { + // Get detailed information about specified existing collection + Get(context.Context, *GetCollectionInfoRequest) (*GetCollectionInfoResponse, error) + // Get list name of all existing collections + List(context.Context, *ListCollectionsRequest) (*ListCollectionsResponse, error) + // Create new collection with given parameters + Create(context.Context, *CreateCollection) (*CollectionOperationResponse, error) + // Update parameters of the existing collection + Update(context.Context, *UpdateCollection) (*CollectionOperationResponse, error) + // Drop collection and all associated data + Delete(context.Context, *DeleteCollection) (*CollectionOperationResponse, error) + // Update Aliases of the existing collection + UpdateAliases(context.Context, *ChangeAliases) (*CollectionOperationResponse, error) + // Get list of all aliases for a collection + ListCollectionAliases(context.Context, *ListCollectionAliasesRequest) (*ListAliasesResponse, error) + // Get list of all aliases for all existing collections + ListAliases(context.Context, *ListAliasesRequest) (*ListAliasesResponse, error) + // Get cluster information for a collection + CollectionClusterInfo(context.Context, *CollectionClusterInfoRequest) (*CollectionClusterInfoResponse, error) + // Check the existence of a collection + CollectionExists(context.Context, *CollectionExistsRequest) (*CollectionExistsResponse, error) + // Update cluster setup for a collection + UpdateCollectionClusterSetup(context.Context, *UpdateCollectionClusterSetupRequest) (*UpdateCollectionClusterSetupResponse, error) + // Create shard key + CreateShardKey(context.Context, *CreateShardKeyRequest) (*CreateShardKeyResponse, error) + // Delete shard key + DeleteShardKey(context.Context, *DeleteShardKeyRequest) (*DeleteShardKeyResponse, error) + mustEmbedUnimplementedCollectionsServer() +} + +// UnimplementedCollectionsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedCollectionsServer struct{} + +func (UnimplementedCollectionsServer) Get(context.Context, *GetCollectionInfoRequest) (*GetCollectionInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedCollectionsServer) List(context.Context, *ListCollectionsRequest) (*ListCollectionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedCollectionsServer) Create(context.Context, *CreateCollection) (*CollectionOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedCollectionsServer) Update(context.Context, *UpdateCollection) (*CollectionOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedCollectionsServer) Delete(context.Context, *DeleteCollection) (*CollectionOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedCollectionsServer) UpdateAliases(context.Context, *ChangeAliases) (*CollectionOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAliases not implemented") +} +func (UnimplementedCollectionsServer) ListCollectionAliases(context.Context, *ListCollectionAliasesRequest) (*ListAliasesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCollectionAliases not implemented") +} +func (UnimplementedCollectionsServer) ListAliases(context.Context, *ListAliasesRequest) (*ListAliasesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAliases not implemented") +} +func (UnimplementedCollectionsServer) CollectionClusterInfo(context.Context, *CollectionClusterInfoRequest) (*CollectionClusterInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CollectionClusterInfo not implemented") +} +func (UnimplementedCollectionsServer) CollectionExists(context.Context, *CollectionExistsRequest) (*CollectionExistsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CollectionExists not implemented") +} +func (UnimplementedCollectionsServer) UpdateCollectionClusterSetup(context.Context, *UpdateCollectionClusterSetupRequest) (*UpdateCollectionClusterSetupResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateCollectionClusterSetup not implemented") +} +func (UnimplementedCollectionsServer) CreateShardKey(context.Context, *CreateShardKeyRequest) (*CreateShardKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateShardKey not implemented") +} +func (UnimplementedCollectionsServer) DeleteShardKey(context.Context, *DeleteShardKeyRequest) (*DeleteShardKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteShardKey not implemented") +} +func (UnimplementedCollectionsServer) mustEmbedUnimplementedCollectionsServer() {} +func (UnimplementedCollectionsServer) testEmbeddedByValue() {} + +// UnsafeCollectionsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to CollectionsServer will +// result in compilation errors. +type UnsafeCollectionsServer interface { + mustEmbedUnimplementedCollectionsServer() +} + +func RegisterCollectionsServer(s grpc.ServiceRegistrar, srv CollectionsServer) { + // If the following call pancis, it indicates UnimplementedCollectionsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Collections_ServiceDesc, srv) +} + +func _Collections_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCollectionInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_Get_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).Get(ctx, req.(*GetCollectionInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCollectionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_List_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).List(ctx, req.(*ListCollectionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_Create_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).Create(ctx, req.(*CreateCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_Update_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).Update(ctx, req.(*UpdateCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).Delete(ctx, req.(*DeleteCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_UpdateAliases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ChangeAliases) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).UpdateAliases(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_UpdateAliases_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).UpdateAliases(ctx, req.(*ChangeAliases)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_ListCollectionAliases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCollectionAliasesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).ListCollectionAliases(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_ListCollectionAliases_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).ListCollectionAliases(ctx, req.(*ListCollectionAliasesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_ListAliases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAliasesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).ListAliases(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_ListAliases_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).ListAliases(ctx, req.(*ListAliasesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_CollectionClusterInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CollectionClusterInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).CollectionClusterInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_CollectionClusterInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).CollectionClusterInfo(ctx, req.(*CollectionClusterInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_CollectionExists_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CollectionExistsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).CollectionExists(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_CollectionExists_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).CollectionExists(ctx, req.(*CollectionExistsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_UpdateCollectionClusterSetup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateCollectionClusterSetupRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).UpdateCollectionClusterSetup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_UpdateCollectionClusterSetup_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).UpdateCollectionClusterSetup(ctx, req.(*UpdateCollectionClusterSetupRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_CreateShardKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateShardKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).CreateShardKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_CreateShardKey_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).CreateShardKey(ctx, req.(*CreateShardKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Collections_DeleteShardKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteShardKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CollectionsServer).DeleteShardKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Collections_DeleteShardKey_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CollectionsServer).DeleteShardKey(ctx, req.(*DeleteShardKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Collections_ServiceDesc is the grpc.ServiceDesc for Collections service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Collections_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "qdrant.Collections", + HandlerType: (*CollectionsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Get", + Handler: _Collections_Get_Handler, + }, + { + MethodName: "List", + Handler: _Collections_List_Handler, + }, + { + MethodName: "Create", + Handler: _Collections_Create_Handler, + }, + { + MethodName: "Update", + Handler: _Collections_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _Collections_Delete_Handler, + }, + { + MethodName: "UpdateAliases", + Handler: _Collections_UpdateAliases_Handler, + }, + { + MethodName: "ListCollectionAliases", + Handler: _Collections_ListCollectionAliases_Handler, + }, + { + MethodName: "ListAliases", + Handler: _Collections_ListAliases_Handler, + }, + { + MethodName: "CollectionClusterInfo", + Handler: _Collections_CollectionClusterInfo_Handler, + }, + { + MethodName: "CollectionExists", + Handler: _Collections_CollectionExists_Handler, + }, + { + MethodName: "UpdateCollectionClusterSetup", + Handler: _Collections_UpdateCollectionClusterSetup_Handler, + }, + { + MethodName: "CreateShardKey", + Handler: _Collections_CreateShardKey_Handler, + }, + { + MethodName: "DeleteShardKey", + Handler: _Collections_DeleteShardKey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "collections_service.proto", +} diff --git a/qdrant/conditions.go b/qdrant/conditions.go index 21d6f1c..ac494b1 100644 --- a/qdrant/conditions.go +++ b/qdrant/conditions.go @@ -319,3 +319,15 @@ func NewDatetimeRange(field string, dateTimeRange *DatetimeRange) *Condition { }, } } + +// Creates a condition that checks if a point has the specified vector. +// See: https://qdrant.tech/documentation/concepts/filtering/#has-vector +func NewHasVector(vector string) *Condition { + return &Condition{ + ConditionOneOf: &Condition_HasVector{ + HasVector: &HasVectorCondition{ + HasVector: vector, + }, + }, + } +} diff --git a/qdrant/json_with_int.pb.go b/qdrant/json_with_int.pb.go index 523bc28..1f0dbfd 100644 --- a/qdrant/json_with_int.pb.go +++ b/qdrant/json_with_int.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.34.2 -// protoc v5.27.3 +// protoc v5.28.0 // source: json_with_int.proto package qdrant diff --git a/qdrant/oneof_factory.go b/qdrant/oneof_factory.go index 7dddfa1..25d8bf7 100644 --- a/qdrant/oneof_factory.go +++ b/qdrant/oneof_factory.go @@ -362,6 +362,33 @@ func NewVectorInputMulti(vectors [][]float32) *VectorInput { } } +// // Creates a *VectorInput instance for a document. +// func NewVectorInputDocument(document *Document) *VectorInput { +// return &VectorInput{ +// Variant: &VectorInput_Document{ +// Document: document, +// }, +// } +// } + +// // Creates a *VectorInput instance for an image. +// func NewVectorInputImage(image *Image) *VectorInput { +// return &VectorInput{ +// Variant: &VectorInput_Image{ +// Image: image, +// }, +// } +// } + +// // Creates a *VectorInput instance for an inference object. +// func NewVectorInputObject(object *InferenceObject) *VectorInput { +// return &VectorInput{ +// Variant: &VectorInput_Object{ +// Object: object, +// }, +// } +// } + // Creates a *WithPayloadSelector instance with payload enabled/disabled. // This is an alias for NewWithPayloadEnable(). func NewWithPayload(enable bool) *WithPayloadSelector { @@ -824,7 +851,20 @@ func NewPointsSelectorIDs(ids []*PointId) *PointsSelector { } } -// Creates a pointer to a value of any type. -func PtrOf[T any](t T) *T { - return &t +// Creates a *MaxOptimizationThreads instance from the number of specified threads. +func NewMaxOptimizationThreads(value uint64) *MaxOptimizationThreads { + return &MaxOptimizationThreads{ + Variant: &MaxOptimizationThreads_Value{ + Value: value, + }, + } +} + +// Creates a *MaxOptimizationThreads instance from the specified settings. +func NewMaxOptimizationThreadsSetting(setting MaxOptimizationThreads_Setting) *MaxOptimizationThreads { + return &MaxOptimizationThreads{ + Variant: &MaxOptimizationThreads_Setting_{ + Setting: setting, + }, + } } diff --git a/qdrant/points.pb.go b/qdrant/points.pb.go index 1d3f879..b93e474 100644 --- a/qdrant/points.pb.go +++ b/qdrant/points.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.34.2 -// protoc v5.27.3 +// protoc v5.28.0 // source: points.proto package qdrant @@ -683,19 +683,18 @@ func (x *SparseIndices) GetData() []uint32 { return nil } -// Legacy vector format, which determines the vector type by the configuration of its fields. -type Vector struct { +type Document struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` // Vector data (flatten for multi vectors) - Indices *SparseIndices `protobuf:"bytes,2,opt,name=indices,proto3,oneof" json:"indices,omitempty"` // Sparse indices for sparse vectors - VectorsCount *uint32 `protobuf:"varint,3,opt,name=vectors_count,json=vectorsCount,proto3,oneof" json:"vectors_count,omitempty"` // Number of vectors per multi vector + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` // Text of the document + Model string `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"` // Model name + Options map[string]*Value `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Model options } -func (x *Vector) Reset() { - *x = Vector{} +func (x *Document) Reset() { + *x = Document{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -703,13 +702,13 @@ func (x *Vector) Reset() { } } -func (x *Vector) String() string { +func (x *Document) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Vector) ProtoMessage() {} +func (*Document) ProtoMessage() {} -func (x *Vector) ProtoReflect() protoreflect.Message { +func (x *Document) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -721,42 +720,44 @@ func (x *Vector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Vector.ProtoReflect.Descriptor instead. -func (*Vector) Descriptor() ([]byte, []int) { +// Deprecated: Use Document.ProtoReflect.Descriptor instead. +func (*Document) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{4} } -func (x *Vector) GetData() []float32 { +func (x *Document) GetText() string { if x != nil { - return x.Data + return x.Text } - return nil + return "" } -func (x *Vector) GetIndices() *SparseIndices { +func (x *Document) GetModel() string { if x != nil { - return x.Indices + return x.Model } - return nil + return "" } -func (x *Vector) GetVectorsCount() uint32 { - if x != nil && x.VectorsCount != nil { - return *x.VectorsCount +func (x *Document) GetOptions() map[string]*Value { + if x != nil { + return x.Options } - return 0 + return nil } -type DenseVector struct { +type Image struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` + Image *Value `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` // Image data, either base64 encoded or URL + Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` // Model name + Options map[string]*Value `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Model options } -func (x *DenseVector) Reset() { - *x = DenseVector{} +func (x *Image) Reset() { + *x = Image{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -764,13 +765,13 @@ func (x *DenseVector) Reset() { } } -func (x *DenseVector) String() string { +func (x *Image) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DenseVector) ProtoMessage() {} +func (*Image) ProtoMessage() {} -func (x *DenseVector) ProtoReflect() protoreflect.Message { +func (x *Image) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -782,29 +783,44 @@ func (x *DenseVector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DenseVector.ProtoReflect.Descriptor instead. -func (*DenseVector) Descriptor() ([]byte, []int) { +// Deprecated: Use Image.ProtoReflect.Descriptor instead. +func (*Image) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{5} } -func (x *DenseVector) GetData() []float32 { +func (x *Image) GetImage() *Value { if x != nil { - return x.Data + return x.Image } return nil } -type SparseVector struct { +func (x *Image) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +func (x *Image) GetOptions() map[string]*Value { + if x != nil { + return x.Options + } + return nil +} + +type InferenceObject struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Values []float32 `protobuf:"fixed32,1,rep,packed,name=values,proto3" json:"values,omitempty"` - Indices []uint32 `protobuf:"varint,2,rep,packed,name=indices,proto3" json:"indices,omitempty"` + Object *Value `protobuf:"bytes,1,opt,name=object,proto3" json:"object,omitempty"` // Object to infer + Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` // Model name + Options map[string]*Value `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Model options } -func (x *SparseVector) Reset() { - *x = SparseVector{} +func (x *InferenceObject) Reset() { + *x = InferenceObject{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -812,13 +828,13 @@ func (x *SparseVector) Reset() { } } -func (x *SparseVector) String() string { +func (x *InferenceObject) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SparseVector) ProtoMessage() {} +func (*InferenceObject) ProtoMessage() {} -func (x *SparseVector) ProtoReflect() protoreflect.Message { +func (x *InferenceObject) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -830,35 +846,54 @@ func (x *SparseVector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SparseVector.ProtoReflect.Descriptor instead. -func (*SparseVector) Descriptor() ([]byte, []int) { +// Deprecated: Use InferenceObject.ProtoReflect.Descriptor instead. +func (*InferenceObject) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{6} } -func (x *SparseVector) GetValues() []float32 { +func (x *InferenceObject) GetObject() *Value { if x != nil { - return x.Values + return x.Object } return nil } -func (x *SparseVector) GetIndices() []uint32 { +func (x *InferenceObject) GetModel() string { if x != nil { - return x.Indices + return x.Model + } + return "" +} + +func (x *InferenceObject) GetOptions() map[string]*Value { + if x != nil { + return x.Options } return nil } -type MultiDenseVector struct { +// Legacy vector format, which determines the vector type by the configuration of its fields. +type Vector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Vectors []*DenseVector `protobuf:"bytes,1,rep,name=vectors,proto3" json:"vectors,omitempty"` + Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` // Vector data (flatten for multi vectors), deprecated + Indices *SparseIndices `protobuf:"bytes,2,opt,name=indices,proto3,oneof" json:"indices,omitempty"` // Sparse indices for sparse vectors, deprecated + VectorsCount *uint32 `protobuf:"varint,3,opt,name=vectors_count,json=vectorsCount,proto3,oneof" json:"vectors_count,omitempty"` // Number of vectors per multi vector, deprecated + // Types that are assignable to Vector: + // + // *Vector_Dense + // *Vector_Sparse + // *Vector_MultiDense + // *Vector_Document + // *Vector_Image + // *Vector_Object + Vector isVector_Vector `protobuf_oneof:"vector"` } -func (x *MultiDenseVector) Reset() { - *x = MultiDenseVector{} +func (x *Vector) Reset() { + *x = Vector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -866,13 +901,13 @@ func (x *MultiDenseVector) Reset() { } } -func (x *MultiDenseVector) String() string { +func (x *Vector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MultiDenseVector) ProtoMessage() {} +func (*Vector) ProtoMessage() {} -func (x *MultiDenseVector) ProtoReflect() protoreflect.Message { +func (x *Vector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -884,35 +919,139 @@ func (x *MultiDenseVector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MultiDenseVector.ProtoReflect.Descriptor instead. -func (*MultiDenseVector) Descriptor() ([]byte, []int) { +// Deprecated: Use Vector.ProtoReflect.Descriptor instead. +func (*Vector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{7} } -func (x *MultiDenseVector) GetVectors() []*DenseVector { +func (x *Vector) GetData() []float32 { if x != nil { - return x.Vectors + return x.Data } return nil } -// Vector type to be used in queries. Ids will be substituted with their corresponding vectors from the collection. -type VectorInput struct { +func (x *Vector) GetIndices() *SparseIndices { + if x != nil { + return x.Indices + } + return nil +} + +func (x *Vector) GetVectorsCount() uint32 { + if x != nil && x.VectorsCount != nil { + return *x.VectorsCount + } + return 0 +} + +func (m *Vector) GetVector() isVector_Vector { + if m != nil { + return m.Vector + } + return nil +} + +func (x *Vector) GetDense() *DenseVector { + if x, ok := x.GetVector().(*Vector_Dense); ok { + return x.Dense + } + return nil +} + +func (x *Vector) GetSparse() *SparseVector { + if x, ok := x.GetVector().(*Vector_Sparse); ok { + return x.Sparse + } + return nil +} + +func (x *Vector) GetMultiDense() *MultiDenseVector { + if x, ok := x.GetVector().(*Vector_MultiDense); ok { + return x.MultiDense + } + return nil +} + +func (x *Vector) GetDocument() *Document { + if x, ok := x.GetVector().(*Vector_Document); ok { + return x.Document + } + return nil +} + +func (x *Vector) GetImage() *Image { + if x, ok := x.GetVector().(*Vector_Image); ok { + return x.Image + } + return nil +} + +func (x *Vector) GetObject() *InferenceObject { + if x, ok := x.GetVector().(*Vector_Object); ok { + return x.Object + } + return nil +} + +type isVector_Vector interface { + isVector_Vector() +} + +type Vector_Dense struct { + Dense *DenseVector `protobuf:"bytes,101,opt,name=dense,proto3,oneof"` // Dense vector +} + +type Vector_Sparse struct { + Sparse *SparseVector `protobuf:"bytes,102,opt,name=sparse,proto3,oneof"` // Sparse vector +} + +type Vector_MultiDense struct { + MultiDense *MultiDenseVector `protobuf:"bytes,103,opt,name=multi_dense,json=multiDense,proto3,oneof"` // Multi dense vector +} + +type Vector_Document struct { + Document *Document `protobuf:"bytes,104,opt,name=document,proto3,oneof"` +} + +type Vector_Image struct { + Image *Image `protobuf:"bytes,105,opt,name=image,proto3,oneof"` +} + +type Vector_Object struct { + Object *InferenceObject `protobuf:"bytes,106,opt,name=object,proto3,oneof"` +} + +func (*Vector_Dense) isVector_Vector() {} + +func (*Vector_Sparse) isVector_Vector() {} + +func (*Vector_MultiDense) isVector_Vector() {} + +func (*Vector_Document) isVector_Vector() {} + +func (*Vector_Image) isVector_Vector() {} + +func (*Vector_Object) isVector_Vector() {} + +type VectorOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Variant: + Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` // Vector data (flatten for multi vectors), deprecated + Indices *SparseIndices `protobuf:"bytes,2,opt,name=indices,proto3,oneof" json:"indices,omitempty"` // Sparse indices for sparse vectors, deprecated + VectorsCount *uint32 `protobuf:"varint,3,opt,name=vectors_count,json=vectorsCount,proto3,oneof" json:"vectors_count,omitempty"` // Number of vectors per multi vector, deprecated + // Types that are assignable to Vector: // - // *VectorInput_Id - // *VectorInput_Dense - // *VectorInput_Sparse - // *VectorInput_MultiDense - Variant isVectorInput_Variant `protobuf_oneof:"variant"` + // *VectorOutput_Dense + // *VectorOutput_Sparse + // *VectorOutput_MultiDense + Vector isVectorOutput_Vector `protobuf_oneof:"vector"` } -func (x *VectorInput) Reset() { - *x = VectorInput{} +func (x *VectorOutput) Reset() { + *x = VectorOutput{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -920,13 +1059,13 @@ func (x *VectorInput) Reset() { } } -func (x *VectorInput) String() string { +func (x *VectorOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VectorInput) ProtoMessage() {} +func (*VectorOutput) ProtoMessage() {} -func (x *VectorInput) ProtoReflect() protoreflect.Message { +func (x *VectorOutput) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -938,84 +1077,92 @@ func (x *VectorInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VectorInput.ProtoReflect.Descriptor instead. -func (*VectorInput) Descriptor() ([]byte, []int) { +// Deprecated: Use VectorOutput.ProtoReflect.Descriptor instead. +func (*VectorOutput) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{8} } -func (m *VectorInput) GetVariant() isVectorInput_Variant { - if m != nil { - return m.Variant +func (x *VectorOutput) GetData() []float32 { + if x != nil { + return x.Data } return nil } -func (x *VectorInput) GetId() *PointId { - if x, ok := x.GetVariant().(*VectorInput_Id); ok { - return x.Id +func (x *VectorOutput) GetIndices() *SparseIndices { + if x != nil { + return x.Indices } return nil } -func (x *VectorInput) GetDense() *DenseVector { - if x, ok := x.GetVariant().(*VectorInput_Dense); ok { +func (x *VectorOutput) GetVectorsCount() uint32 { + if x != nil && x.VectorsCount != nil { + return *x.VectorsCount + } + return 0 +} + +func (m *VectorOutput) GetVector() isVectorOutput_Vector { + if m != nil { + return m.Vector + } + return nil +} + +func (x *VectorOutput) GetDense() *DenseVector { + if x, ok := x.GetVector().(*VectorOutput_Dense); ok { return x.Dense } return nil } -func (x *VectorInput) GetSparse() *SparseVector { - if x, ok := x.GetVariant().(*VectorInput_Sparse); ok { +func (x *VectorOutput) GetSparse() *SparseVector { + if x, ok := x.GetVector().(*VectorOutput_Sparse); ok { return x.Sparse } return nil } -func (x *VectorInput) GetMultiDense() *MultiDenseVector { - if x, ok := x.GetVariant().(*VectorInput_MultiDense); ok { +func (x *VectorOutput) GetMultiDense() *MultiDenseVector { + if x, ok := x.GetVector().(*VectorOutput_MultiDense); ok { return x.MultiDense } return nil } -type isVectorInput_Variant interface { - isVectorInput_Variant() -} - -type VectorInput_Id struct { - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +type isVectorOutput_Vector interface { + isVectorOutput_Vector() } -type VectorInput_Dense struct { - Dense *DenseVector `protobuf:"bytes,2,opt,name=dense,proto3,oneof"` +type VectorOutput_Dense struct { + Dense *DenseVector `protobuf:"bytes,101,opt,name=dense,proto3,oneof"` // Dense vector } -type VectorInput_Sparse struct { - Sparse *SparseVector `protobuf:"bytes,3,opt,name=sparse,proto3,oneof"` +type VectorOutput_Sparse struct { + Sparse *SparseVector `protobuf:"bytes,102,opt,name=sparse,proto3,oneof"` // Sparse vector } -type VectorInput_MultiDense struct { - MultiDense *MultiDenseVector `protobuf:"bytes,4,opt,name=multi_dense,json=multiDense,proto3,oneof"` +type VectorOutput_MultiDense struct { + MultiDense *MultiDenseVector `protobuf:"bytes,103,opt,name=multi_dense,json=multiDense,proto3,oneof"` // Multi dense vector } -func (*VectorInput_Id) isVectorInput_Variant() {} - -func (*VectorInput_Dense) isVectorInput_Variant() {} +func (*VectorOutput_Dense) isVectorOutput_Vector() {} -func (*VectorInput_Sparse) isVectorInput_Variant() {} +func (*VectorOutput_Sparse) isVectorOutput_Vector() {} -func (*VectorInput_MultiDense) isVectorInput_Variant() {} +func (*VectorOutput_MultiDense) isVectorOutput_Vector() {} -type ShardKeySelector struct { +type DenseVector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShardKeys []*ShardKey `protobuf:"bytes,1,rep,name=shard_keys,json=shardKeys,proto3" json:"shard_keys,omitempty"` // List of shard keys which should be used in the request + Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` } -func (x *ShardKeySelector) Reset() { - *x = ShardKeySelector{} +func (x *DenseVector) Reset() { + *x = DenseVector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1023,13 +1170,13 @@ func (x *ShardKeySelector) Reset() { } } -func (x *ShardKeySelector) String() string { +func (x *DenseVector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ShardKeySelector) ProtoMessage() {} +func (*DenseVector) ProtoMessage() {} -func (x *ShardKeySelector) ProtoReflect() protoreflect.Message { +func (x *DenseVector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1041,32 +1188,29 @@ func (x *ShardKeySelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ShardKeySelector.ProtoReflect.Descriptor instead. -func (*ShardKeySelector) Descriptor() ([]byte, []int) { +// Deprecated: Use DenseVector.ProtoReflect.Descriptor instead. +func (*DenseVector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{9} } -func (x *ShardKeySelector) GetShardKeys() []*ShardKey { +func (x *DenseVector) GetData() []float32 { if x != nil { - return x.ShardKeys + return x.Data } return nil } -type UpsertPoints struct { +type SparseVector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Points []*PointStruct `protobuf:"bytes,3,rep,name=points,proto3" json:"points,omitempty"` - Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Values []float32 `protobuf:"fixed32,1,rep,packed,name=values,proto3" json:"values,omitempty"` + Indices []uint32 `protobuf:"varint,2,rep,packed,name=indices,proto3" json:"indices,omitempty"` } -func (x *UpsertPoints) Reset() { - *x = UpsertPoints{} +func (x *SparseVector) Reset() { + *x = SparseVector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1074,13 +1218,13 @@ func (x *UpsertPoints) Reset() { } } -func (x *UpsertPoints) String() string { +func (x *SparseVector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpsertPoints) ProtoMessage() {} +func (*SparseVector) ProtoMessage() {} -func (x *UpsertPoints) ProtoReflect() protoreflect.Message { +func (x *SparseVector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1092,60 +1236,35 @@ func (x *UpsertPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpsertPoints.ProtoReflect.Descriptor instead. -func (*UpsertPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{10} -} - -func (x *UpsertPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *UpsertPoints) GetWait() bool { - if x != nil && x.Wait != nil { - return *x.Wait - } - return false -} - -func (x *UpsertPoints) GetPoints() []*PointStruct { - if x != nil { - return x.Points - } - return nil +// Deprecated: Use SparseVector.ProtoReflect.Descriptor instead. +func (*SparseVector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{10} } -func (x *UpsertPoints) GetOrdering() *WriteOrdering { +func (x *SparseVector) GetValues() []float32 { if x != nil { - return x.Ordering + return x.Values } return nil } -func (x *UpsertPoints) GetShardKeySelector() *ShardKeySelector { +func (x *SparseVector) GetIndices() []uint32 { if x != nil { - return x.ShardKeySelector + return x.Indices } return nil } -type DeletePoints struct { +type MultiDenseVector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Points *PointsSelector `protobuf:"bytes,3,opt,name=points,proto3" json:"points,omitempty"` // Affected points - Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Vectors []*DenseVector `protobuf:"bytes,1,rep,name=vectors,proto3" json:"vectors,omitempty"` } -func (x *DeletePoints) Reset() { - *x = DeletePoints{} +func (x *MultiDenseVector) Reset() { + *x = MultiDenseVector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1153,13 +1272,13 @@ func (x *DeletePoints) Reset() { } } -func (x *DeletePoints) String() string { +func (x *MultiDenseVector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeletePoints) ProtoMessage() {} +func (*MultiDenseVector) ProtoMessage() {} -func (x *DeletePoints) ProtoReflect() protoreflect.Message { +func (x *MultiDenseVector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1171,62 +1290,38 @@ func (x *DeletePoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeletePoints.ProtoReflect.Descriptor instead. -func (*DeletePoints) Descriptor() ([]byte, []int) { +// Deprecated: Use MultiDenseVector.ProtoReflect.Descriptor instead. +func (*MultiDenseVector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{11} } -func (x *DeletePoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *DeletePoints) GetWait() bool { - if x != nil && x.Wait != nil { - return *x.Wait - } - return false -} - -func (x *DeletePoints) GetPoints() *PointsSelector { - if x != nil { - return x.Points - } - return nil -} - -func (x *DeletePoints) GetOrdering() *WriteOrdering { - if x != nil { - return x.Ordering - } - return nil -} - -func (x *DeletePoints) GetShardKeySelector() *ShardKeySelector { +func (x *MultiDenseVector) GetVectors() []*DenseVector { if x != nil { - return x.ShardKeySelector + return x.Vectors } return nil } -type GetPoints struct { +// Vector type to be used in queries. Ids will be substituted with their corresponding vectors from the collection. +type VectorInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Ids []*PointId `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` // List of points to retrieve - WithPayload *WithPayloadSelector `protobuf:"bytes,4,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - WithVectors *WithVectorsSelector `protobuf:"bytes,5,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - ReadConsistency *ReadConsistency `protobuf:"bytes,6,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,7,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards - Timeout *uint64 `protobuf:"varint,8,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + // Types that are assignable to Variant: + // + // *VectorInput_Id + // *VectorInput_Dense + // *VectorInput_Sparse + // *VectorInput_MultiDense + // *VectorInput_Document + // *VectorInput_Image + // *VectorInput_Object + Variant isVectorInput_Variant `protobuf_oneof:"variant"` } -func (x *GetPoints) Reset() { - *x = GetPoints{} +func (x *VectorInput) Reset() { + *x = VectorInput{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1234,13 +1329,13 @@ func (x *GetPoints) Reset() { } } -func (x *GetPoints) String() string { +func (x *VectorInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPoints) ProtoMessage() {} +func (*VectorInput) ProtoMessage() {} -func (x *GetPoints) ProtoReflect() protoreflect.Message { +func (x *VectorInput) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1252,74 +1347,123 @@ func (x *GetPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPoints.ProtoReflect.Descriptor instead. -func (*GetPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use VectorInput.ProtoReflect.Descriptor instead. +func (*VectorInput) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{12} } -func (x *GetPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName +func (m *VectorInput) GetVariant() isVectorInput_Variant { + if m != nil { + return m.Variant } - return "" + return nil } -func (x *GetPoints) GetIds() []*PointId { - if x != nil { - return x.Ids +func (x *VectorInput) GetId() *PointId { + if x, ok := x.GetVariant().(*VectorInput_Id); ok { + return x.Id } return nil } -func (x *GetPoints) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload +func (x *VectorInput) GetDense() *DenseVector { + if x, ok := x.GetVariant().(*VectorInput_Dense); ok { + return x.Dense } return nil } -func (x *GetPoints) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors +func (x *VectorInput) GetSparse() *SparseVector { + if x, ok := x.GetVariant().(*VectorInput_Sparse); ok { + return x.Sparse } return nil } -func (x *GetPoints) GetReadConsistency() *ReadConsistency { - if x != nil { - return x.ReadConsistency +func (x *VectorInput) GetMultiDense() *MultiDenseVector { + if x, ok := x.GetVariant().(*VectorInput_MultiDense); ok { + return x.MultiDense } return nil } -func (x *GetPoints) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector +func (x *VectorInput) GetDocument() *Document { + if x, ok := x.GetVariant().(*VectorInput_Document); ok { + return x.Document } return nil } -func (x *GetPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout +func (x *VectorInput) GetImage() *Image { + if x, ok := x.GetVariant().(*VectorInput_Image); ok { + return x.Image } - return 0 + return nil } -type UpdatePointVectors struct { +func (x *VectorInput) GetObject() *InferenceObject { + if x, ok := x.GetVariant().(*VectorInput_Object); ok { + return x.Object + } + return nil +} + +type isVectorInput_Variant interface { + isVectorInput_Variant() +} + +type VectorInput_Id struct { + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type VectorInput_Dense struct { + Dense *DenseVector `protobuf:"bytes,2,opt,name=dense,proto3,oneof"` +} + +type VectorInput_Sparse struct { + Sparse *SparseVector `protobuf:"bytes,3,opt,name=sparse,proto3,oneof"` +} + +type VectorInput_MultiDense struct { + MultiDense *MultiDenseVector `protobuf:"bytes,4,opt,name=multi_dense,json=multiDense,proto3,oneof"` +} + +type VectorInput_Document struct { + Document *Document `protobuf:"bytes,5,opt,name=document,proto3,oneof"` +} + +type VectorInput_Image struct { + Image *Image `protobuf:"bytes,6,opt,name=image,proto3,oneof"` +} + +type VectorInput_Object struct { + Object *InferenceObject `protobuf:"bytes,7,opt,name=object,proto3,oneof"` +} + +func (*VectorInput_Id) isVectorInput_Variant() {} + +func (*VectorInput_Dense) isVectorInput_Variant() {} + +func (*VectorInput_Sparse) isVectorInput_Variant() {} + +func (*VectorInput_MultiDense) isVectorInput_Variant() {} + +func (*VectorInput_Document) isVectorInput_Variant() {} + +func (*VectorInput_Image) isVectorInput_Variant() {} + +func (*VectorInput_Object) isVectorInput_Variant() {} + +type ShardKeySelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Points []*PointVectors `protobuf:"bytes,3,rep,name=points,proto3" json:"points,omitempty"` // List of points and vectors to update - Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + ShardKeys []*ShardKey `protobuf:"bytes,1,rep,name=shard_keys,json=shardKeys,proto3" json:"shard_keys,omitempty"` // List of shard keys which should be used in the request } -func (x *UpdatePointVectors) Reset() { - *x = UpdatePointVectors{} +func (x *ShardKeySelector) Reset() { + *x = ShardKeySelector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1327,13 +1471,13 @@ func (x *UpdatePointVectors) Reset() { } } -func (x *UpdatePointVectors) String() string { +func (x *ShardKeySelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdatePointVectors) ProtoMessage() {} +func (*ShardKeySelector) ProtoMessage() {} -func (x *UpdatePointVectors) ProtoReflect() protoreflect.Message { +func (x *ShardKeySelector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1345,71 +1489,46 @@ func (x *UpdatePointVectors) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdatePointVectors.ProtoReflect.Descriptor instead. -func (*UpdatePointVectors) Descriptor() ([]byte, []int) { +// Deprecated: Use ShardKeySelector.ProtoReflect.Descriptor instead. +func (*ShardKeySelector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{13} } -func (x *UpdatePointVectors) GetCollectionName() string { +func (x *ShardKeySelector) GetShardKeys() []*ShardKey { if x != nil { - return x.CollectionName + return x.ShardKeys } - return "" + return nil } -func (x *UpdatePointVectors) GetWait() bool { - if x != nil && x.Wait != nil { - return *x.Wait - } - return false -} +type UpsertPoints struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *UpdatePointVectors) GetPoints() []*PointVectors { - if x != nil { - return x.Points - } - return nil + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + Points []*PointStruct `protobuf:"bytes,3,rep,name=points,proto3" json:"points,omitempty"` + Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys } -func (x *UpdatePointVectors) GetOrdering() *WriteOrdering { - if x != nil { - return x.Ordering +func (x *UpsertPoints) Reset() { + *x = UpsertPoints{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *UpdatePointVectors) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector - } - return nil -} - -type PointVectors struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // ID to update vectors for - Vectors *Vectors `protobuf:"bytes,2,opt,name=vectors,proto3" json:"vectors,omitempty"` // Named vectors to update, leave others intact -} - -func (x *PointVectors) Reset() { - *x = PointVectors{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PointVectors) String() string { +func (x *UpsertPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointVectors) ProtoMessage() {} +func (*UpsertPoints) ProtoMessage() {} -func (x *PointVectors) ProtoReflect() protoreflect.Message { +func (x *UpsertPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1421,40 +1540,60 @@ func (x *PointVectors) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointVectors.ProtoReflect.Descriptor instead. -func (*PointVectors) Descriptor() ([]byte, []int) { +// Deprecated: Use UpsertPoints.ProtoReflect.Descriptor instead. +func (*UpsertPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{14} } -func (x *PointVectors) GetId() *PointId { +func (x *UpsertPoints) GetCollectionName() string { if x != nil { - return x.Id + return x.CollectionName + } + return "" +} + +func (x *UpsertPoints) GetWait() bool { + if x != nil && x.Wait != nil { + return *x.Wait + } + return false +} + +func (x *UpsertPoints) GetPoints() []*PointStruct { + if x != nil { + return x.Points } return nil } -func (x *PointVectors) GetVectors() *Vectors { +func (x *UpsertPoints) GetOrdering() *WriteOrdering { if x != nil { - return x.Vectors + return x.Ordering } return nil } -type DeletePointVectors struct { +func (x *UpsertPoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type DeletePoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - PointsSelector *PointsSelector `protobuf:"bytes,3,opt,name=points_selector,json=pointsSelector,proto3" json:"points_selector,omitempty"` // Affected points - Vectors *VectorsSelector `protobuf:"bytes,4,opt,name=vectors,proto3" json:"vectors,omitempty"` // List of vector names to delete - Ordering *WriteOrdering `protobuf:"bytes,5,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,6,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Points *PointsSelector `protobuf:"bytes,3,opt,name=points,proto3" json:"points,omitempty"` // Affected points + Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys } -func (x *DeletePointVectors) Reset() { - *x = DeletePointVectors{} +func (x *DeletePoints) Reset() { + *x = DeletePoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1462,13 +1601,13 @@ func (x *DeletePointVectors) Reset() { } } -func (x *DeletePointVectors) String() string { +func (x *DeletePoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeletePointVectors) ProtoMessage() {} +func (*DeletePoints) ProtoMessage() {} -func (x *DeletePointVectors) ProtoReflect() protoreflect.Message { +func (x *DeletePoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1480,69 +1619,62 @@ func (x *DeletePointVectors) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeletePointVectors.ProtoReflect.Descriptor instead. -func (*DeletePointVectors) Descriptor() ([]byte, []int) { +// Deprecated: Use DeletePoints.ProtoReflect.Descriptor instead. +func (*DeletePoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{15} } -func (x *DeletePointVectors) GetCollectionName() string { +func (x *DeletePoints) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *DeletePointVectors) GetWait() bool { +func (x *DeletePoints) GetWait() bool { if x != nil && x.Wait != nil { return *x.Wait } return false } -func (x *DeletePointVectors) GetPointsSelector() *PointsSelector { - if x != nil { - return x.PointsSelector - } - return nil -} - -func (x *DeletePointVectors) GetVectors() *VectorsSelector { +func (x *DeletePoints) GetPoints() *PointsSelector { if x != nil { - return x.Vectors + return x.Points } return nil } -func (x *DeletePointVectors) GetOrdering() *WriteOrdering { +func (x *DeletePoints) GetOrdering() *WriteOrdering { if x != nil { return x.Ordering } return nil } -func (x *DeletePointVectors) GetShardKeySelector() *ShardKeySelector { +func (x *DeletePoints) GetShardKeySelector() *ShardKeySelector { if x != nil { return x.ShardKeySelector } return nil } -type SetPayloadPoints struct { +type GetPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Payload map[string]*Value `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // New payload values - PointsSelector *PointsSelector `protobuf:"bytes,5,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points - Ordering *WriteOrdering `protobuf:"bytes,6,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,7,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys - Key *string `protobuf:"bytes,8,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Ids []*PointId `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` // List of points to retrieve + WithPayload *WithPayloadSelector `protobuf:"bytes,4,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + WithVectors *WithVectorsSelector `protobuf:"bytes,5,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + ReadConsistency *ReadConsistency `protobuf:"bytes,6,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,7,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + Timeout *uint64 `protobuf:"varint,8,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *SetPayloadPoints) Reset() { - *x = SetPayloadPoints{} +func (x *GetPoints) Reset() { + *x = GetPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1550,13 +1682,13 @@ func (x *SetPayloadPoints) Reset() { } } -func (x *SetPayloadPoints) String() string { +func (x *GetPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetPayloadPoints) ProtoMessage() {} +func (*GetPoints) ProtoMessage() {} -func (x *SetPayloadPoints) ProtoReflect() protoreflect.Message { +func (x *GetPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1568,75 +1700,74 @@ func (x *SetPayloadPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetPayloadPoints.ProtoReflect.Descriptor instead. -func (*SetPayloadPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPoints.ProtoReflect.Descriptor instead. +func (*GetPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{16} } -func (x *SetPayloadPoints) GetCollectionName() string { +func (x *GetPoints) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *SetPayloadPoints) GetWait() bool { - if x != nil && x.Wait != nil { - return *x.Wait +func (x *GetPoints) GetIds() []*PointId { + if x != nil { + return x.Ids } - return false + return nil } -func (x *SetPayloadPoints) GetPayload() map[string]*Value { +func (x *GetPoints) GetWithPayload() *WithPayloadSelector { if x != nil { - return x.Payload + return x.WithPayload } return nil } -func (x *SetPayloadPoints) GetPointsSelector() *PointsSelector { +func (x *GetPoints) GetWithVectors() *WithVectorsSelector { if x != nil { - return x.PointsSelector + return x.WithVectors } return nil } -func (x *SetPayloadPoints) GetOrdering() *WriteOrdering { +func (x *GetPoints) GetReadConsistency() *ReadConsistency { if x != nil { - return x.Ordering + return x.ReadConsistency } return nil } -func (x *SetPayloadPoints) GetShardKeySelector() *ShardKeySelector { +func (x *GetPoints) GetShardKeySelector() *ShardKeySelector { if x != nil { return x.ShardKeySelector } return nil } -func (x *SetPayloadPoints) GetKey() string { - if x != nil && x.Key != nil { - return *x.Key +func (x *GetPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout } - return "" + return 0 } -type DeletePayloadPoints struct { +type UpdatePointVectors struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Keys []string `protobuf:"bytes,3,rep,name=keys,proto3" json:"keys,omitempty"` // List of keys to delete - PointsSelector *PointsSelector `protobuf:"bytes,5,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points - Ordering *WriteOrdering `protobuf:"bytes,6,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,7,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Points []*PointVectors `protobuf:"bytes,3,rep,name=points,proto3" json:"points,omitempty"` // List of points and vectors to update + Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys } -func (x *DeletePayloadPoints) Reset() { - *x = DeletePayloadPoints{} +func (x *UpdatePointVectors) Reset() { + *x = UpdatePointVectors{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1644,13 +1775,13 @@ func (x *DeletePayloadPoints) Reset() { } } -func (x *DeletePayloadPoints) String() string { +func (x *UpdatePointVectors) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeletePayloadPoints) ProtoMessage() {} +func (*UpdatePointVectors) ProtoMessage() {} -func (x *DeletePayloadPoints) ProtoReflect() protoreflect.Message { +func (x *UpdatePointVectors) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1662,67 +1793,57 @@ func (x *DeletePayloadPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeletePayloadPoints.ProtoReflect.Descriptor instead. -func (*DeletePayloadPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdatePointVectors.ProtoReflect.Descriptor instead. +func (*UpdatePointVectors) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{17} } -func (x *DeletePayloadPoints) GetCollectionName() string { +func (x *UpdatePointVectors) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *DeletePayloadPoints) GetWait() bool { +func (x *UpdatePointVectors) GetWait() bool { if x != nil && x.Wait != nil { return *x.Wait } return false } -func (x *DeletePayloadPoints) GetKeys() []string { - if x != nil { - return x.Keys - } - return nil -} - -func (x *DeletePayloadPoints) GetPointsSelector() *PointsSelector { +func (x *UpdatePointVectors) GetPoints() []*PointVectors { if x != nil { - return x.PointsSelector + return x.Points } return nil } -func (x *DeletePayloadPoints) GetOrdering() *WriteOrdering { +func (x *UpdatePointVectors) GetOrdering() *WriteOrdering { if x != nil { return x.Ordering } return nil } -func (x *DeletePayloadPoints) GetShardKeySelector() *ShardKeySelector { +func (x *UpdatePointVectors) GetShardKeySelector() *ShardKeySelector { if x != nil { return x.ShardKeySelector } return nil } -type ClearPayloadPoints struct { +type PointVectors struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Points *PointsSelector `protobuf:"bytes,3,opt,name=points,proto3" json:"points,omitempty"` // Affected points - Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // ID to update vectors for + Vectors *Vectors `protobuf:"bytes,2,opt,name=vectors,proto3" json:"vectors,omitempty"` // Named vectors to update, leave others intact } -func (x *ClearPayloadPoints) Reset() { - *x = ClearPayloadPoints{} +func (x *PointVectors) Reset() { + *x = PointVectors{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1730,13 +1851,13 @@ func (x *ClearPayloadPoints) Reset() { } } -func (x *ClearPayloadPoints) String() string { +func (x *PointVectors) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClearPayloadPoints) ProtoMessage() {} +func (*PointVectors) ProtoMessage() {} -func (x *ClearPayloadPoints) ProtoReflect() protoreflect.Message { +func (x *PointVectors) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1748,61 +1869,40 @@ func (x *ClearPayloadPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ClearPayloadPoints.ProtoReflect.Descriptor instead. -func (*ClearPayloadPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use PointVectors.ProtoReflect.Descriptor instead. +func (*PointVectors) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{18} } -func (x *ClearPayloadPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *ClearPayloadPoints) GetWait() bool { - if x != nil && x.Wait != nil { - return *x.Wait - } - return false -} - -func (x *ClearPayloadPoints) GetPoints() *PointsSelector { +func (x *PointVectors) GetId() *PointId { if x != nil { - return x.Points + return x.Id } return nil } -func (x *ClearPayloadPoints) GetOrdering() *WriteOrdering { +func (x *PointVectors) GetVectors() *Vectors { if x != nil { - return x.Ordering + return x.Vectors } return nil } -func (x *ClearPayloadPoints) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector - } - return nil -} - -type CreateFieldIndexCollection struct { +type DeletePointVectors struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - FieldName string `protobuf:"bytes,3,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` // Field name to index - FieldType *FieldType `protobuf:"varint,4,opt,name=field_type,json=fieldType,proto3,enum=qdrant.FieldType,oneof" json:"field_type,omitempty"` // Field type. - FieldIndexParams *PayloadIndexParams `protobuf:"bytes,5,opt,name=field_index_params,json=fieldIndexParams,proto3,oneof" json:"field_index_params,omitempty"` // Payload index params. - Ordering *WriteOrdering `protobuf:"bytes,6,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + PointsSelector *PointsSelector `protobuf:"bytes,3,opt,name=points_selector,json=pointsSelector,proto3" json:"points_selector,omitempty"` // Affected points + Vectors *VectorsSelector `protobuf:"bytes,4,opt,name=vectors,proto3" json:"vectors,omitempty"` // List of vector names to delete + Ordering *WriteOrdering `protobuf:"bytes,5,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,6,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys } -func (x *CreateFieldIndexCollection) Reset() { - *x = CreateFieldIndexCollection{} +func (x *DeletePointVectors) Reset() { + *x = DeletePointVectors{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1810,13 +1910,13 @@ func (x *CreateFieldIndexCollection) Reset() { } } -func (x *CreateFieldIndexCollection) String() string { +func (x *DeletePointVectors) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateFieldIndexCollection) ProtoMessage() {} +func (*DeletePointVectors) ProtoMessage() {} -func (x *CreateFieldIndexCollection) ProtoReflect() protoreflect.Message { +func (x *DeletePointVectors) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1828,66 +1928,69 @@ func (x *CreateFieldIndexCollection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateFieldIndexCollection.ProtoReflect.Descriptor instead. -func (*CreateFieldIndexCollection) Descriptor() ([]byte, []int) { +// Deprecated: Use DeletePointVectors.ProtoReflect.Descriptor instead. +func (*DeletePointVectors) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{19} } -func (x *CreateFieldIndexCollection) GetCollectionName() string { +func (x *DeletePointVectors) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *CreateFieldIndexCollection) GetWait() bool { +func (x *DeletePointVectors) GetWait() bool { if x != nil && x.Wait != nil { return *x.Wait } return false } -func (x *CreateFieldIndexCollection) GetFieldName() string { +func (x *DeletePointVectors) GetPointsSelector() *PointsSelector { if x != nil { - return x.FieldName + return x.PointsSelector } - return "" + return nil } -func (x *CreateFieldIndexCollection) GetFieldType() FieldType { - if x != nil && x.FieldType != nil { - return *x.FieldType +func (x *DeletePointVectors) GetVectors() *VectorsSelector { + if x != nil { + return x.Vectors } - return FieldType_FieldTypeKeyword + return nil } -func (x *CreateFieldIndexCollection) GetFieldIndexParams() *PayloadIndexParams { +func (x *DeletePointVectors) GetOrdering() *WriteOrdering { if x != nil { - return x.FieldIndexParams + return x.Ordering } return nil } -func (x *CreateFieldIndexCollection) GetOrdering() *WriteOrdering { +func (x *DeletePointVectors) GetShardKeySelector() *ShardKeySelector { if x != nil { - return x.Ordering + return x.ShardKeySelector } return nil } -type DeleteFieldIndexCollection struct { +type SetPayloadPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - FieldName string `protobuf:"bytes,3,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` // Field name to delete - Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + Payload map[string]*Value `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // New payload values + PointsSelector *PointsSelector `protobuf:"bytes,5,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + Ordering *WriteOrdering `protobuf:"bytes,6,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,7,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Key *string `protobuf:"bytes,8,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload } -func (x *DeleteFieldIndexCollection) Reset() { - *x = DeleteFieldIndexCollection{} +func (x *SetPayloadPoints) Reset() { + *x = SetPayloadPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1895,13 +1998,13 @@ func (x *DeleteFieldIndexCollection) Reset() { } } -func (x *DeleteFieldIndexCollection) String() string { +func (x *SetPayloadPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteFieldIndexCollection) ProtoMessage() {} +func (*SetPayloadPoints) ProtoMessage() {} -func (x *DeleteFieldIndexCollection) ProtoReflect() protoreflect.Message { +func (x *SetPayloadPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1913,49 +2016,75 @@ func (x *DeleteFieldIndexCollection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteFieldIndexCollection.ProtoReflect.Descriptor instead. -func (*DeleteFieldIndexCollection) Descriptor() ([]byte, []int) { +// Deprecated: Use SetPayloadPoints.ProtoReflect.Descriptor instead. +func (*SetPayloadPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{20} } -func (x *DeleteFieldIndexCollection) GetCollectionName() string { +func (x *SetPayloadPoints) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *DeleteFieldIndexCollection) GetWait() bool { +func (x *SetPayloadPoints) GetWait() bool { if x != nil && x.Wait != nil { return *x.Wait } return false } -func (x *DeleteFieldIndexCollection) GetFieldName() string { +func (x *SetPayloadPoints) GetPayload() map[string]*Value { if x != nil { - return x.FieldName + return x.Payload } - return "" + return nil } -func (x *DeleteFieldIndexCollection) GetOrdering() *WriteOrdering { +func (x *SetPayloadPoints) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *SetPayloadPoints) GetOrdering() *WriteOrdering { if x != nil { return x.Ordering } return nil } -type PayloadIncludeSelector struct { +func (x *SetPayloadPoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +func (x *SetPayloadPoints) GetKey() string { + if x != nil && x.Key != nil { + return *x.Key + } + return "" +} + +type DeletePayloadPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fields []string `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` // List of payload keys to include into result + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + Keys []string `protobuf:"bytes,3,rep,name=keys,proto3" json:"keys,omitempty"` // List of keys to delete + PointsSelector *PointsSelector `protobuf:"bytes,5,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + Ordering *WriteOrdering `protobuf:"bytes,6,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,7,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys } -func (x *PayloadIncludeSelector) Reset() { - *x = PayloadIncludeSelector{} +func (x *DeletePayloadPoints) Reset() { + *x = DeletePayloadPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1963,13 +2092,13 @@ func (x *PayloadIncludeSelector) Reset() { } } -func (x *PayloadIncludeSelector) String() string { +func (x *DeletePayloadPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PayloadIncludeSelector) ProtoMessage() {} +func (*DeletePayloadPoints) ProtoMessage() {} -func (x *PayloadIncludeSelector) ProtoReflect() protoreflect.Message { +func (x *DeletePayloadPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1981,95 +2110,82 @@ func (x *PayloadIncludeSelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PayloadIncludeSelector.ProtoReflect.Descriptor instead. -func (*PayloadIncludeSelector) Descriptor() ([]byte, []int) { +// Deprecated: Use DeletePayloadPoints.ProtoReflect.Descriptor instead. +func (*DeletePayloadPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{21} } -func (x *PayloadIncludeSelector) GetFields() []string { +func (x *DeletePayloadPoints) GetCollectionName() string { if x != nil { - return x.Fields + return x.CollectionName } - return nil -} - -type PayloadExcludeSelector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Fields []string `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` // List of payload keys to exclude from the result + return "" } -func (x *PayloadExcludeSelector) Reset() { - *x = PayloadExcludeSelector{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *DeletePayloadPoints) GetWait() bool { + if x != nil && x.Wait != nil { + return *x.Wait } + return false } -func (x *PayloadExcludeSelector) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *DeletePayloadPoints) GetKeys() []string { + if x != nil { + return x.Keys + } + return nil } -func (*PayloadExcludeSelector) ProtoMessage() {} - -func (x *PayloadExcludeSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *DeletePayloadPoints) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PayloadExcludeSelector.ProtoReflect.Descriptor instead. -func (*PayloadExcludeSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{22} +func (x *DeletePayloadPoints) GetOrdering() *WriteOrdering { + if x != nil { + return x.Ordering + } + return nil } -func (x *PayloadExcludeSelector) GetFields() []string { +func (x *DeletePayloadPoints) GetShardKeySelector() *ShardKeySelector { if x != nil { - return x.Fields + return x.ShardKeySelector } return nil } -type WithPayloadSelector struct { +type ClearPayloadPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to SelectorOptions: - // - // *WithPayloadSelector_Enable - // *WithPayloadSelector_Include - // *WithPayloadSelector_Exclude - SelectorOptions isWithPayloadSelector_SelectorOptions `protobuf_oneof:"selector_options"` + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + Points *PointsSelector `protobuf:"bytes,3,opt,name=points,proto3" json:"points,omitempty"` // Affected points + Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys } -func (x *WithPayloadSelector) Reset() { - *x = WithPayloadSelector{} +func (x *ClearPayloadPoints) Reset() { + *x = ClearPayloadPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[23] + mi := &file_points_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WithPayloadSelector) String() string { +func (x *ClearPayloadPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WithPayloadSelector) ProtoMessage() {} +func (*ClearPayloadPoints) ProtoMessage() {} -func (x *WithPayloadSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[23] +func (x *ClearPayloadPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2080,71 +2196,146 @@ func (x *WithPayloadSelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WithPayloadSelector.ProtoReflect.Descriptor instead. -func (*WithPayloadSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{23} +// Deprecated: Use ClearPayloadPoints.ProtoReflect.Descriptor instead. +func (*ClearPayloadPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{22} } -func (m *WithPayloadSelector) GetSelectorOptions() isWithPayloadSelector_SelectorOptions { - if m != nil { - return m.SelectorOptions +func (x *ClearPayloadPoints) GetCollectionName() string { + if x != nil { + return x.CollectionName } - return nil + return "" } -func (x *WithPayloadSelector) GetEnable() bool { - if x, ok := x.GetSelectorOptions().(*WithPayloadSelector_Enable); ok { - return x.Enable +func (x *ClearPayloadPoints) GetWait() bool { + if x != nil && x.Wait != nil { + return *x.Wait } return false } -func (x *WithPayloadSelector) GetInclude() *PayloadIncludeSelector { - if x, ok := x.GetSelectorOptions().(*WithPayloadSelector_Include); ok { - return x.Include +func (x *ClearPayloadPoints) GetPoints() *PointsSelector { + if x != nil { + return x.Points } return nil } -func (x *WithPayloadSelector) GetExclude() *PayloadExcludeSelector { - if x, ok := x.GetSelectorOptions().(*WithPayloadSelector_Exclude); ok { - return x.Exclude +func (x *ClearPayloadPoints) GetOrdering() *WriteOrdering { + if x != nil { + return x.Ordering } return nil } -type isWithPayloadSelector_SelectorOptions interface { - isWithPayloadSelector_SelectorOptions() +func (x *ClearPayloadPoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil } -type WithPayloadSelector_Enable struct { - Enable bool `protobuf:"varint,1,opt,name=enable,proto3,oneof"` // If `true` - return all payload, if `false` - none +type CreateFieldIndexCollection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + FieldName string `protobuf:"bytes,3,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` // Field name to index + FieldType *FieldType `protobuf:"varint,4,opt,name=field_type,json=fieldType,proto3,enum=qdrant.FieldType,oneof" json:"field_type,omitempty"` // Field type. + FieldIndexParams *PayloadIndexParams `protobuf:"bytes,5,opt,name=field_index_params,json=fieldIndexParams,proto3,oneof" json:"field_index_params,omitempty"` // Payload index params. + Ordering *WriteOrdering `protobuf:"bytes,6,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees } -type WithPayloadSelector_Include struct { - Include *PayloadIncludeSelector `protobuf:"bytes,2,opt,name=include,proto3,oneof"` +func (x *CreateFieldIndexCollection) Reset() { + *x = CreateFieldIndexCollection{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -type WithPayloadSelector_Exclude struct { - Exclude *PayloadExcludeSelector `protobuf:"bytes,3,opt,name=exclude,proto3,oneof"` +func (x *CreateFieldIndexCollection) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*WithPayloadSelector_Enable) isWithPayloadSelector_SelectorOptions() {} +func (*CreateFieldIndexCollection) ProtoMessage() {} -func (*WithPayloadSelector_Include) isWithPayloadSelector_SelectorOptions() {} +func (x *CreateFieldIndexCollection) ProtoReflect() protoreflect.Message { + mi := &file_points_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) +} -func (*WithPayloadSelector_Exclude) isWithPayloadSelector_SelectorOptions() {} +// Deprecated: Use CreateFieldIndexCollection.ProtoReflect.Descriptor instead. +func (*CreateFieldIndexCollection) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{23} +} -type NamedVectors struct { +func (x *CreateFieldIndexCollection) GetCollectionName() string { + if x != nil { + return x.CollectionName + } + return "" +} + +func (x *CreateFieldIndexCollection) GetWait() bool { + if x != nil && x.Wait != nil { + return *x.Wait + } + return false +} + +func (x *CreateFieldIndexCollection) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *CreateFieldIndexCollection) GetFieldType() FieldType { + if x != nil && x.FieldType != nil { + return *x.FieldType + } + return FieldType_FieldTypeKeyword +} + +func (x *CreateFieldIndexCollection) GetFieldIndexParams() *PayloadIndexParams { + if x != nil { + return x.FieldIndexParams + } + return nil +} + +func (x *CreateFieldIndexCollection) GetOrdering() *WriteOrdering { + if x != nil { + return x.Ordering + } + return nil +} + +type DeleteFieldIndexCollection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Vectors map[string]*Vector `protobuf:"bytes,1,rep,name=vectors,proto3" json:"vectors,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + FieldName string `protobuf:"bytes,3,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` // Field name to delete + Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees } -func (x *NamedVectors) Reset() { - *x = NamedVectors{} +func (x *DeleteFieldIndexCollection) Reset() { + *x = DeleteFieldIndexCollection{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2152,13 +2343,13 @@ func (x *NamedVectors) Reset() { } } -func (x *NamedVectors) String() string { +func (x *DeleteFieldIndexCollection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NamedVectors) ProtoMessage() {} +func (*DeleteFieldIndexCollection) ProtoMessage() {} -func (x *NamedVectors) ProtoReflect() protoreflect.Message { +func (x *DeleteFieldIndexCollection) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2170,32 +2361,49 @@ func (x *NamedVectors) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NamedVectors.ProtoReflect.Descriptor instead. -func (*NamedVectors) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteFieldIndexCollection.ProtoReflect.Descriptor instead. +func (*DeleteFieldIndexCollection) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{24} } -func (x *NamedVectors) GetVectors() map[string]*Vector { +func (x *DeleteFieldIndexCollection) GetCollectionName() string { if x != nil { - return x.Vectors + return x.CollectionName + } + return "" +} + +func (x *DeleteFieldIndexCollection) GetWait() bool { + if x != nil && x.Wait != nil { + return *x.Wait + } + return false +} + +func (x *DeleteFieldIndexCollection) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *DeleteFieldIndexCollection) GetOrdering() *WriteOrdering { + if x != nil { + return x.Ordering } return nil } -type Vectors struct { +type PayloadIncludeSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to VectorsOptions: - // - // *Vectors_Vector - // *Vectors_Vectors - VectorsOptions isVectors_VectorsOptions `protobuf_oneof:"vectors_options"` + Fields []string `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` // List of payload keys to include into result } -func (x *Vectors) Reset() { - *x = Vectors{} +func (x *PayloadIncludeSelector) Reset() { + *x = PayloadIncludeSelector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2203,13 +2411,13 @@ func (x *Vectors) Reset() { } } -func (x *Vectors) String() string { +func (x *PayloadIncludeSelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Vectors) ProtoMessage() {} +func (*PayloadIncludeSelector) ProtoMessage() {} -func (x *Vectors) ProtoReflect() protoreflect.Message { +func (x *PayloadIncludeSelector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2221,58 +2429,28 @@ func (x *Vectors) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Vectors.ProtoReflect.Descriptor instead. -func (*Vectors) Descriptor() ([]byte, []int) { +// Deprecated: Use PayloadIncludeSelector.ProtoReflect.Descriptor instead. +func (*PayloadIncludeSelector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{25} } -func (m *Vectors) GetVectorsOptions() isVectors_VectorsOptions { - if m != nil { - return m.VectorsOptions - } - return nil -} - -func (x *Vectors) GetVector() *Vector { - if x, ok := x.GetVectorsOptions().(*Vectors_Vector); ok { - return x.Vector - } - return nil -} - -func (x *Vectors) GetVectors() *NamedVectors { - if x, ok := x.GetVectorsOptions().(*Vectors_Vectors); ok { - return x.Vectors +func (x *PayloadIncludeSelector) GetFields() []string { + if x != nil { + return x.Fields } return nil } -type isVectors_VectorsOptions interface { - isVectors_VectorsOptions() -} - -type Vectors_Vector struct { - Vector *Vector `protobuf:"bytes,1,opt,name=vector,proto3,oneof"` -} - -type Vectors_Vectors struct { - Vectors *NamedVectors `protobuf:"bytes,2,opt,name=vectors,proto3,oneof"` -} - -func (*Vectors_Vector) isVectors_VectorsOptions() {} - -func (*Vectors_Vectors) isVectors_VectorsOptions() {} - -type VectorsSelector struct { +type PayloadExcludeSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` // List of vectors to include into result + Fields []string `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` // List of payload keys to exclude from the result } -func (x *VectorsSelector) Reset() { - *x = VectorsSelector{} +func (x *PayloadExcludeSelector) Reset() { + *x = PayloadExcludeSelector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2280,13 +2458,13 @@ func (x *VectorsSelector) Reset() { } } -func (x *VectorsSelector) String() string { +func (x *PayloadExcludeSelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VectorsSelector) ProtoMessage() {} +func (*PayloadExcludeSelector) ProtoMessage() {} -func (x *VectorsSelector) ProtoReflect() protoreflect.Message { +func (x *PayloadExcludeSelector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2298,32 +2476,33 @@ func (x *VectorsSelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VectorsSelector.ProtoReflect.Descriptor instead. -func (*VectorsSelector) Descriptor() ([]byte, []int) { +// Deprecated: Use PayloadExcludeSelector.ProtoReflect.Descriptor instead. +func (*PayloadExcludeSelector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{26} } -func (x *VectorsSelector) GetNames() []string { +func (x *PayloadExcludeSelector) GetFields() []string { if x != nil { - return x.Names + return x.Fields } return nil } -type WithVectorsSelector struct { +type WithPayloadSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to SelectorOptions: // - // *WithVectorsSelector_Enable - // *WithVectorsSelector_Include - SelectorOptions isWithVectorsSelector_SelectorOptions `protobuf_oneof:"selector_options"` + // *WithPayloadSelector_Enable + // *WithPayloadSelector_Include + // *WithPayloadSelector_Exclude + SelectorOptions isWithPayloadSelector_SelectorOptions `protobuf_oneof:"selector_options"` } -func (x *WithVectorsSelector) Reset() { - *x = WithVectorsSelector{} +func (x *WithPayloadSelector) Reset() { + *x = WithPayloadSelector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2331,13 +2510,13 @@ func (x *WithVectorsSelector) Reset() { } } -func (x *WithVectorsSelector) String() string { +func (x *WithPayloadSelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WithVectorsSelector) ProtoMessage() {} +func (*WithPayloadSelector) ProtoMessage() {} -func (x *WithVectorsSelector) ProtoReflect() protoreflect.Message { +func (x *WithPayloadSelector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2349,69 +2528,71 @@ func (x *WithVectorsSelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WithVectorsSelector.ProtoReflect.Descriptor instead. -func (*WithVectorsSelector) Descriptor() ([]byte, []int) { +// Deprecated: Use WithPayloadSelector.ProtoReflect.Descriptor instead. +func (*WithPayloadSelector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{27} } -func (m *WithVectorsSelector) GetSelectorOptions() isWithVectorsSelector_SelectorOptions { +func (m *WithPayloadSelector) GetSelectorOptions() isWithPayloadSelector_SelectorOptions { if m != nil { return m.SelectorOptions } return nil } -func (x *WithVectorsSelector) GetEnable() bool { - if x, ok := x.GetSelectorOptions().(*WithVectorsSelector_Enable); ok { +func (x *WithPayloadSelector) GetEnable() bool { + if x, ok := x.GetSelectorOptions().(*WithPayloadSelector_Enable); ok { return x.Enable } return false } -func (x *WithVectorsSelector) GetInclude() *VectorsSelector { - if x, ok := x.GetSelectorOptions().(*WithVectorsSelector_Include); ok { - return x.Include +func (x *WithPayloadSelector) GetInclude() *PayloadIncludeSelector { + if x, ok := x.GetSelectorOptions().(*WithPayloadSelector_Include); ok { + return x.Include } return nil } -type isWithVectorsSelector_SelectorOptions interface { - isWithVectorsSelector_SelectorOptions() +func (x *WithPayloadSelector) GetExclude() *PayloadExcludeSelector { + if x, ok := x.GetSelectorOptions().(*WithPayloadSelector_Exclude); ok { + return x.Exclude + } + return nil } -type WithVectorsSelector_Enable struct { - Enable bool `protobuf:"varint,1,opt,name=enable,proto3,oneof"` // If `true` - return all vectors, if `false` - none +type isWithPayloadSelector_SelectorOptions interface { + isWithPayloadSelector_SelectorOptions() } -type WithVectorsSelector_Include struct { - Include *VectorsSelector `protobuf:"bytes,2,opt,name=include,proto3,oneof"` // List of payload keys to include into result +type WithPayloadSelector_Enable struct { + Enable bool `protobuf:"varint,1,opt,name=enable,proto3,oneof"` // If `true` - return all payload, if `false` - none } -func (*WithVectorsSelector_Enable) isWithVectorsSelector_SelectorOptions() {} +type WithPayloadSelector_Include struct { + Include *PayloadIncludeSelector `protobuf:"bytes,2,opt,name=include,proto3,oneof"` +} -func (*WithVectorsSelector_Include) isWithVectorsSelector_SelectorOptions() {} +type WithPayloadSelector_Exclude struct { + Exclude *PayloadExcludeSelector `protobuf:"bytes,3,opt,name=exclude,proto3,oneof"` +} -type QuantizationSearchParams struct { +func (*WithPayloadSelector_Enable) isWithPayloadSelector_SelectorOptions() {} + +func (*WithPayloadSelector_Include) isWithPayloadSelector_SelectorOptions() {} + +func (*WithPayloadSelector_Exclude) isWithPayloadSelector_SelectorOptions() {} + +type NamedVectors struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If set to true, search will ignore quantized vector data - Ignore *bool `protobuf:"varint,1,opt,name=ignore,proto3,oneof" json:"ignore,omitempty"` - // If true, use original vectors to re-score top-k results. If ignored, qdrant decides automatically does rescore enabled or not. - Rescore *bool `protobuf:"varint,2,opt,name=rescore,proto3,oneof" json:"rescore,omitempty"` - // Oversampling factor for quantization. - // - // Defines how many extra vectors should be pre-selected using quantized index, - // and then re-scored using original vectors. - // - // For example, if `oversampling` is 2.4 and `limit` is 100, then 240 vectors will be pre-selected using quantized index, - // and then top-100 will be returned after re-scoring. - Oversampling *float64 `protobuf:"fixed64,3,opt,name=oversampling,proto3,oneof" json:"oversampling,omitempty"` + Vectors map[string]*Vector `protobuf:"bytes,1,rep,name=vectors,proto3" json:"vectors,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *QuantizationSearchParams) Reset() { - *x = QuantizationSearchParams{} +func (x *NamedVectors) Reset() { + *x = NamedVectors{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2419,13 +2600,13 @@ func (x *QuantizationSearchParams) Reset() { } } -func (x *QuantizationSearchParams) String() string { +func (x *NamedVectors) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QuantizationSearchParams) ProtoMessage() {} +func (*NamedVectors) ProtoMessage() {} -func (x *QuantizationSearchParams) ProtoReflect() protoreflect.Message { +func (x *NamedVectors) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2437,52 +2618,28 @@ func (x *QuantizationSearchParams) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QuantizationSearchParams.ProtoReflect.Descriptor instead. -func (*QuantizationSearchParams) Descriptor() ([]byte, []int) { +// Deprecated: Use NamedVectors.ProtoReflect.Descriptor instead. +func (*NamedVectors) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{28} } -func (x *QuantizationSearchParams) GetIgnore() bool { - if x != nil && x.Ignore != nil { - return *x.Ignore - } - return false -} - -func (x *QuantizationSearchParams) GetRescore() bool { - if x != nil && x.Rescore != nil { - return *x.Rescore - } - return false -} - -func (x *QuantizationSearchParams) GetOversampling() float64 { - if x != nil && x.Oversampling != nil { - return *x.Oversampling +func (x *NamedVectors) GetVectors() map[string]*Vector { + if x != nil { + return x.Vectors } - return 0 + return nil } -type SearchParams struct { +type NamedVectorsOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Params relevant to HNSW index. Size of the beam in a beam-search. - // Larger the value - more accurate the result, more time required for search. - HnswEf *uint64 `protobuf:"varint,1,opt,name=hnsw_ef,json=hnswEf,proto3,oneof" json:"hnsw_ef,omitempty"` - // Search without approximation. If set to true, search may run long but with exact results. - Exact *bool `protobuf:"varint,2,opt,name=exact,proto3,oneof" json:"exact,omitempty"` - // If set to true, search will ignore quantized vector data - Quantization *QuantizationSearchParams `protobuf:"bytes,3,opt,name=quantization,proto3,oneof" json:"quantization,omitempty"` - // If enabled, the engine will only perform search among indexed or small segments. - // Using this option prevents slow searches in case of delayed index, but does not - // guarantee that all uploaded vectors will be included in search results - IndexedOnly *bool `protobuf:"varint,4,opt,name=indexed_only,json=indexedOnly,proto3,oneof" json:"indexed_only,omitempty"` + Vectors map[string]*VectorOutput `protobuf:"bytes,1,rep,name=vectors,proto3" json:"vectors,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *SearchParams) Reset() { - *x = SearchParams{} +func (x *NamedVectorsOutput) Reset() { + *x = NamedVectorsOutput{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2490,13 +2647,13 @@ func (x *SearchParams) Reset() { } } -func (x *SearchParams) String() string { +func (x *NamedVectorsOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchParams) ProtoMessage() {} +func (*NamedVectorsOutput) ProtoMessage() {} -func (x *SearchParams) ProtoReflect() protoreflect.Message { +func (x *NamedVectorsOutput) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2508,62 +2665,32 @@ func (x *SearchParams) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchParams.ProtoReflect.Descriptor instead. -func (*SearchParams) Descriptor() ([]byte, []int) { +// Deprecated: Use NamedVectorsOutput.ProtoReflect.Descriptor instead. +func (*NamedVectorsOutput) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{29} } -func (x *SearchParams) GetHnswEf() uint64 { - if x != nil && x.HnswEf != nil { - return *x.HnswEf - } - return 0 -} - -func (x *SearchParams) GetExact() bool { - if x != nil && x.Exact != nil { - return *x.Exact - } - return false -} - -func (x *SearchParams) GetQuantization() *QuantizationSearchParams { +func (x *NamedVectorsOutput) GetVectors() map[string]*VectorOutput { if x != nil { - return x.Quantization + return x.Vectors } return nil } -func (x *SearchParams) GetIndexedOnly() bool { - if x != nil && x.IndexedOnly != nil { - return *x.IndexedOnly - } - return false -} - -type SearchPoints struct { +type Vectors struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Vector []float32 `protobuf:"fixed32,2,rep,packed,name=vector,proto3" json:"vector,omitempty"` // vector - Filter *Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions - Limit uint64 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result - WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - Params *SearchParams `protobuf:"bytes,7,opt,name=params,proto3" json:"params,omitempty"` // Search config - ScoreThreshold *float32 `protobuf:"fixed32,8,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores - Offset *uint64 `protobuf:"varint,9,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result - VectorName *string `protobuf:"bytes,10,opt,name=vector_name,json=vectorName,proto3,oneof" json:"vector_name,omitempty"` // Which vector to use for search, if not specified - use default vector - WithVectors *WithVectorsSelector `protobuf:"bytes,11,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - Timeout *uint64 `protobuf:"varint,13,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ShardKeySelector *ShardKeySelector `protobuf:"bytes,14,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards - SparseIndices *SparseIndices `protobuf:"bytes,15,opt,name=sparse_indices,json=sparseIndices,proto3,oneof" json:"sparse_indices,omitempty"` + // Types that are assignable to VectorsOptions: + // + // *Vectors_Vector + // *Vectors_Vectors + VectorsOptions isVectors_VectorsOptions `protobuf_oneof:"vectors_options"` } -func (x *SearchPoints) Reset() { - *x = SearchPoints{} +func (x *Vectors) Reset() { + *x = Vectors{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2571,13 +2698,13 @@ func (x *SearchPoints) Reset() { } } -func (x *SearchPoints) String() string { +func (x *Vectors) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchPoints) ProtoMessage() {} +func (*Vectors) ProtoMessage() {} -func (x *SearchPoints) ProtoReflect() protoreflect.Message { +func (x *Vectors) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2589,137 +2716,154 @@ func (x *SearchPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchPoints.ProtoReflect.Descriptor instead. -func (*SearchPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use Vectors.ProtoReflect.Descriptor instead. +func (*Vectors) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{30} } -func (x *SearchPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName +func (m *Vectors) GetVectorsOptions() isVectors_VectorsOptions { + if m != nil { + return m.VectorsOptions } - return "" + return nil } -func (x *SearchPoints) GetVector() []float32 { - if x != nil { +func (x *Vectors) GetVector() *Vector { + if x, ok := x.GetVectorsOptions().(*Vectors_Vector); ok { return x.Vector } return nil } -func (x *SearchPoints) GetFilter() *Filter { - if x != nil { - return x.Filter +func (x *Vectors) GetVectors() *NamedVectors { + if x, ok := x.GetVectorsOptions().(*Vectors_Vectors); ok { + return x.Vectors } return nil } -func (x *SearchPoints) GetLimit() uint64 { - if x != nil { - return x.Limit - } - return 0 +type isVectors_VectorsOptions interface { + isVectors_VectorsOptions() } -func (x *SearchPoints) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload - } - return nil +type Vectors_Vector struct { + Vector *Vector `protobuf:"bytes,1,opt,name=vector,proto3,oneof"` } -func (x *SearchPoints) GetParams() *SearchParams { - if x != nil { - return x.Params - } - return nil +type Vectors_Vectors struct { + Vectors *NamedVectors `protobuf:"bytes,2,opt,name=vectors,proto3,oneof"` } -func (x *SearchPoints) GetScoreThreshold() float32 { - if x != nil && x.ScoreThreshold != nil { - return *x.ScoreThreshold - } - return 0 +func (*Vectors_Vector) isVectors_VectorsOptions() {} + +func (*Vectors_Vectors) isVectors_VectorsOptions() {} + +type VectorsOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to VectorsOptions: + // + // *VectorsOutput_Vector + // *VectorsOutput_Vectors + VectorsOptions isVectorsOutput_VectorsOptions `protobuf_oneof:"vectors_options"` } -func (x *SearchPoints) GetOffset() uint64 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *VectorsOutput) Reset() { + *x = VectorsOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *SearchPoints) GetVectorName() string { - if x != nil && x.VectorName != nil { - return *x.VectorName - } - return "" +func (x *VectorsOutput) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *SearchPoints) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors +func (*VectorsOutput) ProtoMessage() {} + +func (x *VectorsOutput) ProtoReflect() protoreflect.Message { + mi := &file_points_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 nil + return mi.MessageOf(x) } -func (x *SearchPoints) GetReadConsistency() *ReadConsistency { - if x != nil { - return x.ReadConsistency +// Deprecated: Use VectorsOutput.ProtoReflect.Descriptor instead. +func (*VectorsOutput) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{31} +} + +func (m *VectorsOutput) GetVectorsOptions() isVectorsOutput_VectorsOptions { + if m != nil { + return m.VectorsOptions } return nil } -func (x *SearchPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout +func (x *VectorsOutput) GetVector() *VectorOutput { + if x, ok := x.GetVectorsOptions().(*VectorsOutput_Vector); ok { + return x.Vector } - return 0 + return nil } -func (x *SearchPoints) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector +func (x *VectorsOutput) GetVectors() *NamedVectorsOutput { + if x, ok := x.GetVectorsOptions().(*VectorsOutput_Vectors); ok { + return x.Vectors } return nil } -func (x *SearchPoints) GetSparseIndices() *SparseIndices { - if x != nil { - return x.SparseIndices - } - return nil +type isVectorsOutput_VectorsOptions interface { + isVectorsOutput_VectorsOptions() } -type SearchBatchPoints struct { +type VectorsOutput_Vector struct { + Vector *VectorOutput `protobuf:"bytes,1,opt,name=vector,proto3,oneof"` +} + +type VectorsOutput_Vectors struct { + Vectors *NamedVectorsOutput `protobuf:"bytes,2,opt,name=vectors,proto3,oneof"` +} + +func (*VectorsOutput_Vector) isVectorsOutput_VectorsOptions() {} + +func (*VectorsOutput_Vectors) isVectorsOutput_VectorsOptions() {} + +type VectorsSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - SearchPoints []*SearchPoints `protobuf:"bytes,2,rep,name=search_points,json=searchPoints,proto3" json:"search_points,omitempty"` - ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` // List of vectors to include into result } -func (x *SearchBatchPoints) Reset() { - *x = SearchBatchPoints{} +func (x *VectorsSelector) Reset() { + *x = VectorsSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[31] + mi := &file_points_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SearchBatchPoints) String() string { +func (x *VectorsSelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchBatchPoints) ProtoMessage() {} +func (*VectorsSelector) ProtoMessage() {} -func (x *SearchBatchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[31] +func (x *VectorsSelector) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2730,66 +2874,47 @@ func (x *SearchBatchPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchBatchPoints.ProtoReflect.Descriptor instead. -func (*SearchBatchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{31} -} - -func (x *SearchBatchPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *SearchBatchPoints) GetSearchPoints() []*SearchPoints { - if x != nil { - return x.SearchPoints - } - return nil +// Deprecated: Use VectorsSelector.ProtoReflect.Descriptor instead. +func (*VectorsSelector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{32} } -func (x *SearchBatchPoints) GetReadConsistency() *ReadConsistency { +func (x *VectorsSelector) GetNames() []string { if x != nil { - return x.ReadConsistency + return x.Names } return nil } -func (x *SearchBatchPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout - } - return 0 -} - -type WithLookup struct { +type WithVectorsSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Collection string `protobuf:"bytes,1,opt,name=collection,proto3" json:"collection,omitempty"` // Name of the collection to use for points lookup - WithPayload *WithPayloadSelector `protobuf:"bytes,2,opt,name=with_payload,json=withPayload,proto3,oneof" json:"with_payload,omitempty"` // Options for specifying which payload to include (or not) - WithVectors *WithVectorsSelector `protobuf:"bytes,3,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include (or not) + // Types that are assignable to SelectorOptions: + // + // *WithVectorsSelector_Enable + // *WithVectorsSelector_Include + SelectorOptions isWithVectorsSelector_SelectorOptions `protobuf_oneof:"selector_options"` } -func (x *WithLookup) Reset() { - *x = WithLookup{} +func (x *WithVectorsSelector) Reset() { + *x = WithVectorsSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[32] + mi := &file_points_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WithLookup) String() string { +func (x *WithVectorsSelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WithLookup) ProtoMessage() {} +func (*WithVectorsSelector) ProtoMessage() {} -func (x *WithLookup) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[32] +func (x *WithVectorsSelector) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2800,72 +2925,84 @@ func (x *WithLookup) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WithLookup.ProtoReflect.Descriptor instead. -func (*WithLookup) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{32} +// Deprecated: Use WithVectorsSelector.ProtoReflect.Descriptor instead. +func (*WithVectorsSelector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{33} } -func (x *WithLookup) GetCollection() string { - if x != nil { - return x.Collection +func (m *WithVectorsSelector) GetSelectorOptions() isWithVectorsSelector_SelectorOptions { + if m != nil { + return m.SelectorOptions } - return "" + return nil } -func (x *WithLookup) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload +func (x *WithVectorsSelector) GetEnable() bool { + if x, ok := x.GetSelectorOptions().(*WithVectorsSelector_Enable); ok { + return x.Enable } - return nil + return false } -func (x *WithLookup) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors +func (x *WithVectorsSelector) GetInclude() *VectorsSelector { + if x, ok := x.GetSelectorOptions().(*WithVectorsSelector_Include); ok { + return x.Include } return nil } -type SearchPointGroups struct { +type isWithVectorsSelector_SelectorOptions interface { + isWithVectorsSelector_SelectorOptions() +} + +type WithVectorsSelector_Enable struct { + Enable bool `protobuf:"varint,1,opt,name=enable,proto3,oneof"` // If `true` - return all vectors, if `false` - none +} + +type WithVectorsSelector_Include struct { + Include *VectorsSelector `protobuf:"bytes,2,opt,name=include,proto3,oneof"` // List of payload keys to include into result +} + +func (*WithVectorsSelector_Enable) isWithVectorsSelector_SelectorOptions() {} + +func (*WithVectorsSelector_Include) isWithVectorsSelector_SelectorOptions() {} + +type QuantizationSearchParams struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - Vector []float32 `protobuf:"fixed32,2,rep,packed,name=vector,proto3" json:"vector,omitempty"` // Vector to compare against - Filter *Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions - Limit uint32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result - WithPayload *WithPayloadSelector `protobuf:"bytes,5,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - Params *SearchParams `protobuf:"bytes,6,opt,name=params,proto3" json:"params,omitempty"` // Search config - ScoreThreshold *float32 `protobuf:"fixed32,7,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores - VectorName *string `protobuf:"bytes,8,opt,name=vector_name,json=vectorName,proto3,oneof" json:"vector_name,omitempty"` // Which vector to use for search, if not specified - use default vector - WithVectors *WithVectorsSelector `protobuf:"bytes,9,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - GroupBy string `protobuf:"bytes,10,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` // Payload field to group by, must be a string or number field. If there are multiple values for the field, all of them will be used. One point can be in multiple groups. - GroupSize uint32 `protobuf:"varint,11,opt,name=group_size,json=groupSize,proto3" json:"group_size,omitempty"` // Maximum amount of points to return per group - ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - WithLookup *WithLookup `protobuf:"bytes,13,opt,name=with_lookup,json=withLookup,proto3,oneof" json:"with_lookup,omitempty"` // Options for specifying how to use the group id to lookup points in another collection - Timeout *uint64 `protobuf:"varint,14,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ShardKeySelector *ShardKeySelector `protobuf:"bytes,15,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards - SparseIndices *SparseIndices `protobuf:"bytes,16,opt,name=sparse_indices,json=sparseIndices,proto3,oneof" json:"sparse_indices,omitempty"` + // If set to true, search will ignore quantized vector data + Ignore *bool `protobuf:"varint,1,opt,name=ignore,proto3,oneof" json:"ignore,omitempty"` + // If true, use original vectors to re-score top-k results. If ignored, qdrant decides automatically does rescore enabled or not. + Rescore *bool `protobuf:"varint,2,opt,name=rescore,proto3,oneof" json:"rescore,omitempty"` + // Oversampling factor for quantization. + // + // Defines how many extra vectors should be pre-selected using quantized index, + // and then re-scored using original vectors. + // + // For example, if `oversampling` is 2.4 and `limit` is 100, then 240 vectors will be pre-selected using quantized index, + // and then top-100 will be returned after re-scoring. + Oversampling *float64 `protobuf:"fixed64,3,opt,name=oversampling,proto3,oneof" json:"oversampling,omitempty"` } -func (x *SearchPointGroups) Reset() { - *x = SearchPointGroups{} +func (x *QuantizationSearchParams) Reset() { + *x = QuantizationSearchParams{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[33] + mi := &file_points_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SearchPointGroups) String() string { +func (x *QuantizationSearchParams) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchPointGroups) ProtoMessage() {} +func (*QuantizationSearchParams) ProtoMessage() {} -func (x *SearchPointGroups) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[33] +func (x *QuantizationSearchParams) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2876,154 +3013,148 @@ func (x *SearchPointGroups) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchPointGroups.ProtoReflect.Descriptor instead. -func (*SearchPointGroups) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{33} -} - -func (x *SearchPointGroups) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" +// Deprecated: Use QuantizationSearchParams.ProtoReflect.Descriptor instead. +func (*QuantizationSearchParams) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{34} } -func (x *SearchPointGroups) GetVector() []float32 { - if x != nil { - return x.Vector +func (x *QuantizationSearchParams) GetIgnore() bool { + if x != nil && x.Ignore != nil { + return *x.Ignore } - return nil + return false } -func (x *SearchPointGroups) GetFilter() *Filter { - if x != nil { - return x.Filter +func (x *QuantizationSearchParams) GetRescore() bool { + if x != nil && x.Rescore != nil { + return *x.Rescore } - return nil + return false } -func (x *SearchPointGroups) GetLimit() uint32 { - if x != nil { - return x.Limit +func (x *QuantizationSearchParams) GetOversampling() float64 { + if x != nil && x.Oversampling != nil { + return *x.Oversampling } return 0 } -func (x *SearchPointGroups) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload - } - return nil +type SearchParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Params relevant to HNSW index. Size of the beam in a beam-search. + // Larger the value - more accurate the result, more time required for search. + HnswEf *uint64 `protobuf:"varint,1,opt,name=hnsw_ef,json=hnswEf,proto3,oneof" json:"hnsw_ef,omitempty"` + // Search without approximation. If set to true, search may run long but with exact results. + Exact *bool `protobuf:"varint,2,opt,name=exact,proto3,oneof" json:"exact,omitempty"` + // If set to true, search will ignore quantized vector data + Quantization *QuantizationSearchParams `protobuf:"bytes,3,opt,name=quantization,proto3,oneof" json:"quantization,omitempty"` + // If enabled, the engine will only perform search among indexed or small segments. + // Using this option prevents slow searches in case of delayed index, but does not + // guarantee that all uploaded vectors will be included in search results + IndexedOnly *bool `protobuf:"varint,4,opt,name=indexed_only,json=indexedOnly,proto3,oneof" json:"indexed_only,omitempty"` } -func (x *SearchPointGroups) GetParams() *SearchParams { - if x != nil { - return x.Params +func (x *SearchParams) Reset() { + *x = SearchParams{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *SearchPointGroups) GetScoreThreshold() float32 { - if x != nil && x.ScoreThreshold != nil { - return *x.ScoreThreshold - } - return 0 +func (x *SearchParams) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *SearchPointGroups) GetVectorName() string { - if x != nil && x.VectorName != nil { - return *x.VectorName - } - return "" -} +func (*SearchParams) ProtoMessage() {} -func (x *SearchPointGroups) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors +func (x *SearchParams) ProtoReflect() protoreflect.Message { + mi := &file_points_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 nil + return mi.MessageOf(x) } -func (x *SearchPointGroups) GetGroupBy() string { - if x != nil { - return x.GroupBy - } - return "" +// Deprecated: Use SearchParams.ProtoReflect.Descriptor instead. +func (*SearchParams) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{35} } -func (x *SearchPointGroups) GetGroupSize() uint32 { - if x != nil { - return x.GroupSize +func (x *SearchParams) GetHnswEf() uint64 { + if x != nil && x.HnswEf != nil { + return *x.HnswEf } return 0 } -func (x *SearchPointGroups) GetReadConsistency() *ReadConsistency { - if x != nil { - return x.ReadConsistency - } - return nil -} - -func (x *SearchPointGroups) GetWithLookup() *WithLookup { - if x != nil { - return x.WithLookup - } - return nil -} - -func (x *SearchPointGroups) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout +func (x *SearchParams) GetExact() bool { + if x != nil && x.Exact != nil { + return *x.Exact } - return 0 + return false } -func (x *SearchPointGroups) GetShardKeySelector() *ShardKeySelector { +func (x *SearchParams) GetQuantization() *QuantizationSearchParams { if x != nil { - return x.ShardKeySelector + return x.Quantization } return nil } -func (x *SearchPointGroups) GetSparseIndices() *SparseIndices { - if x != nil { - return x.SparseIndices +func (x *SearchParams) GetIndexedOnly() bool { + if x != nil && x.IndexedOnly != nil { + return *x.IndexedOnly } - return nil + return false } -type StartFrom struct { +type SearchPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Value: - // - // *StartFrom_Float - // *StartFrom_Integer - // *StartFrom_Timestamp - // *StartFrom_Datetime - Value isStartFrom_Value `protobuf_oneof:"value"` + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Vector []float32 `protobuf:"fixed32,2,rep,packed,name=vector,proto3" json:"vector,omitempty"` // vector + Filter *Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions + Limit uint64 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result + WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + Params *SearchParams `protobuf:"bytes,7,opt,name=params,proto3" json:"params,omitempty"` // Search config + ScoreThreshold *float32 `protobuf:"fixed32,8,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores + Offset *uint64 `protobuf:"varint,9,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result + VectorName *string `protobuf:"bytes,10,opt,name=vector_name,json=vectorName,proto3,oneof" json:"vector_name,omitempty"` // Which vector to use for search, if not specified - use default vector + WithVectors *WithVectorsSelector `protobuf:"bytes,11,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Timeout *uint64 `protobuf:"varint,13,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,14,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + SparseIndices *SparseIndices `protobuf:"bytes,15,opt,name=sparse_indices,json=sparseIndices,proto3,oneof" json:"sparse_indices,omitempty"` } -func (x *StartFrom) Reset() { - *x = StartFrom{} +func (x *SearchPoints) Reset() { + *x = SearchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[34] + mi := &file_points_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StartFrom) String() string { +func (x *SearchPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StartFrom) ProtoMessage() {} +func (*SearchPoints) ProtoMessage() {} -func (x *StartFrom) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[34] +func (x *SearchPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3034,101 +3165,137 @@ func (x *StartFrom) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StartFrom.ProtoReflect.Descriptor instead. -func (*StartFrom) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{34} +// Deprecated: Use SearchPoints.ProtoReflect.Descriptor instead. +func (*SearchPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{36} } -func (m *StartFrom) GetValue() isStartFrom_Value { - if m != nil { - return m.Value +func (x *SearchPoints) GetCollectionName() string { + if x != nil { + return x.CollectionName + } + return "" +} + +func (x *SearchPoints) GetVector() []float32 { + if x != nil { + return x.Vector } return nil } -func (x *StartFrom) GetFloat() float64 { - if x, ok := x.GetValue().(*StartFrom_Float); ok { - return x.Float +func (x *SearchPoints) GetFilter() *Filter { + if x != nil { + return x.Filter } - return 0 + return nil } -func (x *StartFrom) GetInteger() int64 { - if x, ok := x.GetValue().(*StartFrom_Integer); ok { - return x.Integer +func (x *SearchPoints) GetLimit() uint64 { + if x != nil { + return x.Limit } return 0 } -func (x *StartFrom) GetTimestamp() *timestamppb.Timestamp { - if x, ok := x.GetValue().(*StartFrom_Timestamp); ok { - return x.Timestamp +func (x *SearchPoints) GetWithPayload() *WithPayloadSelector { + if x != nil { + return x.WithPayload } return nil } -func (x *StartFrom) GetDatetime() string { - if x, ok := x.GetValue().(*StartFrom_Datetime); ok { - return x.Datetime +func (x *SearchPoints) GetParams() *SearchParams { + if x != nil { + return x.Params } - return "" + return nil } -type isStartFrom_Value interface { - isStartFrom_Value() +func (x *SearchPoints) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold + } + return 0 } -type StartFrom_Float struct { - Float float64 `protobuf:"fixed64,1,opt,name=float,proto3,oneof"` +func (x *SearchPoints) GetOffset() uint64 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 } -type StartFrom_Integer struct { - Integer int64 `protobuf:"varint,2,opt,name=integer,proto3,oneof"` +func (x *SearchPoints) GetVectorName() string { + if x != nil && x.VectorName != nil { + return *x.VectorName + } + return "" } -type StartFrom_Timestamp struct { - Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3,oneof"` +func (x *SearchPoints) GetWithVectors() *WithVectorsSelector { + if x != nil { + return x.WithVectors + } + return nil } -type StartFrom_Datetime struct { - Datetime string `protobuf:"bytes,4,opt,name=datetime,proto3,oneof"` +func (x *SearchPoints) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency + } + return nil } -func (*StartFrom_Float) isStartFrom_Value() {} - -func (*StartFrom_Integer) isStartFrom_Value() {} +func (x *SearchPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} -func (*StartFrom_Timestamp) isStartFrom_Value() {} +func (x *SearchPoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} -func (*StartFrom_Datetime) isStartFrom_Value() {} +func (x *SearchPoints) GetSparseIndices() *SparseIndices { + if x != nil { + return x.SparseIndices + } + return nil +} -type OrderBy struct { +type SearchBatchPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Payload key to order by - Direction *Direction `protobuf:"varint,2,opt,name=direction,proto3,enum=qdrant.Direction,oneof" json:"direction,omitempty"` // Ascending or descending order - StartFrom *StartFrom `protobuf:"bytes,3,opt,name=start_from,json=startFrom,proto3,oneof" json:"start_from,omitempty"` // Start from this value + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + SearchPoints []*SearchPoints `protobuf:"bytes,2,rep,name=search_points,json=searchPoints,proto3" json:"search_points,omitempty"` + ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *OrderBy) Reset() { - *x = OrderBy{} +func (x *SearchBatchPoints) Reset() { + *x = SearchBatchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[35] + mi := &file_points_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OrderBy) String() string { +func (x *SearchBatchPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrderBy) ProtoMessage() {} +func (*SearchBatchPoints) ProtoMessage() {} -func (x *OrderBy) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[35] +func (x *SearchBatchPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3139,178 +3306,66 @@ func (x *OrderBy) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrderBy.ProtoReflect.Descriptor instead. -func (*OrderBy) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{35} +// Deprecated: Use SearchBatchPoints.ProtoReflect.Descriptor instead. +func (*SearchBatchPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{37} } -func (x *OrderBy) GetKey() string { +func (x *SearchBatchPoints) GetCollectionName() string { if x != nil { - return x.Key + return x.CollectionName } return "" } -func (x *OrderBy) GetDirection() Direction { - if x != nil && x.Direction != nil { - return *x.Direction +func (x *SearchBatchPoints) GetSearchPoints() []*SearchPoints { + if x != nil { + return x.SearchPoints } - return Direction_Asc + return nil } -func (x *OrderBy) GetStartFrom() *StartFrom { +func (x *SearchBatchPoints) GetReadConsistency() *ReadConsistency { if x != nil { - return x.StartFrom + return x.ReadConsistency } return nil } -type ScrollPoints struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` - Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions - Offset *PointId `protobuf:"bytes,3,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Start with this ID - Limit *uint32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of result - WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - WithVectors *WithVectorsSelector `protobuf:"bytes,7,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - ReadConsistency *ReadConsistency `protobuf:"bytes,8,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,9,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards - OrderBy *OrderBy `protobuf:"bytes,10,opt,name=order_by,json=orderBy,proto3,oneof" json:"order_by,omitempty"` // Order the records by a payload field - Timeout *uint64 `protobuf:"varint,11,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. -} - -func (x *ScrollPoints) Reset() { - *x = ScrollPoints{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ScrollPoints) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScrollPoints) ProtoMessage() {} - -func (x *ScrollPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_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) -} - -// Deprecated: Use ScrollPoints.ProtoReflect.Descriptor instead. -func (*ScrollPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{36} -} - -func (x *ScrollPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *ScrollPoints) GetFilter() *Filter { - if x != nil { - return x.Filter - } - return nil -} - -func (x *ScrollPoints) GetOffset() *PointId { - if x != nil { - return x.Offset - } - return nil -} - -func (x *ScrollPoints) GetLimit() uint32 { - if x != nil && x.Limit != nil { - return *x.Limit - } - return 0 -} - -func (x *ScrollPoints) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload - } - return nil -} - -func (x *ScrollPoints) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors - } - return nil -} - -func (x *ScrollPoints) GetReadConsistency() *ReadConsistency { - if x != nil { - return x.ReadConsistency - } - return nil -} - -func (x *ScrollPoints) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector - } - return nil -} - -func (x *ScrollPoints) GetOrderBy() *OrderBy { - if x != nil { - return x.OrderBy - } - return nil -} - -func (x *ScrollPoints) GetTimeout() uint64 { +func (x *SearchBatchPoints) GetTimeout() uint64 { if x != nil && x.Timeout != nil { return *x.Timeout } return 0 } -type LookupLocation struct { +type WithLookup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` - VectorName *string `protobuf:"bytes,2,opt,name=vector_name,json=vectorName,proto3,oneof" json:"vector_name,omitempty"` // Which vector to use for search, if not specified - use default vector - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + Collection string `protobuf:"bytes,1,opt,name=collection,proto3" json:"collection,omitempty"` // Name of the collection to use for points lookup + WithPayload *WithPayloadSelector `protobuf:"bytes,2,opt,name=with_payload,json=withPayload,proto3,oneof" json:"with_payload,omitempty"` // Options for specifying which payload to include (or not) + WithVectors *WithVectorsSelector `protobuf:"bytes,3,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include (or not) } -func (x *LookupLocation) Reset() { - *x = LookupLocation{} +func (x *WithLookup) Reset() { + *x = WithLookup{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[37] + mi := &file_points_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LookupLocation) String() string { +func (x *WithLookup) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LookupLocation) ProtoMessage() {} +func (*WithLookup) ProtoMessage() {} -func (x *LookupLocation) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[37] +func (x *WithLookup) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3321,74 +3376,72 @@ func (x *LookupLocation) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LookupLocation.ProtoReflect.Descriptor instead. -func (*LookupLocation) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{37} +// Deprecated: Use WithLookup.ProtoReflect.Descriptor instead. +func (*WithLookup) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{38} } -func (x *LookupLocation) GetCollectionName() string { +func (x *WithLookup) GetCollection() string { if x != nil { - return x.CollectionName + return x.Collection } return "" } -func (x *LookupLocation) GetVectorName() string { - if x != nil && x.VectorName != nil { - return *x.VectorName +func (x *WithLookup) GetWithPayload() *WithPayloadSelector { + if x != nil { + return x.WithPayload } - return "" + return nil } -func (x *LookupLocation) GetShardKeySelector() *ShardKeySelector { +func (x *WithLookup) GetWithVectors() *WithVectorsSelector { if x != nil { - return x.ShardKeySelector + return x.WithVectors } return nil } -type RecommendPoints struct { +type SearchPointGroups struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Positive []*PointId `protobuf:"bytes,2,rep,name=positive,proto3" json:"positive,omitempty"` // Look for vectors closest to the vectors from these points - Negative []*PointId `protobuf:"bytes,3,rep,name=negative,proto3" json:"negative,omitempty"` // Try to avoid vectors like the vector from these points - Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions - Limit uint64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result - WithPayload *WithPayloadSelector `protobuf:"bytes,7,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - Params *SearchParams `protobuf:"bytes,8,opt,name=params,proto3" json:"params,omitempty"` // Search config - ScoreThreshold *float32 `protobuf:"fixed32,9,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores - Offset *uint64 `protobuf:"varint,10,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result - Using *string `protobuf:"bytes,11,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for recommendation, if not specified - default vector - WithVectors *WithVectorsSelector `protobuf:"bytes,12,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - LookupFrom *LookupLocation `protobuf:"bytes,13,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // Name of the collection to use for points lookup, if not specified - use current collection - ReadConsistency *ReadConsistency `protobuf:"bytes,14,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - Strategy *RecommendStrategy `protobuf:"varint,16,opt,name=strategy,proto3,enum=qdrant.RecommendStrategy,oneof" json:"strategy,omitempty"` // How to use the example vectors to find the results - PositiveVectors []*Vector `protobuf:"bytes,17,rep,name=positive_vectors,json=positiveVectors,proto3" json:"positive_vectors,omitempty"` // Look for vectors closest to those - NegativeVectors []*Vector `protobuf:"bytes,18,rep,name=negative_vectors,json=negativeVectors,proto3" json:"negative_vectors,omitempty"` // Try to avoid vectors like this - Timeout *uint64 `protobuf:"varint,19,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ShardKeySelector *ShardKeySelector `protobuf:"bytes,20,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Vector []float32 `protobuf:"fixed32,2,rep,packed,name=vector,proto3" json:"vector,omitempty"` // Vector to compare against + Filter *Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions + Limit uint32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result + WithPayload *WithPayloadSelector `protobuf:"bytes,5,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + Params *SearchParams `protobuf:"bytes,6,opt,name=params,proto3" json:"params,omitempty"` // Search config + ScoreThreshold *float32 `protobuf:"fixed32,7,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores + VectorName *string `protobuf:"bytes,8,opt,name=vector_name,json=vectorName,proto3,oneof" json:"vector_name,omitempty"` // Which vector to use for search, if not specified - use default vector + WithVectors *WithVectorsSelector `protobuf:"bytes,9,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + GroupBy string `protobuf:"bytes,10,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` // Payload field to group by, must be a string or number field. If there are multiple values for the field, all of them will be used. One point can be in multiple groups. + GroupSize uint32 `protobuf:"varint,11,opt,name=group_size,json=groupSize,proto3" json:"group_size,omitempty"` // Maximum amount of points to return per group + ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + WithLookup *WithLookup `protobuf:"bytes,13,opt,name=with_lookup,json=withLookup,proto3,oneof" json:"with_lookup,omitempty"` // Options for specifying how to use the group id to lookup points in another collection + Timeout *uint64 `protobuf:"varint,14,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,15,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + SparseIndices *SparseIndices `protobuf:"bytes,16,opt,name=sparse_indices,json=sparseIndices,proto3,oneof" json:"sparse_indices,omitempty"` } -func (x *RecommendPoints) Reset() { - *x = RecommendPoints{} +func (x *SearchPointGroups) Reset() { + *x = SearchPointGroups{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[38] + mi := &file_points_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecommendPoints) String() string { +func (x *SearchPointGroups) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendPoints) ProtoMessage() {} +func (*SearchPointGroups) ProtoMessage() {} -func (x *RecommendPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[38] +func (x *SearchPointGroups) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3399,165 +3452,154 @@ func (x *RecommendPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendPoints.ProtoReflect.Descriptor instead. -func (*RecommendPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{38} +// Deprecated: Use SearchPointGroups.ProtoReflect.Descriptor instead. +func (*SearchPointGroups) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{39} } -func (x *RecommendPoints) GetCollectionName() string { +func (x *SearchPointGroups) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *RecommendPoints) GetPositive() []*PointId { - if x != nil { - return x.Positive - } - return nil -} - -func (x *RecommendPoints) GetNegative() []*PointId { +func (x *SearchPointGroups) GetVector() []float32 { if x != nil { - return x.Negative + return x.Vector } return nil } -func (x *RecommendPoints) GetFilter() *Filter { +func (x *SearchPointGroups) GetFilter() *Filter { if x != nil { return x.Filter } return nil } -func (x *RecommendPoints) GetLimit() uint64 { +func (x *SearchPointGroups) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } -func (x *RecommendPoints) GetWithPayload() *WithPayloadSelector { +func (x *SearchPointGroups) GetWithPayload() *WithPayloadSelector { if x != nil { return x.WithPayload } return nil } -func (x *RecommendPoints) GetParams() *SearchParams { +func (x *SearchPointGroups) GetParams() *SearchParams { if x != nil { return x.Params } return nil } -func (x *RecommendPoints) GetScoreThreshold() float32 { +func (x *SearchPointGroups) GetScoreThreshold() float32 { if x != nil && x.ScoreThreshold != nil { return *x.ScoreThreshold } return 0 } -func (x *RecommendPoints) GetOffset() uint64 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 -} - -func (x *RecommendPoints) GetUsing() string { - if x != nil && x.Using != nil { - return *x.Using +func (x *SearchPointGroups) GetVectorName() string { + if x != nil && x.VectorName != nil { + return *x.VectorName } return "" } -func (x *RecommendPoints) GetWithVectors() *WithVectorsSelector { +func (x *SearchPointGroups) GetWithVectors() *WithVectorsSelector { if x != nil { return x.WithVectors } return nil } -func (x *RecommendPoints) GetLookupFrom() *LookupLocation { +func (x *SearchPointGroups) GetGroupBy() string { if x != nil { - return x.LookupFrom + return x.GroupBy } - return nil + return "" } -func (x *RecommendPoints) GetReadConsistency() *ReadConsistency { +func (x *SearchPointGroups) GetGroupSize() uint32 { if x != nil { - return x.ReadConsistency - } - return nil -} - -func (x *RecommendPoints) GetStrategy() RecommendStrategy { - if x != nil && x.Strategy != nil { - return *x.Strategy + return x.GroupSize } - return RecommendStrategy_AverageVector + return 0 } -func (x *RecommendPoints) GetPositiveVectors() []*Vector { +func (x *SearchPointGroups) GetReadConsistency() *ReadConsistency { if x != nil { - return x.PositiveVectors + return x.ReadConsistency } return nil } -func (x *RecommendPoints) GetNegativeVectors() []*Vector { +func (x *SearchPointGroups) GetWithLookup() *WithLookup { if x != nil { - return x.NegativeVectors + return x.WithLookup } return nil } -func (x *RecommendPoints) GetTimeout() uint64 { +func (x *SearchPointGroups) GetTimeout() uint64 { if x != nil && x.Timeout != nil { return *x.Timeout } return 0 } -func (x *RecommendPoints) GetShardKeySelector() *ShardKeySelector { +func (x *SearchPointGroups) GetShardKeySelector() *ShardKeySelector { if x != nil { return x.ShardKeySelector } return nil } -type RecommendBatchPoints struct { +func (x *SearchPointGroups) GetSparseIndices() *SparseIndices { + if x != nil { + return x.SparseIndices + } + return nil +} + +type StartFrom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - RecommendPoints []*RecommendPoints `protobuf:"bytes,2,rep,name=recommend_points,json=recommendPoints,proto3" json:"recommend_points,omitempty"` - ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + // Types that are assignable to Value: + // + // *StartFrom_Float + // *StartFrom_Integer + // *StartFrom_Timestamp + // *StartFrom_Datetime + Value isStartFrom_Value `protobuf_oneof:"value"` } -func (x *RecommendBatchPoints) Reset() { - *x = RecommendBatchPoints{} +func (x *StartFrom) Reset() { + *x = StartFrom{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[39] + mi := &file_points_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecommendBatchPoints) String() string { +func (x *StartFrom) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendBatchPoints) ProtoMessage() {} +func (*StartFrom) ProtoMessage() {} -func (x *RecommendBatchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[39] +func (x *StartFrom) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3568,83 +3610,101 @@ func (x *RecommendBatchPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendBatchPoints.ProtoReflect.Descriptor instead. -func (*RecommendBatchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{39} +// Deprecated: Use StartFrom.ProtoReflect.Descriptor instead. +func (*StartFrom) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{40} } -func (x *RecommendBatchPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName +func (m *StartFrom) GetValue() isStartFrom_Value { + if m != nil { + return m.Value } - return "" + return nil } -func (x *RecommendBatchPoints) GetRecommendPoints() []*RecommendPoints { - if x != nil { - return x.RecommendPoints +func (x *StartFrom) GetFloat() float64 { + if x, ok := x.GetValue().(*StartFrom_Float); ok { + return x.Float } - return nil + return 0 } -func (x *RecommendBatchPoints) GetReadConsistency() *ReadConsistency { - if x != nil { - return x.ReadConsistency +func (x *StartFrom) GetInteger() int64 { + if x, ok := x.GetValue().(*StartFrom_Integer); ok { + return x.Integer + } + return 0 +} + +func (x *StartFrom) GetTimestamp() *timestamppb.Timestamp { + if x, ok := x.GetValue().(*StartFrom_Timestamp); ok { + return x.Timestamp } return nil } -func (x *RecommendBatchPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout +func (x *StartFrom) GetDatetime() string { + if x, ok := x.GetValue().(*StartFrom_Datetime); ok { + return x.Datetime } - return 0 + return "" } -type RecommendPointGroups struct { +type isStartFrom_Value interface { + isStartFrom_Value() +} + +type StartFrom_Float struct { + Float float64 `protobuf:"fixed64,1,opt,name=float,proto3,oneof"` +} + +type StartFrom_Integer struct { + Integer int64 `protobuf:"varint,2,opt,name=integer,proto3,oneof"` +} + +type StartFrom_Timestamp struct { + Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3,oneof"` +} + +type StartFrom_Datetime struct { + Datetime string `protobuf:"bytes,4,opt,name=datetime,proto3,oneof"` +} + +func (*StartFrom_Float) isStartFrom_Value() {} + +func (*StartFrom_Integer) isStartFrom_Value() {} + +func (*StartFrom_Timestamp) isStartFrom_Value() {} + +func (*StartFrom_Datetime) isStartFrom_Value() {} + +type OrderBy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - Positive []*PointId `protobuf:"bytes,2,rep,name=positive,proto3" json:"positive,omitempty"` // Look for vectors closest to the vectors from these points - Negative []*PointId `protobuf:"bytes,3,rep,name=negative,proto3" json:"negative,omitempty"` // Try to avoid vectors like the vector from these points - Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions - Limit uint32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of groups in result - WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - Params *SearchParams `protobuf:"bytes,7,opt,name=params,proto3" json:"params,omitempty"` // Search config - ScoreThreshold *float32 `protobuf:"fixed32,8,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores - Using *string `protobuf:"bytes,9,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for recommendation, if not specified - default vector - WithVectors *WithVectorsSelector `protobuf:"bytes,10,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - LookupFrom *LookupLocation `protobuf:"bytes,11,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // Name of the collection to use for points lookup, if not specified - use current collection - GroupBy string `protobuf:"bytes,12,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` // Payload field to group by, must be a string or number field. If there are multiple values for the field, all of them will be used. One point can be in multiple groups. - GroupSize uint32 `protobuf:"varint,13,opt,name=group_size,json=groupSize,proto3" json:"group_size,omitempty"` // Maximum amount of points to return per group - ReadConsistency *ReadConsistency `protobuf:"bytes,14,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - WithLookup *WithLookup `protobuf:"bytes,15,opt,name=with_lookup,json=withLookup,proto3,oneof" json:"with_lookup,omitempty"` // Options for specifying how to use the group id to lookup points in another collection - Strategy *RecommendStrategy `protobuf:"varint,17,opt,name=strategy,proto3,enum=qdrant.RecommendStrategy,oneof" json:"strategy,omitempty"` // How to use the example vectors to find the results - PositiveVectors []*Vector `protobuf:"bytes,18,rep,name=positive_vectors,json=positiveVectors,proto3" json:"positive_vectors,omitempty"` // Look for vectors closest to those - NegativeVectors []*Vector `protobuf:"bytes,19,rep,name=negative_vectors,json=negativeVectors,proto3" json:"negative_vectors,omitempty"` // Try to avoid vectors like this - Timeout *uint64 `protobuf:"varint,20,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ShardKeySelector *ShardKeySelector `protobuf:"bytes,21,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Payload key to order by + Direction *Direction `protobuf:"varint,2,opt,name=direction,proto3,enum=qdrant.Direction,oneof" json:"direction,omitempty"` // Ascending or descending order + StartFrom *StartFrom `protobuf:"bytes,3,opt,name=start_from,json=startFrom,proto3,oneof" json:"start_from,omitempty"` // Start from this value } -func (x *RecommendPointGroups) Reset() { - *x = RecommendPointGroups{} +func (x *OrderBy) Reset() { + *x = OrderBy{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[40] + mi := &file_points_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecommendPointGroups) String() string { +func (x *OrderBy) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendPointGroups) ProtoMessage() {} +func (*OrderBy) ProtoMessage() {} -func (x *RecommendPointGroups) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[40] +func (x *OrderBy) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3655,179 +3715,178 @@ func (x *RecommendPointGroups) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendPointGroups.ProtoReflect.Descriptor instead. -func (*RecommendPointGroups) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{40} +// Deprecated: Use OrderBy.ProtoReflect.Descriptor instead. +func (*OrderBy) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{41} } -func (x *RecommendPointGroups) GetCollectionName() string { +func (x *OrderBy) GetKey() string { if x != nil { - return x.CollectionName + return x.Key } return "" } -func (x *RecommendPointGroups) GetPositive() []*PointId { - if x != nil { - return x.Positive +func (x *OrderBy) GetDirection() Direction { + if x != nil && x.Direction != nil { + return *x.Direction } - return nil + return Direction_Asc } -func (x *RecommendPointGroups) GetNegative() []*PointId { +func (x *OrderBy) GetStartFrom() *StartFrom { if x != nil { - return x.Negative + return x.StartFrom } return nil } -func (x *RecommendPointGroups) GetFilter() *Filter { - if x != nil { - return x.Filter - } - return nil +type ScrollPoints struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` + Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions + Offset *PointId `protobuf:"bytes,3,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Start with this ID + Limit *uint32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of result + WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + WithVectors *WithVectorsSelector `protobuf:"bytes,7,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + ReadConsistency *ReadConsistency `protobuf:"bytes,8,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,9,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + OrderBy *OrderBy `protobuf:"bytes,10,opt,name=order_by,json=orderBy,proto3,oneof" json:"order_by,omitempty"` // Order the records by a payload field + Timeout *uint64 `protobuf:"varint,11,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *RecommendPointGroups) GetLimit() uint32 { - if x != nil { - return x.Limit +func (x *ScrollPoints) Reset() { + *x = ScrollPoints{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *RecommendPointGroups) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload - } - return nil +func (x *ScrollPoints) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *RecommendPointGroups) GetParams() *SearchParams { - if x != nil { - return x.Params +func (*ScrollPoints) ProtoMessage() {} + +func (x *ScrollPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_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 nil + return mi.MessageOf(x) } -func (x *RecommendPointGroups) GetScoreThreshold() float32 { - if x != nil && x.ScoreThreshold != nil { - return *x.ScoreThreshold - } - return 0 +// Deprecated: Use ScrollPoints.ProtoReflect.Descriptor instead. +func (*ScrollPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{42} } -func (x *RecommendPointGroups) GetUsing() string { - if x != nil && x.Using != nil { - return *x.Using +func (x *ScrollPoints) GetCollectionName() string { + if x != nil { + return x.CollectionName } return "" } -func (x *RecommendPointGroups) GetWithVectors() *WithVectorsSelector { +func (x *ScrollPoints) GetFilter() *Filter { if x != nil { - return x.WithVectors + return x.Filter } return nil } -func (x *RecommendPointGroups) GetLookupFrom() *LookupLocation { +func (x *ScrollPoints) GetOffset() *PointId { if x != nil { - return x.LookupFrom + return x.Offset } return nil } -func (x *RecommendPointGroups) GetGroupBy() string { - if x != nil { - return x.GroupBy - } - return "" -} - -func (x *RecommendPointGroups) GetGroupSize() uint32 { - if x != nil { - return x.GroupSize +func (x *ScrollPoints) GetLimit() uint32 { + if x != nil && x.Limit != nil { + return *x.Limit } return 0 } -func (x *RecommendPointGroups) GetReadConsistency() *ReadConsistency { +func (x *ScrollPoints) GetWithPayload() *WithPayloadSelector { if x != nil { - return x.ReadConsistency + return x.WithPayload } return nil } -func (x *RecommendPointGroups) GetWithLookup() *WithLookup { +func (x *ScrollPoints) GetWithVectors() *WithVectorsSelector { if x != nil { - return x.WithLookup + return x.WithVectors } return nil } -func (x *RecommendPointGroups) GetStrategy() RecommendStrategy { - if x != nil && x.Strategy != nil { - return *x.Strategy +func (x *ScrollPoints) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency } - return RecommendStrategy_AverageVector + return nil } -func (x *RecommendPointGroups) GetPositiveVectors() []*Vector { +func (x *ScrollPoints) GetShardKeySelector() *ShardKeySelector { if x != nil { - return x.PositiveVectors + return x.ShardKeySelector } return nil } -func (x *RecommendPointGroups) GetNegativeVectors() []*Vector { +func (x *ScrollPoints) GetOrderBy() *OrderBy { if x != nil { - return x.NegativeVectors + return x.OrderBy } return nil } -func (x *RecommendPointGroups) GetTimeout() uint64 { +func (x *ScrollPoints) GetTimeout() uint64 { if x != nil && x.Timeout != nil { return *x.Timeout } return 0 } -func (x *RecommendPointGroups) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector - } - return nil -} - -type TargetVector struct { +type LookupLocation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Target: - // - // *TargetVector_Single - Target isTargetVector_Target `protobuf_oneof:"target"` + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` + VectorName *string `protobuf:"bytes,2,opt,name=vector_name,json=vectorName,proto3,oneof" json:"vector_name,omitempty"` // Which vector to use for search, if not specified - use default vector + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards } -func (x *TargetVector) Reset() { - *x = TargetVector{} +func (x *LookupLocation) Reset() { + *x = LookupLocation{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[41] + mi := &file_points_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TargetVector) String() string { +func (x *LookupLocation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TargetVector) ProtoMessage() {} +func (*LookupLocation) ProtoMessage() {} -func (x *TargetVector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[41] +func (x *LookupLocation) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3838,64 +3897,74 @@ func (x *TargetVector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TargetVector.ProtoReflect.Descriptor instead. -func (*TargetVector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{41} +// Deprecated: Use LookupLocation.ProtoReflect.Descriptor instead. +func (*LookupLocation) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{43} } -func (m *TargetVector) GetTarget() isTargetVector_Target { - if m != nil { - return m.Target +func (x *LookupLocation) GetCollectionName() string { + if x != nil { + return x.CollectionName } - return nil + return "" } -func (x *TargetVector) GetSingle() *VectorExample { - if x, ok := x.GetTarget().(*TargetVector_Single); ok { - return x.Single +func (x *LookupLocation) GetVectorName() string { + if x != nil && x.VectorName != nil { + return *x.VectorName } - return nil -} - -type isTargetVector_Target interface { - isTargetVector_Target() + return "" } -type TargetVector_Single struct { - Single *VectorExample `protobuf:"bytes,1,opt,name=single,proto3,oneof"` +func (x *LookupLocation) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil } -func (*TargetVector_Single) isTargetVector_Target() {} - -type VectorExample struct { +type RecommendPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Example: - // - // *VectorExample_Id - // *VectorExample_Vector - Example isVectorExample_Example `protobuf_oneof:"example"` + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Positive []*PointId `protobuf:"bytes,2,rep,name=positive,proto3" json:"positive,omitempty"` // Look for vectors closest to the vectors from these points + Negative []*PointId `protobuf:"bytes,3,rep,name=negative,proto3" json:"negative,omitempty"` // Try to avoid vectors like the vector from these points + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions + Limit uint64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result + WithPayload *WithPayloadSelector `protobuf:"bytes,7,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + Params *SearchParams `protobuf:"bytes,8,opt,name=params,proto3" json:"params,omitempty"` // Search config + ScoreThreshold *float32 `protobuf:"fixed32,9,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores + Offset *uint64 `protobuf:"varint,10,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result + Using *string `protobuf:"bytes,11,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for recommendation, if not specified - default vector + WithVectors *WithVectorsSelector `protobuf:"bytes,12,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + LookupFrom *LookupLocation `protobuf:"bytes,13,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // Name of the collection to use for points lookup, if not specified - use current collection + ReadConsistency *ReadConsistency `protobuf:"bytes,14,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Strategy *RecommendStrategy `protobuf:"varint,16,opt,name=strategy,proto3,enum=qdrant.RecommendStrategy,oneof" json:"strategy,omitempty"` // How to use the example vectors to find the results + PositiveVectors []*Vector `protobuf:"bytes,17,rep,name=positive_vectors,json=positiveVectors,proto3" json:"positive_vectors,omitempty"` // Look for vectors closest to those + NegativeVectors []*Vector `protobuf:"bytes,18,rep,name=negative_vectors,json=negativeVectors,proto3" json:"negative_vectors,omitempty"` // Try to avoid vectors like this + Timeout *uint64 `protobuf:"varint,19,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,20,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards } -func (x *VectorExample) Reset() { - *x = VectorExample{} +func (x *RecommendPoints) Reset() { + *x = RecommendPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[42] + mi := &file_points_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VectorExample) String() string { +func (x *RecommendPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VectorExample) ProtoMessage() {} +func (*RecommendPoints) ProtoMessage() {} -func (x *VectorExample) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[42] +func (x *RecommendPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3906,267 +3975,150 @@ func (x *VectorExample) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VectorExample.ProtoReflect.Descriptor instead. -func (*VectorExample) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{42} +// Deprecated: Use RecommendPoints.ProtoReflect.Descriptor instead. +func (*RecommendPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{44} } -func (m *VectorExample) GetExample() isVectorExample_Example { - if m != nil { - return m.Example +func (x *RecommendPoints) GetCollectionName() string { + if x != nil { + return x.CollectionName } - return nil + return "" } -func (x *VectorExample) GetId() *PointId { - if x, ok := x.GetExample().(*VectorExample_Id); ok { - return x.Id +func (x *RecommendPoints) GetPositive() []*PointId { + if x != nil { + return x.Positive } return nil } -func (x *VectorExample) GetVector() *Vector { - if x, ok := x.GetExample().(*VectorExample_Vector); ok { - return x.Vector +func (x *RecommendPoints) GetNegative() []*PointId { + if x != nil { + return x.Negative } return nil } -type isVectorExample_Example interface { - isVectorExample_Example() +func (x *RecommendPoints) GetFilter() *Filter { + if x != nil { + return x.Filter + } + return nil } -type VectorExample_Id struct { - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +func (x *RecommendPoints) GetLimit() uint64 { + if x != nil { + return x.Limit + } + return 0 } -type VectorExample_Vector struct { - Vector *Vector `protobuf:"bytes,2,opt,name=vector,proto3,oneof"` +func (x *RecommendPoints) GetWithPayload() *WithPayloadSelector { + if x != nil { + return x.WithPayload + } + return nil } -func (*VectorExample_Id) isVectorExample_Example() {} - -func (*VectorExample_Vector) isVectorExample_Example() {} - -type ContextExamplePair struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Positive *VectorExample `protobuf:"bytes,1,opt,name=positive,proto3" json:"positive,omitempty"` - Negative *VectorExample `protobuf:"bytes,2,opt,name=negative,proto3" json:"negative,omitempty"` +func (x *RecommendPoints) GetParams() *SearchParams { + if x != nil { + return x.Params + } + return nil } -func (x *ContextExamplePair) Reset() { - *x = ContextExamplePair{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RecommendPoints) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold } + return 0 } -func (x *ContextExamplePair) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *RecommendPoints) GetOffset() uint64 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 } -func (*ContextExamplePair) ProtoMessage() {} - -func (x *ContextExamplePair) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *RecommendPoints) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using } - return mi.MessageOf(x) + return "" } -// Deprecated: Use ContextExamplePair.ProtoReflect.Descriptor instead. -func (*ContextExamplePair) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43} +func (x *RecommendPoints) GetWithVectors() *WithVectorsSelector { + if x != nil { + return x.WithVectors + } + return nil } -func (x *ContextExamplePair) GetPositive() *VectorExample { +func (x *RecommendPoints) GetLookupFrom() *LookupLocation { if x != nil { - return x.Positive + return x.LookupFrom } return nil } -func (x *ContextExamplePair) GetNegative() *VectorExample { - if x != nil { - return x.Negative - } - return nil -} - -type DiscoverPoints struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Target *TargetVector `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` // Use this as the primary search objective - Context []*ContextExamplePair `protobuf:"bytes,3,rep,name=context,proto3" json:"context,omitempty"` // Search will be constrained by these pairs of examples - Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions - Limit uint64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result - WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - Params *SearchParams `protobuf:"bytes,7,opt,name=params,proto3" json:"params,omitempty"` // Search config - Offset *uint64 `protobuf:"varint,8,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result - Using *string `protobuf:"bytes,9,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for recommendation, if not specified - default vector - WithVectors *WithVectorsSelector `protobuf:"bytes,10,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - LookupFrom *LookupLocation `protobuf:"bytes,11,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // Name of the collection to use for points lookup, if not specified - use current collection - ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - Timeout *uint64 `protobuf:"varint,13,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ShardKeySelector *ShardKeySelector `protobuf:"bytes,14,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards -} - -func (x *DiscoverPoints) Reset() { - *x = DiscoverPoints{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DiscoverPoints) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DiscoverPoints) ProtoMessage() {} - -func (x *DiscoverPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[44] - 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) -} - -// Deprecated: Use DiscoverPoints.ProtoReflect.Descriptor instead. -func (*DiscoverPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{44} -} - -func (x *DiscoverPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *DiscoverPoints) GetTarget() *TargetVector { - if x != nil { - return x.Target - } - return nil -} - -func (x *DiscoverPoints) GetContext() []*ContextExamplePair { - if x != nil { - return x.Context - } - return nil -} - -func (x *DiscoverPoints) GetFilter() *Filter { - if x != nil { - return x.Filter - } - return nil -} - -func (x *DiscoverPoints) GetLimit() uint64 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *DiscoverPoints) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload - } - return nil -} - -func (x *DiscoverPoints) GetParams() *SearchParams { +func (x *RecommendPoints) GetReadConsistency() *ReadConsistency { if x != nil { - return x.Params + return x.ReadConsistency } return nil } -func (x *DiscoverPoints) GetOffset() uint64 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 -} - -func (x *DiscoverPoints) GetUsing() string { - if x != nil && x.Using != nil { - return *x.Using - } - return "" -} - -func (x *DiscoverPoints) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors +func (x *RecommendPoints) GetStrategy() RecommendStrategy { + if x != nil && x.Strategy != nil { + return *x.Strategy } - return nil + return RecommendStrategy_AverageVector } -func (x *DiscoverPoints) GetLookupFrom() *LookupLocation { +func (x *RecommendPoints) GetPositiveVectors() []*Vector { if x != nil { - return x.LookupFrom + return x.PositiveVectors } return nil } -func (x *DiscoverPoints) GetReadConsistency() *ReadConsistency { +func (x *RecommendPoints) GetNegativeVectors() []*Vector { if x != nil { - return x.ReadConsistency + return x.NegativeVectors } return nil } -func (x *DiscoverPoints) GetTimeout() uint64 { +func (x *RecommendPoints) GetTimeout() uint64 { if x != nil && x.Timeout != nil { return *x.Timeout } return 0 } -func (x *DiscoverPoints) GetShardKeySelector() *ShardKeySelector { +func (x *RecommendPoints) GetShardKeySelector() *ShardKeySelector { if x != nil { return x.ShardKeySelector } return nil } -type DiscoverBatchPoints struct { +type RecommendBatchPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - DiscoverPoints []*DiscoverPoints `protobuf:"bytes,2,rep,name=discover_points,json=discoverPoints,proto3" json:"discover_points,omitempty"` - ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + RecommendPoints []*RecommendPoints `protobuf:"bytes,2,rep,name=recommend_points,json=recommendPoints,proto3" json:"recommend_points,omitempty"` + ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *DiscoverBatchPoints) Reset() { - *x = DiscoverBatchPoints{} +func (x *RecommendBatchPoints) Reset() { + *x = RecommendBatchPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4174,13 +4126,13 @@ func (x *DiscoverBatchPoints) Reset() { } } -func (x *DiscoverBatchPoints) String() string { +func (x *RecommendBatchPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DiscoverBatchPoints) ProtoMessage() {} +func (*RecommendBatchPoints) ProtoMessage() {} -func (x *DiscoverBatchPoints) ProtoReflect() protoreflect.Message { +func (x *RecommendBatchPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4192,54 +4144,68 @@ func (x *DiscoverBatchPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DiscoverBatchPoints.ProtoReflect.Descriptor instead. -func (*DiscoverBatchPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use RecommendBatchPoints.ProtoReflect.Descriptor instead. +func (*RecommendBatchPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{45} } -func (x *DiscoverBatchPoints) GetCollectionName() string { +func (x *RecommendBatchPoints) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *DiscoverBatchPoints) GetDiscoverPoints() []*DiscoverPoints { +func (x *RecommendBatchPoints) GetRecommendPoints() []*RecommendPoints { if x != nil { - return x.DiscoverPoints + return x.RecommendPoints } return nil } -func (x *DiscoverBatchPoints) GetReadConsistency() *ReadConsistency { +func (x *RecommendBatchPoints) GetReadConsistency() *ReadConsistency { if x != nil { return x.ReadConsistency } return nil } -func (x *DiscoverBatchPoints) GetTimeout() uint64 { +func (x *RecommendBatchPoints) GetTimeout() uint64 { if x != nil && x.Timeout != nil { return *x.Timeout } return 0 } -type CountPoints struct { +type RecommendPointGroups struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions - Exact *bool `protobuf:"varint,3,opt,name=exact,proto3,oneof" json:"exact,omitempty"` // If `true` - return exact count, if `false` - return approximate count - ReadConsistency *ReadConsistency `protobuf:"bytes,4,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards - Timeout *uint64 `protobuf:"varint,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Positive []*PointId `protobuf:"bytes,2,rep,name=positive,proto3" json:"positive,omitempty"` // Look for vectors closest to the vectors from these points + Negative []*PointId `protobuf:"bytes,3,rep,name=negative,proto3" json:"negative,omitempty"` // Try to avoid vectors like the vector from these points + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions + Limit uint32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of groups in result + WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + Params *SearchParams `protobuf:"bytes,7,opt,name=params,proto3" json:"params,omitempty"` // Search config + ScoreThreshold *float32 `protobuf:"fixed32,8,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // If provided - cut off results with worse scores + Using *string `protobuf:"bytes,9,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for recommendation, if not specified - default vector + WithVectors *WithVectorsSelector `protobuf:"bytes,10,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + LookupFrom *LookupLocation `protobuf:"bytes,11,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // Name of the collection to use for points lookup, if not specified - use current collection + GroupBy string `protobuf:"bytes,12,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` // Payload field to group by, must be a string or number field. If there are multiple values for the field, all of them will be used. One point can be in multiple groups. + GroupSize uint32 `protobuf:"varint,13,opt,name=group_size,json=groupSize,proto3" json:"group_size,omitempty"` // Maximum amount of points to return per group + ReadConsistency *ReadConsistency `protobuf:"bytes,14,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + WithLookup *WithLookup `protobuf:"bytes,15,opt,name=with_lookup,json=withLookup,proto3,oneof" json:"with_lookup,omitempty"` // Options for specifying how to use the group id to lookup points in another collection + Strategy *RecommendStrategy `protobuf:"varint,17,opt,name=strategy,proto3,enum=qdrant.RecommendStrategy,oneof" json:"strategy,omitempty"` // How to use the example vectors to find the results + PositiveVectors []*Vector `protobuf:"bytes,18,rep,name=positive_vectors,json=positiveVectors,proto3" json:"positive_vectors,omitempty"` // Look for vectors closest to those + NegativeVectors []*Vector `protobuf:"bytes,19,rep,name=negative_vectors,json=negativeVectors,proto3" json:"negative_vectors,omitempty"` // Try to avoid vectors like this + Timeout *uint64 `protobuf:"varint,20,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,21,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards } -func (x *CountPoints) Reset() { - *x = CountPoints{} +func (x *RecommendPointGroups) Reset() { + *x = RecommendPointGroups{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4247,13 +4213,13 @@ func (x *CountPoints) Reset() { } } -func (x *CountPoints) String() string { +func (x *RecommendPointGroups) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CountPoints) ProtoMessage() {} +func (*RecommendPointGroups) ProtoMessage() {} -func (x *CountPoints) ProtoReflect() protoreflect.Message { +func (x *RecommendPointGroups) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4265,65 +4231,164 @@ func (x *CountPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CountPoints.ProtoReflect.Descriptor instead. -func (*CountPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use RecommendPointGroups.ProtoReflect.Descriptor instead. +func (*RecommendPointGroups) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{46} } -func (x *CountPoints) GetCollectionName() string { +func (x *RecommendPointGroups) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *CountPoints) GetFilter() *Filter { +func (x *RecommendPointGroups) GetPositive() []*PointId { + if x != nil { + return x.Positive + } + return nil +} + +func (x *RecommendPointGroups) GetNegative() []*PointId { + if x != nil { + return x.Negative + } + return nil +} + +func (x *RecommendPointGroups) GetFilter() *Filter { if x != nil { return x.Filter } return nil } -func (x *CountPoints) GetExact() bool { - if x != nil && x.Exact != nil { - return *x.Exact +func (x *RecommendPointGroups) GetLimit() uint32 { + if x != nil { + return x.Limit } - return false + return 0 } -func (x *CountPoints) GetReadConsistency() *ReadConsistency { +func (x *RecommendPointGroups) GetWithPayload() *WithPayloadSelector { if x != nil { - return x.ReadConsistency + return x.WithPayload } return nil } -func (x *CountPoints) GetShardKeySelector() *ShardKeySelector { +func (x *RecommendPointGroups) GetParams() *SearchParams { if x != nil { - return x.ShardKeySelector + return x.Params } return nil } -func (x *CountPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout +func (x *RecommendPointGroups) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold } return 0 } -type RecommendInput struct { +func (x *RecommendPointGroups) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using + } + return "" +} + +func (x *RecommendPointGroups) GetWithVectors() *WithVectorsSelector { + if x != nil { + return x.WithVectors + } + return nil +} + +func (x *RecommendPointGroups) GetLookupFrom() *LookupLocation { + if x != nil { + return x.LookupFrom + } + return nil +} + +func (x *RecommendPointGroups) GetGroupBy() string { + if x != nil { + return x.GroupBy + } + return "" +} + +func (x *RecommendPointGroups) GetGroupSize() uint32 { + if x != nil { + return x.GroupSize + } + return 0 +} + +func (x *RecommendPointGroups) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency + } + return nil +} + +func (x *RecommendPointGroups) GetWithLookup() *WithLookup { + if x != nil { + return x.WithLookup + } + return nil +} + +func (x *RecommendPointGroups) GetStrategy() RecommendStrategy { + if x != nil && x.Strategy != nil { + return *x.Strategy + } + return RecommendStrategy_AverageVector +} + +func (x *RecommendPointGroups) GetPositiveVectors() []*Vector { + if x != nil { + return x.PositiveVectors + } + return nil +} + +func (x *RecommendPointGroups) GetNegativeVectors() []*Vector { + if x != nil { + return x.NegativeVectors + } + return nil +} + +func (x *RecommendPointGroups) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} + +func (x *RecommendPointGroups) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type TargetVector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Positive []*VectorInput `protobuf:"bytes,1,rep,name=positive,proto3" json:"positive,omitempty"` // Look for vectors closest to the vectors from these points - Negative []*VectorInput `protobuf:"bytes,2,rep,name=negative,proto3" json:"negative,omitempty"` // Try to avoid vectors like the vector from these points - Strategy *RecommendStrategy `protobuf:"varint,3,opt,name=strategy,proto3,enum=qdrant.RecommendStrategy,oneof" json:"strategy,omitempty"` // How to use the provided vectors to find the results + // Types that are assignable to Target: + // + // *TargetVector_Single + Target isTargetVector_Target `protobuf_oneof:"target"` } -func (x *RecommendInput) Reset() { - *x = RecommendInput{} +func (x *TargetVector) Reset() { + *x = TargetVector{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4331,13 +4396,13 @@ func (x *RecommendInput) Reset() { } } -func (x *RecommendInput) String() string { +func (x *TargetVector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendInput) ProtoMessage() {} +func (*TargetVector) ProtoMessage() {} -func (x *RecommendInput) ProtoReflect() protoreflect.Message { +func (x *TargetVector) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4349,43 +4414,49 @@ func (x *RecommendInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendInput.ProtoReflect.Descriptor instead. -func (*RecommendInput) Descriptor() ([]byte, []int) { +// Deprecated: Use TargetVector.ProtoReflect.Descriptor instead. +func (*TargetVector) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{47} } -func (x *RecommendInput) GetPositive() []*VectorInput { - if x != nil { - return x.Positive +func (m *TargetVector) GetTarget() isTargetVector_Target { + if m != nil { + return m.Target } return nil } -func (x *RecommendInput) GetNegative() []*VectorInput { - if x != nil { - return x.Negative +func (x *TargetVector) GetSingle() *VectorExample { + if x, ok := x.GetTarget().(*TargetVector_Single); ok { + return x.Single } return nil } -func (x *RecommendInput) GetStrategy() RecommendStrategy { - if x != nil && x.Strategy != nil { - return *x.Strategy - } - return RecommendStrategy_AverageVector +type isTargetVector_Target interface { + isTargetVector_Target() } -type ContextInputPair struct { +type TargetVector_Single struct { + Single *VectorExample `protobuf:"bytes,1,opt,name=single,proto3,oneof"` +} + +func (*TargetVector_Single) isTargetVector_Target() {} + +type VectorExample struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Positive *VectorInput `protobuf:"bytes,1,opt,name=positive,proto3" json:"positive,omitempty"` // A positive vector - Negative *VectorInput `protobuf:"bytes,2,opt,name=negative,proto3" json:"negative,omitempty"` // Repel from this vector + // Types that are assignable to Example: + // + // *VectorExample_Id + // *VectorExample_Vector + Example isVectorExample_Example `protobuf_oneof:"example"` } -func (x *ContextInputPair) Reset() { - *x = ContextInputPair{} +func (x *VectorExample) Reset() { + *x = VectorExample{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4393,13 +4464,13 @@ func (x *ContextInputPair) Reset() { } } -func (x *ContextInputPair) String() string { +func (x *VectorExample) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ContextInputPair) ProtoMessage() {} +func (*VectorExample) ProtoMessage() {} -func (x *ContextInputPair) ProtoReflect() protoreflect.Message { +func (x *VectorExample) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4411,36 +4482,59 @@ func (x *ContextInputPair) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ContextInputPair.ProtoReflect.Descriptor instead. -func (*ContextInputPair) Descriptor() ([]byte, []int) { +// Deprecated: Use VectorExample.ProtoReflect.Descriptor instead. +func (*VectorExample) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{48} } -func (x *ContextInputPair) GetPositive() *VectorInput { - if x != nil { - return x.Positive +func (m *VectorExample) GetExample() isVectorExample_Example { + if m != nil { + return m.Example } return nil } -func (x *ContextInputPair) GetNegative() *VectorInput { - if x != nil { - return x.Negative +func (x *VectorExample) GetId() *PointId { + if x, ok := x.GetExample().(*VectorExample_Id); ok { + return x.Id } return nil } -type DiscoverInput struct { +func (x *VectorExample) GetVector() *Vector { + if x, ok := x.GetExample().(*VectorExample_Vector); ok { + return x.Vector + } + return nil +} + +type isVectorExample_Example interface { + isVectorExample_Example() +} + +type VectorExample_Id struct { + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type VectorExample_Vector struct { + Vector *Vector `protobuf:"bytes,2,opt,name=vector,proto3,oneof"` +} + +func (*VectorExample_Id) isVectorExample_Example() {} + +func (*VectorExample_Vector) isVectorExample_Example() {} + +type ContextExamplePair struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Target *VectorInput `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` // Use this as the primary search objective - Context *ContextInput `protobuf:"bytes,2,opt,name=context,proto3" json:"context,omitempty"` // Search space will be constrained by these pairs of vectors + Positive *VectorExample `protobuf:"bytes,1,opt,name=positive,proto3" json:"positive,omitempty"` + Negative *VectorExample `protobuf:"bytes,2,opt,name=negative,proto3" json:"negative,omitempty"` } -func (x *DiscoverInput) Reset() { - *x = DiscoverInput{} +func (x *ContextExamplePair) Reset() { + *x = ContextExamplePair{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4448,13 +4542,13 @@ func (x *DiscoverInput) Reset() { } } -func (x *DiscoverInput) String() string { +func (x *ContextExamplePair) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DiscoverInput) ProtoMessage() {} +func (*ContextExamplePair) ProtoMessage() {} -func (x *DiscoverInput) ProtoReflect() protoreflect.Message { +func (x *ContextExamplePair) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4466,35 +4560,48 @@ func (x *DiscoverInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DiscoverInput.ProtoReflect.Descriptor instead. -func (*DiscoverInput) Descriptor() ([]byte, []int) { +// Deprecated: Use ContextExamplePair.ProtoReflect.Descriptor instead. +func (*ContextExamplePair) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{49} } -func (x *DiscoverInput) GetTarget() *VectorInput { +func (x *ContextExamplePair) GetPositive() *VectorExample { if x != nil { - return x.Target + return x.Positive } return nil } -func (x *DiscoverInput) GetContext() *ContextInput { +func (x *ContextExamplePair) GetNegative() *VectorExample { if x != nil { - return x.Context + return x.Negative } return nil } -type ContextInput struct { +type DiscoverPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Pairs []*ContextInputPair `protobuf:"bytes,1,rep,name=pairs,proto3" json:"pairs,omitempty"` // Search space will be constrained by these pairs of vectors + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Target *TargetVector `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` // Use this as the primary search objective + Context []*ContextExamplePair `protobuf:"bytes,3,rep,name=context,proto3" json:"context,omitempty"` // Search will be constrained by these pairs of examples + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions + Limit uint64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // Max number of result + WithPayload *WithPayloadSelector `protobuf:"bytes,6,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + Params *SearchParams `protobuf:"bytes,7,opt,name=params,proto3" json:"params,omitempty"` // Search config + Offset *uint64 `protobuf:"varint,8,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result + Using *string `protobuf:"bytes,9,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for recommendation, if not specified - default vector + WithVectors *WithVectorsSelector `protobuf:"bytes,10,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + LookupFrom *LookupLocation `protobuf:"bytes,11,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // Name of the collection to use for points lookup, if not specified - use current collection + ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Timeout *uint64 `protobuf:"varint,13,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,14,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards } -func (x *ContextInput) Reset() { - *x = ContextInput{} +func (x *DiscoverPoints) Reset() { + *x = DiscoverPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4502,13 +4609,13 @@ func (x *ContextInput) Reset() { } } -func (x *ContextInput) String() string { +func (x *DiscoverPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ContextInput) ProtoMessage() {} +func (*DiscoverPoints) ProtoMessage() {} -func (x *ContextInput) ProtoReflect() protoreflect.Message { +func (x *DiscoverPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4520,186 +4627,195 @@ func (x *ContextInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ContextInput.ProtoReflect.Descriptor instead. -func (*ContextInput) Descriptor() ([]byte, []int) { +// Deprecated: Use DiscoverPoints.ProtoReflect.Descriptor instead. +func (*DiscoverPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{50} } -func (x *ContextInput) GetPairs() []*ContextInputPair { +func (x *DiscoverPoints) GetCollectionName() string { if x != nil { - return x.Pairs + return x.CollectionName } - return nil + return "" } -type Query struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Variant: - // - // *Query_Nearest - // *Query_Recommend - // *Query_Discover - // *Query_Context - // *Query_OrderBy - // *Query_Fusion - // *Query_Sample - Variant isQuery_Variant `protobuf_oneof:"variant"` +func (x *DiscoverPoints) GetTarget() *TargetVector { + if x != nil { + return x.Target + } + return nil } -func (x *Query) Reset() { - *x = Query{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *DiscoverPoints) GetContext() []*ContextExamplePair { + if x != nil { + return x.Context } + return nil } -func (x *Query) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *DiscoverPoints) GetFilter() *Filter { + if x != nil { + return x.Filter + } + return nil } -func (*Query) ProtoMessage() {} - -func (x *Query) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *DiscoverPoints) GetLimit() uint64 { + if x != nil { + return x.Limit } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use Query.ProtoReflect.Descriptor instead. -func (*Query) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{51} +func (x *DiscoverPoints) GetWithPayload() *WithPayloadSelector { + if x != nil { + return x.WithPayload + } + return nil } -func (m *Query) GetVariant() isQuery_Variant { - if m != nil { - return m.Variant +func (x *DiscoverPoints) GetParams() *SearchParams { + if x != nil { + return x.Params } return nil } -func (x *Query) GetNearest() *VectorInput { - if x, ok := x.GetVariant().(*Query_Nearest); ok { - return x.Nearest +func (x *DiscoverPoints) GetOffset() uint64 { + if x != nil && x.Offset != nil { + return *x.Offset } - return nil + return 0 } -func (x *Query) GetRecommend() *RecommendInput { - if x, ok := x.GetVariant().(*Query_Recommend); ok { - return x.Recommend +func (x *DiscoverPoints) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using } - return nil + return "" } -func (x *Query) GetDiscover() *DiscoverInput { - if x, ok := x.GetVariant().(*Query_Discover); ok { - return x.Discover +func (x *DiscoverPoints) GetWithVectors() *WithVectorsSelector { + if x != nil { + return x.WithVectors } return nil } -func (x *Query) GetContext() *ContextInput { - if x, ok := x.GetVariant().(*Query_Context); ok { - return x.Context +func (x *DiscoverPoints) GetLookupFrom() *LookupLocation { + if x != nil { + return x.LookupFrom } return nil } -func (x *Query) GetOrderBy() *OrderBy { - if x, ok := x.GetVariant().(*Query_OrderBy); ok { - return x.OrderBy +func (x *DiscoverPoints) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency } return nil } -func (x *Query) GetFusion() Fusion { - if x, ok := x.GetVariant().(*Query_Fusion); ok { - return x.Fusion +func (x *DiscoverPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout } - return Fusion_RRF + return 0 } -func (x *Query) GetSample() Sample { - if x, ok := x.GetVariant().(*Query_Sample); ok { - return x.Sample +func (x *DiscoverPoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector } - return Sample_Random + return nil } -type isQuery_Variant interface { - isQuery_Variant() -} +type DiscoverBatchPoints struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -type Query_Nearest struct { - Nearest *VectorInput `protobuf:"bytes,1,opt,name=nearest,proto3,oneof"` // Find the nearest neighbors to this vector. + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + DiscoverPoints []*DiscoverPoints `protobuf:"bytes,2,rep,name=discover_points,json=discoverPoints,proto3" json:"discover_points,omitempty"` + ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -type Query_Recommend struct { - Recommend *RecommendInput `protobuf:"bytes,2,opt,name=recommend,proto3,oneof"` // Use multiple positive and negative vectors to find the results. +func (x *DiscoverBatchPoints) Reset() { + *x = DiscoverBatchPoints{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -type Query_Discover struct { - Discover *DiscoverInput `protobuf:"bytes,3,opt,name=discover,proto3,oneof"` // Search for nearest points, but constrain the search space with context +func (x *DiscoverBatchPoints) String() string { + return protoimpl.X.MessageStringOf(x) } -type Query_Context struct { - Context *ContextInput `protobuf:"bytes,4,opt,name=context,proto3,oneof"` // Return points that live in positive areas. -} +func (*DiscoverBatchPoints) ProtoMessage() {} -type Query_OrderBy struct { - OrderBy *OrderBy `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3,oneof"` // Order the points by a payload field. +func (x *DiscoverBatchPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[51] + 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) } -type Query_Fusion struct { - Fusion Fusion `protobuf:"varint,6,opt,name=fusion,proto3,enum=qdrant.Fusion,oneof"` // Fuse the results of multiple prefetches. +// Deprecated: Use DiscoverBatchPoints.ProtoReflect.Descriptor instead. +func (*DiscoverBatchPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{51} } -type Query_Sample struct { - Sample Sample `protobuf:"varint,7,opt,name=sample,proto3,enum=qdrant.Sample,oneof"` // Sample points from the collection. +func (x *DiscoverBatchPoints) GetCollectionName() string { + if x != nil { + return x.CollectionName + } + return "" } -func (*Query_Nearest) isQuery_Variant() {} - -func (*Query_Recommend) isQuery_Variant() {} - -func (*Query_Discover) isQuery_Variant() {} - -func (*Query_Context) isQuery_Variant() {} - -func (*Query_OrderBy) isQuery_Variant() {} +func (x *DiscoverBatchPoints) GetDiscoverPoints() []*DiscoverPoints { + if x != nil { + return x.DiscoverPoints + } + return nil +} -func (*Query_Fusion) isQuery_Variant() {} +func (x *DiscoverBatchPoints) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency + } + return nil +} -func (*Query_Sample) isQuery_Variant() {} +func (x *DiscoverBatchPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} -type PrefetchQuery struct { +type CountPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Prefetch []*PrefetchQuery `protobuf:"bytes,1,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. - Query *Query `protobuf:"bytes,2,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. - Using *string `protobuf:"bytes,3,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is is used. - Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. - Params *SearchParams `protobuf:"bytes,5,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. - ScoreThreshold *float32 `protobuf:"fixed32,6,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. - Limit *uint64 `protobuf:"varint,7,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 10 - LookupFrom *LookupLocation `protobuf:"bytes,8,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions + Exact *bool `protobuf:"varint,3,opt,name=exact,proto3,oneof" json:"exact,omitempty"` // If `true` - return exact count, if `false` - return approximate count + ReadConsistency *ReadConsistency `protobuf:"bytes,4,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,5,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + Timeout *uint64 `protobuf:"varint,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *PrefetchQuery) Reset() { - *x = PrefetchQuery{} +func (x *CountPoints) Reset() { + *x = CountPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4707,13 +4823,13 @@ func (x *PrefetchQuery) Reset() { } } -func (x *PrefetchQuery) String() string { +func (x *CountPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrefetchQuery) ProtoMessage() {} +func (*CountPoints) ProtoMessage() {} -func (x *PrefetchQuery) ProtoReflect() protoreflect.Message { +func (x *CountPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4725,91 +4841,65 @@ func (x *PrefetchQuery) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PrefetchQuery.ProtoReflect.Descriptor instead. -func (*PrefetchQuery) Descriptor() ([]byte, []int) { +// Deprecated: Use CountPoints.ProtoReflect.Descriptor instead. +func (*CountPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{52} } -func (x *PrefetchQuery) GetPrefetch() []*PrefetchQuery { +func (x *CountPoints) GetCollectionName() string { if x != nil { - return x.Prefetch + return x.CollectionName } - return nil + return "" } -func (x *PrefetchQuery) GetQuery() *Query { +func (x *CountPoints) GetFilter() *Filter { if x != nil { - return x.Query + return x.Filter } return nil } -func (x *PrefetchQuery) GetUsing() string { - if x != nil && x.Using != nil { - return *x.Using +func (x *CountPoints) GetExact() bool { + if x != nil && x.Exact != nil { + return *x.Exact } - return "" + return false } -func (x *PrefetchQuery) GetFilter() *Filter { +func (x *CountPoints) GetReadConsistency() *ReadConsistency { if x != nil { - return x.Filter + return x.ReadConsistency } return nil } -func (x *PrefetchQuery) GetParams() *SearchParams { +func (x *CountPoints) GetShardKeySelector() *ShardKeySelector { if x != nil { - return x.Params + return x.ShardKeySelector } return nil } -func (x *PrefetchQuery) GetScoreThreshold() float32 { - if x != nil && x.ScoreThreshold != nil { - return *x.ScoreThreshold - } - return 0 -} - -func (x *PrefetchQuery) GetLimit() uint64 { - if x != nil && x.Limit != nil { - return *x.Limit +func (x *CountPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout } return 0 } -func (x *PrefetchQuery) GetLookupFrom() *LookupLocation { - if x != nil { - return x.LookupFrom - } - return nil -} - -type QueryPoints struct { +type RecommendInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - Prefetch []*PrefetchQuery `protobuf:"bytes,2,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. - Query *Query `protobuf:"bytes,3,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. - Using *string `protobuf:"bytes,4,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is used. - Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. - Params *SearchParams `protobuf:"bytes,6,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. - ScoreThreshold *float32 `protobuf:"fixed32,7,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. - Limit *uint64 `protobuf:"varint,8,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 10. - Offset *uint64 `protobuf:"varint,9,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result. Skip this many points. Default is 0. - WithVectors *WithVectorsSelector `protobuf:"bytes,10,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into the response. - WithPayload *WithPayloadSelector `protobuf:"bytes,11,opt,name=with_payload,json=withPayload,proto3,oneof" json:"with_payload,omitempty"` // Options for specifying which payload to include or not. - ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees. - ShardKeySelector *ShardKeySelector `protobuf:"bytes,13,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards. - LookupFrom *LookupLocation `protobuf:"bytes,14,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector - Timeout *uint64 `protobuf:"varint,15,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + Positive []*VectorInput `protobuf:"bytes,1,rep,name=positive,proto3" json:"positive,omitempty"` // Look for vectors closest to the vectors from these points + Negative []*VectorInput `protobuf:"bytes,2,rep,name=negative,proto3" json:"negative,omitempty"` // Try to avoid vectors like the vector from these points + Strategy *RecommendStrategy `protobuf:"varint,3,opt,name=strategy,proto3,enum=qdrant.RecommendStrategy,oneof" json:"strategy,omitempty"` // How to use the provided vectors to find the results } -func (x *QueryPoints) Reset() { - *x = QueryPoints{} +func (x *RecommendInput) Reset() { + *x = RecommendInput{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4817,13 +4907,13 @@ func (x *QueryPoints) Reset() { } } -func (x *QueryPoints) String() string { +func (x *RecommendInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryPoints) ProtoMessage() {} +func (*RecommendInput) ProtoMessage() {} -func (x *QueryPoints) ProtoReflect() protoreflect.Message { +func (x *RecommendInput) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4835,144 +4925,113 @@ func (x *QueryPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryPoints.ProtoReflect.Descriptor instead. -func (*QueryPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use RecommendInput.ProtoReflect.Descriptor instead. +func (*RecommendInput) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{53} } -func (x *QueryPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *QueryPoints) GetPrefetch() []*PrefetchQuery { +func (x *RecommendInput) GetPositive() []*VectorInput { if x != nil { - return x.Prefetch + return x.Positive } return nil } -func (x *QueryPoints) GetQuery() *Query { +func (x *RecommendInput) GetNegative() []*VectorInput { if x != nil { - return x.Query + return x.Negative } return nil } -func (x *QueryPoints) GetUsing() string { - if x != nil && x.Using != nil { - return *x.Using - } - return "" -} - -func (x *QueryPoints) GetFilter() *Filter { - if x != nil { - return x.Filter +func (x *RecommendInput) GetStrategy() RecommendStrategy { + if x != nil && x.Strategy != nil { + return *x.Strategy } - return nil + return RecommendStrategy_AverageVector } -func (x *QueryPoints) GetParams() *SearchParams { - if x != nil { - return x.Params - } - return nil -} +type ContextInputPair struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *QueryPoints) GetScoreThreshold() float32 { - if x != nil && x.ScoreThreshold != nil { - return *x.ScoreThreshold - } - return 0 + Positive *VectorInput `protobuf:"bytes,1,opt,name=positive,proto3" json:"positive,omitempty"` // A positive vector + Negative *VectorInput `protobuf:"bytes,2,opt,name=negative,proto3" json:"negative,omitempty"` // Repel from this vector } -func (x *QueryPoints) GetLimit() uint64 { - if x != nil && x.Limit != nil { - return *x.Limit +func (x *ContextInputPair) Reset() { + *x = ContextInputPair{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *QueryPoints) GetOffset() uint64 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 +func (x *ContextInputPair) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *QueryPoints) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors - } - return nil -} +func (*ContextInputPair) ProtoMessage() {} -func (x *QueryPoints) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload +func (x *ContextInputPair) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *QueryPoints) GetReadConsistency() *ReadConsistency { - if x != nil { - return x.ReadConsistency - } - return nil +// Deprecated: Use ContextInputPair.ProtoReflect.Descriptor instead. +func (*ContextInputPair) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{54} } -func (x *QueryPoints) GetShardKeySelector() *ShardKeySelector { +func (x *ContextInputPair) GetPositive() *VectorInput { if x != nil { - return x.ShardKeySelector + return x.Positive } return nil } -func (x *QueryPoints) GetLookupFrom() *LookupLocation { +func (x *ContextInputPair) GetNegative() *VectorInput { if x != nil { - return x.LookupFrom + return x.Negative } return nil } -func (x *QueryPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout - } - return 0 -} - -type QueryBatchPoints struct { +type DiscoverInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` - QueryPoints []*QueryPoints `protobuf:"bytes,2,rep,name=query_points,json=queryPoints,proto3" json:"query_points,omitempty"` - ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + Target *VectorInput `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` // Use this as the primary search objective + Context *ContextInput `protobuf:"bytes,2,opt,name=context,proto3" json:"context,omitempty"` // Search space will be constrained by these pairs of vectors } -func (x *QueryBatchPoints) Reset() { - *x = QueryBatchPoints{} +func (x *DiscoverInput) Reset() { + *x = DiscoverInput{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[54] + mi := &file_points_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryBatchPoints) String() string { +func (x *DiscoverInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryBatchPoints) ProtoMessage() {} +func (*DiscoverInput) ProtoMessage() {} -func (x *QueryBatchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[54] +func (x *DiscoverInput) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4983,80 +5042,50 @@ func (x *QueryBatchPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryBatchPoints.ProtoReflect.Descriptor instead. -func (*QueryBatchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{54} -} - -func (x *QueryBatchPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" +// Deprecated: Use DiscoverInput.ProtoReflect.Descriptor instead. +func (*DiscoverInput) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55} } -func (x *QueryBatchPoints) GetQueryPoints() []*QueryPoints { +func (x *DiscoverInput) GetTarget() *VectorInput { if x != nil { - return x.QueryPoints + return x.Target } return nil } -func (x *QueryBatchPoints) GetReadConsistency() *ReadConsistency { +func (x *DiscoverInput) GetContext() *ContextInput { if x != nil { - return x.ReadConsistency + return x.Context } return nil } -func (x *QueryBatchPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout - } - return 0 -} - -type QueryPointGroups struct { +type ContextInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - Prefetch []*PrefetchQuery `protobuf:"bytes,2,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. - Query *Query `protobuf:"bytes,3,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. - Using *string `protobuf:"bytes,4,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is used. - Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. - Params *SearchParams `protobuf:"bytes,6,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. - ScoreThreshold *float32 `protobuf:"fixed32,7,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. - WithPayload *WithPayloadSelector `protobuf:"bytes,8,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not - WithVectors *WithVectorsSelector `protobuf:"bytes,9,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response - LookupFrom *LookupLocation `protobuf:"bytes,10,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector - Limit *uint64 `protobuf:"varint,11,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 3. - GroupSize *uint64 `protobuf:"varint,12,opt,name=group_size,json=groupSize,proto3,oneof" json:"group_size,omitempty"` // Maximum amount of points to return per group. Default to 10. - GroupBy string `protobuf:"bytes,13,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` // Payload field to group by, must be a string or number field. If there are multiple values for the field, all of them will be used. One point can be in multiple groups. - ReadConsistency *ReadConsistency `protobuf:"bytes,14,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - WithLookup *WithLookup `protobuf:"bytes,15,opt,name=with_lookup,json=withLookup,proto3,oneof" json:"with_lookup,omitempty"` // Options for specifying how to use the group id to lookup points in another collection - Timeout *uint64 `protobuf:"varint,16,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ShardKeySelector *ShardKeySelector `protobuf:"bytes,17,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + Pairs []*ContextInputPair `protobuf:"bytes,1,rep,name=pairs,proto3" json:"pairs,omitempty"` // Search space will be constrained by these pairs of vectors } -func (x *QueryPointGroups) Reset() { - *x = QueryPointGroups{} +func (x *ContextInput) Reset() { + *x = ContextInput{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[55] + mi := &file_points_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryPointGroups) String() string { +func (x *ContextInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryPointGroups) ProtoMessage() {} +func (*ContextInput) ProtoMessage() {} -func (x *QueryPointGroups) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[55] +func (x *ContextInput) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5067,162 +5096,201 @@ func (x *QueryPointGroups) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryPointGroups.ProtoReflect.Descriptor instead. -func (*QueryPointGroups) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{55} +// Deprecated: Use ContextInput.ProtoReflect.Descriptor instead. +func (*ContextInput) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{56} } -func (x *QueryPointGroups) GetCollectionName() string { +func (x *ContextInput) GetPairs() []*ContextInputPair { if x != nil { - return x.CollectionName + return x.Pairs } - return "" + return nil } -func (x *QueryPointGroups) GetPrefetch() []*PrefetchQuery { - if x != nil { - return x.Prefetch - } - return nil +type Query struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Variant: + // + // *Query_Nearest + // *Query_Recommend + // *Query_Discover + // *Query_Context + // *Query_OrderBy + // *Query_Fusion + // *Query_Sample + Variant isQuery_Variant `protobuf_oneof:"variant"` } -func (x *QueryPointGroups) GetQuery() *Query { - if x != nil { - return x.Query +func (x *Query) Reset() { + *x = Query{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *QueryPointGroups) GetUsing() string { - if x != nil && x.Using != nil { - return *x.Using +func (x *Query) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Query) ProtoMessage() {} + +func (x *Query) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *QueryPointGroups) GetFilter() *Filter { - if x != nil { - return x.Filter +// Deprecated: Use Query.ProtoReflect.Descriptor instead. +func (*Query) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{57} +} + +func (m *Query) GetVariant() isQuery_Variant { + if m != nil { + return m.Variant } return nil } -func (x *QueryPointGroups) GetParams() *SearchParams { - if x != nil { - return x.Params +func (x *Query) GetNearest() *VectorInput { + if x, ok := x.GetVariant().(*Query_Nearest); ok { + return x.Nearest } return nil } -func (x *QueryPointGroups) GetScoreThreshold() float32 { - if x != nil && x.ScoreThreshold != nil { - return *x.ScoreThreshold +func (x *Query) GetRecommend() *RecommendInput { + if x, ok := x.GetVariant().(*Query_Recommend); ok { + return x.Recommend } - return 0 + return nil } -func (x *QueryPointGroups) GetWithPayload() *WithPayloadSelector { - if x != nil { - return x.WithPayload +func (x *Query) GetDiscover() *DiscoverInput { + if x, ok := x.GetVariant().(*Query_Discover); ok { + return x.Discover } return nil } -func (x *QueryPointGroups) GetWithVectors() *WithVectorsSelector { - if x != nil { - return x.WithVectors +func (x *Query) GetContext() *ContextInput { + if x, ok := x.GetVariant().(*Query_Context); ok { + return x.Context } return nil } -func (x *QueryPointGroups) GetLookupFrom() *LookupLocation { - if x != nil { - return x.LookupFrom +func (x *Query) GetOrderBy() *OrderBy { + if x, ok := x.GetVariant().(*Query_OrderBy); ok { + return x.OrderBy } return nil } -func (x *QueryPointGroups) GetLimit() uint64 { - if x != nil && x.Limit != nil { - return *x.Limit +func (x *Query) GetFusion() Fusion { + if x, ok := x.GetVariant().(*Query_Fusion); ok { + return x.Fusion } - return 0 + return Fusion_RRF } -func (x *QueryPointGroups) GetGroupSize() uint64 { - if x != nil && x.GroupSize != nil { - return *x.GroupSize +func (x *Query) GetSample() Sample { + if x, ok := x.GetVariant().(*Query_Sample); ok { + return x.Sample } - return 0 + return Sample_Random } -func (x *QueryPointGroups) GetGroupBy() string { - if x != nil { - return x.GroupBy - } - return "" +type isQuery_Variant interface { + isQuery_Variant() } -func (x *QueryPointGroups) GetReadConsistency() *ReadConsistency { - if x != nil { - return x.ReadConsistency - } - return nil +type Query_Nearest struct { + Nearest *VectorInput `protobuf:"bytes,1,opt,name=nearest,proto3,oneof"` // Find the nearest neighbors to this vector. } -func (x *QueryPointGroups) GetWithLookup() *WithLookup { - if x != nil { - return x.WithLookup - } - return nil +type Query_Recommend struct { + Recommend *RecommendInput `protobuf:"bytes,2,opt,name=recommend,proto3,oneof"` // Use multiple positive and negative vectors to find the results. } -func (x *QueryPointGroups) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout - } - return 0 +type Query_Discover struct { + Discover *DiscoverInput `protobuf:"bytes,3,opt,name=discover,proto3,oneof"` // Search for nearest points, but constrain the search space with context } -func (x *QueryPointGroups) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector - } - return nil +type Query_Context struct { + Context *ContextInput `protobuf:"bytes,4,opt,name=context,proto3,oneof"` // Return points that live in positive areas. } -type FacetCounts struct { +type Query_OrderBy struct { + OrderBy *OrderBy `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3,oneof"` // Order the points by a payload field. +} + +type Query_Fusion struct { + Fusion Fusion `protobuf:"varint,6,opt,name=fusion,proto3,enum=qdrant.Fusion,oneof"` // Fuse the results of multiple prefetches. +} + +type Query_Sample struct { + Sample Sample `protobuf:"varint,7,opt,name=sample,proto3,enum=qdrant.Sample,oneof"` // Sample points from the collection. +} + +func (*Query_Nearest) isQuery_Variant() {} + +func (*Query_Recommend) isQuery_Variant() {} + +func (*Query_Discover) isQuery_Variant() {} + +func (*Query_Context) isQuery_Variant() {} + +func (*Query_OrderBy) isQuery_Variant() {} + +func (*Query_Fusion) isQuery_Variant() {} + +func (*Query_Sample) isQuery_Variant() {} + +type PrefetchQuery struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` // Payload key of the facet - Filter *Filter `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. - Limit *uint64 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of facets. Default is 10. - Exact *bool `protobuf:"varint,5,opt,name=exact,proto3,oneof" json:"exact,omitempty"` // If true, return exact counts, slower but useful for debugging purposes. Default is false. - Timeout *uint64 `protobuf:"varint,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ReadConsistency *ReadConsistency `protobuf:"bytes,7,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,8,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + Prefetch []*PrefetchQuery `protobuf:"bytes,1,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. + Query *Query `protobuf:"bytes,2,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. + Using *string `protobuf:"bytes,3,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is is used. + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. + Params *SearchParams `protobuf:"bytes,5,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. + ScoreThreshold *float32 `protobuf:"fixed32,6,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. + Limit *uint64 `protobuf:"varint,7,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 10 + LookupFrom *LookupLocation `protobuf:"bytes,8,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector } -func (x *FacetCounts) Reset() { - *x = FacetCounts{} +func (x *PrefetchQuery) Reset() { + *x = PrefetchQuery{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[56] + mi := &file_points_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FacetCounts) String() string { +func (x *PrefetchQuery) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FacetCounts) ProtoMessage() {} +func (*PrefetchQuery) ProtoMessage() {} -func (x *FacetCounts) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[56] +func (x *PrefetchQuery) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5233,97 +5301,106 @@ func (x *FacetCounts) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FacetCounts.ProtoReflect.Descriptor instead. -func (*FacetCounts) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{56} +// Deprecated: Use PrefetchQuery.ProtoReflect.Descriptor instead. +func (*PrefetchQuery) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{58} } -func (x *FacetCounts) GetCollectionName() string { +func (x *PrefetchQuery) GetPrefetch() []*PrefetchQuery { if x != nil { - return x.CollectionName + return x.Prefetch } - return "" + return nil } -func (x *FacetCounts) GetKey() string { +func (x *PrefetchQuery) GetQuery() *Query { if x != nil { - return x.Key + return x.Query + } + return nil +} + +func (x *PrefetchQuery) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using } return "" } -func (x *FacetCounts) GetFilter() *Filter { +func (x *PrefetchQuery) GetFilter() *Filter { if x != nil { return x.Filter } return nil } -func (x *FacetCounts) GetLimit() uint64 { - if x != nil && x.Limit != nil { - return *x.Limit +func (x *PrefetchQuery) GetParams() *SearchParams { + if x != nil { + return x.Params } - return 0 + return nil } -func (x *FacetCounts) GetExact() bool { - if x != nil && x.Exact != nil { - return *x.Exact +func (x *PrefetchQuery) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold } - return false + return 0 } -func (x *FacetCounts) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout +func (x *PrefetchQuery) GetLimit() uint64 { + if x != nil && x.Limit != nil { + return *x.Limit } return 0 } -func (x *FacetCounts) GetReadConsistency() *ReadConsistency { +func (x *PrefetchQuery) GetLookupFrom() *LookupLocation { if x != nil { - return x.ReadConsistency + return x.LookupFrom } return nil } -func (x *FacetCounts) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector - } - return nil -} - -type FacetValue struct { +type QueryPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Variant: - // - // *FacetValue_StringValue - // *FacetValue_IntegerValue - // *FacetValue_BoolValue - Variant isFacetValue_Variant `protobuf_oneof:"variant"` + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Prefetch []*PrefetchQuery `protobuf:"bytes,2,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. + Query *Query `protobuf:"bytes,3,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. + Using *string `protobuf:"bytes,4,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is used. + Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. + Params *SearchParams `protobuf:"bytes,6,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. + ScoreThreshold *float32 `protobuf:"fixed32,7,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. + Limit *uint64 `protobuf:"varint,8,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 10. + Offset *uint64 `protobuf:"varint,9,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result. Skip this many points. Default is 0. + WithVectors *WithVectorsSelector `protobuf:"bytes,10,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into the response. + WithPayload *WithPayloadSelector `protobuf:"bytes,11,opt,name=with_payload,json=withPayload,proto3,oneof" json:"with_payload,omitempty"` // Options for specifying which payload to include or not. + ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,13,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards. + LookupFrom *LookupLocation `protobuf:"bytes,14,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector + Timeout *uint64 `protobuf:"varint,15,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *FacetValue) Reset() { - *x = FacetValue{} +func (x *QueryPoints) Reset() { + *x = QueryPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[57] + mi := &file_points_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FacetValue) String() string { +func (x *QueryPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FacetValue) ProtoMessage() {} +func (*QueryPoints) ProtoMessage() {} -func (x *FacetValue) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[57] +func (x *QueryPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5334,87 +5411,144 @@ func (x *FacetValue) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FacetValue.ProtoReflect.Descriptor instead. -func (*FacetValue) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{57} +// Deprecated: Use QueryPoints.ProtoReflect.Descriptor instead. +func (*QueryPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{59} } -func (m *FacetValue) GetVariant() isFacetValue_Variant { - if m != nil { - return m.Variant +func (x *QueryPoints) GetCollectionName() string { + if x != nil { + return x.CollectionName + } + return "" +} + +func (x *QueryPoints) GetPrefetch() []*PrefetchQuery { + if x != nil { + return x.Prefetch } return nil } -func (x *FacetValue) GetStringValue() string { - if x, ok := x.GetVariant().(*FacetValue_StringValue); ok { - return x.StringValue +func (x *QueryPoints) GetQuery() *Query { + if x != nil { + return x.Query + } + return nil +} + +func (x *QueryPoints) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using } return "" } -func (x *FacetValue) GetIntegerValue() int64 { - if x, ok := x.GetVariant().(*FacetValue_IntegerValue); ok { - return x.IntegerValue +func (x *QueryPoints) GetFilter() *Filter { + if x != nil { + return x.Filter + } + return nil +} + +func (x *QueryPoints) GetParams() *SearchParams { + if x != nil { + return x.Params + } + return nil +} + +func (x *QueryPoints) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold } return 0 } -func (x *FacetValue) GetBoolValue() bool { - if x, ok := x.GetVariant().(*FacetValue_BoolValue); ok { - return x.BoolValue +func (x *QueryPoints) GetLimit() uint64 { + if x != nil && x.Limit != nil { + return *x.Limit } - return false + return 0 } -type isFacetValue_Variant interface { - isFacetValue_Variant() +func (x *QueryPoints) GetOffset() uint64 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 } -type FacetValue_StringValue struct { - StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof"` // String value from the facet +func (x *QueryPoints) GetWithVectors() *WithVectorsSelector { + if x != nil { + return x.WithVectors + } + return nil } -type FacetValue_IntegerValue struct { - IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"` // Integer value from the facet +func (x *QueryPoints) GetWithPayload() *WithPayloadSelector { + if x != nil { + return x.WithPayload + } + return nil } -type FacetValue_BoolValue struct { - BoolValue bool `protobuf:"varint,3,opt,name=bool_value,json=boolValue,proto3,oneof"` // Boolean value from the facet +func (x *QueryPoints) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency + } + return nil } -func (*FacetValue_StringValue) isFacetValue_Variant() {} +func (x *QueryPoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} -func (*FacetValue_IntegerValue) isFacetValue_Variant() {} +func (x *QueryPoints) GetLookupFrom() *LookupLocation { + if x != nil { + return x.LookupFrom + } + return nil +} -func (*FacetValue_BoolValue) isFacetValue_Variant() {} +func (x *QueryPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} -type FacetHit struct { +type QueryBatchPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Value *FacetValue `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` // Value from the facet - Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` // Number of points with this value + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` + QueryPoints []*QueryPoints `protobuf:"bytes,2,rep,name=query_points,json=queryPoints,proto3" json:"query_points,omitempty"` + ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *FacetHit) Reset() { - *x = FacetHit{} +func (x *QueryBatchPoints) Reset() { + *x = QueryBatchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[58] + mi := &file_points_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FacetHit) String() string { +func (x *QueryBatchPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FacetHit) ProtoMessage() {} +func (*QueryBatchPoints) ProtoMessage() {} -func (x *FacetHit) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[58] +func (x *QueryBatchPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5425,57 +5559,80 @@ func (x *FacetHit) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FacetHit.ProtoReflect.Descriptor instead. -func (*FacetHit) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{58} +// Deprecated: Use QueryBatchPoints.ProtoReflect.Descriptor instead. +func (*QueryBatchPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{60} } -func (x *FacetHit) GetValue() *FacetValue { +func (x *QueryBatchPoints) GetCollectionName() string { if x != nil { - return x.Value + return x.CollectionName + } + return "" +} + +func (x *QueryBatchPoints) GetQueryPoints() []*QueryPoints { + if x != nil { + return x.QueryPoints } return nil } -func (x *FacetHit) GetCount() uint64 { +func (x *QueryBatchPoints) GetReadConsistency() *ReadConsistency { if x != nil { - return x.Count + return x.ReadConsistency + } + return nil +} + +func (x *QueryBatchPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout } return 0 } -type SearchMatrixPoints struct { +type QueryPointGroups struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection - Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. - Sample *uint64 `protobuf:"varint,3,opt,name=sample,proto3,oneof" json:"sample,omitempty"` // How many points to select and search within. Default is 10. - Limit *uint64 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // How many neighbours per sample to find. Default is 3. - Using *string `protobuf:"bytes,5,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is is used. - Timeout *uint64 `protobuf:"varint,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. - ReadConsistency *ReadConsistency `protobuf:"bytes,7,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees - ShardKeySelector *ShardKeySelector `protobuf:"bytes,8,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Prefetch []*PrefetchQuery `protobuf:"bytes,2,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. + Query *Query `protobuf:"bytes,3,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. + Using *string `protobuf:"bytes,4,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is used. + Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. + Params *SearchParams `protobuf:"bytes,6,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. + ScoreThreshold *float32 `protobuf:"fixed32,7,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. + WithPayload *WithPayloadSelector `protobuf:"bytes,8,opt,name=with_payload,json=withPayload,proto3" json:"with_payload,omitempty"` // Options for specifying which payload to include or not + WithVectors *WithVectorsSelector `protobuf:"bytes,9,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into response + LookupFrom *LookupLocation `protobuf:"bytes,10,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector + Limit *uint64 `protobuf:"varint,11,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 3. + GroupSize *uint64 `protobuf:"varint,12,opt,name=group_size,json=groupSize,proto3,oneof" json:"group_size,omitempty"` // Maximum amount of points to return per group. Default to 10. + GroupBy string `protobuf:"bytes,13,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` // Payload field to group by, must be a string or number field. If there are multiple values for the field, all of them will be used. One point can be in multiple groups. + ReadConsistency *ReadConsistency `protobuf:"bytes,14,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + WithLookup *WithLookup `protobuf:"bytes,15,opt,name=with_lookup,json=withLookup,proto3,oneof" json:"with_lookup,omitempty"` // Options for specifying how to use the group id to lookup points in another collection + Timeout *uint64 `protobuf:"varint,16,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,17,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards } -func (x *SearchMatrixPoints) Reset() { - *x = SearchMatrixPoints{} +func (x *QueryPointGroups) Reset() { + *x = QueryPointGroups{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[59] + mi := &file_points_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SearchMatrixPoints) String() string { +func (x *QueryPointGroups) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchMatrixPoints) ProtoMessage() {} +func (*QueryPointGroups) ProtoMessage() {} -func (x *SearchMatrixPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[59] +func (x *QueryPointGroups) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5486,190 +5643,147 @@ func (x *SearchMatrixPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchMatrixPoints.ProtoReflect.Descriptor instead. -func (*SearchMatrixPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{59} +// Deprecated: Use QueryPointGroups.ProtoReflect.Descriptor instead. +func (*QueryPointGroups) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{61} } -func (x *SearchMatrixPoints) GetCollectionName() string { +func (x *QueryPointGroups) GetCollectionName() string { if x != nil { return x.CollectionName } return "" } -func (x *SearchMatrixPoints) GetFilter() *Filter { +func (x *QueryPointGroups) GetPrefetch() []*PrefetchQuery { if x != nil { - return x.Filter + return x.Prefetch } return nil } -func (x *SearchMatrixPoints) GetSample() uint64 { - if x != nil && x.Sample != nil { - return *x.Sample - } - return 0 -} - -func (x *SearchMatrixPoints) GetLimit() uint64 { - if x != nil && x.Limit != nil { - return *x.Limit +func (x *QueryPointGroups) GetQuery() *Query { + if x != nil { + return x.Query } - return 0 + return nil } -func (x *SearchMatrixPoints) GetUsing() string { +func (x *QueryPointGroups) GetUsing() string { if x != nil && x.Using != nil { return *x.Using } return "" } -func (x *SearchMatrixPoints) GetTimeout() uint64 { - if x != nil && x.Timeout != nil { - return *x.Timeout - } - return 0 -} - -func (x *SearchMatrixPoints) GetReadConsistency() *ReadConsistency { +func (x *QueryPointGroups) GetFilter() *Filter { if x != nil { - return x.ReadConsistency + return x.Filter } return nil } -func (x *SearchMatrixPoints) GetShardKeySelector() *ShardKeySelector { +func (x *QueryPointGroups) GetParams() *SearchParams { if x != nil { - return x.ShardKeySelector + return x.Params } return nil } -type SearchMatrixPairs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Pairs []*SearchMatrixPair `protobuf:"bytes,1,rep,name=pairs,proto3" json:"pairs,omitempty"` // List of pairs of points with scores -} - -func (x *SearchMatrixPairs) Reset() { - *x = SearchMatrixPairs{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *QueryPointGroups) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold } + return 0 } -func (x *SearchMatrixPairs) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchMatrixPairs) ProtoMessage() {} - -func (x *SearchMatrixPairs) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *QueryPointGroups) GetWithPayload() *WithPayloadSelector { + if x != nil { + return x.WithPayload } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchMatrixPairs.ProtoReflect.Descriptor instead. -func (*SearchMatrixPairs) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{60} + return nil } -func (x *SearchMatrixPairs) GetPairs() []*SearchMatrixPair { +func (x *QueryPointGroups) GetWithVectors() *WithVectorsSelector { if x != nil { - return x.Pairs + return x.WithVectors } return nil } -type SearchMatrixPair struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - A *PointId `protobuf:"bytes,1,opt,name=a,proto3" json:"a,omitempty"` // first id of the pair - B *PointId `protobuf:"bytes,2,opt,name=b,proto3" json:"b,omitempty"` // second id of the pair - Score float32 `protobuf:"fixed32,3,opt,name=score,proto3" json:"score,omitempty"` // score of the pair -} - -func (x *SearchMatrixPair) Reset() { - *x = SearchMatrixPair{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *QueryPointGroups) GetLookupFrom() *LookupLocation { + if x != nil { + return x.LookupFrom } + return nil } -func (x *SearchMatrixPair) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *QueryPointGroups) GetLimit() uint64 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 } -func (*SearchMatrixPair) ProtoMessage() {} - -func (x *SearchMatrixPair) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *QueryPointGroups) GetGroupSize() uint64 { + if x != nil && x.GroupSize != nil { + return *x.GroupSize } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use SearchMatrixPair.ProtoReflect.Descriptor instead. -func (*SearchMatrixPair) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{61} +func (x *QueryPointGroups) GetGroupBy() string { + if x != nil { + return x.GroupBy + } + return "" } -func (x *SearchMatrixPair) GetA() *PointId { +func (x *QueryPointGroups) GetReadConsistency() *ReadConsistency { if x != nil { - return x.A + return x.ReadConsistency } return nil } -func (x *SearchMatrixPair) GetB() *PointId { +func (x *QueryPointGroups) GetWithLookup() *WithLookup { if x != nil { - return x.B + return x.WithLookup } return nil } -func (x *SearchMatrixPair) GetScore() float32 { - if x != nil { - return x.Score +func (x *QueryPointGroups) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout } return 0 } -type SearchMatrixOffsets struct { +func (x *QueryPointGroups) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type FacetCounts struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OffsetsRow []uint64 `protobuf:"varint,1,rep,packed,name=offsets_row,json=offsetsRow,proto3" json:"offsets_row,omitempty"` // Row indices of the matrix - OffsetsCol []uint64 `protobuf:"varint,2,rep,packed,name=offsets_col,json=offsetsCol,proto3" json:"offsets_col,omitempty"` // Column indices of the matrix - Scores []float32 `protobuf:"fixed32,3,rep,packed,name=scores,proto3" json:"scores,omitempty"` // Scores associated with matrix coordinates - Ids []*PointId `protobuf:"bytes,4,rep,name=ids,proto3" json:"ids,omitempty"` // Ids of the points in order + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` // Payload key of the facet + Filter *Filter `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. + Limit *uint64 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of facets. Default is 10. + Exact *bool `protobuf:"varint,5,opt,name=exact,proto3,oneof" json:"exact,omitempty"` // If true, return exact counts, slower but useful for debugging purposes. Default is false. + Timeout *uint64 `protobuf:"varint,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ReadConsistency *ReadConsistency `protobuf:"bytes,7,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,8,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards } -func (x *SearchMatrixOffsets) Reset() { - *x = SearchMatrixOffsets{} +func (x *FacetCounts) Reset() { + *x = FacetCounts{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5677,13 +5791,13 @@ func (x *SearchMatrixOffsets) Reset() { } } -func (x *SearchMatrixOffsets) String() string { +func (x *FacetCounts) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchMatrixOffsets) ProtoMessage() {} +func (*FacetCounts) ProtoMessage() {} -func (x *SearchMatrixOffsets) ProtoReflect() protoreflect.Message { +func (x *FacetCounts) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5695,61 +5809,82 @@ func (x *SearchMatrixOffsets) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchMatrixOffsets.ProtoReflect.Descriptor instead. -func (*SearchMatrixOffsets) Descriptor() ([]byte, []int) { +// Deprecated: Use FacetCounts.ProtoReflect.Descriptor instead. +func (*FacetCounts) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{62} } -func (x *SearchMatrixOffsets) GetOffsetsRow() []uint64 { +func (x *FacetCounts) GetCollectionName() string { if x != nil { - return x.OffsetsRow + return x.CollectionName } - return nil + return "" } -func (x *SearchMatrixOffsets) GetOffsetsCol() []uint64 { +func (x *FacetCounts) GetKey() string { if x != nil { - return x.OffsetsCol + return x.Key + } + return "" +} + +func (x *FacetCounts) GetFilter() *Filter { + if x != nil { + return x.Filter } return nil } -func (x *SearchMatrixOffsets) GetScores() []float32 { +func (x *FacetCounts) GetLimit() uint64 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 +} + +func (x *FacetCounts) GetExact() bool { + if x != nil && x.Exact != nil { + return *x.Exact + } + return false +} + +func (x *FacetCounts) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} + +func (x *FacetCounts) GetReadConsistency() *ReadConsistency { if x != nil { - return x.Scores + return x.ReadConsistency } return nil } -func (x *SearchMatrixOffsets) GetIds() []*PointId { +func (x *FacetCounts) GetShardKeySelector() *ShardKeySelector { if x != nil { - return x.Ids + return x.ShardKeySelector } return nil } -type PointsUpdateOperation struct { +type FacetValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Operation: + // Types that are assignable to Variant: // - // *PointsUpdateOperation_Upsert - // *PointsUpdateOperation_DeleteDeprecated - // *PointsUpdateOperation_SetPayload_ - // *PointsUpdateOperation_OverwritePayload_ - // *PointsUpdateOperation_DeletePayload_ - // *PointsUpdateOperation_ClearPayloadDeprecated - // *PointsUpdateOperation_UpdateVectors_ - // *PointsUpdateOperation_DeleteVectors_ - // *PointsUpdateOperation_DeletePoints_ - // *PointsUpdateOperation_ClearPayload_ - Operation isPointsUpdateOperation_Operation `protobuf_oneof:"operation"` + // *FacetValue_StringValue + // *FacetValue_IntegerValue + // *FacetValue_BoolValue + Variant isFacetValue_Variant `protobuf_oneof:"variant"` } -func (x *PointsUpdateOperation) Reset() { - *x = PointsUpdateOperation{} +func (x *FacetValue) Reset() { + *x = FacetValue{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5757,13 +5892,13 @@ func (x *PointsUpdateOperation) Reset() { } } -func (x *PointsUpdateOperation) String() string { +func (x *FacetValue) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation) ProtoMessage() {} +func (*FacetValue) ProtoMessage() {} -func (x *PointsUpdateOperation) ProtoReflect() protoreflect.Message { +func (x *FacetValue) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5775,169 +5910,72 @@ func (x *PointsUpdateOperation) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation) Descriptor() ([]byte, []int) { +// Deprecated: Use FacetValue.ProtoReflect.Descriptor instead. +func (*FacetValue) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{63} } -func (m *PointsUpdateOperation) GetOperation() isPointsUpdateOperation_Operation { +func (m *FacetValue) GetVariant() isFacetValue_Variant { if m != nil { - return m.Operation + return m.Variant } return nil } -func (x *PointsUpdateOperation) GetUpsert() *PointsUpdateOperation_PointStructList { - if x, ok := x.GetOperation().(*PointsUpdateOperation_Upsert); ok { - return x.Upsert - } - return nil -} - -// Deprecated: Marked as deprecated in points.proto. -func (x *PointsUpdateOperation) GetDeleteDeprecated() *PointsSelector { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteDeprecated); ok { - return x.DeleteDeprecated - } - return nil -} - -func (x *PointsUpdateOperation) GetSetPayload() *PointsUpdateOperation_SetPayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_SetPayload_); ok { - return x.SetPayload - } - return nil -} - -func (x *PointsUpdateOperation) GetOverwritePayload() *PointsUpdateOperation_OverwritePayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_OverwritePayload_); ok { - return x.OverwritePayload - } - return nil -} - -func (x *PointsUpdateOperation) GetDeletePayload() *PointsUpdateOperation_DeletePayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePayload_); ok { - return x.DeletePayload - } - return nil -} - -// Deprecated: Marked as deprecated in points.proto. -func (x *PointsUpdateOperation) GetClearPayloadDeprecated() *PointsSelector { - if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayloadDeprecated); ok { - return x.ClearPayloadDeprecated - } - return nil -} - -func (x *PointsUpdateOperation) GetUpdateVectors() *PointsUpdateOperation_UpdateVectors { - if x, ok := x.GetOperation().(*PointsUpdateOperation_UpdateVectors_); ok { - return x.UpdateVectors - } - return nil -} - -func (x *PointsUpdateOperation) GetDeleteVectors() *PointsUpdateOperation_DeleteVectors { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteVectors_); ok { - return x.DeleteVectors +func (x *FacetValue) GetStringValue() string { + if x, ok := x.GetVariant().(*FacetValue_StringValue); ok { + return x.StringValue } - return nil + return "" } -func (x *PointsUpdateOperation) GetDeletePoints() *PointsUpdateOperation_DeletePoints { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePoints_); ok { - return x.DeletePoints +func (x *FacetValue) GetIntegerValue() int64 { + if x, ok := x.GetVariant().(*FacetValue_IntegerValue); ok { + return x.IntegerValue } - return nil + return 0 } -func (x *PointsUpdateOperation) GetClearPayload() *PointsUpdateOperation_ClearPayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayload_); ok { - return x.ClearPayload +func (x *FacetValue) GetBoolValue() bool { + if x, ok := x.GetVariant().(*FacetValue_BoolValue); ok { + return x.BoolValue } - return nil -} - -type isPointsUpdateOperation_Operation interface { - isPointsUpdateOperation_Operation() -} - -type PointsUpdateOperation_Upsert struct { - Upsert *PointsUpdateOperation_PointStructList `protobuf:"bytes,1,opt,name=upsert,proto3,oneof"` -} - -type PointsUpdateOperation_DeleteDeprecated struct { - // Deprecated: Marked as deprecated in points.proto. - DeleteDeprecated *PointsSelector `protobuf:"bytes,2,opt,name=delete_deprecated,json=deleteDeprecated,proto3,oneof"` -} - -type PointsUpdateOperation_SetPayload_ struct { - SetPayload *PointsUpdateOperation_SetPayload `protobuf:"bytes,3,opt,name=set_payload,json=setPayload,proto3,oneof"` -} - -type PointsUpdateOperation_OverwritePayload_ struct { - OverwritePayload *PointsUpdateOperation_OverwritePayload `protobuf:"bytes,4,opt,name=overwrite_payload,json=overwritePayload,proto3,oneof"` -} - -type PointsUpdateOperation_DeletePayload_ struct { - DeletePayload *PointsUpdateOperation_DeletePayload `protobuf:"bytes,5,opt,name=delete_payload,json=deletePayload,proto3,oneof"` -} - -type PointsUpdateOperation_ClearPayloadDeprecated struct { - // Deprecated: Marked as deprecated in points.proto. - ClearPayloadDeprecated *PointsSelector `protobuf:"bytes,6,opt,name=clear_payload_deprecated,json=clearPayloadDeprecated,proto3,oneof"` + return false } -type PointsUpdateOperation_UpdateVectors_ struct { - UpdateVectors *PointsUpdateOperation_UpdateVectors `protobuf:"bytes,7,opt,name=update_vectors,json=updateVectors,proto3,oneof"` +type isFacetValue_Variant interface { + isFacetValue_Variant() } -type PointsUpdateOperation_DeleteVectors_ struct { - DeleteVectors *PointsUpdateOperation_DeleteVectors `protobuf:"bytes,8,opt,name=delete_vectors,json=deleteVectors,proto3,oneof"` +type FacetValue_StringValue struct { + StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof"` // String value from the facet } -type PointsUpdateOperation_DeletePoints_ struct { - DeletePoints *PointsUpdateOperation_DeletePoints `protobuf:"bytes,9,opt,name=delete_points,json=deletePoints,proto3,oneof"` +type FacetValue_IntegerValue struct { + IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"` // Integer value from the facet } -type PointsUpdateOperation_ClearPayload_ struct { - ClearPayload *PointsUpdateOperation_ClearPayload `protobuf:"bytes,10,opt,name=clear_payload,json=clearPayload,proto3,oneof"` +type FacetValue_BoolValue struct { + BoolValue bool `protobuf:"varint,3,opt,name=bool_value,json=boolValue,proto3,oneof"` // Boolean value from the facet } -func (*PointsUpdateOperation_Upsert) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_DeleteDeprecated) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_SetPayload_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_OverwritePayload_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_DeletePayload_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_ClearPayloadDeprecated) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_UpdateVectors_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_DeleteVectors_) isPointsUpdateOperation_Operation() {} +func (*FacetValue_StringValue) isFacetValue_Variant() {} -func (*PointsUpdateOperation_DeletePoints_) isPointsUpdateOperation_Operation() {} +func (*FacetValue_IntegerValue) isFacetValue_Variant() {} -func (*PointsUpdateOperation_ClearPayload_) isPointsUpdateOperation_Operation() {} +func (*FacetValue_BoolValue) isFacetValue_Variant() {} -type UpdateBatchPoints struct { +type FacetHit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Operations []*PointsUpdateOperation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` - Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + Value *FacetValue `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` // Value from the facet + Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` // Number of points with this value } -func (x *UpdateBatchPoints) Reset() { - *x = UpdateBatchPoints{} +func (x *FacetHit) Reset() { + *x = FacetHit{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5945,13 +5983,13 @@ func (x *UpdateBatchPoints) Reset() { } } -func (x *UpdateBatchPoints) String() string { +func (x *FacetHit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateBatchPoints) ProtoMessage() {} +func (*FacetHit) ProtoMessage() {} -func (x *UpdateBatchPoints) ProtoReflect() protoreflect.Message { +func (x *FacetHit) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5963,50 +6001,42 @@ func (x *UpdateBatchPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateBatchPoints.ProtoReflect.Descriptor instead. -func (*UpdateBatchPoints) Descriptor() ([]byte, []int) { +// Deprecated: Use FacetHit.ProtoReflect.Descriptor instead. +func (*FacetHit) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{64} } -func (x *UpdateBatchPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *UpdateBatchPoints) GetWait() bool { - if x != nil && x.Wait != nil { - return *x.Wait - } - return false -} - -func (x *UpdateBatchPoints) GetOperations() []*PointsUpdateOperation { +func (x *FacetHit) GetValue() *FacetValue { if x != nil { - return x.Operations + return x.Value } return nil } -func (x *UpdateBatchPoints) GetOrdering() *WriteOrdering { +func (x *FacetHit) GetCount() uint64 { if x != nil { - return x.Ordering + return x.Count } - return nil + return 0 } -type PointsOperationResponse struct { +type SearchMatrixPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *UpdateResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. + Sample *uint64 `protobuf:"varint,3,opt,name=sample,proto3,oneof" json:"sample,omitempty"` // How many points to select and search within. Default is 10. + Limit *uint64 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // How many neighbours per sample to find. Default is 3. + Using *string `protobuf:"bytes,5,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is is used. + Timeout *uint64 `protobuf:"varint,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. + ReadConsistency *ReadConsistency `protobuf:"bytes,7,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + ShardKeySelector *ShardKeySelector `protobuf:"bytes,8,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards } -func (x *PointsOperationResponse) Reset() { - *x = PointsOperationResponse{} +func (x *SearchMatrixPoints) Reset() { + *x = SearchMatrixPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6014,13 +6044,13 @@ func (x *PointsOperationResponse) Reset() { } } -func (x *PointsOperationResponse) String() string { +func (x *SearchMatrixPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsOperationResponse) ProtoMessage() {} +func (*SearchMatrixPoints) ProtoMessage() {} -func (x *PointsOperationResponse) ProtoReflect() protoreflect.Message { +func (x *SearchMatrixPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6032,50 +6062,91 @@ func (x *PointsOperationResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsOperationResponse.ProtoReflect.Descriptor instead. -func (*PointsOperationResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchMatrixPoints.ProtoReflect.Descriptor instead. +func (*SearchMatrixPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{65} } -func (x *PointsOperationResponse) GetResult() *UpdateResult { +func (x *SearchMatrixPoints) GetCollectionName() string { if x != nil { - return x.Result + return x.CollectionName } - return nil + return "" } -func (x *PointsOperationResponse) GetTime() float64 { +func (x *SearchMatrixPoints) GetFilter() *Filter { if x != nil { - return x.Time + return x.Filter } - return 0 + return nil } -type UpdateResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationId *uint64 `protobuf:"varint,1,opt,name=operation_id,json=operationId,proto3,oneof" json:"operation_id,omitempty"` // Number of operation - Status UpdateStatus `protobuf:"varint,2,opt,name=status,proto3,enum=qdrant.UpdateStatus" json:"status,omitempty"` // Operation status +func (x *SearchMatrixPoints) GetSample() uint64 { + if x != nil && x.Sample != nil { + return *x.Sample + } + return 0 } -func (x *UpdateResult) Reset() { - *x = UpdateResult{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *SearchMatrixPoints) GetLimit() uint64 { + if x != nil && x.Limit != nil { + return *x.Limit } + return 0 } -func (x *UpdateResult) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *SearchMatrixPoints) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using + } + return "" } -func (*UpdateResult) ProtoMessage() {} - -func (x *UpdateResult) ProtoReflect() protoreflect.Message { +func (x *SearchMatrixPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} + +func (x *SearchMatrixPoints) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency + } + return nil +} + +func (x *SearchMatrixPoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type SearchMatrixPairs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pairs []*SearchMatrixPair `protobuf:"bytes,1,rep,name=pairs,proto3" json:"pairs,omitempty"` // List of pairs of points with scores +} + +func (x *SearchMatrixPairs) Reset() { + *x = SearchMatrixPairs{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchMatrixPairs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchMatrixPairs) ProtoMessage() {} + +func (x *SearchMatrixPairs) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6087,39 +6158,30 @@ func (x *UpdateResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateResult.ProtoReflect.Descriptor instead. -func (*UpdateResult) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchMatrixPairs.ProtoReflect.Descriptor instead. +func (*SearchMatrixPairs) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{66} } -func (x *UpdateResult) GetOperationId() uint64 { - if x != nil && x.OperationId != nil { - return *x.OperationId - } - return 0 -} - -func (x *UpdateResult) GetStatus() UpdateStatus { +func (x *SearchMatrixPairs) GetPairs() []*SearchMatrixPair { if x != nil { - return x.Status + return x.Pairs } - return UpdateStatus_UnknownUpdateStatus + return nil } -type OrderValue struct { +type SearchMatrixPair struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Variant: - // - // *OrderValue_Int - // *OrderValue_Float - Variant isOrderValue_Variant `protobuf_oneof:"variant"` + A *PointId `protobuf:"bytes,1,opt,name=a,proto3" json:"a,omitempty"` // first id of the pair + B *PointId `protobuf:"bytes,2,opt,name=b,proto3" json:"b,omitempty"` // second id of the pair + Score float32 `protobuf:"fixed32,3,opt,name=score,proto3" json:"score,omitempty"` // score of the pair } -func (x *OrderValue) Reset() { - *x = OrderValue{} +func (x *SearchMatrixPair) Reset() { + *x = SearchMatrixPair{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6127,13 +6189,13 @@ func (x *OrderValue) Reset() { } } -func (x *OrderValue) String() string { +func (x *SearchMatrixPair) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrderValue) ProtoMessage() {} +func (*SearchMatrixPair) ProtoMessage() {} -func (x *OrderValue) ProtoReflect() protoreflect.Message { +func (x *SearchMatrixPair) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6145,64 +6207,45 @@ func (x *OrderValue) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrderValue.ProtoReflect.Descriptor instead. -func (*OrderValue) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchMatrixPair.ProtoReflect.Descriptor instead. +func (*SearchMatrixPair) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{67} } -func (m *OrderValue) GetVariant() isOrderValue_Variant { - if m != nil { - return m.Variant +func (x *SearchMatrixPair) GetA() *PointId { + if x != nil { + return x.A } return nil } -func (x *OrderValue) GetInt() int64 { - if x, ok := x.GetVariant().(*OrderValue_Int); ok { - return x.Int +func (x *SearchMatrixPair) GetB() *PointId { + if x != nil { + return x.B } - return 0 + return nil } -func (x *OrderValue) GetFloat() float64 { - if x, ok := x.GetVariant().(*OrderValue_Float); ok { - return x.Float +func (x *SearchMatrixPair) GetScore() float32 { + if x != nil { + return x.Score } return 0 } -type isOrderValue_Variant interface { - isOrderValue_Variant() -} - -type OrderValue_Int struct { - Int int64 `protobuf:"varint,1,opt,name=int,proto3,oneof"` -} - -type OrderValue_Float struct { - Float float64 `protobuf:"fixed64,2,opt,name=float,proto3,oneof"` -} - -func (*OrderValue_Int) isOrderValue_Variant() {} - -func (*OrderValue_Float) isOrderValue_Variant() {} - -type ScoredPoint struct { +type SearchMatrixOffsets struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Point id - Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Payload - Score float32 `protobuf:"fixed32,3,opt,name=score,proto3" json:"score,omitempty"` // Similarity score - Version uint64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` // Last update operation applied to this point - Vectors *Vectors `protobuf:"bytes,6,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` // Vectors to search - ShardKey *ShardKey `protobuf:"bytes,7,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key - OrderValue *OrderValue `protobuf:"bytes,8,opt,name=order_value,json=orderValue,proto3,oneof" json:"order_value,omitempty"` // Order by value + OffsetsRow []uint64 `protobuf:"varint,1,rep,packed,name=offsets_row,json=offsetsRow,proto3" json:"offsets_row,omitempty"` // Row indices of the matrix + OffsetsCol []uint64 `protobuf:"varint,2,rep,packed,name=offsets_col,json=offsetsCol,proto3" json:"offsets_col,omitempty"` // Column indices of the matrix + Scores []float32 `protobuf:"fixed32,3,rep,packed,name=scores,proto3" json:"scores,omitempty"` // Scores associated with matrix coordinates + Ids []*PointId `protobuf:"bytes,4,rep,name=ids,proto3" json:"ids,omitempty"` // Ids of the points in order } -func (x *ScoredPoint) Reset() { - *x = ScoredPoint{} +func (x *SearchMatrixOffsets) Reset() { + *x = SearchMatrixOffsets{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6210,13 +6253,13 @@ func (x *ScoredPoint) Reset() { } } -func (x *ScoredPoint) String() string { +func (x *SearchMatrixOffsets) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ScoredPoint) ProtoMessage() {} +func (*SearchMatrixOffsets) ProtoMessage() {} -func (x *ScoredPoint) ProtoReflect() protoreflect.Message { +func (x *SearchMatrixOffsets) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6228,75 +6271,61 @@ func (x *ScoredPoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ScoredPoint.ProtoReflect.Descriptor instead. -func (*ScoredPoint) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchMatrixOffsets.ProtoReflect.Descriptor instead. +func (*SearchMatrixOffsets) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{68} } -func (x *ScoredPoint) GetId() *PointId { - if x != nil { - return x.Id - } - return nil -} - -func (x *ScoredPoint) GetPayload() map[string]*Value { +func (x *SearchMatrixOffsets) GetOffsetsRow() []uint64 { if x != nil { - return x.Payload + return x.OffsetsRow } return nil } -func (x *ScoredPoint) GetScore() float32 { - if x != nil { - return x.Score - } - return 0 -} - -func (x *ScoredPoint) GetVersion() uint64 { - if x != nil { - return x.Version - } - return 0 -} - -func (x *ScoredPoint) GetVectors() *Vectors { +func (x *SearchMatrixOffsets) GetOffsetsCol() []uint64 { if x != nil { - return x.Vectors + return x.OffsetsCol } return nil } -func (x *ScoredPoint) GetShardKey() *ShardKey { +func (x *SearchMatrixOffsets) GetScores() []float32 { if x != nil { - return x.ShardKey + return x.Scores } return nil } -func (x *ScoredPoint) GetOrderValue() *OrderValue { +func (x *SearchMatrixOffsets) GetIds() []*PointId { if x != nil { - return x.OrderValue + return x.Ids } return nil } -type GroupId struct { +type PointsUpdateOperation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Kind: + // Types that are assignable to Operation: // - // *GroupId_UnsignedValue - // *GroupId_IntegerValue - // *GroupId_StringValue - Kind isGroupId_Kind `protobuf_oneof:"kind"` + // *PointsUpdateOperation_Upsert + // *PointsUpdateOperation_DeleteDeprecated + // *PointsUpdateOperation_SetPayload_ + // *PointsUpdateOperation_OverwritePayload_ + // *PointsUpdateOperation_DeletePayload_ + // *PointsUpdateOperation_ClearPayloadDeprecated + // *PointsUpdateOperation_UpdateVectors_ + // *PointsUpdateOperation_DeleteVectors_ + // *PointsUpdateOperation_DeletePoints_ + // *PointsUpdateOperation_ClearPayload_ + Operation isPointsUpdateOperation_Operation `protobuf_oneof:"operation"` } -func (x *GroupId) Reset() { - *x = GroupId{} +func (x *PointsUpdateOperation) Reset() { + *x = PointsUpdateOperation{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6304,13 +6333,13 @@ func (x *GroupId) Reset() { } } -func (x *GroupId) String() string { +func (x *PointsUpdateOperation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GroupId) ProtoMessage() {} +func (*PointsUpdateOperation) ProtoMessage() {} -func (x *GroupId) ProtoReflect() protoreflect.Message { +func (x *PointsUpdateOperation) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6322,76 +6351,169 @@ func (x *GroupId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GroupId.ProtoReflect.Descriptor instead. -func (*GroupId) Descriptor() ([]byte, []int) { +// Deprecated: Use PointsUpdateOperation.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{69} } -func (m *GroupId) GetKind() isGroupId_Kind { +func (m *PointsUpdateOperation) GetOperation() isPointsUpdateOperation_Operation { if m != nil { - return m.Kind + return m.Operation } return nil } -func (x *GroupId) GetUnsignedValue() uint64 { - if x, ok := x.GetKind().(*GroupId_UnsignedValue); ok { - return x.UnsignedValue +func (x *PointsUpdateOperation) GetUpsert() *PointsUpdateOperation_PointStructList { + if x, ok := x.GetOperation().(*PointsUpdateOperation_Upsert); ok { + return x.Upsert } - return 0 + return nil } -func (x *GroupId) GetIntegerValue() int64 { - if x, ok := x.GetKind().(*GroupId_IntegerValue); ok { - return x.IntegerValue +// Deprecated: Marked as deprecated in points.proto. +func (x *PointsUpdateOperation) GetDeleteDeprecated() *PointsSelector { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteDeprecated); ok { + return x.DeleteDeprecated } - return 0 + return nil } -func (x *GroupId) GetStringValue() string { - if x, ok := x.GetKind().(*GroupId_StringValue); ok { - return x.StringValue +func (x *PointsUpdateOperation) GetSetPayload() *PointsUpdateOperation_SetPayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_SetPayload_); ok { + return x.SetPayload } - return "" + return nil } -type isGroupId_Kind interface { - isGroupId_Kind() +func (x *PointsUpdateOperation) GetOverwritePayload() *PointsUpdateOperation_OverwritePayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_OverwritePayload_); ok { + return x.OverwritePayload + } + return nil } -type GroupId_UnsignedValue struct { - // Represents a double value. - UnsignedValue uint64 `protobuf:"varint,1,opt,name=unsigned_value,json=unsignedValue,proto3,oneof"` +func (x *PointsUpdateOperation) GetDeletePayload() *PointsUpdateOperation_DeletePayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePayload_); ok { + return x.DeletePayload + } + return nil } -type GroupId_IntegerValue struct { - // Represents an integer value - IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"` +// Deprecated: Marked as deprecated in points.proto. +func (x *PointsUpdateOperation) GetClearPayloadDeprecated() *PointsSelector { + if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayloadDeprecated); ok { + return x.ClearPayloadDeprecated + } + return nil } -type GroupId_StringValue struct { - // Represents a string value. - StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"` +func (x *PointsUpdateOperation) GetUpdateVectors() *PointsUpdateOperation_UpdateVectors { + if x, ok := x.GetOperation().(*PointsUpdateOperation_UpdateVectors_); ok { + return x.UpdateVectors + } + return nil } -func (*GroupId_UnsignedValue) isGroupId_Kind() {} +func (x *PointsUpdateOperation) GetDeleteVectors() *PointsUpdateOperation_DeleteVectors { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteVectors_); ok { + return x.DeleteVectors + } + return nil +} -func (*GroupId_IntegerValue) isGroupId_Kind() {} +func (x *PointsUpdateOperation) GetDeletePoints() *PointsUpdateOperation_DeletePoints { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePoints_); ok { + return x.DeletePoints + } + return nil +} -func (*GroupId_StringValue) isGroupId_Kind() {} +func (x *PointsUpdateOperation) GetClearPayload() *PointsUpdateOperation_ClearPayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayload_); ok { + return x.ClearPayload + } + return nil +} -type PointGroup struct { +type isPointsUpdateOperation_Operation interface { + isPointsUpdateOperation_Operation() +} + +type PointsUpdateOperation_Upsert struct { + Upsert *PointsUpdateOperation_PointStructList `protobuf:"bytes,1,opt,name=upsert,proto3,oneof"` +} + +type PointsUpdateOperation_DeleteDeprecated struct { + // Deprecated: Marked as deprecated in points.proto. + DeleteDeprecated *PointsSelector `protobuf:"bytes,2,opt,name=delete_deprecated,json=deleteDeprecated,proto3,oneof"` +} + +type PointsUpdateOperation_SetPayload_ struct { + SetPayload *PointsUpdateOperation_SetPayload `protobuf:"bytes,3,opt,name=set_payload,json=setPayload,proto3,oneof"` +} + +type PointsUpdateOperation_OverwritePayload_ struct { + OverwritePayload *PointsUpdateOperation_OverwritePayload `protobuf:"bytes,4,opt,name=overwrite_payload,json=overwritePayload,proto3,oneof"` +} + +type PointsUpdateOperation_DeletePayload_ struct { + DeletePayload *PointsUpdateOperation_DeletePayload `protobuf:"bytes,5,opt,name=delete_payload,json=deletePayload,proto3,oneof"` +} + +type PointsUpdateOperation_ClearPayloadDeprecated struct { + // Deprecated: Marked as deprecated in points.proto. + ClearPayloadDeprecated *PointsSelector `protobuf:"bytes,6,opt,name=clear_payload_deprecated,json=clearPayloadDeprecated,proto3,oneof"` +} + +type PointsUpdateOperation_UpdateVectors_ struct { + UpdateVectors *PointsUpdateOperation_UpdateVectors `protobuf:"bytes,7,opt,name=update_vectors,json=updateVectors,proto3,oneof"` +} + +type PointsUpdateOperation_DeleteVectors_ struct { + DeleteVectors *PointsUpdateOperation_DeleteVectors `protobuf:"bytes,8,opt,name=delete_vectors,json=deleteVectors,proto3,oneof"` +} + +type PointsUpdateOperation_DeletePoints_ struct { + DeletePoints *PointsUpdateOperation_DeletePoints `protobuf:"bytes,9,opt,name=delete_points,json=deletePoints,proto3,oneof"` +} + +type PointsUpdateOperation_ClearPayload_ struct { + ClearPayload *PointsUpdateOperation_ClearPayload `protobuf:"bytes,10,opt,name=clear_payload,json=clearPayload,proto3,oneof"` +} + +func (*PointsUpdateOperation_Upsert) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeleteDeprecated) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_SetPayload_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_OverwritePayload_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeletePayload_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_ClearPayloadDeprecated) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_UpdateVectors_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeleteVectors_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeletePoints_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_ClearPayload_) isPointsUpdateOperation_Operation() {} + +type UpdateBatchPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *GroupId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Group id - Hits []*ScoredPoint `protobuf:"bytes,2,rep,name=hits,proto3" json:"hits,omitempty"` // Points in the group - Lookup *RetrievedPoint `protobuf:"bytes,3,opt,name=lookup,proto3" json:"lookup,omitempty"` // Point(s) from the lookup collection that matches the group id + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + Operations []*PointsUpdateOperation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` + Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees } -func (x *PointGroup) Reset() { - *x = PointGroup{} +func (x *UpdateBatchPoints) Reset() { + *x = UpdateBatchPoints{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6399,13 +6521,13 @@ func (x *PointGroup) Reset() { } } -func (x *PointGroup) String() string { +func (x *UpdateBatchPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointGroup) ProtoMessage() {} +func (*UpdateBatchPoints) ProtoMessage() {} -func (x *PointGroup) ProtoReflect() protoreflect.Message { +func (x *UpdateBatchPoints) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6417,42 +6539,50 @@ func (x *PointGroup) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointGroup.ProtoReflect.Descriptor instead. -func (*PointGroup) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateBatchPoints.ProtoReflect.Descriptor instead. +func (*UpdateBatchPoints) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{70} } -func (x *PointGroup) GetId() *GroupId { +func (x *UpdateBatchPoints) GetCollectionName() string { if x != nil { - return x.Id + return x.CollectionName } - return nil + return "" } -func (x *PointGroup) GetHits() []*ScoredPoint { +func (x *UpdateBatchPoints) GetWait() bool { + if x != nil && x.Wait != nil { + return *x.Wait + } + return false +} + +func (x *UpdateBatchPoints) GetOperations() []*PointsUpdateOperation { if x != nil { - return x.Hits + return x.Operations } return nil } -func (x *PointGroup) GetLookup() *RetrievedPoint { +func (x *UpdateBatchPoints) GetOrdering() *WriteOrdering { if x != nil { - return x.Lookup + return x.Ordering } return nil } -type GroupsResult struct { +type PointsOperationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Groups []*PointGroup `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` // Groups + Result *UpdateResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *GroupsResult) Reset() { - *x = GroupsResult{} +func (x *PointsOperationResponse) Reset() { + *x = PointsOperationResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6460,13 +6590,13 @@ func (x *GroupsResult) Reset() { } } -func (x *GroupsResult) String() string { +func (x *PointsOperationResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GroupsResult) ProtoMessage() {} +func (*PointsOperationResponse) ProtoMessage() {} -func (x *GroupsResult) ProtoReflect() protoreflect.Message { +func (x *PointsOperationResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6478,29 +6608,36 @@ func (x *GroupsResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GroupsResult.ProtoReflect.Descriptor instead. -func (*GroupsResult) Descriptor() ([]byte, []int) { +// Deprecated: Use PointsOperationResponse.ProtoReflect.Descriptor instead. +func (*PointsOperationResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{71} } -func (x *GroupsResult) GetGroups() []*PointGroup { +func (x *PointsOperationResponse) GetResult() *UpdateResult { if x != nil { - return x.Groups + return x.Result } return nil } -type SearchResponse struct { +func (x *PointsOperationResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 +} + +type UpdateResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + OperationId *uint64 `protobuf:"varint,1,opt,name=operation_id,json=operationId,proto3,oneof" json:"operation_id,omitempty"` // Number of operation + Status UpdateStatus `protobuf:"varint,2,opt,name=status,proto3,enum=qdrant.UpdateStatus" json:"status,omitempty"` // Operation status } -func (x *SearchResponse) Reset() { - *x = SearchResponse{} +func (x *UpdateResult) Reset() { + *x = UpdateResult{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6508,13 +6645,13 @@ func (x *SearchResponse) Reset() { } } -func (x *SearchResponse) String() string { +func (x *UpdateResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchResponse) ProtoMessage() {} +func (*UpdateResult) ProtoMessage() {} -func (x *SearchResponse) ProtoReflect() protoreflect.Message { +func (x *UpdateResult) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6526,36 +6663,39 @@ func (x *SearchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead. -func (*SearchResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateResult.ProtoReflect.Descriptor instead. +func (*UpdateResult) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{72} } -func (x *SearchResponse) GetResult() []*ScoredPoint { - if x != nil { - return x.Result +func (x *UpdateResult) GetOperationId() uint64 { + if x != nil && x.OperationId != nil { + return *x.OperationId } - return nil + return 0 } -func (x *SearchResponse) GetTime() float64 { +func (x *UpdateResult) GetStatus() UpdateStatus { if x != nil { - return x.Time + return x.Status } - return 0 + return UpdateStatus_UnknownUpdateStatus } -type QueryResponse struct { +type OrderValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + // Types that are assignable to Variant: + // + // *OrderValue_Int + // *OrderValue_Float + Variant isOrderValue_Variant `protobuf_oneof:"variant"` } -func (x *QueryResponse) Reset() { - *x = QueryResponse{} +func (x *OrderValue) Reset() { + *x = OrderValue{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6563,13 +6703,13 @@ func (x *QueryResponse) Reset() { } } -func (x *QueryResponse) String() string { +func (x *OrderValue) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryResponse) ProtoMessage() {} +func (*OrderValue) ProtoMessage() {} -func (x *QueryResponse) ProtoReflect() protoreflect.Message { +func (x *OrderValue) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6581,36 +6721,64 @@ func (x *QueryResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryResponse.ProtoReflect.Descriptor instead. -func (*QueryResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use OrderValue.ProtoReflect.Descriptor instead. +func (*OrderValue) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{73} } -func (x *QueryResponse) GetResult() []*ScoredPoint { - if x != nil { - return x.Result +func (m *OrderValue) GetVariant() isOrderValue_Variant { + if m != nil { + return m.Variant } return nil } -func (x *QueryResponse) GetTime() float64 { - if x != nil { - return x.Time +func (x *OrderValue) GetInt() int64 { + if x, ok := x.GetVariant().(*OrderValue_Int); ok { + return x.Int } return 0 } -type QueryBatchResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *OrderValue) GetFloat() float64 { + if x, ok := x.GetVariant().(*OrderValue_Float); ok { + return x.Float + } + return 0 +} - Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process +type isOrderValue_Variant interface { + isOrderValue_Variant() } -func (x *QueryBatchResponse) Reset() { - *x = QueryBatchResponse{} +type OrderValue_Int struct { + Int int64 `protobuf:"varint,1,opt,name=int,proto3,oneof"` +} + +type OrderValue_Float struct { + Float float64 `protobuf:"fixed64,2,opt,name=float,proto3,oneof"` +} + +func (*OrderValue_Int) isOrderValue_Variant() {} + +func (*OrderValue_Float) isOrderValue_Variant() {} + +type ScoredPoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Point id + Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Payload + Score float32 `protobuf:"fixed32,3,opt,name=score,proto3" json:"score,omitempty"` // Similarity score + Version uint64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` // Last update operation applied to this point + Vectors *VectorsOutput `protobuf:"bytes,6,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` // Vectors to search + ShardKey *ShardKey `protobuf:"bytes,7,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key + OrderValue *OrderValue `protobuf:"bytes,8,opt,name=order_value,json=orderValue,proto3,oneof" json:"order_value,omitempty"` // Order by value +} + +func (x *ScoredPoint) Reset() { + *x = ScoredPoint{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6618,13 +6786,13 @@ func (x *QueryBatchResponse) Reset() { } } -func (x *QueryBatchResponse) String() string { +func (x *ScoredPoint) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryBatchResponse) ProtoMessage() {} +func (*ScoredPoint) ProtoMessage() {} -func (x *QueryBatchResponse) ProtoReflect() protoreflect.Message { +func (x *ScoredPoint) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6636,36 +6804,75 @@ func (x *QueryBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryBatchResponse.ProtoReflect.Descriptor instead. -func (*QueryBatchResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ScoredPoint.ProtoReflect.Descriptor instead. +func (*ScoredPoint) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{74} } -func (x *QueryBatchResponse) GetResult() []*BatchResult { +func (x *ScoredPoint) GetId() *PointId { if x != nil { - return x.Result + return x.Id } return nil } -func (x *QueryBatchResponse) GetTime() float64 { +func (x *ScoredPoint) GetPayload() map[string]*Value { if x != nil { - return x.Time + return x.Payload + } + return nil +} + +func (x *ScoredPoint) GetScore() float32 { + if x != nil { + return x.Score } return 0 } -type QueryGroupsResponse struct { +func (x *ScoredPoint) GetVersion() uint64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ScoredPoint) GetVectors() *VectorsOutput { + if x != nil { + return x.Vectors + } + return nil +} + +func (x *ScoredPoint) GetShardKey() *ShardKey { + if x != nil { + return x.ShardKey + } + return nil +} + +func (x *ScoredPoint) GetOrderValue() *OrderValue { + if x != nil { + return x.OrderValue + } + return nil +} + +type GroupId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + // Types that are assignable to Kind: + // + // *GroupId_UnsignedValue + // *GroupId_IntegerValue + // *GroupId_StringValue + Kind isGroupId_Kind `protobuf_oneof:"kind"` } -func (x *QueryGroupsResponse) Reset() { - *x = QueryGroupsResponse{} +func (x *GroupId) Reset() { + *x = GroupId{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6673,13 +6880,13 @@ func (x *QueryGroupsResponse) Reset() { } } -func (x *QueryGroupsResponse) String() string { +func (x *GroupId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryGroupsResponse) ProtoMessage() {} +func (*GroupId) ProtoMessage() {} -func (x *QueryGroupsResponse) ProtoReflect() protoreflect.Message { +func (x *GroupId) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6691,35 +6898,76 @@ func (x *QueryGroupsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryGroupsResponse.ProtoReflect.Descriptor instead. -func (*QueryGroupsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GroupId.ProtoReflect.Descriptor instead. +func (*GroupId) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{75} } -func (x *QueryGroupsResponse) GetResult() *GroupsResult { - if x != nil { - return x.Result +func (m *GroupId) GetKind() isGroupId_Kind { + if m != nil { + return m.Kind } return nil } -func (x *QueryGroupsResponse) GetTime() float64 { - if x != nil { - return x.Time +func (x *GroupId) GetUnsignedValue() uint64 { + if x, ok := x.GetKind().(*GroupId_UnsignedValue); ok { + return x.UnsignedValue } return 0 } -type BatchResult struct { +func (x *GroupId) GetIntegerValue() int64 { + if x, ok := x.GetKind().(*GroupId_IntegerValue); ok { + return x.IntegerValue + } + return 0 +} + +func (x *GroupId) GetStringValue() string { + if x, ok := x.GetKind().(*GroupId_StringValue); ok { + return x.StringValue + } + return "" +} + +type isGroupId_Kind interface { + isGroupId_Kind() +} + +type GroupId_UnsignedValue struct { + // Represents a double value. + UnsignedValue uint64 `protobuf:"varint,1,opt,name=unsigned_value,json=unsignedValue,proto3,oneof"` +} + +type GroupId_IntegerValue struct { + // Represents an integer value + IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"` +} + +type GroupId_StringValue struct { + // Represents a string value. + StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"` +} + +func (*GroupId_UnsignedValue) isGroupId_Kind() {} + +func (*GroupId_IntegerValue) isGroupId_Kind() {} + +func (*GroupId_StringValue) isGroupId_Kind() {} + +type PointGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Id *GroupId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Group id + Hits []*ScoredPoint `protobuf:"bytes,2,rep,name=hits,proto3" json:"hits,omitempty"` // Points in the group + Lookup *RetrievedPoint `protobuf:"bytes,3,opt,name=lookup,proto3" json:"lookup,omitempty"` // Point(s) from the lookup collection that matches the group id } -func (x *BatchResult) Reset() { - *x = BatchResult{} +func (x *PointGroup) Reset() { + *x = PointGroup{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6727,13 +6975,13 @@ func (x *BatchResult) Reset() { } } -func (x *BatchResult) String() string { +func (x *PointGroup) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BatchResult) ProtoMessage() {} +func (*PointGroup) ProtoMessage() {} -func (x *BatchResult) ProtoReflect() protoreflect.Message { +func (x *PointGroup) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6745,29 +6993,42 @@ func (x *BatchResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BatchResult.ProtoReflect.Descriptor instead. -func (*BatchResult) Descriptor() ([]byte, []int) { +// Deprecated: Use PointGroup.ProtoReflect.Descriptor instead. +func (*PointGroup) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{76} } -func (x *BatchResult) GetResult() []*ScoredPoint { +func (x *PointGroup) GetId() *GroupId { if x != nil { - return x.Result + return x.Id } return nil } -type SearchBatchResponse struct { +func (x *PointGroup) GetHits() []*ScoredPoint { + if x != nil { + return x.Hits + } + return nil +} + +func (x *PointGroup) GetLookup() *RetrievedPoint { + if x != nil { + return x.Lookup + } + return nil +} + +type GroupsResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Groups []*PointGroup `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` // Groups } -func (x *SearchBatchResponse) Reset() { - *x = SearchBatchResponse{} +func (x *GroupsResult) Reset() { + *x = GroupsResult{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6775,13 +7036,13 @@ func (x *SearchBatchResponse) Reset() { } } -func (x *SearchBatchResponse) String() string { +func (x *GroupsResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchBatchResponse) ProtoMessage() {} +func (*GroupsResult) ProtoMessage() {} -func (x *SearchBatchResponse) ProtoReflect() protoreflect.Message { +func (x *GroupsResult) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6793,36 +7054,30 @@ func (x *SearchBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchBatchResponse.ProtoReflect.Descriptor instead. -func (*SearchBatchResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GroupsResult.ProtoReflect.Descriptor instead. +func (*GroupsResult) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{77} } -func (x *SearchBatchResponse) GetResult() []*BatchResult { +func (x *GroupsResult) GetGroups() []*PointGroup { if x != nil { - return x.Result + return x.Groups } return nil } -func (x *SearchBatchResponse) GetTime() float64 { - if x != nil { - return x.Time - } - return 0 -} - -type SearchGroupsResponse struct { +type SearchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *SearchGroupsResponse) Reset() { - *x = SearchGroupsResponse{} +func (x *SearchResponse) Reset() { + *x = SearchResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6830,13 +7085,13 @@ func (x *SearchGroupsResponse) Reset() { } } -func (x *SearchGroupsResponse) String() string { +func (x *SearchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchGroupsResponse) ProtoMessage() {} +func (*SearchResponse) ProtoMessage() {} -func (x *SearchGroupsResponse) ProtoReflect() protoreflect.Message { +func (x *SearchResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6848,36 +7103,44 @@ func (x *SearchGroupsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchGroupsResponse.ProtoReflect.Descriptor instead. -func (*SearchGroupsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead. +func (*SearchResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{78} } -func (x *SearchGroupsResponse) GetResult() *GroupsResult { +func (x *SearchResponse) GetResult() []*ScoredPoint { if x != nil { return x.Result } return nil } -func (x *SearchGroupsResponse) GetTime() float64 { +func (x *SearchResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type CountResponse struct { +func (x *SearchResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type QueryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *CountResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *CountResponse) Reset() { - *x = CountResponse{} +func (x *QueryResponse) Reset() { + *x = QueryResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6885,13 +7148,13 @@ func (x *CountResponse) Reset() { } } -func (x *CountResponse) String() string { +func (x *QueryResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CountResponse) ProtoMessage() {} +func (*QueryResponse) ProtoMessage() {} -func (x *CountResponse) ProtoReflect() protoreflect.Message { +func (x *QueryResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6903,37 +7166,44 @@ func (x *CountResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CountResponse.ProtoReflect.Descriptor instead. -func (*CountResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use QueryResponse.ProtoReflect.Descriptor instead. +func (*QueryResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{79} } -func (x *CountResponse) GetResult() *CountResult { +func (x *QueryResponse) GetResult() []*ScoredPoint { if x != nil { return x.Result } return nil } -func (x *CountResponse) GetTime() float64 { +func (x *QueryResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type ScrollResponse struct { +func (x *QueryResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type QueryBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NextPageOffset *PointId `protobuf:"bytes,1,opt,name=next_page_offset,json=nextPageOffset,proto3,oneof" json:"next_page_offset,omitempty"` // Use this offset for the next query - Result []*RetrievedPoint `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,3,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *ScrollResponse) Reset() { - *x = ScrollResponse{} +func (x *QueryBatchResponse) Reset() { + *x = QueryBatchResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6941,13 +7211,13 @@ func (x *ScrollResponse) Reset() { } } -func (x *ScrollResponse) String() string { +func (x *QueryBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ScrollResponse) ProtoMessage() {} +func (*QueryBatchResponse) ProtoMessage() {} -func (x *ScrollResponse) ProtoReflect() protoreflect.Message { +func (x *QueryBatchResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6959,42 +7229,44 @@ func (x *ScrollResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ScrollResponse.ProtoReflect.Descriptor instead. -func (*ScrollResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use QueryBatchResponse.ProtoReflect.Descriptor instead. +func (*QueryBatchResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{80} } -func (x *ScrollResponse) GetNextPageOffset() *PointId { +func (x *QueryBatchResponse) GetResult() []*BatchResult { if x != nil { - return x.NextPageOffset + return x.Result } return nil } -func (x *ScrollResponse) GetResult() []*RetrievedPoint { +func (x *QueryBatchResponse) GetTime() float64 { if x != nil { - return x.Result + return x.Time } - return nil + return 0 } -func (x *ScrollResponse) GetTime() float64 { +func (x *QueryBatchResponse) GetUsage() *HardwareUsage { if x != nil { - return x.Time + return x.Usage } - return 0 + return nil } -type CountResult struct { +type QueryGroupsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *CountResult) Reset() { - *x = CountResult{} +func (x *QueryGroupsResponse) Reset() { + *x = QueryGroupsResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7002,13 +7274,13 @@ func (x *CountResult) Reset() { } } -func (x *CountResult) String() string { +func (x *QueryGroupsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CountResult) ProtoMessage() {} +func (*QueryGroupsResponse) ProtoMessage() {} -func (x *CountResult) ProtoReflect() protoreflect.Message { +func (x *QueryGroupsResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7020,32 +7292,42 @@ func (x *CountResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CountResult.ProtoReflect.Descriptor instead. -func (*CountResult) Descriptor() ([]byte, []int) { +// Deprecated: Use QueryGroupsResponse.ProtoReflect.Descriptor instead. +func (*QueryGroupsResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{81} } -func (x *CountResult) GetCount() uint64 { +func (x *QueryGroupsResponse) GetResult() *GroupsResult { if x != nil { - return x.Count + return x.Result + } + return nil +} + +func (x *QueryGroupsResponse) GetTime() float64 { + if x != nil { + return x.Time } return 0 } -type RetrievedPoint struct { +func (x *QueryGroupsResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type BatchResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Vectors *Vectors `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` - ShardKey *ShardKey `protobuf:"bytes,5,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key - OrderValue *OrderValue `protobuf:"bytes,6,opt,name=order_value,json=orderValue,proto3,oneof" json:"order_value,omitempty"` // Order-by value + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` } -func (x *RetrievedPoint) Reset() { - *x = RetrievedPoint{} +func (x *BatchResult) Reset() { + *x = BatchResult{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7053,13 +7335,13 @@ func (x *RetrievedPoint) Reset() { } } -func (x *RetrievedPoint) String() string { +func (x *BatchResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RetrievedPoint) ProtoMessage() {} +func (*BatchResult) ProtoMessage() {} -func (x *RetrievedPoint) ProtoReflect() protoreflect.Message { +func (x *BatchResult) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7071,57 +7353,30 @@ func (x *RetrievedPoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RetrievedPoint.ProtoReflect.Descriptor instead. -func (*RetrievedPoint) Descriptor() ([]byte, []int) { +// Deprecated: Use BatchResult.ProtoReflect.Descriptor instead. +func (*BatchResult) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{82} } -func (x *RetrievedPoint) GetId() *PointId { - if x != nil { - return x.Id - } - return nil -} - -func (x *RetrievedPoint) GetPayload() map[string]*Value { - if x != nil { - return x.Payload - } - return nil -} - -func (x *RetrievedPoint) GetVectors() *Vectors { - if x != nil { - return x.Vectors - } - return nil -} - -func (x *RetrievedPoint) GetShardKey() *ShardKey { - if x != nil { - return x.ShardKey - } - return nil -} - -func (x *RetrievedPoint) GetOrderValue() *OrderValue { +func (x *BatchResult) GetResult() []*ScoredPoint { if x != nil { - return x.OrderValue + return x.Result } return nil } -type GetResponse struct { +type SearchBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*RetrievedPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *GetResponse) Reset() { - *x = GetResponse{} +func (x *SearchBatchResponse) Reset() { + *x = SearchBatchResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7129,13 +7384,13 @@ func (x *GetResponse) Reset() { } } -func (x *GetResponse) String() string { +func (x *SearchBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetResponse) ProtoMessage() {} +func (*SearchBatchResponse) ProtoMessage() {} -func (x *GetResponse) ProtoReflect() protoreflect.Message { +func (x *SearchBatchResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7147,36 +7402,44 @@ func (x *GetResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. -func (*GetResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchBatchResponse.ProtoReflect.Descriptor instead. +func (*SearchBatchResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{83} } -func (x *GetResponse) GetResult() []*RetrievedPoint { +func (x *SearchBatchResponse) GetResult() []*BatchResult { if x != nil { return x.Result } return nil } -func (x *GetResponse) GetTime() float64 { +func (x *SearchBatchResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type RecommendResponse struct { +func (x *SearchBatchResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type SearchGroupsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *RecommendResponse) Reset() { - *x = RecommendResponse{} +func (x *SearchGroupsResponse) Reset() { + *x = SearchGroupsResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7184,13 +7447,13 @@ func (x *RecommendResponse) Reset() { } } -func (x *RecommendResponse) String() string { +func (x *SearchGroupsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendResponse) ProtoMessage() {} +func (*SearchGroupsResponse) ProtoMessage() {} -func (x *RecommendResponse) ProtoReflect() protoreflect.Message { +func (x *SearchGroupsResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7202,36 +7465,44 @@ func (x *RecommendResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendResponse.ProtoReflect.Descriptor instead. -func (*RecommendResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchGroupsResponse.ProtoReflect.Descriptor instead. +func (*SearchGroupsResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{84} } -func (x *RecommendResponse) GetResult() []*ScoredPoint { +func (x *SearchGroupsResponse) GetResult() *GroupsResult { if x != nil { return x.Result } return nil } -func (x *RecommendResponse) GetTime() float64 { +func (x *SearchGroupsResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type RecommendBatchResponse struct { +func (x *SearchGroupsResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type CountResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Result *CountResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *RecommendBatchResponse) Reset() { - *x = RecommendBatchResponse{} +func (x *CountResponse) Reset() { + *x = CountResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7239,13 +7510,13 @@ func (x *RecommendBatchResponse) Reset() { } } -func (x *RecommendBatchResponse) String() string { +func (x *CountResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendBatchResponse) ProtoMessage() {} +func (*CountResponse) ProtoMessage() {} -func (x *RecommendBatchResponse) ProtoReflect() protoreflect.Message { +func (x *CountResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7257,36 +7528,44 @@ func (x *RecommendBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendBatchResponse.ProtoReflect.Descriptor instead. -func (*RecommendBatchResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CountResponse.ProtoReflect.Descriptor instead. +func (*CountResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{85} } -func (x *RecommendBatchResponse) GetResult() []*BatchResult { +func (x *CountResponse) GetResult() *CountResult { if x != nil { return x.Result } return nil } -func (x *RecommendBatchResponse) GetTime() float64 { +func (x *CountResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type DiscoverResponse struct { +func (x *CountResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type ScrollResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + NextPageOffset *PointId `protobuf:"bytes,1,opt,name=next_page_offset,json=nextPageOffset,proto3,oneof" json:"next_page_offset,omitempty"` // Use this offset for the next query + Result []*RetrievedPoint `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,3,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *DiscoverResponse) Reset() { - *x = DiscoverResponse{} +func (x *ScrollResponse) Reset() { + *x = ScrollResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7294,13 +7573,13 @@ func (x *DiscoverResponse) Reset() { } } -func (x *DiscoverResponse) String() string { +func (x *ScrollResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DiscoverResponse) ProtoMessage() {} +func (*ScrollResponse) ProtoMessage() {} -func (x *DiscoverResponse) ProtoReflect() protoreflect.Message { +func (x *ScrollResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7312,36 +7591,42 @@ func (x *DiscoverResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DiscoverResponse.ProtoReflect.Descriptor instead. -func (*DiscoverResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ScrollResponse.ProtoReflect.Descriptor instead. +func (*ScrollResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{86} } -func (x *DiscoverResponse) GetResult() []*ScoredPoint { +func (x *ScrollResponse) GetNextPageOffset() *PointId { + if x != nil { + return x.NextPageOffset + } + return nil +} + +func (x *ScrollResponse) GetResult() []*RetrievedPoint { if x != nil { return x.Result } return nil } -func (x *DiscoverResponse) GetTime() float64 { +func (x *ScrollResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type DiscoverBatchResponse struct { +type CountResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` } -func (x *DiscoverBatchResponse) Reset() { - *x = DiscoverBatchResponse{} +func (x *CountResult) Reset() { + *x = CountResult{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7349,13 +7634,13 @@ func (x *DiscoverBatchResponse) Reset() { } } -func (x *DiscoverBatchResponse) String() string { +func (x *CountResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DiscoverBatchResponse) ProtoMessage() {} +func (*CountResult) ProtoMessage() {} -func (x *DiscoverBatchResponse) ProtoReflect() protoreflect.Message { +func (x *CountResult) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7367,36 +7652,32 @@ func (x *DiscoverBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DiscoverBatchResponse.ProtoReflect.Descriptor instead. -func (*DiscoverBatchResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CountResult.ProtoReflect.Descriptor instead. +func (*CountResult) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{87} } -func (x *DiscoverBatchResponse) GetResult() []*BatchResult { - if x != nil { - return x.Result - } - return nil -} - -func (x *DiscoverBatchResponse) GetTime() float64 { +func (x *CountResult) GetCount() uint64 { if x != nil { - return x.Time + return x.Count } return 0 } -type RecommendGroupsResponse struct { +type RetrievedPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Vectors *VectorsOutput `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` + ShardKey *ShardKey `protobuf:"bytes,5,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key + OrderValue *OrderValue `protobuf:"bytes,6,opt,name=order_value,json=orderValue,proto3,oneof" json:"order_value,omitempty"` // Order-by value } -func (x *RecommendGroupsResponse) Reset() { - *x = RecommendGroupsResponse{} +func (x *RetrievedPoint) Reset() { + *x = RetrievedPoint{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7404,13 +7685,13 @@ func (x *RecommendGroupsResponse) Reset() { } } -func (x *RecommendGroupsResponse) String() string { +func (x *RetrievedPoint) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendGroupsResponse) ProtoMessage() {} +func (*RetrievedPoint) ProtoMessage() {} -func (x *RecommendGroupsResponse) ProtoReflect() protoreflect.Message { +func (x *RetrievedPoint) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7422,36 +7703,57 @@ func (x *RecommendGroupsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendGroupsResponse.ProtoReflect.Descriptor instead. -func (*RecommendGroupsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RetrievedPoint.ProtoReflect.Descriptor instead. +func (*RetrievedPoint) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{88} } -func (x *RecommendGroupsResponse) GetResult() *GroupsResult { +func (x *RetrievedPoint) GetId() *PointId { if x != nil { - return x.Result + return x.Id } return nil } -func (x *RecommendGroupsResponse) GetTime() float64 { +func (x *RetrievedPoint) GetPayload() map[string]*Value { if x != nil { - return x.Time + return x.Payload } - return 0 + return nil } -type UpdateBatchResponse struct { +func (x *RetrievedPoint) GetVectors() *VectorsOutput { + if x != nil { + return x.Vectors + } + return nil +} + +func (x *RetrievedPoint) GetShardKey() *ShardKey { + if x != nil { + return x.ShardKey + } + return nil +} + +func (x *RetrievedPoint) GetOrderValue() *OrderValue { + if x != nil { + return x.OrderValue + } + return nil +} + +type GetResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*UpdateResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*RetrievedPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *UpdateBatchResponse) Reset() { - *x = UpdateBatchResponse{} +func (x *GetResponse) Reset() { + *x = GetResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7459,13 +7761,13 @@ func (x *UpdateBatchResponse) Reset() { } } -func (x *UpdateBatchResponse) String() string { +func (x *GetResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateBatchResponse) ProtoMessage() {} +func (*GetResponse) ProtoMessage() {} -func (x *UpdateBatchResponse) ProtoReflect() protoreflect.Message { +func (x *GetResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7477,36 +7779,37 @@ func (x *UpdateBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateBatchResponse.ProtoReflect.Descriptor instead. -func (*UpdateBatchResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. +func (*GetResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{89} } -func (x *UpdateBatchResponse) GetResult() []*UpdateResult { +func (x *GetResponse) GetResult() []*RetrievedPoint { if x != nil { return x.Result } return nil } -func (x *UpdateBatchResponse) GetTime() float64 { +func (x *GetResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type FacetResponse struct { +type RecommendResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Hits []*FacetHit `protobuf:"bytes,1,rep,name=hits,proto3" json:"hits,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *FacetResponse) Reset() { - *x = FacetResponse{} +func (x *RecommendResponse) Reset() { + *x = RecommendResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7514,13 +7817,13 @@ func (x *FacetResponse) Reset() { } } -func (x *FacetResponse) String() string { +func (x *RecommendResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FacetResponse) ProtoMessage() {} +func (*RecommendResponse) ProtoMessage() {} -func (x *FacetResponse) ProtoReflect() protoreflect.Message { +func (x *RecommendResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7532,36 +7835,44 @@ func (x *FacetResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FacetResponse.ProtoReflect.Descriptor instead. -func (*FacetResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RecommendResponse.ProtoReflect.Descriptor instead. +func (*RecommendResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{90} } -func (x *FacetResponse) GetHits() []*FacetHit { +func (x *RecommendResponse) GetResult() []*ScoredPoint { if x != nil { - return x.Hits + return x.Result } return nil } -func (x *FacetResponse) GetTime() float64 { +func (x *RecommendResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type SearchMatrixPairsResponse struct { +func (x *RecommendResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type RecommendBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *SearchMatrixPairs `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *SearchMatrixPairsResponse) Reset() { - *x = SearchMatrixPairsResponse{} +func (x *RecommendBatchResponse) Reset() { + *x = RecommendBatchResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7569,13 +7880,13 @@ func (x *SearchMatrixPairsResponse) Reset() { } } -func (x *SearchMatrixPairsResponse) String() string { +func (x *RecommendBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchMatrixPairsResponse) ProtoMessage() {} +func (*RecommendBatchResponse) ProtoMessage() {} -func (x *SearchMatrixPairsResponse) ProtoReflect() protoreflect.Message { +func (x *RecommendBatchResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7587,36 +7898,44 @@ func (x *SearchMatrixPairsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchMatrixPairsResponse.ProtoReflect.Descriptor instead. -func (*SearchMatrixPairsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RecommendBatchResponse.ProtoReflect.Descriptor instead. +func (*RecommendBatchResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{91} } -func (x *SearchMatrixPairsResponse) GetResult() *SearchMatrixPairs { +func (x *RecommendBatchResponse) GetResult() []*BatchResult { if x != nil { return x.Result } return nil } -func (x *SearchMatrixPairsResponse) GetTime() float64 { +func (x *RecommendBatchResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type SearchMatrixOffsetsResponse struct { +func (x *RecommendBatchResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type DiscoverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *SearchMatrixOffsets `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *SearchMatrixOffsetsResponse) Reset() { - *x = SearchMatrixOffsetsResponse{} +func (x *DiscoverResponse) Reset() { + *x = DiscoverResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7624,13 +7943,13 @@ func (x *SearchMatrixOffsetsResponse) Reset() { } } -func (x *SearchMatrixOffsetsResponse) String() string { +func (x *DiscoverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchMatrixOffsetsResponse) ProtoMessage() {} +func (*DiscoverResponse) ProtoMessage() {} -func (x *SearchMatrixOffsetsResponse) ProtoReflect() protoreflect.Message { +func (x *DiscoverResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7642,38 +7961,44 @@ func (x *SearchMatrixOffsetsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchMatrixOffsetsResponse.ProtoReflect.Descriptor instead. -func (*SearchMatrixOffsetsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DiscoverResponse.ProtoReflect.Descriptor instead. +func (*DiscoverResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{92} } -func (x *SearchMatrixOffsetsResponse) GetResult() *SearchMatrixOffsets { +func (x *DiscoverResponse) GetResult() []*ScoredPoint { if x != nil { return x.Result } return nil } -func (x *SearchMatrixOffsetsResponse) GetTime() float64 { +func (x *DiscoverResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type Filter struct { +func (x *DiscoverResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type DiscoverBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Should []*Condition `protobuf:"bytes,1,rep,name=should,proto3" json:"should,omitempty"` // At least one of those conditions should match - Must []*Condition `protobuf:"bytes,2,rep,name=must,proto3" json:"must,omitempty"` // All conditions must match - MustNot []*Condition `protobuf:"bytes,3,rep,name=must_not,json=mustNot,proto3" json:"must_not,omitempty"` // All conditions must NOT match - MinShould *MinShould `protobuf:"bytes,4,opt,name=min_should,json=minShould,proto3,oneof" json:"min_should,omitempty"` // At least minimum amount of given conditions should match + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *Filter) Reset() { - *x = Filter{} +func (x *DiscoverBatchResponse) Reset() { + *x = DiscoverBatchResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7681,13 +8006,13 @@ func (x *Filter) Reset() { } } -func (x *Filter) String() string { +func (x *DiscoverBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Filter) ProtoMessage() {} +func (*DiscoverBatchResponse) ProtoMessage() {} -func (x *Filter) ProtoReflect() protoreflect.Message { +func (x *DiscoverBatchResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7699,50 +8024,44 @@ func (x *Filter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Filter.ProtoReflect.Descriptor instead. -func (*Filter) Descriptor() ([]byte, []int) { +// Deprecated: Use DiscoverBatchResponse.ProtoReflect.Descriptor instead. +func (*DiscoverBatchResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{93} } -func (x *Filter) GetShould() []*Condition { - if x != nil { - return x.Should - } - return nil -} - -func (x *Filter) GetMust() []*Condition { +func (x *DiscoverBatchResponse) GetResult() []*BatchResult { if x != nil { - return x.Must + return x.Result } return nil } -func (x *Filter) GetMustNot() []*Condition { +func (x *DiscoverBatchResponse) GetTime() float64 { if x != nil { - return x.MustNot + return x.Time } - return nil + return 0 } -func (x *Filter) GetMinShould() *MinShould { +func (x *DiscoverBatchResponse) GetUsage() *HardwareUsage { if x != nil { - return x.MinShould + return x.Usage } return nil } -type MinShould struct { +type RecommendGroupsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Conditions []*Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` - MinCount uint64 `protobuf:"varint,2,opt,name=min_count,json=minCount,proto3" json:"min_count,omitempty"` + Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *MinShould) Reset() { - *x = MinShould{} +func (x *RecommendGroupsResponse) Reset() { + *x = RecommendGroupsResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7750,13 +8069,13 @@ func (x *MinShould) Reset() { } } -func (x *MinShould) String() string { +func (x *RecommendGroupsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MinShould) ProtoMessage() {} +func (*RecommendGroupsResponse) ProtoMessage() {} -func (x *MinShould) ProtoReflect() protoreflect.Message { +func (x *RecommendGroupsResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7768,43 +8087,43 @@ func (x *MinShould) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MinShould.ProtoReflect.Descriptor instead. -func (*MinShould) Descriptor() ([]byte, []int) { +// Deprecated: Use RecommendGroupsResponse.ProtoReflect.Descriptor instead. +func (*RecommendGroupsResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{94} } -func (x *MinShould) GetConditions() []*Condition { +func (x *RecommendGroupsResponse) GetResult() *GroupsResult { if x != nil { - return x.Conditions + return x.Result } return nil } -func (x *MinShould) GetMinCount() uint64 { +func (x *RecommendGroupsResponse) GetTime() float64 { if x != nil { - return x.MinCount + return x.Time } return 0 } -type Condition struct { +func (x *RecommendGroupsResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type UpdateBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to ConditionOneOf: - // - // *Condition_Field - // *Condition_IsEmpty - // *Condition_HasId - // *Condition_Filter - // *Condition_IsNull - // *Condition_Nested - ConditionOneOf isCondition_ConditionOneOf `protobuf_oneof:"condition_one_of"` + Result []*UpdateResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *Condition) Reset() { - *x = Condition{} +func (x *UpdateBatchResponse) Reset() { + *x = UpdateBatchResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7812,13 +8131,13 @@ func (x *Condition) Reset() { } } -func (x *Condition) String() string { +func (x *UpdateBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Condition) ProtoMessage() {} +func (*UpdateBatchResponse) ProtoMessage() {} -func (x *Condition) ProtoReflect() protoreflect.Message { +func (x *UpdateBatchResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7830,110 +8149,36 @@ func (x *Condition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Condition.ProtoReflect.Descriptor instead. -func (*Condition) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateBatchResponse.ProtoReflect.Descriptor instead. +func (*UpdateBatchResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{95} } -func (m *Condition) GetConditionOneOf() isCondition_ConditionOneOf { - if m != nil { - return m.ConditionOneOf - } - return nil -} - -func (x *Condition) GetField() *FieldCondition { - if x, ok := x.GetConditionOneOf().(*Condition_Field); ok { - return x.Field - } - return nil -} - -func (x *Condition) GetIsEmpty() *IsEmptyCondition { - if x, ok := x.GetConditionOneOf().(*Condition_IsEmpty); ok { - return x.IsEmpty - } - return nil -} - -func (x *Condition) GetHasId() *HasIdCondition { - if x, ok := x.GetConditionOneOf().(*Condition_HasId); ok { - return x.HasId - } - return nil -} - -func (x *Condition) GetFilter() *Filter { - if x, ok := x.GetConditionOneOf().(*Condition_Filter); ok { - return x.Filter - } - return nil -} - -func (x *Condition) GetIsNull() *IsNullCondition { - if x, ok := x.GetConditionOneOf().(*Condition_IsNull); ok { - return x.IsNull +func (x *UpdateBatchResponse) GetResult() []*UpdateResult { + if x != nil { + return x.Result } return nil } -func (x *Condition) GetNested() *NestedCondition { - if x, ok := x.GetConditionOneOf().(*Condition_Nested); ok { - return x.Nested +func (x *UpdateBatchResponse) GetTime() float64 { + if x != nil { + return x.Time } - return nil -} - -type isCondition_ConditionOneOf interface { - isCondition_ConditionOneOf() -} - -type Condition_Field struct { - Field *FieldCondition `protobuf:"bytes,1,opt,name=field,proto3,oneof"` -} - -type Condition_IsEmpty struct { - IsEmpty *IsEmptyCondition `protobuf:"bytes,2,opt,name=is_empty,json=isEmpty,proto3,oneof"` -} - -type Condition_HasId struct { - HasId *HasIdCondition `protobuf:"bytes,3,opt,name=has_id,json=hasId,proto3,oneof"` -} - -type Condition_Filter struct { - Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof"` -} - -type Condition_IsNull struct { - IsNull *IsNullCondition `protobuf:"bytes,5,opt,name=is_null,json=isNull,proto3,oneof"` -} - -type Condition_Nested struct { - Nested *NestedCondition `protobuf:"bytes,6,opt,name=nested,proto3,oneof"` + return 0 } -func (*Condition_Field) isCondition_ConditionOneOf() {} - -func (*Condition_IsEmpty) isCondition_ConditionOneOf() {} - -func (*Condition_HasId) isCondition_ConditionOneOf() {} - -func (*Condition_Filter) isCondition_ConditionOneOf() {} - -func (*Condition_IsNull) isCondition_ConditionOneOf() {} - -func (*Condition_Nested) isCondition_ConditionOneOf() {} - -type IsEmptyCondition struct { +type FacetResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Hits []*FacetHit `protobuf:"bytes,1,rep,name=hits,proto3" json:"hits,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *IsEmptyCondition) Reset() { - *x = IsEmptyCondition{} +func (x *FacetResponse) Reset() { + *x = FacetResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7941,13 +8186,13 @@ func (x *IsEmptyCondition) Reset() { } } -func (x *IsEmptyCondition) String() string { +func (x *FacetResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsEmptyCondition) ProtoMessage() {} +func (*FacetResponse) ProtoMessage() {} -func (x *IsEmptyCondition) ProtoReflect() protoreflect.Message { +func (x *FacetResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7959,28 +8204,37 @@ func (x *IsEmptyCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsEmptyCondition.ProtoReflect.Descriptor instead. -func (*IsEmptyCondition) Descriptor() ([]byte, []int) { +// Deprecated: Use FacetResponse.ProtoReflect.Descriptor instead. +func (*FacetResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{96} } -func (x *IsEmptyCondition) GetKey() string { +func (x *FacetResponse) GetHits() []*FacetHit { if x != nil { - return x.Key + return x.Hits } - return "" + return nil } -type IsNullCondition struct { +func (x *FacetResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 +} + +type SearchMatrixPairsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Result *SearchMatrixPairs `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *IsNullCondition) Reset() { - *x = IsNullCondition{} +func (x *SearchMatrixPairsResponse) Reset() { + *x = SearchMatrixPairsResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7988,13 +8242,13 @@ func (x *IsNullCondition) Reset() { } } -func (x *IsNullCondition) String() string { +func (x *SearchMatrixPairsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsNullCondition) ProtoMessage() {} +func (*SearchMatrixPairsResponse) ProtoMessage() {} -func (x *IsNullCondition) ProtoReflect() protoreflect.Message { +func (x *SearchMatrixPairsResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8006,28 +8260,44 @@ func (x *IsNullCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsNullCondition.ProtoReflect.Descriptor instead. -func (*IsNullCondition) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchMatrixPairsResponse.ProtoReflect.Descriptor instead. +func (*SearchMatrixPairsResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{97} } -func (x *IsNullCondition) GetKey() string { +func (x *SearchMatrixPairsResponse) GetResult() *SearchMatrixPairs { if x != nil { - return x.Key + return x.Result } - return "" + return nil } -type HasIdCondition struct { +func (x *SearchMatrixPairsResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 +} + +func (x *SearchMatrixPairsResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type SearchMatrixOffsetsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - HasId []*PointId `protobuf:"bytes,1,rep,name=has_id,json=hasId,proto3" json:"has_id,omitempty"` + Result *SearchMatrixOffsets `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Usage *HardwareUsage `protobuf:"bytes,3,opt,name=usage,proto3,oneof" json:"usage,omitempty"` } -func (x *HasIdCondition) Reset() { - *x = HasIdCondition{} +func (x *SearchMatrixOffsetsResponse) Reset() { + *x = SearchMatrixOffsetsResponse{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8035,13 +8305,13 @@ func (x *HasIdCondition) Reset() { } } -func (x *HasIdCondition) String() string { +func (x *SearchMatrixOffsetsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HasIdCondition) ProtoMessage() {} +func (*SearchMatrixOffsetsResponse) ProtoMessage() {} -func (x *HasIdCondition) ProtoReflect() protoreflect.Message { +func (x *SearchMatrixOffsetsResponse) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8053,29 +8323,45 @@ func (x *HasIdCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HasIdCondition.ProtoReflect.Descriptor instead. -func (*HasIdCondition) Descriptor() ([]byte, []int) { +// Deprecated: Use SearchMatrixOffsetsResponse.ProtoReflect.Descriptor instead. +func (*SearchMatrixOffsetsResponse) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{98} } -func (x *HasIdCondition) GetHasId() []*PointId { +func (x *SearchMatrixOffsetsResponse) GetResult() *SearchMatrixOffsets { if x != nil { - return x.HasId + return x.Result } return nil } -type NestedCondition struct { +func (x *SearchMatrixOffsetsResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 +} + +func (x *SearchMatrixOffsetsResponse) GetUsage() *HardwareUsage { + if x != nil { + return x.Usage + } + return nil +} + +type Filter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Path to nested object - Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter condition + Should []*Condition `protobuf:"bytes,1,rep,name=should,proto3" json:"should,omitempty"` // At least one of those conditions should match + Must []*Condition `protobuf:"bytes,2,rep,name=must,proto3" json:"must,omitempty"` // All conditions must match + MustNot []*Condition `protobuf:"bytes,3,rep,name=must_not,json=mustNot,proto3" json:"must_not,omitempty"` // All conditions must NOT match + MinShould *MinShould `protobuf:"bytes,4,opt,name=min_should,json=minShould,proto3,oneof" json:"min_should,omitempty"` // At least minimum amount of given conditions should match } -func (x *NestedCondition) Reset() { - *x = NestedCondition{} +func (x *Filter) Reset() { + *x = Filter{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8083,13 +8369,13 @@ func (x *NestedCondition) Reset() { } } -func (x *NestedCondition) String() string { +func (x *Filter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NestedCondition) ProtoMessage() {} +func (*Filter) ProtoMessage() {} -func (x *NestedCondition) ProtoReflect() protoreflect.Message { +func (x *Filter) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8101,42 +8387,50 @@ func (x *NestedCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NestedCondition.ProtoReflect.Descriptor instead. -func (*NestedCondition) Descriptor() ([]byte, []int) { +// Deprecated: Use Filter.ProtoReflect.Descriptor instead. +func (*Filter) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{99} } -func (x *NestedCondition) GetKey() string { +func (x *Filter) GetShould() []*Condition { if x != nil { - return x.Key + return x.Should } - return "" + return nil } -func (x *NestedCondition) GetFilter() *Filter { +func (x *Filter) GetMust() []*Condition { if x != nil { - return x.Filter + return x.Must } return nil } -type FieldCondition struct { +func (x *Filter) GetMustNot() []*Condition { + if x != nil { + return x.MustNot + } + return nil +} + +func (x *Filter) GetMinShould() *MinShould { + if x != nil { + return x.MinShould + } + return nil +} + +type MinShould struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Match *Match `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` // Check if point has field with a given value - Range *Range `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` // Check if points value lies in a given range - GeoBoundingBox *GeoBoundingBox `protobuf:"bytes,4,opt,name=geo_bounding_box,json=geoBoundingBox,proto3" json:"geo_bounding_box,omitempty"` // Check if points geolocation lies in a given area - GeoRadius *GeoRadius `protobuf:"bytes,5,opt,name=geo_radius,json=geoRadius,proto3" json:"geo_radius,omitempty"` // Check if geo point is within a given radius - ValuesCount *ValuesCount `protobuf:"bytes,6,opt,name=values_count,json=valuesCount,proto3" json:"values_count,omitempty"` // Check number of values for a specific field - GeoPolygon *GeoPolygon `protobuf:"bytes,7,opt,name=geo_polygon,json=geoPolygon,proto3" json:"geo_polygon,omitempty"` // Check if geo point is within a given polygon - DatetimeRange *DatetimeRange `protobuf:"bytes,8,opt,name=datetime_range,json=datetimeRange,proto3" json:"datetime_range,omitempty"` // Check if datetime is within a given range + Conditions []*Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` + MinCount uint64 `protobuf:"varint,2,opt,name=min_count,json=minCount,proto3" json:"min_count,omitempty"` } -func (x *FieldCondition) Reset() { - *x = FieldCondition{} +func (x *MinShould) Reset() { + *x = MinShould{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8144,13 +8438,13 @@ func (x *FieldCondition) Reset() { } } -func (x *FieldCondition) String() string { +func (x *MinShould) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FieldCondition) ProtoMessage() {} +func (*MinShould) ProtoMessage() {} -func (x *FieldCondition) ProtoReflect() protoreflect.Message { +func (x *MinShould) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8162,87 +8456,44 @@ func (x *FieldCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FieldCondition.ProtoReflect.Descriptor instead. -func (*FieldCondition) Descriptor() ([]byte, []int) { +// Deprecated: Use MinShould.ProtoReflect.Descriptor instead. +func (*MinShould) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{100} } -func (x *FieldCondition) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *FieldCondition) GetMatch() *Match { - if x != nil { - return x.Match - } - return nil -} - -func (x *FieldCondition) GetRange() *Range { - if x != nil { - return x.Range - } - return nil -} - -func (x *FieldCondition) GetGeoBoundingBox() *GeoBoundingBox { - if x != nil { - return x.GeoBoundingBox - } - return nil -} - -func (x *FieldCondition) GetGeoRadius() *GeoRadius { - if x != nil { - return x.GeoRadius - } - return nil -} - -func (x *FieldCondition) GetValuesCount() *ValuesCount { - if x != nil { - return x.ValuesCount - } - return nil -} - -func (x *FieldCondition) GetGeoPolygon() *GeoPolygon { +func (x *MinShould) GetConditions() []*Condition { if x != nil { - return x.GeoPolygon + return x.Conditions } return nil } -func (x *FieldCondition) GetDatetimeRange() *DatetimeRange { +func (x *MinShould) GetMinCount() uint64 { if x != nil { - return x.DatetimeRange + return x.MinCount } - return nil + return 0 } -type Match struct { +type Condition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to MatchValue: + // Types that are assignable to ConditionOneOf: // - // *Match_Keyword - // *Match_Integer - // *Match_Boolean - // *Match_Text - // *Match_Keywords - // *Match_Integers - // *Match_ExceptIntegers - // *Match_ExceptKeywords - MatchValue isMatch_MatchValue `protobuf_oneof:"match_value"` + // *Condition_Field + // *Condition_IsEmpty + // *Condition_HasId + // *Condition_Filter + // *Condition_IsNull + // *Condition_Nested + // *Condition_HasVector + ConditionOneOf isCondition_ConditionOneOf `protobuf_oneof:"condition_one_of"` } -func (x *Match) Reset() { - *x = Match{} +func (x *Condition) Reset() { + *x = Condition{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8250,13 +8501,13 @@ func (x *Match) Reset() { } } -func (x *Match) String() string { +func (x *Condition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Match) ProtoMessage() {} +func (*Condition) ProtoMessage() {} -func (x *Match) ProtoReflect() protoreflect.Message { +func (x *Condition) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8268,136 +8519,123 @@ func (x *Match) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Match.ProtoReflect.Descriptor instead. -func (*Match) Descriptor() ([]byte, []int) { +// Deprecated: Use Condition.ProtoReflect.Descriptor instead. +func (*Condition) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{101} } -func (m *Match) GetMatchValue() isMatch_MatchValue { +func (m *Condition) GetConditionOneOf() isCondition_ConditionOneOf { if m != nil { - return m.MatchValue + return m.ConditionOneOf } return nil } -func (x *Match) GetKeyword() string { - if x, ok := x.GetMatchValue().(*Match_Keyword); ok { - return x.Keyword - } - return "" -} - -func (x *Match) GetInteger() int64 { - if x, ok := x.GetMatchValue().(*Match_Integer); ok { - return x.Integer +func (x *Condition) GetField() *FieldCondition { + if x, ok := x.GetConditionOneOf().(*Condition_Field); ok { + return x.Field } - return 0 + return nil } -func (x *Match) GetBoolean() bool { - if x, ok := x.GetMatchValue().(*Match_Boolean); ok { - return x.Boolean +func (x *Condition) GetIsEmpty() *IsEmptyCondition { + if x, ok := x.GetConditionOneOf().(*Condition_IsEmpty); ok { + return x.IsEmpty } - return false + return nil } -func (x *Match) GetText() string { - if x, ok := x.GetMatchValue().(*Match_Text); ok { - return x.Text +func (x *Condition) GetHasId() *HasIdCondition { + if x, ok := x.GetConditionOneOf().(*Condition_HasId); ok { + return x.HasId } - return "" + return nil } -func (x *Match) GetKeywords() *RepeatedStrings { - if x, ok := x.GetMatchValue().(*Match_Keywords); ok { - return x.Keywords +func (x *Condition) GetFilter() *Filter { + if x, ok := x.GetConditionOneOf().(*Condition_Filter); ok { + return x.Filter } return nil } -func (x *Match) GetIntegers() *RepeatedIntegers { - if x, ok := x.GetMatchValue().(*Match_Integers); ok { - return x.Integers +func (x *Condition) GetIsNull() *IsNullCondition { + if x, ok := x.GetConditionOneOf().(*Condition_IsNull); ok { + return x.IsNull } return nil } -func (x *Match) GetExceptIntegers() *RepeatedIntegers { - if x, ok := x.GetMatchValue().(*Match_ExceptIntegers); ok { - return x.ExceptIntegers +func (x *Condition) GetNested() *NestedCondition { + if x, ok := x.GetConditionOneOf().(*Condition_Nested); ok { + return x.Nested } return nil } -func (x *Match) GetExceptKeywords() *RepeatedStrings { - if x, ok := x.GetMatchValue().(*Match_ExceptKeywords); ok { - return x.ExceptKeywords +func (x *Condition) GetHasVector() *HasVectorCondition { + if x, ok := x.GetConditionOneOf().(*Condition_HasVector); ok { + return x.HasVector } return nil } -type isMatch_MatchValue interface { - isMatch_MatchValue() -} - -type Match_Keyword struct { - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3,oneof"` // Match string keyword +type isCondition_ConditionOneOf interface { + isCondition_ConditionOneOf() } -type Match_Integer struct { - Integer int64 `protobuf:"varint,2,opt,name=integer,proto3,oneof"` // Match integer +type Condition_Field struct { + Field *FieldCondition `protobuf:"bytes,1,opt,name=field,proto3,oneof"` } -type Match_Boolean struct { - Boolean bool `protobuf:"varint,3,opt,name=boolean,proto3,oneof"` // Match boolean +type Condition_IsEmpty struct { + IsEmpty *IsEmptyCondition `protobuf:"bytes,2,opt,name=is_empty,json=isEmpty,proto3,oneof"` } -type Match_Text struct { - Text string `protobuf:"bytes,4,opt,name=text,proto3,oneof"` // Match text +type Condition_HasId struct { + HasId *HasIdCondition `protobuf:"bytes,3,opt,name=has_id,json=hasId,proto3,oneof"` } -type Match_Keywords struct { - Keywords *RepeatedStrings `protobuf:"bytes,5,opt,name=keywords,proto3,oneof"` // Match multiple keywords +type Condition_Filter struct { + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof"` } -type Match_Integers struct { - Integers *RepeatedIntegers `protobuf:"bytes,6,opt,name=integers,proto3,oneof"` // Match multiple integers +type Condition_IsNull struct { + IsNull *IsNullCondition `protobuf:"bytes,5,opt,name=is_null,json=isNull,proto3,oneof"` } -type Match_ExceptIntegers struct { - ExceptIntegers *RepeatedIntegers `protobuf:"bytes,7,opt,name=except_integers,json=exceptIntegers,proto3,oneof"` // Match any other value except those integers +type Condition_Nested struct { + Nested *NestedCondition `protobuf:"bytes,6,opt,name=nested,proto3,oneof"` } -type Match_ExceptKeywords struct { - ExceptKeywords *RepeatedStrings `protobuf:"bytes,8,opt,name=except_keywords,json=exceptKeywords,proto3,oneof"` // Match any other value except those keywords +type Condition_HasVector struct { + HasVector *HasVectorCondition `protobuf:"bytes,7,opt,name=has_vector,json=hasVector,proto3,oneof"` } -func (*Match_Keyword) isMatch_MatchValue() {} - -func (*Match_Integer) isMatch_MatchValue() {} +func (*Condition_Field) isCondition_ConditionOneOf() {} -func (*Match_Boolean) isMatch_MatchValue() {} +func (*Condition_IsEmpty) isCondition_ConditionOneOf() {} -func (*Match_Text) isMatch_MatchValue() {} +func (*Condition_HasId) isCondition_ConditionOneOf() {} -func (*Match_Keywords) isMatch_MatchValue() {} +func (*Condition_Filter) isCondition_ConditionOneOf() {} -func (*Match_Integers) isMatch_MatchValue() {} +func (*Condition_IsNull) isCondition_ConditionOneOf() {} -func (*Match_ExceptIntegers) isMatch_MatchValue() {} +func (*Condition_Nested) isCondition_ConditionOneOf() {} -func (*Match_ExceptKeywords) isMatch_MatchValue() {} +func (*Condition_HasVector) isCondition_ConditionOneOf() {} -type RepeatedStrings struct { +type IsEmptyCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Strings []string `protobuf:"bytes,1,rep,name=strings,proto3" json:"strings,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } -func (x *RepeatedStrings) Reset() { - *x = RepeatedStrings{} +func (x *IsEmptyCondition) Reset() { + *x = IsEmptyCondition{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8405,13 +8643,13 @@ func (x *RepeatedStrings) Reset() { } } -func (x *RepeatedStrings) String() string { +func (x *IsEmptyCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RepeatedStrings) ProtoMessage() {} +func (*IsEmptyCondition) ProtoMessage() {} -func (x *RepeatedStrings) ProtoReflect() protoreflect.Message { +func (x *IsEmptyCondition) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8423,28 +8661,28 @@ func (x *RepeatedStrings) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RepeatedStrings.ProtoReflect.Descriptor instead. -func (*RepeatedStrings) Descriptor() ([]byte, []int) { +// Deprecated: Use IsEmptyCondition.ProtoReflect.Descriptor instead. +func (*IsEmptyCondition) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{102} } -func (x *RepeatedStrings) GetStrings() []string { +func (x *IsEmptyCondition) GetKey() string { if x != nil { - return x.Strings + return x.Key } - return nil + return "" } -type RepeatedIntegers struct { +type IsNullCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Integers []int64 `protobuf:"varint,1,rep,packed,name=integers,proto3" json:"integers,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } -func (x *RepeatedIntegers) Reset() { - *x = RepeatedIntegers{} +func (x *IsNullCondition) Reset() { + *x = IsNullCondition{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8452,13 +8690,13 @@ func (x *RepeatedIntegers) Reset() { } } -func (x *RepeatedIntegers) String() string { +func (x *IsNullCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RepeatedIntegers) ProtoMessage() {} +func (*IsNullCondition) ProtoMessage() {} -func (x *RepeatedIntegers) ProtoReflect() protoreflect.Message { +func (x *IsNullCondition) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8470,31 +8708,28 @@ func (x *RepeatedIntegers) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RepeatedIntegers.ProtoReflect.Descriptor instead. -func (*RepeatedIntegers) Descriptor() ([]byte, []int) { +// Deprecated: Use IsNullCondition.ProtoReflect.Descriptor instead. +func (*IsNullCondition) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{103} } -func (x *RepeatedIntegers) GetIntegers() []int64 { +func (x *IsNullCondition) GetKey() string { if x != nil { - return x.Integers + return x.Key } - return nil + return "" } -type Range struct { +type HasIdCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Lt *float64 `protobuf:"fixed64,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` - Gt *float64 `protobuf:"fixed64,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` - Gte *float64 `protobuf:"fixed64,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` - Lte *float64 `protobuf:"fixed64,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` + HasId []*PointId `protobuf:"bytes,1,rep,name=has_id,json=hasId,proto3" json:"has_id,omitempty"` } -func (x *Range) Reset() { - *x = Range{} +func (x *HasIdCondition) Reset() { + *x = HasIdCondition{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8502,13 +8737,13 @@ func (x *Range) Reset() { } } -func (x *Range) String() string { +func (x *HasIdCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Range) ProtoMessage() {} +func (*HasIdCondition) ProtoMessage() {} -func (x *Range) ProtoReflect() protoreflect.Message { +func (x *HasIdCondition) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8520,52 +8755,28 @@ func (x *Range) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Range.ProtoReflect.Descriptor instead. -func (*Range) Descriptor() ([]byte, []int) { +// Deprecated: Use HasIdCondition.ProtoReflect.Descriptor instead. +func (*HasIdCondition) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{104} } -func (x *Range) GetLt() float64 { - if x != nil && x.Lt != nil { - return *x.Lt - } - return 0 -} - -func (x *Range) GetGt() float64 { - if x != nil && x.Gt != nil { - return *x.Gt - } - return 0 -} - -func (x *Range) GetGte() float64 { - if x != nil && x.Gte != nil { - return *x.Gte - } - return 0 -} - -func (x *Range) GetLte() float64 { - if x != nil && x.Lte != nil { - return *x.Lte +func (x *HasIdCondition) GetHasId() []*PointId { + if x != nil { + return x.HasId } - return 0 + return nil } -type DatetimeRange struct { +type HasVectorCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Lt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` - Gt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` - Gte *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` - Lte *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` + HasVector string `protobuf:"bytes,1,opt,name=has_vector,json=hasVector,proto3" json:"has_vector,omitempty"` } -func (x *DatetimeRange) Reset() { - *x = DatetimeRange{} +func (x *HasVectorCondition) Reset() { + *x = HasVectorCondition{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8573,13 +8784,13 @@ func (x *DatetimeRange) Reset() { } } -func (x *DatetimeRange) String() string { +func (x *HasVectorCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DatetimeRange) ProtoMessage() {} +func (*HasVectorCondition) ProtoMessage() {} -func (x *DatetimeRange) ProtoReflect() protoreflect.Message { +func (x *HasVectorCondition) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8591,50 +8802,29 @@ func (x *DatetimeRange) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DatetimeRange.ProtoReflect.Descriptor instead. -func (*DatetimeRange) Descriptor() ([]byte, []int) { +// Deprecated: Use HasVectorCondition.ProtoReflect.Descriptor instead. +func (*HasVectorCondition) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{105} } -func (x *DatetimeRange) GetLt() *timestamppb.Timestamp { - if x != nil { - return x.Lt - } - return nil -} - -func (x *DatetimeRange) GetGt() *timestamppb.Timestamp { - if x != nil { - return x.Gt - } - return nil -} - -func (x *DatetimeRange) GetGte() *timestamppb.Timestamp { - if x != nil { - return x.Gte - } - return nil -} - -func (x *DatetimeRange) GetLte() *timestamppb.Timestamp { +func (x *HasVectorCondition) GetHasVector() string { if x != nil { - return x.Lte + return x.HasVector } - return nil + return "" } -type GeoBoundingBox struct { +type NestedCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TopLeft *GeoPoint `protobuf:"bytes,1,opt,name=top_left,json=topLeft,proto3" json:"top_left,omitempty"` // north-west corner - BottomRight *GeoPoint `protobuf:"bytes,2,opt,name=bottom_right,json=bottomRight,proto3" json:"bottom_right,omitempty"` // south-east corner + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Path to nested object + Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter condition } -func (x *GeoBoundingBox) Reset() { - *x = GeoBoundingBox{} +func (x *NestedCondition) Reset() { + *x = NestedCondition{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8642,13 +8832,13 @@ func (x *GeoBoundingBox) Reset() { } } -func (x *GeoBoundingBox) String() string { +func (x *NestedCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GeoBoundingBox) ProtoMessage() {} +func (*NestedCondition) ProtoMessage() {} -func (x *GeoBoundingBox) ProtoReflect() protoreflect.Message { +func (x *NestedCondition) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8660,36 +8850,42 @@ func (x *GeoBoundingBox) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GeoBoundingBox.ProtoReflect.Descriptor instead. -func (*GeoBoundingBox) Descriptor() ([]byte, []int) { +// Deprecated: Use NestedCondition.ProtoReflect.Descriptor instead. +func (*NestedCondition) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{106} } -func (x *GeoBoundingBox) GetTopLeft() *GeoPoint { +func (x *NestedCondition) GetKey() string { if x != nil { - return x.TopLeft + return x.Key } - return nil + return "" } -func (x *GeoBoundingBox) GetBottomRight() *GeoPoint { +func (x *NestedCondition) GetFilter() *Filter { if x != nil { - return x.BottomRight + return x.Filter } return nil } -type GeoRadius struct { +type FieldCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Center *GeoPoint `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"` // Center of the circle - Radius float32 `protobuf:"fixed32,2,opt,name=radius,proto3" json:"radius,omitempty"` // In meters + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Match *Match `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` // Check if point has field with a given value + Range *Range `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` // Check if points value lies in a given range + GeoBoundingBox *GeoBoundingBox `protobuf:"bytes,4,opt,name=geo_bounding_box,json=geoBoundingBox,proto3" json:"geo_bounding_box,omitempty"` // Check if points geolocation lies in a given area + GeoRadius *GeoRadius `protobuf:"bytes,5,opt,name=geo_radius,json=geoRadius,proto3" json:"geo_radius,omitempty"` // Check if geo point is within a given radius + ValuesCount *ValuesCount `protobuf:"bytes,6,opt,name=values_count,json=valuesCount,proto3" json:"values_count,omitempty"` // Check number of values for a specific field + GeoPolygon *GeoPolygon `protobuf:"bytes,7,opt,name=geo_polygon,json=geoPolygon,proto3" json:"geo_polygon,omitempty"` // Check if geo point is within a given polygon + DatetimeRange *DatetimeRange `protobuf:"bytes,8,opt,name=datetime_range,json=datetimeRange,proto3" json:"datetime_range,omitempty"` // Check if datetime is within a given range } -func (x *GeoRadius) Reset() { - *x = GeoRadius{} +func (x *FieldCondition) Reset() { + *x = FieldCondition{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8697,13 +8893,13 @@ func (x *GeoRadius) Reset() { } } -func (x *GeoRadius) String() string { +func (x *FieldCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GeoRadius) ProtoMessage() {} +func (*FieldCondition) ProtoMessage() {} -func (x *GeoRadius) ProtoReflect() protoreflect.Message { +func (x *FieldCondition) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8715,100 +8911,102 @@ func (x *GeoRadius) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GeoRadius.ProtoReflect.Descriptor instead. -func (*GeoRadius) Descriptor() ([]byte, []int) { +// Deprecated: Use FieldCondition.ProtoReflect.Descriptor instead. +func (*FieldCondition) Descriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{107} } -func (x *GeoRadius) GetCenter() *GeoPoint { +func (x *FieldCondition) GetKey() string { if x != nil { - return x.Center + return x.Key } - return nil + return "" } -func (x *GeoRadius) GetRadius() float32 { +func (x *FieldCondition) GetMatch() *Match { if x != nil { - return x.Radius + return x.Match } - return 0 + return nil } -type GeoLineString struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Points []*GeoPoint `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // Ordered sequence of GeoPoints representing the line +func (x *FieldCondition) GetRange() *Range { + if x != nil { + return x.Range + } + return nil } -func (x *GeoLineString) Reset() { - *x = GeoLineString{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FieldCondition) GetGeoBoundingBox() *GeoBoundingBox { + if x != nil { + return x.GeoBoundingBox } + return nil } -func (x *GeoLineString) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FieldCondition) GetGeoRadius() *GeoRadius { + if x != nil { + return x.GeoRadius + } + return nil } -func (*GeoLineString) ProtoMessage() {} - -func (x *GeoLineString) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[108] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FieldCondition) GetValuesCount() *ValuesCount { + if x != nil { + return x.ValuesCount } - return mi.MessageOf(x) + return nil } -// Deprecated: Use GeoLineString.ProtoReflect.Descriptor instead. -func (*GeoLineString) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{108} +func (x *FieldCondition) GetGeoPolygon() *GeoPolygon { + if x != nil { + return x.GeoPolygon + } + return nil } -func (x *GeoLineString) GetPoints() []*GeoPoint { +func (x *FieldCondition) GetDatetimeRange() *DatetimeRange { if x != nil { - return x.Points + return x.DatetimeRange } return nil } -// For a valid GeoPolygon, both the exterior and interior GeoLineStrings must consist of a minimum of 4 points. -// Additionally, the first and last points of each GeoLineString must be the same. -type GeoPolygon struct { +type Match struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Exterior *GeoLineString `protobuf:"bytes,1,opt,name=exterior,proto3" json:"exterior,omitempty"` // The exterior line bounds the surface - Interiors []*GeoLineString `protobuf:"bytes,2,rep,name=interiors,proto3" json:"interiors,omitempty"` // Interior lines (if present) bound holes within the surface + // Types that are assignable to MatchValue: + // + // *Match_Keyword + // *Match_Integer + // *Match_Boolean + // *Match_Text + // *Match_Keywords + // *Match_Integers + // *Match_ExceptIntegers + // *Match_ExceptKeywords + MatchValue isMatch_MatchValue `protobuf_oneof:"match_value"` } -func (x *GeoPolygon) Reset() { - *x = GeoPolygon{} +func (x *Match) Reset() { + *x = Match{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[109] + mi := &file_points_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GeoPolygon) String() string { +func (x *Match) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GeoPolygon) ProtoMessage() {} +func (*Match) ProtoMessage() {} -func (x *GeoPolygon) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[109] +func (x *Match) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8819,202 +9017,151 @@ func (x *GeoPolygon) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GeoPolygon.ProtoReflect.Descriptor instead. -func (*GeoPolygon) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{109} +// Deprecated: Use Match.ProtoReflect.Descriptor instead. +func (*Match) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{108} } -func (x *GeoPolygon) GetExterior() *GeoLineString { - if x != nil { - return x.Exterior +func (m *Match) GetMatchValue() isMatch_MatchValue { + if m != nil { + return m.MatchValue } return nil } -func (x *GeoPolygon) GetInteriors() []*GeoLineString { - if x != nil { - return x.Interiors +func (x *Match) GetKeyword() string { + if x, ok := x.GetMatchValue().(*Match_Keyword); ok { + return x.Keyword } - return nil -} - -type ValuesCount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Lt *uint64 `protobuf:"varint,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` - Gt *uint64 `protobuf:"varint,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` - Gte *uint64 `protobuf:"varint,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` - Lte *uint64 `protobuf:"varint,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` + return "" } -func (x *ValuesCount) Reset() { - *x = ValuesCount{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[110] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Match) GetInteger() int64 { + if x, ok := x.GetMatchValue().(*Match_Integer); ok { + return x.Integer } + return 0 } -func (x *ValuesCount) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ValuesCount) ProtoMessage() {} - -func (x *ValuesCount) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[110] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Match) GetBoolean() bool { + if x, ok := x.GetMatchValue().(*Match_Boolean); ok { + return x.Boolean } - return mi.MessageOf(x) + return false } -// Deprecated: Use ValuesCount.ProtoReflect.Descriptor instead. -func (*ValuesCount) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{110} +func (x *Match) GetText() string { + if x, ok := x.GetMatchValue().(*Match_Text); ok { + return x.Text + } + return "" } -func (x *ValuesCount) GetLt() uint64 { - if x != nil && x.Lt != nil { - return *x.Lt +func (x *Match) GetKeywords() *RepeatedStrings { + if x, ok := x.GetMatchValue().(*Match_Keywords); ok { + return x.Keywords } - return 0 + return nil } -func (x *ValuesCount) GetGt() uint64 { - if x != nil && x.Gt != nil { - return *x.Gt +func (x *Match) GetIntegers() *RepeatedIntegers { + if x, ok := x.GetMatchValue().(*Match_Integers); ok { + return x.Integers } - return 0 + return nil } -func (x *ValuesCount) GetGte() uint64 { - if x != nil && x.Gte != nil { - return *x.Gte +func (x *Match) GetExceptIntegers() *RepeatedIntegers { + if x, ok := x.GetMatchValue().(*Match_ExceptIntegers); ok { + return x.ExceptIntegers } - return 0 + return nil } -func (x *ValuesCount) GetLte() uint64 { - if x != nil && x.Lte != nil { - return *x.Lte +func (x *Match) GetExceptKeywords() *RepeatedStrings { + if x, ok := x.GetMatchValue().(*Match_ExceptKeywords); ok { + return x.ExceptKeywords } - return 0 + return nil } -type PointsSelector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to PointsSelectorOneOf: - // - // *PointsSelector_Points - // *PointsSelector_Filter - PointsSelectorOneOf isPointsSelector_PointsSelectorOneOf `protobuf_oneof:"points_selector_one_of"` +type isMatch_MatchValue interface { + isMatch_MatchValue() } -func (x *PointsSelector) Reset() { - *x = PointsSelector{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[111] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type Match_Keyword struct { + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3,oneof"` // Match string keyword } -func (x *PointsSelector) String() string { - return protoimpl.X.MessageStringOf(x) +type Match_Integer struct { + Integer int64 `protobuf:"varint,2,opt,name=integer,proto3,oneof"` // Match integer } -func (*PointsSelector) ProtoMessage() {} - -func (x *PointsSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[111] - 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) +type Match_Boolean struct { + Boolean bool `protobuf:"varint,3,opt,name=boolean,proto3,oneof"` // Match boolean } -// Deprecated: Use PointsSelector.ProtoReflect.Descriptor instead. -func (*PointsSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{111} +type Match_Text struct { + Text string `protobuf:"bytes,4,opt,name=text,proto3,oneof"` // Match text } -func (m *PointsSelector) GetPointsSelectorOneOf() isPointsSelector_PointsSelectorOneOf { - if m != nil { - return m.PointsSelectorOneOf - } - return nil +type Match_Keywords struct { + Keywords *RepeatedStrings `protobuf:"bytes,5,opt,name=keywords,proto3,oneof"` // Match multiple keywords } -func (x *PointsSelector) GetPoints() *PointsIdsList { - if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Points); ok { - return x.Points - } - return nil +type Match_Integers struct { + Integers *RepeatedIntegers `protobuf:"bytes,6,opt,name=integers,proto3,oneof"` // Match multiple integers } -func (x *PointsSelector) GetFilter() *Filter { - if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Filter); ok { - return x.Filter - } - return nil +type Match_ExceptIntegers struct { + ExceptIntegers *RepeatedIntegers `protobuf:"bytes,7,opt,name=except_integers,json=exceptIntegers,proto3,oneof"` // Match any other value except those integers } -type isPointsSelector_PointsSelectorOneOf interface { - isPointsSelector_PointsSelectorOneOf() +type Match_ExceptKeywords struct { + ExceptKeywords *RepeatedStrings `protobuf:"bytes,8,opt,name=except_keywords,json=exceptKeywords,proto3,oneof"` // Match any other value except those keywords } -type PointsSelector_Points struct { - Points *PointsIdsList `protobuf:"bytes,1,opt,name=points,proto3,oneof"` -} +func (*Match_Keyword) isMatch_MatchValue() {} -type PointsSelector_Filter struct { - Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3,oneof"` -} +func (*Match_Integer) isMatch_MatchValue() {} -func (*PointsSelector_Points) isPointsSelector_PointsSelectorOneOf() {} +func (*Match_Boolean) isMatch_MatchValue() {} -func (*PointsSelector_Filter) isPointsSelector_PointsSelectorOneOf() {} +func (*Match_Text) isMatch_MatchValue() {} -type PointsIdsList struct { +func (*Match_Keywords) isMatch_MatchValue() {} + +func (*Match_Integers) isMatch_MatchValue() {} + +func (*Match_ExceptIntegers) isMatch_MatchValue() {} + +func (*Match_ExceptKeywords) isMatch_MatchValue() {} + +type RepeatedStrings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ids []*PointId `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + Strings []string `protobuf:"bytes,1,rep,name=strings,proto3" json:"strings,omitempty"` } -func (x *PointsIdsList) Reset() { - *x = PointsIdsList{} +func (x *RepeatedStrings) Reset() { + *x = RepeatedStrings{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[112] + mi := &file_points_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsIdsList) String() string { +func (x *RepeatedStrings) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsIdsList) ProtoMessage() {} +func (*RepeatedStrings) ProtoMessage() {} -func (x *PointsIdsList) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[112] +func (x *RepeatedStrings) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9025,45 +9172,43 @@ func (x *PointsIdsList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsIdsList.ProtoReflect.Descriptor instead. -func (*PointsIdsList) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{112} +// Deprecated: Use RepeatedStrings.ProtoReflect.Descriptor instead. +func (*RepeatedStrings) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{109} } -func (x *PointsIdsList) GetIds() []*PointId { +func (x *RepeatedStrings) GetStrings() []string { if x != nil { - return x.Ids + return x.Strings } return nil } -type PointStruct struct { +type RepeatedIntegers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Payload map[string]*Value `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Vectors *Vectors `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` + Integers []int64 `protobuf:"varint,1,rep,packed,name=integers,proto3" json:"integers,omitempty"` } -func (x *PointStruct) Reset() { - *x = PointStruct{} +func (x *RepeatedIntegers) Reset() { + *x = RepeatedIntegers{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[113] + mi := &file_points_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointStruct) String() string { +func (x *RepeatedIntegers) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointStruct) ProtoMessage() {} +func (*RepeatedIntegers) ProtoMessage() {} -func (x *PointStruct) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[113] +func (x *RepeatedIntegers) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9074,58 +9219,46 @@ func (x *PointStruct) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointStruct.ProtoReflect.Descriptor instead. -func (*PointStruct) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{113} -} - -func (x *PointStruct) GetId() *PointId { - if x != nil { - return x.Id - } - return nil -} - -func (x *PointStruct) GetPayload() map[string]*Value { - if x != nil { - return x.Payload - } - return nil +// Deprecated: Use RepeatedIntegers.ProtoReflect.Descriptor instead. +func (*RepeatedIntegers) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{110} } -func (x *PointStruct) GetVectors() *Vectors { +func (x *RepeatedIntegers) GetIntegers() []int64 { if x != nil { - return x.Vectors + return x.Integers } return nil } -type GeoPoint struct { +type Range struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Lon float64 `protobuf:"fixed64,1,opt,name=lon,proto3" json:"lon,omitempty"` - Lat float64 `protobuf:"fixed64,2,opt,name=lat,proto3" json:"lat,omitempty"` + Lt *float64 `protobuf:"fixed64,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` + Gt *float64 `protobuf:"fixed64,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` + Gte *float64 `protobuf:"fixed64,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` + Lte *float64 `protobuf:"fixed64,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` } -func (x *GeoPoint) Reset() { - *x = GeoPoint{} +func (x *Range) Reset() { + *x = Range{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[114] + mi := &file_points_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GeoPoint) String() string { +func (x *Range) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GeoPoint) ProtoMessage() {} +func (*Range) ProtoMessage() {} -func (x *GeoPoint) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[114] +func (x *Range) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9136,51 +9269,67 @@ func (x *GeoPoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GeoPoint.ProtoReflect.Descriptor instead. -func (*GeoPoint) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{114} +// Deprecated: Use Range.ProtoReflect.Descriptor instead. +func (*Range) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{111} } -func (x *GeoPoint) GetLon() float64 { - if x != nil { - return x.Lon +func (x *Range) GetLt() float64 { + if x != nil && x.Lt != nil { + return *x.Lt } return 0 } -func (x *GeoPoint) GetLat() float64 { - if x != nil { - return x.Lat +func (x *Range) GetGt() float64 { + if x != nil && x.Gt != nil { + return *x.Gt } return 0 } -type PointsUpdateOperation_PointStructList struct { +func (x *Range) GetGte() float64 { + if x != nil && x.Gte != nil { + return *x.Gte + } + return 0 +} + +func (x *Range) GetLte() float64 { + if x != nil && x.Lte != nil { + return *x.Lte + } + return 0 +} + +type DatetimeRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points []*PointStruct `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Lt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` + Gt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` + Gte *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` + Lte *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` } -func (x *PointsUpdateOperation_PointStructList) Reset() { - *x = PointsUpdateOperation_PointStructList{} +func (x *DatetimeRange) Reset() { + *x = DatetimeRange{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[117] + mi := &file_points_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_PointStructList) String() string { +func (x *DatetimeRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_PointStructList) ProtoMessage() {} +func (*DatetimeRange) ProtoMessage() {} -func (x *PointsUpdateOperation_PointStructList) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[117] +func (x *DatetimeRange) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9191,53 +9340,65 @@ func (x *PointsUpdateOperation_PointStructList) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_PointStructList.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_PointStructList) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 0} +// Deprecated: Use DatetimeRange.ProtoReflect.Descriptor instead. +func (*DatetimeRange) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{112} } -func (x *PointsUpdateOperation_PointStructList) GetPoints() []*PointStruct { +func (x *DatetimeRange) GetLt() *timestamppb.Timestamp { if x != nil { - return x.Points + return x.Lt } return nil } -func (x *PointsUpdateOperation_PointStructList) GetShardKeySelector() *ShardKeySelector { +func (x *DatetimeRange) GetGt() *timestamppb.Timestamp { if x != nil { - return x.ShardKeySelector + return x.Gt } return nil } -type PointsUpdateOperation_SetPayload struct { +func (x *DatetimeRange) GetGte() *timestamppb.Timestamp { + if x != nil { + return x.Gte + } + return nil +} + +func (x *DatetimeRange) GetLte() *timestamppb.Timestamp { + if x != nil { + return x.Lte + } + return nil +} + +type GeoBoundingBox struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Payload map[string]*Value `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys - Key *string `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload + TopLeft *GeoPoint `protobuf:"bytes,1,opt,name=top_left,json=topLeft,proto3" json:"top_left,omitempty"` // north-west corner + BottomRight *GeoPoint `protobuf:"bytes,2,opt,name=bottom_right,json=bottomRight,proto3" json:"bottom_right,omitempty"` // south-east corner } -func (x *PointsUpdateOperation_SetPayload) Reset() { - *x = PointsUpdateOperation_SetPayload{} +func (x *GeoBoundingBox) Reset() { + *x = GeoBoundingBox{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[118] + mi := &file_points_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_SetPayload) String() string { +func (x *GeoBoundingBox) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_SetPayload) ProtoMessage() {} +func (*GeoBoundingBox) ProtoMessage() {} -func (x *PointsUpdateOperation_SetPayload) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[118] +func (x *GeoBoundingBox) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9248,67 +9409,51 @@ func (x *PointsUpdateOperation_SetPayload) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_SetPayload.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_SetPayload) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 1} -} - -func (x *PointsUpdateOperation_SetPayload) GetPayload() map[string]*Value { - if x != nil { - return x.Payload - } - return nil +// Deprecated: Use GeoBoundingBox.ProtoReflect.Descriptor instead. +func (*GeoBoundingBox) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{113} } -func (x *PointsUpdateOperation_SetPayload) GetPointsSelector() *PointsSelector { +func (x *GeoBoundingBox) GetTopLeft() *GeoPoint { if x != nil { - return x.PointsSelector + return x.TopLeft } return nil } -func (x *PointsUpdateOperation_SetPayload) GetShardKeySelector() *ShardKeySelector { +func (x *GeoBoundingBox) GetBottomRight() *GeoPoint { if x != nil { - return x.ShardKeySelector + return x.BottomRight } return nil } -func (x *PointsUpdateOperation_SetPayload) GetKey() string { - if x != nil && x.Key != nil { - return *x.Key - } - return "" -} - -type PointsUpdateOperation_OverwritePayload struct { +type GeoRadius struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Payload map[string]*Value `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys - Key *string `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload + Center *GeoPoint `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"` // Center of the circle + Radius float32 `protobuf:"fixed32,2,opt,name=radius,proto3" json:"radius,omitempty"` // In meters } -func (x *PointsUpdateOperation_OverwritePayload) Reset() { - *x = PointsUpdateOperation_OverwritePayload{} +func (x *GeoRadius) Reset() { + *x = GeoRadius{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[119] + mi := &file_points_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_OverwritePayload) String() string { +func (x *GeoRadius) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_OverwritePayload) ProtoMessage() {} +func (*GeoRadius) ProtoMessage() {} -func (x *PointsUpdateOperation_OverwritePayload) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[119] +func (x *GeoRadius) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9319,66 +9464,50 @@ func (x *PointsUpdateOperation_OverwritePayload) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_OverwritePayload.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_OverwritePayload) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 2} -} - -func (x *PointsUpdateOperation_OverwritePayload) GetPayload() map[string]*Value { - if x != nil { - return x.Payload - } - return nil +// Deprecated: Use GeoRadius.ProtoReflect.Descriptor instead. +func (*GeoRadius) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{114} } -func (x *PointsUpdateOperation_OverwritePayload) GetPointsSelector() *PointsSelector { +func (x *GeoRadius) GetCenter() *GeoPoint { if x != nil { - return x.PointsSelector + return x.Center } return nil } -func (x *PointsUpdateOperation_OverwritePayload) GetShardKeySelector() *ShardKeySelector { +func (x *GeoRadius) GetRadius() float32 { if x != nil { - return x.ShardKeySelector - } - return nil -} - -func (x *PointsUpdateOperation_OverwritePayload) GetKey() string { - if x != nil && x.Key != nil { - return *x.Key + return x.Radius } - return "" + return 0 } -type PointsUpdateOperation_DeletePayload struct { +type GeoLineString struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` - PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Points []*GeoPoint `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // Ordered sequence of GeoPoints representing the line } -func (x *PointsUpdateOperation_DeletePayload) Reset() { - *x = PointsUpdateOperation_DeletePayload{} +func (x *GeoLineString) Reset() { + *x = GeoLineString{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[120] + mi := &file_points_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_DeletePayload) String() string { +func (x *GeoLineString) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_DeletePayload) ProtoMessage() {} +func (*GeoLineString) ProtoMessage() {} -func (x *PointsUpdateOperation_DeletePayload) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[120] +func (x *GeoLineString) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9389,58 +9518,103 @@ func (x *PointsUpdateOperation_DeletePayload) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_DeletePayload.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_DeletePayload) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 3} +// Deprecated: Use GeoLineString.ProtoReflect.Descriptor instead. +func (*GeoLineString) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{115} } -func (x *PointsUpdateOperation_DeletePayload) GetKeys() []string { +func (x *GeoLineString) GetPoints() []*GeoPoint { if x != nil { - return x.Keys + return x.Points } return nil } -func (x *PointsUpdateOperation_DeletePayload) GetPointsSelector() *PointsSelector { +// For a valid GeoPolygon, both the exterior and interior GeoLineStrings must consist of a minimum of 4 points. +// Additionally, the first and last points of each GeoLineString must be the same. +type GeoPolygon struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exterior *GeoLineString `protobuf:"bytes,1,opt,name=exterior,proto3" json:"exterior,omitempty"` // The exterior line bounds the surface + Interiors []*GeoLineString `protobuf:"bytes,2,rep,name=interiors,proto3" json:"interiors,omitempty"` // Interior lines (if present) bound holes within the surface +} + +func (x *GeoPolygon) Reset() { + *x = GeoPolygon{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GeoPolygon) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GeoPolygon) ProtoMessage() {} + +func (x *GeoPolygon) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[116] + 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) +} + +// Deprecated: Use GeoPolygon.ProtoReflect.Descriptor instead. +func (*GeoPolygon) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{116} +} + +func (x *GeoPolygon) GetExterior() *GeoLineString { if x != nil { - return x.PointsSelector + return x.Exterior } return nil } -func (x *PointsUpdateOperation_DeletePayload) GetShardKeySelector() *ShardKeySelector { +func (x *GeoPolygon) GetInteriors() []*GeoLineString { if x != nil { - return x.ShardKeySelector + return x.Interiors } return nil } -type PointsUpdateOperation_UpdateVectors struct { +type ValuesCount struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points []*PointVectors `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // List of points and vectors to update - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Lt *uint64 `protobuf:"varint,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` + Gt *uint64 `protobuf:"varint,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` + Gte *uint64 `protobuf:"varint,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` + Lte *uint64 `protobuf:"varint,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` } -func (x *PointsUpdateOperation_UpdateVectors) Reset() { - *x = PointsUpdateOperation_UpdateVectors{} +func (x *ValuesCount) Reset() { + *x = ValuesCount{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[121] + mi := &file_points_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_UpdateVectors) String() string { +func (x *ValuesCount) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_UpdateVectors) ProtoMessage() {} +func (*ValuesCount) ProtoMessage() {} -func (x *PointsUpdateOperation_UpdateVectors) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[121] +func (x *ValuesCount) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9451,52 +9625,68 @@ func (x *PointsUpdateOperation_UpdateVectors) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_UpdateVectors.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_UpdateVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 4} +// Deprecated: Use ValuesCount.ProtoReflect.Descriptor instead. +func (*ValuesCount) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{117} } -func (x *PointsUpdateOperation_UpdateVectors) GetPoints() []*PointVectors { - if x != nil { - return x.Points +func (x *ValuesCount) GetLt() uint64 { + if x != nil && x.Lt != nil { + return *x.Lt } - return nil + return 0 } -func (x *PointsUpdateOperation_UpdateVectors) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector +func (x *ValuesCount) GetGt() uint64 { + if x != nil && x.Gt != nil { + return *x.Gt } - return nil + return 0 } -type PointsUpdateOperation_DeleteVectors struct { +func (x *ValuesCount) GetGte() uint64 { + if x != nil && x.Gte != nil { + return *x.Gte + } + return 0 +} + +func (x *ValuesCount) GetLte() uint64 { + if x != nil && x.Lte != nil { + return *x.Lte + } + return 0 +} + +type PointsSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PointsSelector *PointsSelector `protobuf:"bytes,1,opt,name=points_selector,json=pointsSelector,proto3" json:"points_selector,omitempty"` // Affected points - Vectors *VectorsSelector `protobuf:"bytes,2,opt,name=vectors,proto3" json:"vectors,omitempty"` // List of vector names to delete - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + // Types that are assignable to PointsSelectorOneOf: + // + // *PointsSelector_Points + // *PointsSelector_Filter + PointsSelectorOneOf isPointsSelector_PointsSelectorOneOf `protobuf_oneof:"points_selector_one_of"` } -func (x *PointsUpdateOperation_DeleteVectors) Reset() { - *x = PointsUpdateOperation_DeleteVectors{} +func (x *PointsSelector) Reset() { + *x = PointsSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[122] + mi := &file_points_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_DeleteVectors) String() string { +func (x *PointsSelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_DeleteVectors) ProtoMessage() {} +func (*PointsSelector) ProtoMessage() {} -func (x *PointsUpdateOperation_DeleteVectors) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[122] +func (x *PointsSelector) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9507,58 +9697,73 @@ func (x *PointsUpdateOperation_DeleteVectors) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_DeleteVectors.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_DeleteVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 5} +// Deprecated: Use PointsSelector.ProtoReflect.Descriptor instead. +func (*PointsSelector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{118} } -func (x *PointsUpdateOperation_DeleteVectors) GetPointsSelector() *PointsSelector { - if x != nil { - return x.PointsSelector +func (m *PointsSelector) GetPointsSelectorOneOf() isPointsSelector_PointsSelectorOneOf { + if m != nil { + return m.PointsSelectorOneOf } return nil } -func (x *PointsUpdateOperation_DeleteVectors) GetVectors() *VectorsSelector { - if x != nil { - return x.Vectors +func (x *PointsSelector) GetPoints() *PointsIdsList { + if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Points); ok { + return x.Points } return nil } -func (x *PointsUpdateOperation_DeleteVectors) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector +func (x *PointsSelector) GetFilter() *Filter { + if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Filter); ok { + return x.Filter } return nil } -type PointsUpdateOperation_DeletePoints struct { +type isPointsSelector_PointsSelectorOneOf interface { + isPointsSelector_PointsSelectorOneOf() +} + +type PointsSelector_Points struct { + Points *PointsIdsList `protobuf:"bytes,1,opt,name=points,proto3,oneof"` +} + +type PointsSelector_Filter struct { + Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3,oneof"` +} + +func (*PointsSelector_Points) isPointsSelector_PointsSelectorOneOf() {} + +func (*PointsSelector_Filter) isPointsSelector_PointsSelectorOneOf() {} + +type PointsIdsList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Ids []*PointId `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` } -func (x *PointsUpdateOperation_DeletePoints) Reset() { - *x = PointsUpdateOperation_DeletePoints{} +func (x *PointsIdsList) Reset() { + *x = PointsIdsList{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[123] + mi := &file_points_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_DeletePoints) String() string { +func (x *PointsIdsList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_DeletePoints) ProtoMessage() {} +func (*PointsIdsList) ProtoMessage() {} -func (x *PointsUpdateOperation_DeletePoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[123] +func (x *PointsIdsList) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9569,51 +9774,45 @@ func (x *PointsUpdateOperation_DeletePoints) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_DeletePoints.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_DeletePoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 6} -} - -func (x *PointsUpdateOperation_DeletePoints) GetPoints() *PointsSelector { - if x != nil { - return x.Points - } - return nil +// Deprecated: Use PointsIdsList.ProtoReflect.Descriptor instead. +func (*PointsIdsList) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{119} } -func (x *PointsUpdateOperation_DeletePoints) GetShardKeySelector() *ShardKeySelector { +func (x *PointsIdsList) GetIds() []*PointId { if x != nil { - return x.ShardKeySelector + return x.Ids } return nil } -type PointsUpdateOperation_ClearPayload struct { +type PointStruct struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Payload map[string]*Value `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Vectors *Vectors `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` } -func (x *PointsUpdateOperation_ClearPayload) Reset() { - *x = PointsUpdateOperation_ClearPayload{} +func (x *PointStruct) Reset() { + *x = PointStruct{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[124] + mi := &file_points_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation_ClearPayload) String() string { +func (x *PointStruct) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_ClearPayload) ProtoMessage() {} +func (*PointStruct) ProtoMessage() {} -func (x *PointsUpdateOperation_ClearPayload) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[124] +func (x *PointStruct) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9624,167 +9823,816 @@ func (x *PointsUpdateOperation_ClearPayload) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_ClearPayload.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_ClearPayload) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63, 7} +// Deprecated: Use PointStruct.ProtoReflect.Descriptor instead. +func (*PointStruct) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{120} } -func (x *PointsUpdateOperation_ClearPayload) GetPoints() *PointsSelector { +func (x *PointStruct) GetId() *PointId { if x != nil { - return x.Points + return x.Id } return nil } -func (x *PointsUpdateOperation_ClearPayload) GetShardKeySelector() *ShardKeySelector { +func (x *PointStruct) GetPayload() map[string]*Value { if x != nil { - return x.ShardKeySelector + return x.Payload } return nil } -var File_points_proto protoreflect.FileDescriptor +func (x *PointStruct) GetVectors() *Vectors { + if x != nil { + return x.Vectors + } + return nil +} -var file_points_proto_rawDesc = []byte{ - 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x1a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 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, 0x1a, 0x13, 0x6a, 0x73, 0x6f, 0x6e, - 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x3e, 0x0a, 0x0d, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x67, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, - 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x07, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x00, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x42, 0x12, 0x0a, - 0x10, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9a, 0x01, 0x0a, 0x06, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, - 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, - 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x21, 0x0a, 0x0b, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x10, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x07, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0b, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, - 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x73, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, - 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x10, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xaf, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x73, - 0x65, 0x72, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, - 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb2, 0x02, 0x0a, 0x0c, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, - 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, - 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, - 0xe0, 0x03, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, - 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, - 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, - 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, - 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, - 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x48, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, - 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4a, 0x04, 0x08, 0x03, - 0x10, 0x04, 0x22, 0xb6, 0x02, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x06, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, +type GeoPoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lon float64 `protobuf:"fixed64,1,opt,name=lon,proto3" json:"lon,omitempty"` + Lat float64 `protobuf:"fixed64,2,opt,name=lat,proto3" json:"lat,omitempty"` +} + +func (x *GeoPoint) Reset() { + *x = GeoPoint{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GeoPoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GeoPoint) ProtoMessage() {} + +func (x *GeoPoint) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[121] + 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) +} + +// Deprecated: Use GeoPoint.ProtoReflect.Descriptor instead. +func (*GeoPoint) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{121} +} + +func (x *GeoPoint) GetLon() float64 { + if x != nil { + return x.Lon + } + return 0 +} + +func (x *GeoPoint) GetLat() float64 { + if x != nil { + return x.Lat + } + return 0 +} + +type HardwareUsage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cpu uint64 `protobuf:"varint,1,opt,name=cpu,proto3" json:"cpu,omitempty"` + IoRead uint64 `protobuf:"varint,2,opt,name=io_read,json=ioRead,proto3" json:"io_read,omitempty"` + IoWrite uint64 `protobuf:"varint,3,opt,name=io_write,json=ioWrite,proto3" json:"io_write,omitempty"` +} + +func (x *HardwareUsage) Reset() { + *x = HardwareUsage{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HardwareUsage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HardwareUsage) ProtoMessage() {} + +func (x *HardwareUsage) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[122] + 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) +} + +// Deprecated: Use HardwareUsage.ProtoReflect.Descriptor instead. +func (*HardwareUsage) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{122} +} + +func (x *HardwareUsage) GetCpu() uint64 { + if x != nil { + return x.Cpu + } + return 0 +} + +func (x *HardwareUsage) GetIoRead() uint64 { + if x != nil { + return x.IoRead + } + return 0 +} + +func (x *HardwareUsage) GetIoWrite() uint64 { + if x != nil { + return x.IoWrite + } + return 0 +} + +type PointsUpdateOperation_PointStructList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points []*PointStruct `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_PointStructList) Reset() { + *x = PointsUpdateOperation_PointStructList{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_PointStructList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_PointStructList) ProtoMessage() {} + +func (x *PointsUpdateOperation_PointStructList) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[129] + 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) +} + +// Deprecated: Use PointsUpdateOperation_PointStructList.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_PointStructList) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 0} +} + +func (x *PointsUpdateOperation_PointStructList) GetPoints() []*PointStruct { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_PointStructList) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_SetPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload map[string]*Value `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Key *string `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload +} + +func (x *PointsUpdateOperation_SetPayload) Reset() { + *x = PointsUpdateOperation_SetPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_SetPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_SetPayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_SetPayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[130] + 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) +} + +// Deprecated: Use PointsUpdateOperation_SetPayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_SetPayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 1} +} + +func (x *PointsUpdateOperation_SetPayload) GetPayload() map[string]*Value { + if x != nil { + return x.Payload + } + return nil +} + +func (x *PointsUpdateOperation_SetPayload) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_SetPayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +func (x *PointsUpdateOperation_SetPayload) GetKey() string { + if x != nil && x.Key != nil { + return *x.Key + } + return "" +} + +type PointsUpdateOperation_OverwritePayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload map[string]*Value `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Key *string `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload +} + +func (x *PointsUpdateOperation_OverwritePayload) Reset() { + *x = PointsUpdateOperation_OverwritePayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_OverwritePayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_OverwritePayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_OverwritePayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[131] + 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) +} + +// Deprecated: Use PointsUpdateOperation_OverwritePayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_OverwritePayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 2} +} + +func (x *PointsUpdateOperation_OverwritePayload) GetPayload() map[string]*Value { + if x != nil { + return x.Payload + } + return nil +} + +func (x *PointsUpdateOperation_OverwritePayload) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_OverwritePayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +func (x *PointsUpdateOperation_OverwritePayload) GetKey() string { + if x != nil && x.Key != nil { + return *x.Key + } + return "" +} + +type PointsUpdateOperation_DeletePayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_DeletePayload) Reset() { + *x = PointsUpdateOperation_DeletePayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_DeletePayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_DeletePayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_DeletePayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[132] + 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) +} + +// Deprecated: Use PointsUpdateOperation_DeletePayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_DeletePayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 3} +} + +func (x *PointsUpdateOperation_DeletePayload) GetKeys() []string { + if x != nil { + return x.Keys + } + return nil +} + +func (x *PointsUpdateOperation_DeletePayload) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_DeletePayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_UpdateVectors struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points []*PointVectors `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // List of points and vectors to update + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_UpdateVectors) Reset() { + *x = PointsUpdateOperation_UpdateVectors{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_UpdateVectors) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_UpdateVectors) ProtoMessage() {} + +func (x *PointsUpdateOperation_UpdateVectors) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[133] + 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) +} + +// Deprecated: Use PointsUpdateOperation_UpdateVectors.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_UpdateVectors) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 4} +} + +func (x *PointsUpdateOperation_UpdateVectors) GetPoints() []*PointVectors { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_UpdateVectors) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_DeleteVectors struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PointsSelector *PointsSelector `protobuf:"bytes,1,opt,name=points_selector,json=pointsSelector,proto3" json:"points_selector,omitempty"` // Affected points + Vectors *VectorsSelector `protobuf:"bytes,2,opt,name=vectors,proto3" json:"vectors,omitempty"` // List of vector names to delete + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_DeleteVectors) Reset() { + *x = PointsUpdateOperation_DeleteVectors{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_DeleteVectors) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_DeleteVectors) ProtoMessage() {} + +func (x *PointsUpdateOperation_DeleteVectors) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[134] + 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) +} + +// Deprecated: Use PointsUpdateOperation_DeleteVectors.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_DeleteVectors) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 5} +} + +func (x *PointsUpdateOperation_DeleteVectors) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_DeleteVectors) GetVectors() *VectorsSelector { + if x != nil { + return x.Vectors + } + return nil +} + +func (x *PointsUpdateOperation_DeleteVectors) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_DeletePoints struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_DeletePoints) Reset() { + *x = PointsUpdateOperation_DeletePoints{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_DeletePoints) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_DeletePoints) ProtoMessage() {} + +func (x *PointsUpdateOperation_DeletePoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[135] + 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) +} + +// Deprecated: Use PointsUpdateOperation_DeletePoints.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_DeletePoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 6} +} + +func (x *PointsUpdateOperation_DeletePoints) GetPoints() *PointsSelector { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_DeletePoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_ClearPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_ClearPayload) Reset() { + *x = PointsUpdateOperation_ClearPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_ClearPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_ClearPayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_ClearPayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[136] + 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) +} + +// Deprecated: Use PointsUpdateOperation_ClearPayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_ClearPayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69, 7} +} + +func (x *PointsUpdateOperation_ClearPayload) GetPoints() *PointsSelector { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_ClearPayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +var File_points_proto protoreflect.FileDescriptor + +var file_points_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x1a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 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, 0x1a, 0x13, 0x6a, 0x73, 0x6f, 0x6e, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x3e, 0x0a, 0x0d, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x67, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, + 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x07, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x00, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x42, 0x12, 0x0a, + 0x10, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb8, 0x01, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x37, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x49, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xc3, 0x01, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x49, 0x0a, 0x0c, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd9, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x49, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xc8, 0x03, 0x0a, 0x06, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x34, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x01, 0x52, 0x07, 0x69, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x65, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x12, + 0x2e, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12, + 0x3b, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x67, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, + 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x05, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x6a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc4, + 0x02, 0x0a, 0x0c, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x01, 0x52, 0x07, 0x69, + 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x65, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, + 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, + 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, + 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, + 0x00, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x21, 0x0a, 0x0b, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x10, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2d, + 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xdf, 0x02, + 0x0a, 0x0b, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x21, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x2b, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, + 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12, 0x3b, 0x0a, + 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, + 0x43, 0x0a, 0x10, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x73, 0x22, 0xaf, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, + 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, + 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, + 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb2, 0x02, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, @@ -9795,623 +10643,299 @@ var file_points_proto_rawDesc = []byte{ 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x5a, 0x0a, 0x0c, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x07, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x07, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, - 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, - 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x91, 0x04, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, - 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, - 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xe0, 0x03, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, + 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x01, 0x52, + 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, + 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xb6, + 0x02, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, + 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, + 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x06, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, + 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, + 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, + 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x5a, 0x0a, 0x0c, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0f, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x0a, + 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, + 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x48, 0x03, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, - 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x77, 0x61, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xfd, 0x02, 0x0a, 0x13, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, - 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, - 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x10, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xb8, 0x02, 0x0a, 0x12, 0x43, - 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, - 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x6f, 0x72, 0x22, 0x91, 0x04, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, - 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xf7, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, - 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, - 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x09, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x12, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x48, 0x02, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x48, 0x03, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, - 0xcb, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, + 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0e, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, + 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, + 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xfd, 0x02, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x6b, 0x65, 0x79, 0x73, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, + 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xb8, 0x02, 0x0a, 0x12, 0x43, 0x6c, 0x65, 0x61, 0x72, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x30, 0x0a, - 0x16, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, - 0x30, 0x0a, 0x16, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, - 0x3a, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x97, 0x01, 0x0a, 0x0c, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x12, 0x3b, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x4a, 0x0a, - 0x0c, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x07, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x30, - 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x27, 0x0a, 0x0f, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x13, - 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x33, 0x0a, - 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x01, 0x52, 0x07, 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x27, 0x0a, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, - 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, - 0x6f, 0x72, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, - 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x68, 0x6e, 0x73, 0x77, 0x45, 0x66, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, - 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x0c, 0x71, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x48, 0x02, 0x52, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, - 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x0b, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, 0x66, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x78, - 0x61, 0x63, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, - 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0xba, 0x06, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x52, - 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, - 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, - 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, - 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, - 0x0a, 0x0e, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x07, 0x52, - 0x0d, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, - 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x70, - 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x05, - 0x10, 0x06, 0x22, 0x80, 0x02, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0c, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, - 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, - 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0b, - 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x22, 0x95, 0x07, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x52, - 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, - 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x61, - 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, - 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x04, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, - 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, - 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, - 0x69, 0x63, 0x65, 0x73, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, - 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1a, - 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x64, 0x61, 0x74, 0x65, - 0x74, 0x69, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa5, 0x01, - 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x84, 0x05, 0x0a, 0x0c, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, - 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x48, 0x05, - 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xd3, 0x01, 0x0a, - 0x0e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0a, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x22, 0xa5, 0x08, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x2b, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x49, 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x0a, 0x08, - 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, - 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, - 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, - 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, - 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, - 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x47, - 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x48, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x48, 0x06, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, - 0x0a, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, - 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x8c, 0x02, 0x0a, 0x14, 0x52, - 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, - 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, - 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x80, 0x09, 0x0a, 0x14, 0x52, 0x65, - 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x6e, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, - 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, - 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, - 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, - 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x05, 0x52, 0x0a, 0x77, 0x69, 0x74, - 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x06, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6e, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, + 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, + 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x08, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x49, 0x0a, 0x0c, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, - 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x67, 0x0a, 0x0d, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x22, 0x7a, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, - 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x6e, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0xa7, 0x06, 0x0a, - 0x0e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, - 0x61, 0x69, 0x72, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x72, 0x22, 0xf7, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x48, 0x02, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x48, 0x03, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xcb, 0x01, 0x0a, 0x1a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x30, 0x0a, 0x16, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0xbb, 0x01, + 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x3a, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x0c, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x07, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x4a, 0x0a, 0x0c, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x41, 0x0a, 0x07, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, + 0x50, 0x0a, 0x0c, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x78, 0x0a, 0x07, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x06, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, + 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x0d, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2e, 0x0a, + 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x36, 0x0a, + 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x27, 0x0a, 0x0f, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x22, 0x78, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x18, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x07, 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, + 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0c, 0x6f, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, + 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x68, 0x6e, 0x73, 0x77, 0x45, + 0x66, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x49, 0x0a, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x02, 0x52, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x88, + 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, 0x66, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0xba, 0x06, 0x0a, 0x0c, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, @@ -10419,224 +10943,438 @@ var file_points_proto_rawDesc = []byte{ 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x0b, + 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, + 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x80, 0x02, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x0a, 0x57, + 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, + 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, + 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x48, 0x01, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x95, 0x07, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, + 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, + 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, + 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x03, + 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x04, 0x52, + 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, + 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x73, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xa2, 0x01, + 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x05, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, + 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, 0x48, 0x00, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x08, 0x64, + 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x08, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x34, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x48, 0x01, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x84, 0x05, 0x0a, 0x0c, 0x53, + 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, + 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x03, 0x52, + 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, + 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x10, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x48, 0x05, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10, + 0x06, 0x22, 0xd3, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, + 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, + 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xa5, 0x08, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x26, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, + 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, - 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, + 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x06, 0x52, 0x08, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1d, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x07, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, + 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x08, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, + 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, + 0x8c, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x5f, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, + 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x80, + 0x09, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x49, 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x0a, + 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, + 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, + 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, + 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, + 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x1d, 0x0a, + 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x47, 0x0a, 0x10, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, + 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x05, + 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x06, 0x52, 0x08, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, + 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x52, 0x0f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x72, 0x22, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x67, 0x0a, 0x0d, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x21, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0x7a, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x31, 0x0a, 0x08, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x31, + 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x22, 0xa7, 0x06, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, + 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, - 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, + 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, - 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x22, 0xf0, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, - 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x48, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, - 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x22, 0x74, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, - 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0x6c, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x3e, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x69, 0x72, 0x52, - 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x22, 0xe4, 0x02, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x2f, 0x0a, 0x07, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, - 0x74, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, - 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x09, - 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x30, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x2c, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x42, 0x79, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x28, - 0x0a, 0x06, 0x66, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x06, 0x66, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xc6, 0x03, - 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, - 0x31, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x65, 0x66, 0x65, - 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, - 0x63, 0x68, 0x12, 0x28, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, - 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x03, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, - 0x48, 0x04, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x06, 0x52, - 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, - 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0xae, 0x07, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x31, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x65, 0x66, 0x65, - 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, - 0x63, 0x68, 0x12, 0x28, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, - 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x03, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, - 0x48, 0x04, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x06, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x48, 0x07, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x09, 0x52, 0x0f, 0x72, 0x65, - 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, + 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x0a, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, - 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x0b, 0x52, 0x0a, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x13, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0e, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, @@ -10645,8 +11383,112 @@ var file_points_proto_rawDesc = []byte{ 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x8d, 0x08, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xf0, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, + 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x0e, 0x52, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x08, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2f, 0x0a, + 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3a, + 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x74, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2f, 0x0a, 0x08, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2f, 0x0a, 0x08, + 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0x6c, 0x0a, + 0x0d, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2b, + 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x3e, 0x0a, 0x0c, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x70, + 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x22, 0xe4, 0x02, 0x0a, 0x05, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x6e, + 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x12, 0x33, + 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2c, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x75, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x66, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, + 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x6e, 0x74, 0x22, 0xc6, 0x03, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x70, + 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x02, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, + 0x03, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x06, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0xae, 0x07, 0x0a, 0x0b, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, @@ -10665,306 +11507,371 @@ var file_points_proto_rawDesc = []byte{ 0x03, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, - 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, - 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, - 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x05, 0x52, - 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x06, 0x52, 0x0a, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x09, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x07, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, 0x52, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, + 0x09, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x0a, 0x52, 0x10, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x0b, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x0c, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, + 0x69, 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xfc, 0x01, 0x0a, + 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x8d, 0x08, 0x0a, 0x10, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x65, + 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x2b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x31, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x48, 0x03, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x48, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x06, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, + 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x08, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x47, 0x0a, 0x10, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, + 0x09, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x0a, + 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x0b, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, + 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x48, 0x0c, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb7, 0x03, 0x0a, 0x0b, + 0x46, 0x61, 0x63, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, + 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, + 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x05, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x4a, 0x0a, 0x08, + 0x46, 0x61, 0x63, 0x65, 0x74, 0x48, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd4, 0x03, 0x0a, 0x12, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, + 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x02, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x05, + 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x09, 0x52, 0x0f, 0x72, 0x65, + 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, - 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x0a, 0x52, 0x0a, 0x77, 0x69, 0x74, - 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0b, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x0c, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb7, 0x03, 0x0a, 0x0b, 0x46, 0x61, 0x63, 0x65, 0x74, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, - 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, + 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, + 0x43, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x70, + 0x61, 0x69, 0x72, 0x73, 0x22, 0x66, 0x0a, 0x10, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, + 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x49, 0x64, 0x52, 0x01, 0x61, 0x12, 0x1d, 0x0a, 0x01, 0x62, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x49, 0x64, 0x52, 0x01, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x92, 0x01, 0x0a, + 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, + 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x73, 0x52, 0x6f, 0x77, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x21, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, + 0x73, 0x22, 0xe1, 0x15, 0x0a, 0x15, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x06, 0x75, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x12, 0x49, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x4b, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, + 0x52, 0x0a, 0x73, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5d, 0x0a, 0x11, + 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x56, 0x0a, 0x18, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x48, + 0x00, 0x52, 0x16, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, + 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, + 0x54, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x6c, 0x65, 0x61, + 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x63, + 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0xa2, 0x01, 0x0a, 0x0f, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x2b, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x48, 0x05, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, + 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, - 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0x0a, 0x07, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x4a, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x74, - 0x48, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xd4, 0x03, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, - 0x74, 0x72, 0x69, 0x78, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x01, 0x52, 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, - 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, - 0x6e, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x43, 0x0a, 0x11, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, - 0x2e, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, - 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x22, - 0x66, 0x0a, 0x10, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, - 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, - 0x01, 0x61, 0x12, 0x1d, 0x0a, 0x01, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x01, - 0x62, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x52, 0x6f, 0x77, - 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x02, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x69, 0x64, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0xe1, 0x15, 0x0a, - 0x15, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, - 0x49, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x73, 0x65, - 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x74, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5d, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x1a, 0x85, 0x03, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x4f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x1a, 0x91, 0x03, 0x0a, 0x10, 0x4f, 0x76, 0x65, + 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x55, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x56, 0x0a, 0x18, - 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6c, - 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, - 0x00, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x12, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0xa2, 0x01, 0x0a, 0x0f, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, - 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x85, 0x03, 0x0a, 0x0a, - 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4f, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, 0x0a, 0x0f, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x15, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x6b, 0x65, 0x79, 0x1a, 0x91, 0x03, 0x0a, 0x10, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x55, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x1a, 0xe1, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x44, 0x0a, - 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, - 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa1, 0x01, 0x0a, 0x0d, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x0a, - 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, - 0xe7, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, - 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x76, + 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, + 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x1a, 0xe1, 0x01, 0x0a, + 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, + 0x79, 0x73, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, + 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x1a, 0xa1, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xe7, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa2, - 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, @@ -10974,415 +11881,492 @@ var file_points_proto_rawDesc = []byte{ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xe2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x5b, 0x0a, 0x17, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x74, 0x6f, 0x72, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, + 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, + 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x08, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x5b, 0x0a, 0x17, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x75, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, + 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x43, + 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x03, + 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x03, 0x69, 0x6e, 0x74, + 0x12, 0x16, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, + 0x00, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x6e, 0x74, 0x22, 0xb9, 0x03, 0x0a, 0x0b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x34, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x01, 0x52, 0x08, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, + 0x86, 0x01, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0e, 0x75, + 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, 0x68, 0x69, 0x74, + 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x22, 0x3a, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x8d, 0x01, + 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, + 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8c, 0x01, + 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, + 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x91, 0x01, 0x0a, + 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, + 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, + 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x22, 0x93, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, + 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, + 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0x75, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x0a, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x03, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xb3, - 0x03, 0x0a, 0x0b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x3a, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, - 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, - 0x48, 0x01, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, - 0x08, 0x04, 0x10, 0x05, 0x22, 0x86, 0x01, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x12, 0x27, 0x0a, 0x0e, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x86, 0x01, - 0x0a, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, - 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x22, 0x3a, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x22, 0x51, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x57, - 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x56, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x61, 0x74, + 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, + 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8c, + 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, + 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa9, 0x01, + 0x0a, 0x0e, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3e, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x23, 0x0a, 0x0b, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, + 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x34, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x01, 0x52, 0x08, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, + 0x22, 0x51, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, + 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, + 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8f, + 0x01, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, + 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, + 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x22, 0x94, 0x01, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x14, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, + 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x0d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x0e, 0x53, 0x63, 0x72, 0x6f, - 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x10, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, - 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x22, 0x23, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x89, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, 0x0a, 0x07, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, - 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, - 0x48, 0x01, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, - 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x59, 0x0a, - 0x16, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x58, 0x0a, - 0x15, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5b, 0x0a, 0x17, 0x52, 0x65, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, - 0x74, 0x69, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, - 0x0d, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, - 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x48, 0x69, 0x74, 0x52, 0x04, - 0x68, 0x69, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x73, - 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x1b, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, + 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, + 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x57, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x0d, 0x46, 0x61, + 0x63, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x68, + 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x48, 0x69, 0x74, 0x52, 0x04, 0x68, 0x69, 0x74, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, + 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x72, 0x69, - 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, - 0x74, 0x69, 0x6d, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x29, 0x0a, 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x6d, 0x75, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6d, 0x75, 0x73, - 0x74, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x75, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x12, - 0x35, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x69, 0x6e, - 0x53, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x53, 0x68, 0x6f, - 0x75, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, - 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x22, 0x5b, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, - 0x6c, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x65, 0x74, 0x73, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x30, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x06, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0xc8, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2e, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, - 0x69, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x48, 0x61, 0x73, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x05, 0x68, 0x61, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x4e, - 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, - 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x22, 0x24, 0x0a, - 0x10, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x22, 0x23, 0x0a, 0x0f, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x38, 0x0a, 0x0e, 0x48, 0x61, 0x73, 0x49, - 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x68, 0x61, - 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x05, 0x68, 0x61, 0x73, - 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x64, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, + 0x64, 0x12, 0x25, 0x0a, 0x04, 0x6d, 0x75, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x04, 0x6d, 0x75, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x75, 0x73, 0x74, + 0x5f, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, + 0x75, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x68, + 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x48, 0x00, 0x52, + 0x09, 0x6d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x22, 0x5b, 0x0a, 0x09, + 0x4d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x85, 0x03, 0x0a, 0x09, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x69, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, + 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, 0x73, 0x49, 0x64, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x68, 0x61, 0x73, 0x49, 0x64, 0x12, + 0x28, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x69, 0x73, 0x5f, + 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x31, 0x0a, + 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x12, 0x3b, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x61, + 0x73, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x09, 0x68, 0x61, 0x73, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x12, 0x0a, + 0x10, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, + 0x66, 0x22, 0x24, 0x0a, 0x10, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, - 0x8b, 0x03, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x05, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, - 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x62, - 0x6f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, - 0x52, 0x0e, 0x67, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, - 0x12, 0x30, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, - 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x52, 0x09, 0x67, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, - 0x75, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0b, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x67, 0x65, - 0x6f, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, - 0x67, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x12, - 0x3c, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, - 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xf8, 0x02, - 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, - 0x1a, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x04, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x08, - 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, - 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, - 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2e, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x65, 0x72, 0x73, 0x22, 0x7d, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x13, - 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, - 0x01, 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x15, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x03, - 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x6c, 0x74, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x02, 0x6c, 0x74, 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, 0x48, 0x00, - 0x52, 0x02, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x02, 0x67, 0x74, 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, 0x48, - 0x01, 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x67, 0x74, 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, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x6c, - 0x74, 0x65, 0x18, 0x04, 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, 0x48, 0x03, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, - 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0e, - 0x47, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x2b, - 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x62, - 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x52, 0x69, 0x67, 0x68, 0x74, - 0x22, 0x4d, 0x0a, 0x09, 0x47, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x28, 0x0a, - 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, - 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, - 0x39, 0x0a, 0x0d, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x0a, 0x47, 0x65, - 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x69, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x73, - 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x13, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02, - 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x01, 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, - 0x52, 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, - 0x05, 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x22, 0x32, - 0x0a, 0x0d, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, - 0x64, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x23, 0x0a, 0x0f, 0x49, 0x73, 0x4e, 0x75, 0x6c, + 0x6c, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x38, 0x0a, 0x0e, + 0x48, 0x61, 0x73, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, + 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x1a, - 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x2e, 0x0a, 0x08, - 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x61, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x61, 0x74, 0x2a, 0x35, 0x0a, 0x11, + 0x05, 0x68, 0x61, 0x73, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x12, 0x48, 0x61, 0x73, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, + 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x68, 0x61, 0x73, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x4b, 0x0a, 0x0f, 0x4e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x8b, 0x03, 0x0a, 0x0e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, + 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x23, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x5f, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x0e, 0x67, 0x65, 0x6f, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x30, 0x0a, 0x0a, 0x67, 0x65, 0x6f, + 0x5f, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, + 0x52, 0x09, 0x67, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x67, 0x65, 0x6f, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x67, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x65, + 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x65, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, + 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, + 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xf8, 0x02, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x1a, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x07, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, + 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, + 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x73, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, + 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x63, + 0x65, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, + 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, 0x42, + 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, + 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2e, + 0x0a, 0x10, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, + 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x22, 0x7d, + 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, + 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, + 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, 0xf5, 0x01, + 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x2f, 0x0a, 0x02, 0x6c, 0x74, 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, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x2f, 0x0a, 0x02, 0x67, 0x74, 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, 0x48, 0x01, 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x31, 0x0a, 0x03, 0x67, 0x74, 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, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x04, 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, 0x48, 0x03, 0x52, + 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0e, 0x47, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x2b, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x5f, 0x6c, + 0x65, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x07, 0x74, 0x6f, 0x70, + 0x4c, 0x65, 0x66, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x62, 0x6f, + 0x74, 0x74, 0x6f, 0x6d, 0x52, 0x69, 0x67, 0x68, 0x74, 0x22, 0x4d, 0x0a, 0x09, 0x47, 0x65, 0x6f, + 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, 0x39, 0x0a, 0x0d, 0x47, 0x65, 0x6f, 0x4c, + 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x0a, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, + 0x6e, 0x12, 0x31, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, + 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x69, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x6c, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x13, + 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x02, 0x67, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6c, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, + 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, + 0x85, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x18, 0x0a, + 0x16, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x22, 0x32, 0x0a, 0x0d, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x0b, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x4a, + 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x2e, 0x0a, 0x08, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, + 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x03, 0x6c, 0x61, 0x74, 0x22, 0x55, 0x0a, 0x0d, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, + 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6f, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x69, 0x6f, 0x52, 0x65, 0x61, + 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6f, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x07, 0x69, 0x6f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x2a, 0x35, 0x0a, 0x11, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x65, 0x61, 0x6b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x6f, 0x6e, @@ -11431,7 +12415,7 @@ func file_points_proto_rawDescGZIP() []byte { } var file_points_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_points_proto_msgTypes = make([]protoimpl.MessageInfo, 130) +var file_points_proto_msgTypes = make([]protoimpl.MessageInfo, 142) var file_points_proto_goTypes = []any{ (WriteOrderingType)(0), // 0: qdrant.WriteOrderingType (ReadConsistencyType)(0), // 1: qdrant.ReadConsistencyType @@ -11445,435 +12429,487 @@ var file_points_proto_goTypes = []any{ (*ReadConsistency)(nil), // 9: qdrant.ReadConsistency (*PointId)(nil), // 10: qdrant.PointId (*SparseIndices)(nil), // 11: qdrant.SparseIndices - (*Vector)(nil), // 12: qdrant.Vector - (*DenseVector)(nil), // 13: qdrant.DenseVector - (*SparseVector)(nil), // 14: qdrant.SparseVector - (*MultiDenseVector)(nil), // 15: qdrant.MultiDenseVector - (*VectorInput)(nil), // 16: qdrant.VectorInput - (*ShardKeySelector)(nil), // 17: qdrant.ShardKeySelector - (*UpsertPoints)(nil), // 18: qdrant.UpsertPoints - (*DeletePoints)(nil), // 19: qdrant.DeletePoints - (*GetPoints)(nil), // 20: qdrant.GetPoints - (*UpdatePointVectors)(nil), // 21: qdrant.UpdatePointVectors - (*PointVectors)(nil), // 22: qdrant.PointVectors - (*DeletePointVectors)(nil), // 23: qdrant.DeletePointVectors - (*SetPayloadPoints)(nil), // 24: qdrant.SetPayloadPoints - (*DeletePayloadPoints)(nil), // 25: qdrant.DeletePayloadPoints - (*ClearPayloadPoints)(nil), // 26: qdrant.ClearPayloadPoints - (*CreateFieldIndexCollection)(nil), // 27: qdrant.CreateFieldIndexCollection - (*DeleteFieldIndexCollection)(nil), // 28: qdrant.DeleteFieldIndexCollection - (*PayloadIncludeSelector)(nil), // 29: qdrant.PayloadIncludeSelector - (*PayloadExcludeSelector)(nil), // 30: qdrant.PayloadExcludeSelector - (*WithPayloadSelector)(nil), // 31: qdrant.WithPayloadSelector - (*NamedVectors)(nil), // 32: qdrant.NamedVectors - (*Vectors)(nil), // 33: qdrant.Vectors - (*VectorsSelector)(nil), // 34: qdrant.VectorsSelector - (*WithVectorsSelector)(nil), // 35: qdrant.WithVectorsSelector - (*QuantizationSearchParams)(nil), // 36: qdrant.QuantizationSearchParams - (*SearchParams)(nil), // 37: qdrant.SearchParams - (*SearchPoints)(nil), // 38: qdrant.SearchPoints - (*SearchBatchPoints)(nil), // 39: qdrant.SearchBatchPoints - (*WithLookup)(nil), // 40: qdrant.WithLookup - (*SearchPointGroups)(nil), // 41: qdrant.SearchPointGroups - (*StartFrom)(nil), // 42: qdrant.StartFrom - (*OrderBy)(nil), // 43: qdrant.OrderBy - (*ScrollPoints)(nil), // 44: qdrant.ScrollPoints - (*LookupLocation)(nil), // 45: qdrant.LookupLocation - (*RecommendPoints)(nil), // 46: qdrant.RecommendPoints - (*RecommendBatchPoints)(nil), // 47: qdrant.RecommendBatchPoints - (*RecommendPointGroups)(nil), // 48: qdrant.RecommendPointGroups - (*TargetVector)(nil), // 49: qdrant.TargetVector - (*VectorExample)(nil), // 50: qdrant.VectorExample - (*ContextExamplePair)(nil), // 51: qdrant.ContextExamplePair - (*DiscoverPoints)(nil), // 52: qdrant.DiscoverPoints - (*DiscoverBatchPoints)(nil), // 53: qdrant.DiscoverBatchPoints - (*CountPoints)(nil), // 54: qdrant.CountPoints - (*RecommendInput)(nil), // 55: qdrant.RecommendInput - (*ContextInputPair)(nil), // 56: qdrant.ContextInputPair - (*DiscoverInput)(nil), // 57: qdrant.DiscoverInput - (*ContextInput)(nil), // 58: qdrant.ContextInput - (*Query)(nil), // 59: qdrant.Query - (*PrefetchQuery)(nil), // 60: qdrant.PrefetchQuery - (*QueryPoints)(nil), // 61: qdrant.QueryPoints - (*QueryBatchPoints)(nil), // 62: qdrant.QueryBatchPoints - (*QueryPointGroups)(nil), // 63: qdrant.QueryPointGroups - (*FacetCounts)(nil), // 64: qdrant.FacetCounts - (*FacetValue)(nil), // 65: qdrant.FacetValue - (*FacetHit)(nil), // 66: qdrant.FacetHit - (*SearchMatrixPoints)(nil), // 67: qdrant.SearchMatrixPoints - (*SearchMatrixPairs)(nil), // 68: qdrant.SearchMatrixPairs - (*SearchMatrixPair)(nil), // 69: qdrant.SearchMatrixPair - (*SearchMatrixOffsets)(nil), // 70: qdrant.SearchMatrixOffsets - (*PointsUpdateOperation)(nil), // 71: qdrant.PointsUpdateOperation - (*UpdateBatchPoints)(nil), // 72: qdrant.UpdateBatchPoints - (*PointsOperationResponse)(nil), // 73: qdrant.PointsOperationResponse - (*UpdateResult)(nil), // 74: qdrant.UpdateResult - (*OrderValue)(nil), // 75: qdrant.OrderValue - (*ScoredPoint)(nil), // 76: qdrant.ScoredPoint - (*GroupId)(nil), // 77: qdrant.GroupId - (*PointGroup)(nil), // 78: qdrant.PointGroup - (*GroupsResult)(nil), // 79: qdrant.GroupsResult - (*SearchResponse)(nil), // 80: qdrant.SearchResponse - (*QueryResponse)(nil), // 81: qdrant.QueryResponse - (*QueryBatchResponse)(nil), // 82: qdrant.QueryBatchResponse - (*QueryGroupsResponse)(nil), // 83: qdrant.QueryGroupsResponse - (*BatchResult)(nil), // 84: qdrant.BatchResult - (*SearchBatchResponse)(nil), // 85: qdrant.SearchBatchResponse - (*SearchGroupsResponse)(nil), // 86: qdrant.SearchGroupsResponse - (*CountResponse)(nil), // 87: qdrant.CountResponse - (*ScrollResponse)(nil), // 88: qdrant.ScrollResponse - (*CountResult)(nil), // 89: qdrant.CountResult - (*RetrievedPoint)(nil), // 90: qdrant.RetrievedPoint - (*GetResponse)(nil), // 91: qdrant.GetResponse - (*RecommendResponse)(nil), // 92: qdrant.RecommendResponse - (*RecommendBatchResponse)(nil), // 93: qdrant.RecommendBatchResponse - (*DiscoverResponse)(nil), // 94: qdrant.DiscoverResponse - (*DiscoverBatchResponse)(nil), // 95: qdrant.DiscoverBatchResponse - (*RecommendGroupsResponse)(nil), // 96: qdrant.RecommendGroupsResponse - (*UpdateBatchResponse)(nil), // 97: qdrant.UpdateBatchResponse - (*FacetResponse)(nil), // 98: qdrant.FacetResponse - (*SearchMatrixPairsResponse)(nil), // 99: qdrant.SearchMatrixPairsResponse - (*SearchMatrixOffsetsResponse)(nil), // 100: qdrant.SearchMatrixOffsetsResponse - (*Filter)(nil), // 101: qdrant.Filter - (*MinShould)(nil), // 102: qdrant.MinShould - (*Condition)(nil), // 103: qdrant.Condition - (*IsEmptyCondition)(nil), // 104: qdrant.IsEmptyCondition - (*IsNullCondition)(nil), // 105: qdrant.IsNullCondition - (*HasIdCondition)(nil), // 106: qdrant.HasIdCondition - (*NestedCondition)(nil), // 107: qdrant.NestedCondition - (*FieldCondition)(nil), // 108: qdrant.FieldCondition - (*Match)(nil), // 109: qdrant.Match - (*RepeatedStrings)(nil), // 110: qdrant.RepeatedStrings - (*RepeatedIntegers)(nil), // 111: qdrant.RepeatedIntegers - (*Range)(nil), // 112: qdrant.Range - (*DatetimeRange)(nil), // 113: qdrant.DatetimeRange - (*GeoBoundingBox)(nil), // 114: qdrant.GeoBoundingBox - (*GeoRadius)(nil), // 115: qdrant.GeoRadius - (*GeoLineString)(nil), // 116: qdrant.GeoLineString - (*GeoPolygon)(nil), // 117: qdrant.GeoPolygon - (*ValuesCount)(nil), // 118: qdrant.ValuesCount - (*PointsSelector)(nil), // 119: qdrant.PointsSelector - (*PointsIdsList)(nil), // 120: qdrant.PointsIdsList - (*PointStruct)(nil), // 121: qdrant.PointStruct - (*GeoPoint)(nil), // 122: qdrant.GeoPoint - nil, // 123: qdrant.SetPayloadPoints.PayloadEntry - nil, // 124: qdrant.NamedVectors.VectorsEntry - (*PointsUpdateOperation_PointStructList)(nil), // 125: qdrant.PointsUpdateOperation.PointStructList - (*PointsUpdateOperation_SetPayload)(nil), // 126: qdrant.PointsUpdateOperation.SetPayload - (*PointsUpdateOperation_OverwritePayload)(nil), // 127: qdrant.PointsUpdateOperation.OverwritePayload - (*PointsUpdateOperation_DeletePayload)(nil), // 128: qdrant.PointsUpdateOperation.DeletePayload - (*PointsUpdateOperation_UpdateVectors)(nil), // 129: qdrant.PointsUpdateOperation.UpdateVectors - (*PointsUpdateOperation_DeleteVectors)(nil), // 130: qdrant.PointsUpdateOperation.DeleteVectors - (*PointsUpdateOperation_DeletePoints)(nil), // 131: qdrant.PointsUpdateOperation.DeletePoints - (*PointsUpdateOperation_ClearPayload)(nil), // 132: qdrant.PointsUpdateOperation.ClearPayload - nil, // 133: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry - nil, // 134: qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry - nil, // 135: qdrant.ScoredPoint.PayloadEntry - nil, // 136: qdrant.RetrievedPoint.PayloadEntry - nil, // 137: qdrant.PointStruct.PayloadEntry - (*ShardKey)(nil), // 138: qdrant.ShardKey - (*PayloadIndexParams)(nil), // 139: qdrant.PayloadIndexParams - (*timestamppb.Timestamp)(nil), // 140: google.protobuf.Timestamp - (*Value)(nil), // 141: qdrant.Value + (*Document)(nil), // 12: qdrant.Document + (*Image)(nil), // 13: qdrant.Image + (*InferenceObject)(nil), // 14: qdrant.InferenceObject + (*Vector)(nil), // 15: qdrant.Vector + (*VectorOutput)(nil), // 16: qdrant.VectorOutput + (*DenseVector)(nil), // 17: qdrant.DenseVector + (*SparseVector)(nil), // 18: qdrant.SparseVector + (*MultiDenseVector)(nil), // 19: qdrant.MultiDenseVector + (*VectorInput)(nil), // 20: qdrant.VectorInput + (*ShardKeySelector)(nil), // 21: qdrant.ShardKeySelector + (*UpsertPoints)(nil), // 22: qdrant.UpsertPoints + (*DeletePoints)(nil), // 23: qdrant.DeletePoints + (*GetPoints)(nil), // 24: qdrant.GetPoints + (*UpdatePointVectors)(nil), // 25: qdrant.UpdatePointVectors + (*PointVectors)(nil), // 26: qdrant.PointVectors + (*DeletePointVectors)(nil), // 27: qdrant.DeletePointVectors + (*SetPayloadPoints)(nil), // 28: qdrant.SetPayloadPoints + (*DeletePayloadPoints)(nil), // 29: qdrant.DeletePayloadPoints + (*ClearPayloadPoints)(nil), // 30: qdrant.ClearPayloadPoints + (*CreateFieldIndexCollection)(nil), // 31: qdrant.CreateFieldIndexCollection + (*DeleteFieldIndexCollection)(nil), // 32: qdrant.DeleteFieldIndexCollection + (*PayloadIncludeSelector)(nil), // 33: qdrant.PayloadIncludeSelector + (*PayloadExcludeSelector)(nil), // 34: qdrant.PayloadExcludeSelector + (*WithPayloadSelector)(nil), // 35: qdrant.WithPayloadSelector + (*NamedVectors)(nil), // 36: qdrant.NamedVectors + (*NamedVectorsOutput)(nil), // 37: qdrant.NamedVectorsOutput + (*Vectors)(nil), // 38: qdrant.Vectors + (*VectorsOutput)(nil), // 39: qdrant.VectorsOutput + (*VectorsSelector)(nil), // 40: qdrant.VectorsSelector + (*WithVectorsSelector)(nil), // 41: qdrant.WithVectorsSelector + (*QuantizationSearchParams)(nil), // 42: qdrant.QuantizationSearchParams + (*SearchParams)(nil), // 43: qdrant.SearchParams + (*SearchPoints)(nil), // 44: qdrant.SearchPoints + (*SearchBatchPoints)(nil), // 45: qdrant.SearchBatchPoints + (*WithLookup)(nil), // 46: qdrant.WithLookup + (*SearchPointGroups)(nil), // 47: qdrant.SearchPointGroups + (*StartFrom)(nil), // 48: qdrant.StartFrom + (*OrderBy)(nil), // 49: qdrant.OrderBy + (*ScrollPoints)(nil), // 50: qdrant.ScrollPoints + (*LookupLocation)(nil), // 51: qdrant.LookupLocation + (*RecommendPoints)(nil), // 52: qdrant.RecommendPoints + (*RecommendBatchPoints)(nil), // 53: qdrant.RecommendBatchPoints + (*RecommendPointGroups)(nil), // 54: qdrant.RecommendPointGroups + (*TargetVector)(nil), // 55: qdrant.TargetVector + (*VectorExample)(nil), // 56: qdrant.VectorExample + (*ContextExamplePair)(nil), // 57: qdrant.ContextExamplePair + (*DiscoverPoints)(nil), // 58: qdrant.DiscoverPoints + (*DiscoverBatchPoints)(nil), // 59: qdrant.DiscoverBatchPoints + (*CountPoints)(nil), // 60: qdrant.CountPoints + (*RecommendInput)(nil), // 61: qdrant.RecommendInput + (*ContextInputPair)(nil), // 62: qdrant.ContextInputPair + (*DiscoverInput)(nil), // 63: qdrant.DiscoverInput + (*ContextInput)(nil), // 64: qdrant.ContextInput + (*Query)(nil), // 65: qdrant.Query + (*PrefetchQuery)(nil), // 66: qdrant.PrefetchQuery + (*QueryPoints)(nil), // 67: qdrant.QueryPoints + (*QueryBatchPoints)(nil), // 68: qdrant.QueryBatchPoints + (*QueryPointGroups)(nil), // 69: qdrant.QueryPointGroups + (*FacetCounts)(nil), // 70: qdrant.FacetCounts + (*FacetValue)(nil), // 71: qdrant.FacetValue + (*FacetHit)(nil), // 72: qdrant.FacetHit + (*SearchMatrixPoints)(nil), // 73: qdrant.SearchMatrixPoints + (*SearchMatrixPairs)(nil), // 74: qdrant.SearchMatrixPairs + (*SearchMatrixPair)(nil), // 75: qdrant.SearchMatrixPair + (*SearchMatrixOffsets)(nil), // 76: qdrant.SearchMatrixOffsets + (*PointsUpdateOperation)(nil), // 77: qdrant.PointsUpdateOperation + (*UpdateBatchPoints)(nil), // 78: qdrant.UpdateBatchPoints + (*PointsOperationResponse)(nil), // 79: qdrant.PointsOperationResponse + (*UpdateResult)(nil), // 80: qdrant.UpdateResult + (*OrderValue)(nil), // 81: qdrant.OrderValue + (*ScoredPoint)(nil), // 82: qdrant.ScoredPoint + (*GroupId)(nil), // 83: qdrant.GroupId + (*PointGroup)(nil), // 84: qdrant.PointGroup + (*GroupsResult)(nil), // 85: qdrant.GroupsResult + (*SearchResponse)(nil), // 86: qdrant.SearchResponse + (*QueryResponse)(nil), // 87: qdrant.QueryResponse + (*QueryBatchResponse)(nil), // 88: qdrant.QueryBatchResponse + (*QueryGroupsResponse)(nil), // 89: qdrant.QueryGroupsResponse + (*BatchResult)(nil), // 90: qdrant.BatchResult + (*SearchBatchResponse)(nil), // 91: qdrant.SearchBatchResponse + (*SearchGroupsResponse)(nil), // 92: qdrant.SearchGroupsResponse + (*CountResponse)(nil), // 93: qdrant.CountResponse + (*ScrollResponse)(nil), // 94: qdrant.ScrollResponse + (*CountResult)(nil), // 95: qdrant.CountResult + (*RetrievedPoint)(nil), // 96: qdrant.RetrievedPoint + (*GetResponse)(nil), // 97: qdrant.GetResponse + (*RecommendResponse)(nil), // 98: qdrant.RecommendResponse + (*RecommendBatchResponse)(nil), // 99: qdrant.RecommendBatchResponse + (*DiscoverResponse)(nil), // 100: qdrant.DiscoverResponse + (*DiscoverBatchResponse)(nil), // 101: qdrant.DiscoverBatchResponse + (*RecommendGroupsResponse)(nil), // 102: qdrant.RecommendGroupsResponse + (*UpdateBatchResponse)(nil), // 103: qdrant.UpdateBatchResponse + (*FacetResponse)(nil), // 104: qdrant.FacetResponse + (*SearchMatrixPairsResponse)(nil), // 105: qdrant.SearchMatrixPairsResponse + (*SearchMatrixOffsetsResponse)(nil), // 106: qdrant.SearchMatrixOffsetsResponse + (*Filter)(nil), // 107: qdrant.Filter + (*MinShould)(nil), // 108: qdrant.MinShould + (*Condition)(nil), // 109: qdrant.Condition + (*IsEmptyCondition)(nil), // 110: qdrant.IsEmptyCondition + (*IsNullCondition)(nil), // 111: qdrant.IsNullCondition + (*HasIdCondition)(nil), // 112: qdrant.HasIdCondition + (*HasVectorCondition)(nil), // 113: qdrant.HasVectorCondition + (*NestedCondition)(nil), // 114: qdrant.NestedCondition + (*FieldCondition)(nil), // 115: qdrant.FieldCondition + (*Match)(nil), // 116: qdrant.Match + (*RepeatedStrings)(nil), // 117: qdrant.RepeatedStrings + (*RepeatedIntegers)(nil), // 118: qdrant.RepeatedIntegers + (*Range)(nil), // 119: qdrant.Range + (*DatetimeRange)(nil), // 120: qdrant.DatetimeRange + (*GeoBoundingBox)(nil), // 121: qdrant.GeoBoundingBox + (*GeoRadius)(nil), // 122: qdrant.GeoRadius + (*GeoLineString)(nil), // 123: qdrant.GeoLineString + (*GeoPolygon)(nil), // 124: qdrant.GeoPolygon + (*ValuesCount)(nil), // 125: qdrant.ValuesCount + (*PointsSelector)(nil), // 126: qdrant.PointsSelector + (*PointsIdsList)(nil), // 127: qdrant.PointsIdsList + (*PointStruct)(nil), // 128: qdrant.PointStruct + (*GeoPoint)(nil), // 129: qdrant.GeoPoint + (*HardwareUsage)(nil), // 130: qdrant.HardwareUsage + nil, // 131: qdrant.Document.OptionsEntry + nil, // 132: qdrant.Image.OptionsEntry + nil, // 133: qdrant.InferenceObject.OptionsEntry + nil, // 134: qdrant.SetPayloadPoints.PayloadEntry + nil, // 135: qdrant.NamedVectors.VectorsEntry + nil, // 136: qdrant.NamedVectorsOutput.VectorsEntry + (*PointsUpdateOperation_PointStructList)(nil), // 137: qdrant.PointsUpdateOperation.PointStructList + (*PointsUpdateOperation_SetPayload)(nil), // 138: qdrant.PointsUpdateOperation.SetPayload + (*PointsUpdateOperation_OverwritePayload)(nil), // 139: qdrant.PointsUpdateOperation.OverwritePayload + (*PointsUpdateOperation_DeletePayload)(nil), // 140: qdrant.PointsUpdateOperation.DeletePayload + (*PointsUpdateOperation_UpdateVectors)(nil), // 141: qdrant.PointsUpdateOperation.UpdateVectors + (*PointsUpdateOperation_DeleteVectors)(nil), // 142: qdrant.PointsUpdateOperation.DeleteVectors + (*PointsUpdateOperation_DeletePoints)(nil), // 143: qdrant.PointsUpdateOperation.DeletePoints + (*PointsUpdateOperation_ClearPayload)(nil), // 144: qdrant.PointsUpdateOperation.ClearPayload + nil, // 145: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry + nil, // 146: qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry + nil, // 147: qdrant.ScoredPoint.PayloadEntry + nil, // 148: qdrant.RetrievedPoint.PayloadEntry + nil, // 149: qdrant.PointStruct.PayloadEntry + (*Value)(nil), // 150: qdrant.Value + (*ShardKey)(nil), // 151: qdrant.ShardKey + (*PayloadIndexParams)(nil), // 152: qdrant.PayloadIndexParams + (*timestamppb.Timestamp)(nil), // 153: google.protobuf.Timestamp } var file_points_proto_depIdxs = []int32{ 0, // 0: qdrant.WriteOrdering.type:type_name -> qdrant.WriteOrderingType 1, // 1: qdrant.ReadConsistency.type:type_name -> qdrant.ReadConsistencyType - 11, // 2: qdrant.Vector.indices:type_name -> qdrant.SparseIndices - 13, // 3: qdrant.MultiDenseVector.vectors:type_name -> qdrant.DenseVector - 10, // 4: qdrant.VectorInput.id:type_name -> qdrant.PointId - 13, // 5: qdrant.VectorInput.dense:type_name -> qdrant.DenseVector - 14, // 6: qdrant.VectorInput.sparse:type_name -> qdrant.SparseVector - 15, // 7: qdrant.VectorInput.multi_dense:type_name -> qdrant.MultiDenseVector - 138, // 8: qdrant.ShardKeySelector.shard_keys:type_name -> qdrant.ShardKey - 121, // 9: qdrant.UpsertPoints.points:type_name -> qdrant.PointStruct - 8, // 10: qdrant.UpsertPoints.ordering:type_name -> qdrant.WriteOrdering - 17, // 11: qdrant.UpsertPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 119, // 12: qdrant.DeletePoints.points:type_name -> qdrant.PointsSelector - 8, // 13: qdrant.DeletePoints.ordering:type_name -> qdrant.WriteOrdering - 17, // 14: qdrant.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 10, // 15: qdrant.GetPoints.ids:type_name -> qdrant.PointId - 31, // 16: qdrant.GetPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 35, // 17: qdrant.GetPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 9, // 18: qdrant.GetPoints.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 19: qdrant.GetPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 22, // 20: qdrant.UpdatePointVectors.points:type_name -> qdrant.PointVectors - 8, // 21: qdrant.UpdatePointVectors.ordering:type_name -> qdrant.WriteOrdering - 17, // 22: qdrant.UpdatePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 10, // 23: qdrant.PointVectors.id:type_name -> qdrant.PointId - 33, // 24: qdrant.PointVectors.vectors:type_name -> qdrant.Vectors - 119, // 25: qdrant.DeletePointVectors.points_selector:type_name -> qdrant.PointsSelector - 34, // 26: qdrant.DeletePointVectors.vectors:type_name -> qdrant.VectorsSelector - 8, // 27: qdrant.DeletePointVectors.ordering:type_name -> qdrant.WriteOrdering - 17, // 28: qdrant.DeletePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 123, // 29: qdrant.SetPayloadPoints.payload:type_name -> qdrant.SetPayloadPoints.PayloadEntry - 119, // 30: qdrant.SetPayloadPoints.points_selector:type_name -> qdrant.PointsSelector - 8, // 31: qdrant.SetPayloadPoints.ordering:type_name -> qdrant.WriteOrdering - 17, // 32: qdrant.SetPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 119, // 33: qdrant.DeletePayloadPoints.points_selector:type_name -> qdrant.PointsSelector - 8, // 34: qdrant.DeletePayloadPoints.ordering:type_name -> qdrant.WriteOrdering - 17, // 35: qdrant.DeletePayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 119, // 36: qdrant.ClearPayloadPoints.points:type_name -> qdrant.PointsSelector - 8, // 37: qdrant.ClearPayloadPoints.ordering:type_name -> qdrant.WriteOrdering - 17, // 38: qdrant.ClearPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 2, // 39: qdrant.CreateFieldIndexCollection.field_type:type_name -> qdrant.FieldType - 139, // 40: qdrant.CreateFieldIndexCollection.field_index_params:type_name -> qdrant.PayloadIndexParams - 8, // 41: qdrant.CreateFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering - 8, // 42: qdrant.DeleteFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering - 29, // 43: qdrant.WithPayloadSelector.include:type_name -> qdrant.PayloadIncludeSelector - 30, // 44: qdrant.WithPayloadSelector.exclude:type_name -> qdrant.PayloadExcludeSelector - 124, // 45: qdrant.NamedVectors.vectors:type_name -> qdrant.NamedVectors.VectorsEntry - 12, // 46: qdrant.Vectors.vector:type_name -> qdrant.Vector - 32, // 47: qdrant.Vectors.vectors:type_name -> qdrant.NamedVectors - 34, // 48: qdrant.WithVectorsSelector.include:type_name -> qdrant.VectorsSelector - 36, // 49: qdrant.SearchParams.quantization:type_name -> qdrant.QuantizationSearchParams - 101, // 50: qdrant.SearchPoints.filter:type_name -> qdrant.Filter - 31, // 51: qdrant.SearchPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 37, // 52: qdrant.SearchPoints.params:type_name -> qdrant.SearchParams - 35, // 53: qdrant.SearchPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 9, // 54: qdrant.SearchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 55: qdrant.SearchPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 11, // 56: qdrant.SearchPoints.sparse_indices:type_name -> qdrant.SparseIndices - 38, // 57: qdrant.SearchBatchPoints.search_points:type_name -> qdrant.SearchPoints - 9, // 58: qdrant.SearchBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 31, // 59: qdrant.WithLookup.with_payload:type_name -> qdrant.WithPayloadSelector - 35, // 60: qdrant.WithLookup.with_vectors:type_name -> qdrant.WithVectorsSelector - 101, // 61: qdrant.SearchPointGroups.filter:type_name -> qdrant.Filter - 31, // 62: qdrant.SearchPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector - 37, // 63: qdrant.SearchPointGroups.params:type_name -> qdrant.SearchParams - 35, // 64: qdrant.SearchPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector - 9, // 65: qdrant.SearchPointGroups.read_consistency:type_name -> qdrant.ReadConsistency - 40, // 66: qdrant.SearchPointGroups.with_lookup:type_name -> qdrant.WithLookup - 17, // 67: qdrant.SearchPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector - 11, // 68: qdrant.SearchPointGroups.sparse_indices:type_name -> qdrant.SparseIndices - 140, // 69: qdrant.StartFrom.timestamp:type_name -> google.protobuf.Timestamp - 3, // 70: qdrant.OrderBy.direction:type_name -> qdrant.Direction - 42, // 71: qdrant.OrderBy.start_from:type_name -> qdrant.StartFrom - 101, // 72: qdrant.ScrollPoints.filter:type_name -> qdrant.Filter - 10, // 73: qdrant.ScrollPoints.offset:type_name -> qdrant.PointId - 31, // 74: qdrant.ScrollPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 35, // 75: qdrant.ScrollPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 9, // 76: qdrant.ScrollPoints.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 77: qdrant.ScrollPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 43, // 78: qdrant.ScrollPoints.order_by:type_name -> qdrant.OrderBy - 17, // 79: qdrant.LookupLocation.shard_key_selector:type_name -> qdrant.ShardKeySelector - 10, // 80: qdrant.RecommendPoints.positive:type_name -> qdrant.PointId - 10, // 81: qdrant.RecommendPoints.negative:type_name -> qdrant.PointId - 101, // 82: qdrant.RecommendPoints.filter:type_name -> qdrant.Filter - 31, // 83: qdrant.RecommendPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 37, // 84: qdrant.RecommendPoints.params:type_name -> qdrant.SearchParams - 35, // 85: qdrant.RecommendPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 45, // 86: qdrant.RecommendPoints.lookup_from:type_name -> qdrant.LookupLocation - 9, // 87: qdrant.RecommendPoints.read_consistency:type_name -> qdrant.ReadConsistency - 4, // 88: qdrant.RecommendPoints.strategy:type_name -> qdrant.RecommendStrategy - 12, // 89: qdrant.RecommendPoints.positive_vectors:type_name -> qdrant.Vector - 12, // 90: qdrant.RecommendPoints.negative_vectors:type_name -> qdrant.Vector - 17, // 91: qdrant.RecommendPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 46, // 92: qdrant.RecommendBatchPoints.recommend_points:type_name -> qdrant.RecommendPoints - 9, // 93: qdrant.RecommendBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 10, // 94: qdrant.RecommendPointGroups.positive:type_name -> qdrant.PointId - 10, // 95: qdrant.RecommendPointGroups.negative:type_name -> qdrant.PointId - 101, // 96: qdrant.RecommendPointGroups.filter:type_name -> qdrant.Filter - 31, // 97: qdrant.RecommendPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector - 37, // 98: qdrant.RecommendPointGroups.params:type_name -> qdrant.SearchParams - 35, // 99: qdrant.RecommendPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector - 45, // 100: qdrant.RecommendPointGroups.lookup_from:type_name -> qdrant.LookupLocation - 9, // 101: qdrant.RecommendPointGroups.read_consistency:type_name -> qdrant.ReadConsistency - 40, // 102: qdrant.RecommendPointGroups.with_lookup:type_name -> qdrant.WithLookup - 4, // 103: qdrant.RecommendPointGroups.strategy:type_name -> qdrant.RecommendStrategy - 12, // 104: qdrant.RecommendPointGroups.positive_vectors:type_name -> qdrant.Vector - 12, // 105: qdrant.RecommendPointGroups.negative_vectors:type_name -> qdrant.Vector - 17, // 106: qdrant.RecommendPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector - 50, // 107: qdrant.TargetVector.single:type_name -> qdrant.VectorExample - 10, // 108: qdrant.VectorExample.id:type_name -> qdrant.PointId - 12, // 109: qdrant.VectorExample.vector:type_name -> qdrant.Vector - 50, // 110: qdrant.ContextExamplePair.positive:type_name -> qdrant.VectorExample - 50, // 111: qdrant.ContextExamplePair.negative:type_name -> qdrant.VectorExample - 49, // 112: qdrant.DiscoverPoints.target:type_name -> qdrant.TargetVector - 51, // 113: qdrant.DiscoverPoints.context:type_name -> qdrant.ContextExamplePair - 101, // 114: qdrant.DiscoverPoints.filter:type_name -> qdrant.Filter - 31, // 115: qdrant.DiscoverPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 37, // 116: qdrant.DiscoverPoints.params:type_name -> qdrant.SearchParams - 35, // 117: qdrant.DiscoverPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 45, // 118: qdrant.DiscoverPoints.lookup_from:type_name -> qdrant.LookupLocation - 9, // 119: qdrant.DiscoverPoints.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 120: qdrant.DiscoverPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 52, // 121: qdrant.DiscoverBatchPoints.discover_points:type_name -> qdrant.DiscoverPoints - 9, // 122: qdrant.DiscoverBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 101, // 123: qdrant.CountPoints.filter:type_name -> qdrant.Filter - 9, // 124: qdrant.CountPoints.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 125: qdrant.CountPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 16, // 126: qdrant.RecommendInput.positive:type_name -> qdrant.VectorInput - 16, // 127: qdrant.RecommendInput.negative:type_name -> qdrant.VectorInput - 4, // 128: qdrant.RecommendInput.strategy:type_name -> qdrant.RecommendStrategy - 16, // 129: qdrant.ContextInputPair.positive:type_name -> qdrant.VectorInput - 16, // 130: qdrant.ContextInputPair.negative:type_name -> qdrant.VectorInput - 16, // 131: qdrant.DiscoverInput.target:type_name -> qdrant.VectorInput - 58, // 132: qdrant.DiscoverInput.context:type_name -> qdrant.ContextInput - 56, // 133: qdrant.ContextInput.pairs:type_name -> qdrant.ContextInputPair - 16, // 134: qdrant.Query.nearest:type_name -> qdrant.VectorInput - 55, // 135: qdrant.Query.recommend:type_name -> qdrant.RecommendInput - 57, // 136: qdrant.Query.discover:type_name -> qdrant.DiscoverInput - 58, // 137: qdrant.Query.context:type_name -> qdrant.ContextInput - 43, // 138: qdrant.Query.order_by:type_name -> qdrant.OrderBy - 5, // 139: qdrant.Query.fusion:type_name -> qdrant.Fusion - 6, // 140: qdrant.Query.sample:type_name -> qdrant.Sample - 60, // 141: qdrant.PrefetchQuery.prefetch:type_name -> qdrant.PrefetchQuery - 59, // 142: qdrant.PrefetchQuery.query:type_name -> qdrant.Query - 101, // 143: qdrant.PrefetchQuery.filter:type_name -> qdrant.Filter - 37, // 144: qdrant.PrefetchQuery.params:type_name -> qdrant.SearchParams - 45, // 145: qdrant.PrefetchQuery.lookup_from:type_name -> qdrant.LookupLocation - 60, // 146: qdrant.QueryPoints.prefetch:type_name -> qdrant.PrefetchQuery - 59, // 147: qdrant.QueryPoints.query:type_name -> qdrant.Query - 101, // 148: qdrant.QueryPoints.filter:type_name -> qdrant.Filter - 37, // 149: qdrant.QueryPoints.params:type_name -> qdrant.SearchParams - 35, // 150: qdrant.QueryPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 31, // 151: qdrant.QueryPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 9, // 152: qdrant.QueryPoints.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 153: qdrant.QueryPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 45, // 154: qdrant.QueryPoints.lookup_from:type_name -> qdrant.LookupLocation - 61, // 155: qdrant.QueryBatchPoints.query_points:type_name -> qdrant.QueryPoints - 9, // 156: qdrant.QueryBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 60, // 157: qdrant.QueryPointGroups.prefetch:type_name -> qdrant.PrefetchQuery - 59, // 158: qdrant.QueryPointGroups.query:type_name -> qdrant.Query - 101, // 159: qdrant.QueryPointGroups.filter:type_name -> qdrant.Filter - 37, // 160: qdrant.QueryPointGroups.params:type_name -> qdrant.SearchParams - 31, // 161: qdrant.QueryPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector - 35, // 162: qdrant.QueryPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector - 45, // 163: qdrant.QueryPointGroups.lookup_from:type_name -> qdrant.LookupLocation - 9, // 164: qdrant.QueryPointGroups.read_consistency:type_name -> qdrant.ReadConsistency - 40, // 165: qdrant.QueryPointGroups.with_lookup:type_name -> qdrant.WithLookup - 17, // 166: qdrant.QueryPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector - 101, // 167: qdrant.FacetCounts.filter:type_name -> qdrant.Filter - 9, // 168: qdrant.FacetCounts.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 169: qdrant.FacetCounts.shard_key_selector:type_name -> qdrant.ShardKeySelector - 65, // 170: qdrant.FacetHit.value:type_name -> qdrant.FacetValue - 101, // 171: qdrant.SearchMatrixPoints.filter:type_name -> qdrant.Filter - 9, // 172: qdrant.SearchMatrixPoints.read_consistency:type_name -> qdrant.ReadConsistency - 17, // 173: qdrant.SearchMatrixPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 69, // 174: qdrant.SearchMatrixPairs.pairs:type_name -> qdrant.SearchMatrixPair - 10, // 175: qdrant.SearchMatrixPair.a:type_name -> qdrant.PointId - 10, // 176: qdrant.SearchMatrixPair.b:type_name -> qdrant.PointId - 10, // 177: qdrant.SearchMatrixOffsets.ids:type_name -> qdrant.PointId - 125, // 178: qdrant.PointsUpdateOperation.upsert:type_name -> qdrant.PointsUpdateOperation.PointStructList - 119, // 179: qdrant.PointsUpdateOperation.delete_deprecated:type_name -> qdrant.PointsSelector - 126, // 180: qdrant.PointsUpdateOperation.set_payload:type_name -> qdrant.PointsUpdateOperation.SetPayload - 127, // 181: qdrant.PointsUpdateOperation.overwrite_payload:type_name -> qdrant.PointsUpdateOperation.OverwritePayload - 128, // 182: qdrant.PointsUpdateOperation.delete_payload:type_name -> qdrant.PointsUpdateOperation.DeletePayload - 119, // 183: qdrant.PointsUpdateOperation.clear_payload_deprecated:type_name -> qdrant.PointsSelector - 129, // 184: qdrant.PointsUpdateOperation.update_vectors:type_name -> qdrant.PointsUpdateOperation.UpdateVectors - 130, // 185: qdrant.PointsUpdateOperation.delete_vectors:type_name -> qdrant.PointsUpdateOperation.DeleteVectors - 131, // 186: qdrant.PointsUpdateOperation.delete_points:type_name -> qdrant.PointsUpdateOperation.DeletePoints - 132, // 187: qdrant.PointsUpdateOperation.clear_payload:type_name -> qdrant.PointsUpdateOperation.ClearPayload - 71, // 188: qdrant.UpdateBatchPoints.operations:type_name -> qdrant.PointsUpdateOperation - 8, // 189: qdrant.UpdateBatchPoints.ordering:type_name -> qdrant.WriteOrdering - 74, // 190: qdrant.PointsOperationResponse.result:type_name -> qdrant.UpdateResult - 7, // 191: qdrant.UpdateResult.status:type_name -> qdrant.UpdateStatus - 10, // 192: qdrant.ScoredPoint.id:type_name -> qdrant.PointId - 135, // 193: qdrant.ScoredPoint.payload:type_name -> qdrant.ScoredPoint.PayloadEntry - 33, // 194: qdrant.ScoredPoint.vectors:type_name -> qdrant.Vectors - 138, // 195: qdrant.ScoredPoint.shard_key:type_name -> qdrant.ShardKey - 75, // 196: qdrant.ScoredPoint.order_value:type_name -> qdrant.OrderValue - 77, // 197: qdrant.PointGroup.id:type_name -> qdrant.GroupId - 76, // 198: qdrant.PointGroup.hits:type_name -> qdrant.ScoredPoint - 90, // 199: qdrant.PointGroup.lookup:type_name -> qdrant.RetrievedPoint - 78, // 200: qdrant.GroupsResult.groups:type_name -> qdrant.PointGroup - 76, // 201: qdrant.SearchResponse.result:type_name -> qdrant.ScoredPoint - 76, // 202: qdrant.QueryResponse.result:type_name -> qdrant.ScoredPoint - 84, // 203: qdrant.QueryBatchResponse.result:type_name -> qdrant.BatchResult - 79, // 204: qdrant.QueryGroupsResponse.result:type_name -> qdrant.GroupsResult - 76, // 205: qdrant.BatchResult.result:type_name -> qdrant.ScoredPoint - 84, // 206: qdrant.SearchBatchResponse.result:type_name -> qdrant.BatchResult - 79, // 207: qdrant.SearchGroupsResponse.result:type_name -> qdrant.GroupsResult - 89, // 208: qdrant.CountResponse.result:type_name -> qdrant.CountResult - 10, // 209: qdrant.ScrollResponse.next_page_offset:type_name -> qdrant.PointId - 90, // 210: qdrant.ScrollResponse.result:type_name -> qdrant.RetrievedPoint - 10, // 211: qdrant.RetrievedPoint.id:type_name -> qdrant.PointId - 136, // 212: qdrant.RetrievedPoint.payload:type_name -> qdrant.RetrievedPoint.PayloadEntry - 33, // 213: qdrant.RetrievedPoint.vectors:type_name -> qdrant.Vectors - 138, // 214: qdrant.RetrievedPoint.shard_key:type_name -> qdrant.ShardKey - 75, // 215: qdrant.RetrievedPoint.order_value:type_name -> qdrant.OrderValue - 90, // 216: qdrant.GetResponse.result:type_name -> qdrant.RetrievedPoint - 76, // 217: qdrant.RecommendResponse.result:type_name -> qdrant.ScoredPoint - 84, // 218: qdrant.RecommendBatchResponse.result:type_name -> qdrant.BatchResult - 76, // 219: qdrant.DiscoverResponse.result:type_name -> qdrant.ScoredPoint - 84, // 220: qdrant.DiscoverBatchResponse.result:type_name -> qdrant.BatchResult - 79, // 221: qdrant.RecommendGroupsResponse.result:type_name -> qdrant.GroupsResult - 74, // 222: qdrant.UpdateBatchResponse.result:type_name -> qdrant.UpdateResult - 66, // 223: qdrant.FacetResponse.hits:type_name -> qdrant.FacetHit - 68, // 224: qdrant.SearchMatrixPairsResponse.result:type_name -> qdrant.SearchMatrixPairs - 70, // 225: qdrant.SearchMatrixOffsetsResponse.result:type_name -> qdrant.SearchMatrixOffsets - 103, // 226: qdrant.Filter.should:type_name -> qdrant.Condition - 103, // 227: qdrant.Filter.must:type_name -> qdrant.Condition - 103, // 228: qdrant.Filter.must_not:type_name -> qdrant.Condition - 102, // 229: qdrant.Filter.min_should:type_name -> qdrant.MinShould - 103, // 230: qdrant.MinShould.conditions:type_name -> qdrant.Condition - 108, // 231: qdrant.Condition.field:type_name -> qdrant.FieldCondition - 104, // 232: qdrant.Condition.is_empty:type_name -> qdrant.IsEmptyCondition - 106, // 233: qdrant.Condition.has_id:type_name -> qdrant.HasIdCondition - 101, // 234: qdrant.Condition.filter:type_name -> qdrant.Filter - 105, // 235: qdrant.Condition.is_null:type_name -> qdrant.IsNullCondition - 107, // 236: qdrant.Condition.nested:type_name -> qdrant.NestedCondition - 10, // 237: qdrant.HasIdCondition.has_id:type_name -> qdrant.PointId - 101, // 238: qdrant.NestedCondition.filter:type_name -> qdrant.Filter - 109, // 239: qdrant.FieldCondition.match:type_name -> qdrant.Match - 112, // 240: qdrant.FieldCondition.range:type_name -> qdrant.Range - 114, // 241: qdrant.FieldCondition.geo_bounding_box:type_name -> qdrant.GeoBoundingBox - 115, // 242: qdrant.FieldCondition.geo_radius:type_name -> qdrant.GeoRadius - 118, // 243: qdrant.FieldCondition.values_count:type_name -> qdrant.ValuesCount - 117, // 244: qdrant.FieldCondition.geo_polygon:type_name -> qdrant.GeoPolygon - 113, // 245: qdrant.FieldCondition.datetime_range:type_name -> qdrant.DatetimeRange - 110, // 246: qdrant.Match.keywords:type_name -> qdrant.RepeatedStrings - 111, // 247: qdrant.Match.integers:type_name -> qdrant.RepeatedIntegers - 111, // 248: qdrant.Match.except_integers:type_name -> qdrant.RepeatedIntegers - 110, // 249: qdrant.Match.except_keywords:type_name -> qdrant.RepeatedStrings - 140, // 250: qdrant.DatetimeRange.lt:type_name -> google.protobuf.Timestamp - 140, // 251: qdrant.DatetimeRange.gt:type_name -> google.protobuf.Timestamp - 140, // 252: qdrant.DatetimeRange.gte:type_name -> google.protobuf.Timestamp - 140, // 253: qdrant.DatetimeRange.lte:type_name -> google.protobuf.Timestamp - 122, // 254: qdrant.GeoBoundingBox.top_left:type_name -> qdrant.GeoPoint - 122, // 255: qdrant.GeoBoundingBox.bottom_right:type_name -> qdrant.GeoPoint - 122, // 256: qdrant.GeoRadius.center:type_name -> qdrant.GeoPoint - 122, // 257: qdrant.GeoLineString.points:type_name -> qdrant.GeoPoint - 116, // 258: qdrant.GeoPolygon.exterior:type_name -> qdrant.GeoLineString - 116, // 259: qdrant.GeoPolygon.interiors:type_name -> qdrant.GeoLineString - 120, // 260: qdrant.PointsSelector.points:type_name -> qdrant.PointsIdsList - 101, // 261: qdrant.PointsSelector.filter:type_name -> qdrant.Filter - 10, // 262: qdrant.PointsIdsList.ids:type_name -> qdrant.PointId - 10, // 263: qdrant.PointStruct.id:type_name -> qdrant.PointId - 137, // 264: qdrant.PointStruct.payload:type_name -> qdrant.PointStruct.PayloadEntry - 33, // 265: qdrant.PointStruct.vectors:type_name -> qdrant.Vectors - 141, // 266: qdrant.SetPayloadPoints.PayloadEntry.value:type_name -> qdrant.Value - 12, // 267: qdrant.NamedVectors.VectorsEntry.value:type_name -> qdrant.Vector - 121, // 268: qdrant.PointsUpdateOperation.PointStructList.points:type_name -> qdrant.PointStruct - 17, // 269: qdrant.PointsUpdateOperation.PointStructList.shard_key_selector:type_name -> qdrant.ShardKeySelector - 133, // 270: qdrant.PointsUpdateOperation.SetPayload.payload:type_name -> qdrant.PointsUpdateOperation.SetPayload.PayloadEntry - 119, // 271: qdrant.PointsUpdateOperation.SetPayload.points_selector:type_name -> qdrant.PointsSelector - 17, // 272: qdrant.PointsUpdateOperation.SetPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector - 134, // 273: qdrant.PointsUpdateOperation.OverwritePayload.payload:type_name -> qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry - 119, // 274: qdrant.PointsUpdateOperation.OverwritePayload.points_selector:type_name -> qdrant.PointsSelector - 17, // 275: qdrant.PointsUpdateOperation.OverwritePayload.shard_key_selector:type_name -> qdrant.ShardKeySelector - 119, // 276: qdrant.PointsUpdateOperation.DeletePayload.points_selector:type_name -> qdrant.PointsSelector - 17, // 277: qdrant.PointsUpdateOperation.DeletePayload.shard_key_selector:type_name -> qdrant.ShardKeySelector - 22, // 278: qdrant.PointsUpdateOperation.UpdateVectors.points:type_name -> qdrant.PointVectors - 17, // 279: qdrant.PointsUpdateOperation.UpdateVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 119, // 280: qdrant.PointsUpdateOperation.DeleteVectors.points_selector:type_name -> qdrant.PointsSelector - 34, // 281: qdrant.PointsUpdateOperation.DeleteVectors.vectors:type_name -> qdrant.VectorsSelector - 17, // 282: qdrant.PointsUpdateOperation.DeleteVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 119, // 283: qdrant.PointsUpdateOperation.DeletePoints.points:type_name -> qdrant.PointsSelector - 17, // 284: qdrant.PointsUpdateOperation.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 119, // 285: qdrant.PointsUpdateOperation.ClearPayload.points:type_name -> qdrant.PointsSelector - 17, // 286: qdrant.PointsUpdateOperation.ClearPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector - 141, // 287: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry.value:type_name -> qdrant.Value - 141, // 288: qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry.value:type_name -> qdrant.Value - 141, // 289: qdrant.ScoredPoint.PayloadEntry.value:type_name -> qdrant.Value - 141, // 290: qdrant.RetrievedPoint.PayloadEntry.value:type_name -> qdrant.Value - 141, // 291: qdrant.PointStruct.PayloadEntry.value:type_name -> qdrant.Value - 292, // [292:292] is the sub-list for method output_type - 292, // [292:292] is the sub-list for method input_type - 292, // [292:292] is the sub-list for extension type_name - 292, // [292:292] is the sub-list for extension extendee - 0, // [0:292] is the sub-list for field type_name + 131, // 2: qdrant.Document.options:type_name -> qdrant.Document.OptionsEntry + 150, // 3: qdrant.Image.image:type_name -> qdrant.Value + 132, // 4: qdrant.Image.options:type_name -> qdrant.Image.OptionsEntry + 150, // 5: qdrant.InferenceObject.object:type_name -> qdrant.Value + 133, // 6: qdrant.InferenceObject.options:type_name -> qdrant.InferenceObject.OptionsEntry + 11, // 7: qdrant.Vector.indices:type_name -> qdrant.SparseIndices + 17, // 8: qdrant.Vector.dense:type_name -> qdrant.DenseVector + 18, // 9: qdrant.Vector.sparse:type_name -> qdrant.SparseVector + 19, // 10: qdrant.Vector.multi_dense:type_name -> qdrant.MultiDenseVector + 12, // 11: qdrant.Vector.document:type_name -> qdrant.Document + 13, // 12: qdrant.Vector.image:type_name -> qdrant.Image + 14, // 13: qdrant.Vector.object:type_name -> qdrant.InferenceObject + 11, // 14: qdrant.VectorOutput.indices:type_name -> qdrant.SparseIndices + 17, // 15: qdrant.VectorOutput.dense:type_name -> qdrant.DenseVector + 18, // 16: qdrant.VectorOutput.sparse:type_name -> qdrant.SparseVector + 19, // 17: qdrant.VectorOutput.multi_dense:type_name -> qdrant.MultiDenseVector + 17, // 18: qdrant.MultiDenseVector.vectors:type_name -> qdrant.DenseVector + 10, // 19: qdrant.VectorInput.id:type_name -> qdrant.PointId + 17, // 20: qdrant.VectorInput.dense:type_name -> qdrant.DenseVector + 18, // 21: qdrant.VectorInput.sparse:type_name -> qdrant.SparseVector + 19, // 22: qdrant.VectorInput.multi_dense:type_name -> qdrant.MultiDenseVector + 12, // 23: qdrant.VectorInput.document:type_name -> qdrant.Document + 13, // 24: qdrant.VectorInput.image:type_name -> qdrant.Image + 14, // 25: qdrant.VectorInput.object:type_name -> qdrant.InferenceObject + 151, // 26: qdrant.ShardKeySelector.shard_keys:type_name -> qdrant.ShardKey + 128, // 27: qdrant.UpsertPoints.points:type_name -> qdrant.PointStruct + 8, // 28: qdrant.UpsertPoints.ordering:type_name -> qdrant.WriteOrdering + 21, // 29: qdrant.UpsertPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 126, // 30: qdrant.DeletePoints.points:type_name -> qdrant.PointsSelector + 8, // 31: qdrant.DeletePoints.ordering:type_name -> qdrant.WriteOrdering + 21, // 32: qdrant.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 10, // 33: qdrant.GetPoints.ids:type_name -> qdrant.PointId + 35, // 34: qdrant.GetPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 41, // 35: qdrant.GetPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 9, // 36: qdrant.GetPoints.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 37: qdrant.GetPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 26, // 38: qdrant.UpdatePointVectors.points:type_name -> qdrant.PointVectors + 8, // 39: qdrant.UpdatePointVectors.ordering:type_name -> qdrant.WriteOrdering + 21, // 40: qdrant.UpdatePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 10, // 41: qdrant.PointVectors.id:type_name -> qdrant.PointId + 38, // 42: qdrant.PointVectors.vectors:type_name -> qdrant.Vectors + 126, // 43: qdrant.DeletePointVectors.points_selector:type_name -> qdrant.PointsSelector + 40, // 44: qdrant.DeletePointVectors.vectors:type_name -> qdrant.VectorsSelector + 8, // 45: qdrant.DeletePointVectors.ordering:type_name -> qdrant.WriteOrdering + 21, // 46: qdrant.DeletePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 134, // 47: qdrant.SetPayloadPoints.payload:type_name -> qdrant.SetPayloadPoints.PayloadEntry + 126, // 48: qdrant.SetPayloadPoints.points_selector:type_name -> qdrant.PointsSelector + 8, // 49: qdrant.SetPayloadPoints.ordering:type_name -> qdrant.WriteOrdering + 21, // 50: qdrant.SetPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 126, // 51: qdrant.DeletePayloadPoints.points_selector:type_name -> qdrant.PointsSelector + 8, // 52: qdrant.DeletePayloadPoints.ordering:type_name -> qdrant.WriteOrdering + 21, // 53: qdrant.DeletePayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 126, // 54: qdrant.ClearPayloadPoints.points:type_name -> qdrant.PointsSelector + 8, // 55: qdrant.ClearPayloadPoints.ordering:type_name -> qdrant.WriteOrdering + 21, // 56: qdrant.ClearPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 2, // 57: qdrant.CreateFieldIndexCollection.field_type:type_name -> qdrant.FieldType + 152, // 58: qdrant.CreateFieldIndexCollection.field_index_params:type_name -> qdrant.PayloadIndexParams + 8, // 59: qdrant.CreateFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering + 8, // 60: qdrant.DeleteFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering + 33, // 61: qdrant.WithPayloadSelector.include:type_name -> qdrant.PayloadIncludeSelector + 34, // 62: qdrant.WithPayloadSelector.exclude:type_name -> qdrant.PayloadExcludeSelector + 135, // 63: qdrant.NamedVectors.vectors:type_name -> qdrant.NamedVectors.VectorsEntry + 136, // 64: qdrant.NamedVectorsOutput.vectors:type_name -> qdrant.NamedVectorsOutput.VectorsEntry + 15, // 65: qdrant.Vectors.vector:type_name -> qdrant.Vector + 36, // 66: qdrant.Vectors.vectors:type_name -> qdrant.NamedVectors + 16, // 67: qdrant.VectorsOutput.vector:type_name -> qdrant.VectorOutput + 37, // 68: qdrant.VectorsOutput.vectors:type_name -> qdrant.NamedVectorsOutput + 40, // 69: qdrant.WithVectorsSelector.include:type_name -> qdrant.VectorsSelector + 42, // 70: qdrant.SearchParams.quantization:type_name -> qdrant.QuantizationSearchParams + 107, // 71: qdrant.SearchPoints.filter:type_name -> qdrant.Filter + 35, // 72: qdrant.SearchPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 43, // 73: qdrant.SearchPoints.params:type_name -> qdrant.SearchParams + 41, // 74: qdrant.SearchPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 9, // 75: qdrant.SearchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 76: qdrant.SearchPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 11, // 77: qdrant.SearchPoints.sparse_indices:type_name -> qdrant.SparseIndices + 44, // 78: qdrant.SearchBatchPoints.search_points:type_name -> qdrant.SearchPoints + 9, // 79: qdrant.SearchBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 35, // 80: qdrant.WithLookup.with_payload:type_name -> qdrant.WithPayloadSelector + 41, // 81: qdrant.WithLookup.with_vectors:type_name -> qdrant.WithVectorsSelector + 107, // 82: qdrant.SearchPointGroups.filter:type_name -> qdrant.Filter + 35, // 83: qdrant.SearchPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector + 43, // 84: qdrant.SearchPointGroups.params:type_name -> qdrant.SearchParams + 41, // 85: qdrant.SearchPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector + 9, // 86: qdrant.SearchPointGroups.read_consistency:type_name -> qdrant.ReadConsistency + 46, // 87: qdrant.SearchPointGroups.with_lookup:type_name -> qdrant.WithLookup + 21, // 88: qdrant.SearchPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector + 11, // 89: qdrant.SearchPointGroups.sparse_indices:type_name -> qdrant.SparseIndices + 153, // 90: qdrant.StartFrom.timestamp:type_name -> google.protobuf.Timestamp + 3, // 91: qdrant.OrderBy.direction:type_name -> qdrant.Direction + 48, // 92: qdrant.OrderBy.start_from:type_name -> qdrant.StartFrom + 107, // 93: qdrant.ScrollPoints.filter:type_name -> qdrant.Filter + 10, // 94: qdrant.ScrollPoints.offset:type_name -> qdrant.PointId + 35, // 95: qdrant.ScrollPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 41, // 96: qdrant.ScrollPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 9, // 97: qdrant.ScrollPoints.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 98: qdrant.ScrollPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 49, // 99: qdrant.ScrollPoints.order_by:type_name -> qdrant.OrderBy + 21, // 100: qdrant.LookupLocation.shard_key_selector:type_name -> qdrant.ShardKeySelector + 10, // 101: qdrant.RecommendPoints.positive:type_name -> qdrant.PointId + 10, // 102: qdrant.RecommendPoints.negative:type_name -> qdrant.PointId + 107, // 103: qdrant.RecommendPoints.filter:type_name -> qdrant.Filter + 35, // 104: qdrant.RecommendPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 43, // 105: qdrant.RecommendPoints.params:type_name -> qdrant.SearchParams + 41, // 106: qdrant.RecommendPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 51, // 107: qdrant.RecommendPoints.lookup_from:type_name -> qdrant.LookupLocation + 9, // 108: qdrant.RecommendPoints.read_consistency:type_name -> qdrant.ReadConsistency + 4, // 109: qdrant.RecommendPoints.strategy:type_name -> qdrant.RecommendStrategy + 15, // 110: qdrant.RecommendPoints.positive_vectors:type_name -> qdrant.Vector + 15, // 111: qdrant.RecommendPoints.negative_vectors:type_name -> qdrant.Vector + 21, // 112: qdrant.RecommendPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 52, // 113: qdrant.RecommendBatchPoints.recommend_points:type_name -> qdrant.RecommendPoints + 9, // 114: qdrant.RecommendBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 10, // 115: qdrant.RecommendPointGroups.positive:type_name -> qdrant.PointId + 10, // 116: qdrant.RecommendPointGroups.negative:type_name -> qdrant.PointId + 107, // 117: qdrant.RecommendPointGroups.filter:type_name -> qdrant.Filter + 35, // 118: qdrant.RecommendPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector + 43, // 119: qdrant.RecommendPointGroups.params:type_name -> qdrant.SearchParams + 41, // 120: qdrant.RecommendPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector + 51, // 121: qdrant.RecommendPointGroups.lookup_from:type_name -> qdrant.LookupLocation + 9, // 122: qdrant.RecommendPointGroups.read_consistency:type_name -> qdrant.ReadConsistency + 46, // 123: qdrant.RecommendPointGroups.with_lookup:type_name -> qdrant.WithLookup + 4, // 124: qdrant.RecommendPointGroups.strategy:type_name -> qdrant.RecommendStrategy + 15, // 125: qdrant.RecommendPointGroups.positive_vectors:type_name -> qdrant.Vector + 15, // 126: qdrant.RecommendPointGroups.negative_vectors:type_name -> qdrant.Vector + 21, // 127: qdrant.RecommendPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector + 56, // 128: qdrant.TargetVector.single:type_name -> qdrant.VectorExample + 10, // 129: qdrant.VectorExample.id:type_name -> qdrant.PointId + 15, // 130: qdrant.VectorExample.vector:type_name -> qdrant.Vector + 56, // 131: qdrant.ContextExamplePair.positive:type_name -> qdrant.VectorExample + 56, // 132: qdrant.ContextExamplePair.negative:type_name -> qdrant.VectorExample + 55, // 133: qdrant.DiscoverPoints.target:type_name -> qdrant.TargetVector + 57, // 134: qdrant.DiscoverPoints.context:type_name -> qdrant.ContextExamplePair + 107, // 135: qdrant.DiscoverPoints.filter:type_name -> qdrant.Filter + 35, // 136: qdrant.DiscoverPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 43, // 137: qdrant.DiscoverPoints.params:type_name -> qdrant.SearchParams + 41, // 138: qdrant.DiscoverPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 51, // 139: qdrant.DiscoverPoints.lookup_from:type_name -> qdrant.LookupLocation + 9, // 140: qdrant.DiscoverPoints.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 141: qdrant.DiscoverPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 58, // 142: qdrant.DiscoverBatchPoints.discover_points:type_name -> qdrant.DiscoverPoints + 9, // 143: qdrant.DiscoverBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 107, // 144: qdrant.CountPoints.filter:type_name -> qdrant.Filter + 9, // 145: qdrant.CountPoints.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 146: qdrant.CountPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 20, // 147: qdrant.RecommendInput.positive:type_name -> qdrant.VectorInput + 20, // 148: qdrant.RecommendInput.negative:type_name -> qdrant.VectorInput + 4, // 149: qdrant.RecommendInput.strategy:type_name -> qdrant.RecommendStrategy + 20, // 150: qdrant.ContextInputPair.positive:type_name -> qdrant.VectorInput + 20, // 151: qdrant.ContextInputPair.negative:type_name -> qdrant.VectorInput + 20, // 152: qdrant.DiscoverInput.target:type_name -> qdrant.VectorInput + 64, // 153: qdrant.DiscoverInput.context:type_name -> qdrant.ContextInput + 62, // 154: qdrant.ContextInput.pairs:type_name -> qdrant.ContextInputPair + 20, // 155: qdrant.Query.nearest:type_name -> qdrant.VectorInput + 61, // 156: qdrant.Query.recommend:type_name -> qdrant.RecommendInput + 63, // 157: qdrant.Query.discover:type_name -> qdrant.DiscoverInput + 64, // 158: qdrant.Query.context:type_name -> qdrant.ContextInput + 49, // 159: qdrant.Query.order_by:type_name -> qdrant.OrderBy + 5, // 160: qdrant.Query.fusion:type_name -> qdrant.Fusion + 6, // 161: qdrant.Query.sample:type_name -> qdrant.Sample + 66, // 162: qdrant.PrefetchQuery.prefetch:type_name -> qdrant.PrefetchQuery + 65, // 163: qdrant.PrefetchQuery.query:type_name -> qdrant.Query + 107, // 164: qdrant.PrefetchQuery.filter:type_name -> qdrant.Filter + 43, // 165: qdrant.PrefetchQuery.params:type_name -> qdrant.SearchParams + 51, // 166: qdrant.PrefetchQuery.lookup_from:type_name -> qdrant.LookupLocation + 66, // 167: qdrant.QueryPoints.prefetch:type_name -> qdrant.PrefetchQuery + 65, // 168: qdrant.QueryPoints.query:type_name -> qdrant.Query + 107, // 169: qdrant.QueryPoints.filter:type_name -> qdrant.Filter + 43, // 170: qdrant.QueryPoints.params:type_name -> qdrant.SearchParams + 41, // 171: qdrant.QueryPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 35, // 172: qdrant.QueryPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 9, // 173: qdrant.QueryPoints.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 174: qdrant.QueryPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 51, // 175: qdrant.QueryPoints.lookup_from:type_name -> qdrant.LookupLocation + 67, // 176: qdrant.QueryBatchPoints.query_points:type_name -> qdrant.QueryPoints + 9, // 177: qdrant.QueryBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 66, // 178: qdrant.QueryPointGroups.prefetch:type_name -> qdrant.PrefetchQuery + 65, // 179: qdrant.QueryPointGroups.query:type_name -> qdrant.Query + 107, // 180: qdrant.QueryPointGroups.filter:type_name -> qdrant.Filter + 43, // 181: qdrant.QueryPointGroups.params:type_name -> qdrant.SearchParams + 35, // 182: qdrant.QueryPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector + 41, // 183: qdrant.QueryPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector + 51, // 184: qdrant.QueryPointGroups.lookup_from:type_name -> qdrant.LookupLocation + 9, // 185: qdrant.QueryPointGroups.read_consistency:type_name -> qdrant.ReadConsistency + 46, // 186: qdrant.QueryPointGroups.with_lookup:type_name -> qdrant.WithLookup + 21, // 187: qdrant.QueryPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector + 107, // 188: qdrant.FacetCounts.filter:type_name -> qdrant.Filter + 9, // 189: qdrant.FacetCounts.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 190: qdrant.FacetCounts.shard_key_selector:type_name -> qdrant.ShardKeySelector + 71, // 191: qdrant.FacetHit.value:type_name -> qdrant.FacetValue + 107, // 192: qdrant.SearchMatrixPoints.filter:type_name -> qdrant.Filter + 9, // 193: qdrant.SearchMatrixPoints.read_consistency:type_name -> qdrant.ReadConsistency + 21, // 194: qdrant.SearchMatrixPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 75, // 195: qdrant.SearchMatrixPairs.pairs:type_name -> qdrant.SearchMatrixPair + 10, // 196: qdrant.SearchMatrixPair.a:type_name -> qdrant.PointId + 10, // 197: qdrant.SearchMatrixPair.b:type_name -> qdrant.PointId + 10, // 198: qdrant.SearchMatrixOffsets.ids:type_name -> qdrant.PointId + 137, // 199: qdrant.PointsUpdateOperation.upsert:type_name -> qdrant.PointsUpdateOperation.PointStructList + 126, // 200: qdrant.PointsUpdateOperation.delete_deprecated:type_name -> qdrant.PointsSelector + 138, // 201: qdrant.PointsUpdateOperation.set_payload:type_name -> qdrant.PointsUpdateOperation.SetPayload + 139, // 202: qdrant.PointsUpdateOperation.overwrite_payload:type_name -> qdrant.PointsUpdateOperation.OverwritePayload + 140, // 203: qdrant.PointsUpdateOperation.delete_payload:type_name -> qdrant.PointsUpdateOperation.DeletePayload + 126, // 204: qdrant.PointsUpdateOperation.clear_payload_deprecated:type_name -> qdrant.PointsSelector + 141, // 205: qdrant.PointsUpdateOperation.update_vectors:type_name -> qdrant.PointsUpdateOperation.UpdateVectors + 142, // 206: qdrant.PointsUpdateOperation.delete_vectors:type_name -> qdrant.PointsUpdateOperation.DeleteVectors + 143, // 207: qdrant.PointsUpdateOperation.delete_points:type_name -> qdrant.PointsUpdateOperation.DeletePoints + 144, // 208: qdrant.PointsUpdateOperation.clear_payload:type_name -> qdrant.PointsUpdateOperation.ClearPayload + 77, // 209: qdrant.UpdateBatchPoints.operations:type_name -> qdrant.PointsUpdateOperation + 8, // 210: qdrant.UpdateBatchPoints.ordering:type_name -> qdrant.WriteOrdering + 80, // 211: qdrant.PointsOperationResponse.result:type_name -> qdrant.UpdateResult + 7, // 212: qdrant.UpdateResult.status:type_name -> qdrant.UpdateStatus + 10, // 213: qdrant.ScoredPoint.id:type_name -> qdrant.PointId + 147, // 214: qdrant.ScoredPoint.payload:type_name -> qdrant.ScoredPoint.PayloadEntry + 39, // 215: qdrant.ScoredPoint.vectors:type_name -> qdrant.VectorsOutput + 151, // 216: qdrant.ScoredPoint.shard_key:type_name -> qdrant.ShardKey + 81, // 217: qdrant.ScoredPoint.order_value:type_name -> qdrant.OrderValue + 83, // 218: qdrant.PointGroup.id:type_name -> qdrant.GroupId + 82, // 219: qdrant.PointGroup.hits:type_name -> qdrant.ScoredPoint + 96, // 220: qdrant.PointGroup.lookup:type_name -> qdrant.RetrievedPoint + 84, // 221: qdrant.GroupsResult.groups:type_name -> qdrant.PointGroup + 82, // 222: qdrant.SearchResponse.result:type_name -> qdrant.ScoredPoint + 130, // 223: qdrant.SearchResponse.usage:type_name -> qdrant.HardwareUsage + 82, // 224: qdrant.QueryResponse.result:type_name -> qdrant.ScoredPoint + 130, // 225: qdrant.QueryResponse.usage:type_name -> qdrant.HardwareUsage + 90, // 226: qdrant.QueryBatchResponse.result:type_name -> qdrant.BatchResult + 130, // 227: qdrant.QueryBatchResponse.usage:type_name -> qdrant.HardwareUsage + 85, // 228: qdrant.QueryGroupsResponse.result:type_name -> qdrant.GroupsResult + 130, // 229: qdrant.QueryGroupsResponse.usage:type_name -> qdrant.HardwareUsage + 82, // 230: qdrant.BatchResult.result:type_name -> qdrant.ScoredPoint + 90, // 231: qdrant.SearchBatchResponse.result:type_name -> qdrant.BatchResult + 130, // 232: qdrant.SearchBatchResponse.usage:type_name -> qdrant.HardwareUsage + 85, // 233: qdrant.SearchGroupsResponse.result:type_name -> qdrant.GroupsResult + 130, // 234: qdrant.SearchGroupsResponse.usage:type_name -> qdrant.HardwareUsage + 95, // 235: qdrant.CountResponse.result:type_name -> qdrant.CountResult + 130, // 236: qdrant.CountResponse.usage:type_name -> qdrant.HardwareUsage + 10, // 237: qdrant.ScrollResponse.next_page_offset:type_name -> qdrant.PointId + 96, // 238: qdrant.ScrollResponse.result:type_name -> qdrant.RetrievedPoint + 10, // 239: qdrant.RetrievedPoint.id:type_name -> qdrant.PointId + 148, // 240: qdrant.RetrievedPoint.payload:type_name -> qdrant.RetrievedPoint.PayloadEntry + 39, // 241: qdrant.RetrievedPoint.vectors:type_name -> qdrant.VectorsOutput + 151, // 242: qdrant.RetrievedPoint.shard_key:type_name -> qdrant.ShardKey + 81, // 243: qdrant.RetrievedPoint.order_value:type_name -> qdrant.OrderValue + 96, // 244: qdrant.GetResponse.result:type_name -> qdrant.RetrievedPoint + 82, // 245: qdrant.RecommendResponse.result:type_name -> qdrant.ScoredPoint + 130, // 246: qdrant.RecommendResponse.usage:type_name -> qdrant.HardwareUsage + 90, // 247: qdrant.RecommendBatchResponse.result:type_name -> qdrant.BatchResult + 130, // 248: qdrant.RecommendBatchResponse.usage:type_name -> qdrant.HardwareUsage + 82, // 249: qdrant.DiscoverResponse.result:type_name -> qdrant.ScoredPoint + 130, // 250: qdrant.DiscoverResponse.usage:type_name -> qdrant.HardwareUsage + 90, // 251: qdrant.DiscoverBatchResponse.result:type_name -> qdrant.BatchResult + 130, // 252: qdrant.DiscoverBatchResponse.usage:type_name -> qdrant.HardwareUsage + 85, // 253: qdrant.RecommendGroupsResponse.result:type_name -> qdrant.GroupsResult + 130, // 254: qdrant.RecommendGroupsResponse.usage:type_name -> qdrant.HardwareUsage + 80, // 255: qdrant.UpdateBatchResponse.result:type_name -> qdrant.UpdateResult + 72, // 256: qdrant.FacetResponse.hits:type_name -> qdrant.FacetHit + 74, // 257: qdrant.SearchMatrixPairsResponse.result:type_name -> qdrant.SearchMatrixPairs + 130, // 258: qdrant.SearchMatrixPairsResponse.usage:type_name -> qdrant.HardwareUsage + 76, // 259: qdrant.SearchMatrixOffsetsResponse.result:type_name -> qdrant.SearchMatrixOffsets + 130, // 260: qdrant.SearchMatrixOffsetsResponse.usage:type_name -> qdrant.HardwareUsage + 109, // 261: qdrant.Filter.should:type_name -> qdrant.Condition + 109, // 262: qdrant.Filter.must:type_name -> qdrant.Condition + 109, // 263: qdrant.Filter.must_not:type_name -> qdrant.Condition + 108, // 264: qdrant.Filter.min_should:type_name -> qdrant.MinShould + 109, // 265: qdrant.MinShould.conditions:type_name -> qdrant.Condition + 115, // 266: qdrant.Condition.field:type_name -> qdrant.FieldCondition + 110, // 267: qdrant.Condition.is_empty:type_name -> qdrant.IsEmptyCondition + 112, // 268: qdrant.Condition.has_id:type_name -> qdrant.HasIdCondition + 107, // 269: qdrant.Condition.filter:type_name -> qdrant.Filter + 111, // 270: qdrant.Condition.is_null:type_name -> qdrant.IsNullCondition + 114, // 271: qdrant.Condition.nested:type_name -> qdrant.NestedCondition + 113, // 272: qdrant.Condition.has_vector:type_name -> qdrant.HasVectorCondition + 10, // 273: qdrant.HasIdCondition.has_id:type_name -> qdrant.PointId + 107, // 274: qdrant.NestedCondition.filter:type_name -> qdrant.Filter + 116, // 275: qdrant.FieldCondition.match:type_name -> qdrant.Match + 119, // 276: qdrant.FieldCondition.range:type_name -> qdrant.Range + 121, // 277: qdrant.FieldCondition.geo_bounding_box:type_name -> qdrant.GeoBoundingBox + 122, // 278: qdrant.FieldCondition.geo_radius:type_name -> qdrant.GeoRadius + 125, // 279: qdrant.FieldCondition.values_count:type_name -> qdrant.ValuesCount + 124, // 280: qdrant.FieldCondition.geo_polygon:type_name -> qdrant.GeoPolygon + 120, // 281: qdrant.FieldCondition.datetime_range:type_name -> qdrant.DatetimeRange + 117, // 282: qdrant.Match.keywords:type_name -> qdrant.RepeatedStrings + 118, // 283: qdrant.Match.integers:type_name -> qdrant.RepeatedIntegers + 118, // 284: qdrant.Match.except_integers:type_name -> qdrant.RepeatedIntegers + 117, // 285: qdrant.Match.except_keywords:type_name -> qdrant.RepeatedStrings + 153, // 286: qdrant.DatetimeRange.lt:type_name -> google.protobuf.Timestamp + 153, // 287: qdrant.DatetimeRange.gt:type_name -> google.protobuf.Timestamp + 153, // 288: qdrant.DatetimeRange.gte:type_name -> google.protobuf.Timestamp + 153, // 289: qdrant.DatetimeRange.lte:type_name -> google.protobuf.Timestamp + 129, // 290: qdrant.GeoBoundingBox.top_left:type_name -> qdrant.GeoPoint + 129, // 291: qdrant.GeoBoundingBox.bottom_right:type_name -> qdrant.GeoPoint + 129, // 292: qdrant.GeoRadius.center:type_name -> qdrant.GeoPoint + 129, // 293: qdrant.GeoLineString.points:type_name -> qdrant.GeoPoint + 123, // 294: qdrant.GeoPolygon.exterior:type_name -> qdrant.GeoLineString + 123, // 295: qdrant.GeoPolygon.interiors:type_name -> qdrant.GeoLineString + 127, // 296: qdrant.PointsSelector.points:type_name -> qdrant.PointsIdsList + 107, // 297: qdrant.PointsSelector.filter:type_name -> qdrant.Filter + 10, // 298: qdrant.PointsIdsList.ids:type_name -> qdrant.PointId + 10, // 299: qdrant.PointStruct.id:type_name -> qdrant.PointId + 149, // 300: qdrant.PointStruct.payload:type_name -> qdrant.PointStruct.PayloadEntry + 38, // 301: qdrant.PointStruct.vectors:type_name -> qdrant.Vectors + 150, // 302: qdrant.Document.OptionsEntry.value:type_name -> qdrant.Value + 150, // 303: qdrant.Image.OptionsEntry.value:type_name -> qdrant.Value + 150, // 304: qdrant.InferenceObject.OptionsEntry.value:type_name -> qdrant.Value + 150, // 305: qdrant.SetPayloadPoints.PayloadEntry.value:type_name -> qdrant.Value + 15, // 306: qdrant.NamedVectors.VectorsEntry.value:type_name -> qdrant.Vector + 16, // 307: qdrant.NamedVectorsOutput.VectorsEntry.value:type_name -> qdrant.VectorOutput + 128, // 308: qdrant.PointsUpdateOperation.PointStructList.points:type_name -> qdrant.PointStruct + 21, // 309: qdrant.PointsUpdateOperation.PointStructList.shard_key_selector:type_name -> qdrant.ShardKeySelector + 145, // 310: qdrant.PointsUpdateOperation.SetPayload.payload:type_name -> qdrant.PointsUpdateOperation.SetPayload.PayloadEntry + 126, // 311: qdrant.PointsUpdateOperation.SetPayload.points_selector:type_name -> qdrant.PointsSelector + 21, // 312: qdrant.PointsUpdateOperation.SetPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 146, // 313: qdrant.PointsUpdateOperation.OverwritePayload.payload:type_name -> qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry + 126, // 314: qdrant.PointsUpdateOperation.OverwritePayload.points_selector:type_name -> qdrant.PointsSelector + 21, // 315: qdrant.PointsUpdateOperation.OverwritePayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 126, // 316: qdrant.PointsUpdateOperation.DeletePayload.points_selector:type_name -> qdrant.PointsSelector + 21, // 317: qdrant.PointsUpdateOperation.DeletePayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 26, // 318: qdrant.PointsUpdateOperation.UpdateVectors.points:type_name -> qdrant.PointVectors + 21, // 319: qdrant.PointsUpdateOperation.UpdateVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 126, // 320: qdrant.PointsUpdateOperation.DeleteVectors.points_selector:type_name -> qdrant.PointsSelector + 40, // 321: qdrant.PointsUpdateOperation.DeleteVectors.vectors:type_name -> qdrant.VectorsSelector + 21, // 322: qdrant.PointsUpdateOperation.DeleteVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 126, // 323: qdrant.PointsUpdateOperation.DeletePoints.points:type_name -> qdrant.PointsSelector + 21, // 324: qdrant.PointsUpdateOperation.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 126, // 325: qdrant.PointsUpdateOperation.ClearPayload.points:type_name -> qdrant.PointsSelector + 21, // 326: qdrant.PointsUpdateOperation.ClearPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 150, // 327: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry.value:type_name -> qdrant.Value + 150, // 328: qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry.value:type_name -> qdrant.Value + 150, // 329: qdrant.ScoredPoint.PayloadEntry.value:type_name -> qdrant.Value + 150, // 330: qdrant.RetrievedPoint.PayloadEntry.value:type_name -> qdrant.Value + 150, // 331: qdrant.PointStruct.PayloadEntry.value:type_name -> qdrant.Value + 332, // [332:332] is the sub-list for method output_type + 332, // [332:332] is the sub-list for method input_type + 332, // [332:332] is the sub-list for extension type_name + 332, // [332:332] is the sub-list for extension extendee + 0, // [0:332] is the sub-list for field type_name } func init() { file_points_proto_init() } @@ -11933,7 +12969,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Vector); i { + switch v := v.(*Document); i { case 0: return &v.state case 1: @@ -11945,7 +12981,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*DenseVector); i { + switch v := v.(*Image); i { case 0: return &v.state case 1: @@ -11957,7 +12993,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*SparseVector); i { + switch v := v.(*InferenceObject); i { case 0: return &v.state case 1: @@ -11969,7 +13005,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*MultiDenseVector); i { + switch v := v.(*Vector); i { case 0: return &v.state case 1: @@ -11981,7 +13017,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*VectorInput); i { + switch v := v.(*VectorOutput); i { case 0: return &v.state case 1: @@ -11993,7 +13029,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*ShardKeySelector); i { + switch v := v.(*DenseVector); i { case 0: return &v.state case 1: @@ -12005,7 +13041,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*UpsertPoints); i { + switch v := v.(*SparseVector); i { case 0: return &v.state case 1: @@ -12017,7 +13053,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*DeletePoints); i { + switch v := v.(*MultiDenseVector); i { case 0: return &v.state case 1: @@ -12029,7 +13065,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*GetPoints); i { + switch v := v.(*VectorInput); i { case 0: return &v.state case 1: @@ -12041,7 +13077,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*UpdatePointVectors); i { + switch v := v.(*ShardKeySelector); i { case 0: return &v.state case 1: @@ -12053,7 +13089,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*PointVectors); i { + switch v := v.(*UpsertPoints); i { case 0: return &v.state case 1: @@ -12065,7 +13101,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*DeletePointVectors); i { + switch v := v.(*DeletePoints); i { case 0: return &v.state case 1: @@ -12077,7 +13113,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*SetPayloadPoints); i { + switch v := v.(*GetPoints); i { case 0: return &v.state case 1: @@ -12089,7 +13125,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*DeletePayloadPoints); i { + switch v := v.(*UpdatePointVectors); i { case 0: return &v.state case 1: @@ -12101,7 +13137,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*ClearPayloadPoints); i { + switch v := v.(*PointVectors); i { case 0: return &v.state case 1: @@ -12113,7 +13149,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*CreateFieldIndexCollection); i { + switch v := v.(*DeletePointVectors); i { case 0: return &v.state case 1: @@ -12125,7 +13161,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*DeleteFieldIndexCollection); i { + switch v := v.(*SetPayloadPoints); i { case 0: return &v.state case 1: @@ -12137,6 +13173,54 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*DeletePayloadPoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*ClearPayloadPoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*CreateFieldIndexCollection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*DeleteFieldIndexCollection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*PayloadIncludeSelector); i { case 0: return &v.state @@ -12148,8 +13232,32 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*PayloadExcludeSelector); i { + file_points_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*PayloadExcludeSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*WithPayloadSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*NamedVectors); i { case 0: return &v.state case 1: @@ -12160,8 +13268,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*WithPayloadSelector); i { + file_points_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*NamedVectorsOutput); i { case 0: return &v.state case 1: @@ -12172,8 +13280,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*NamedVectors); i { + file_points_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*Vectors); i { case 0: return &v.state case 1: @@ -12184,8 +13292,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*Vectors); i { + file_points_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*VectorsOutput); i { case 0: return &v.state case 1: @@ -12196,7 +13304,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[26].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*VectorsSelector); i { case 0: return &v.state @@ -12208,7 +13316,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[27].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*WithVectorsSelector); i { case 0: return &v.state @@ -12220,7 +13328,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[28].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*QuantizationSearchParams); i { case 0: return &v.state @@ -12232,7 +13340,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[29].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*SearchParams); i { case 0: return &v.state @@ -12244,7 +13352,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[30].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*SearchPoints); i { case 0: return &v.state @@ -12256,7 +13364,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[31].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*SearchBatchPoints); i { case 0: return &v.state @@ -12268,7 +13376,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[32].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*WithLookup); i { case 0: return &v.state @@ -12280,7 +13388,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[33].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*SearchPointGroups); i { case 0: return &v.state @@ -12292,7 +13400,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[34].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*StartFrom); i { case 0: return &v.state @@ -12304,7 +13412,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[35].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*OrderBy); i { case 0: return &v.state @@ -12316,7 +13424,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[36].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*ScrollPoints); i { case 0: return &v.state @@ -12328,7 +13436,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[37].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*LookupLocation); i { case 0: return &v.state @@ -12340,7 +13448,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[38].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*RecommendPoints); i { case 0: return &v.state @@ -12352,7 +13460,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[39].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*RecommendBatchPoints); i { case 0: return &v.state @@ -12364,7 +13472,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[40].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*RecommendPointGroups); i { case 0: return &v.state @@ -12376,7 +13484,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[41].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*TargetVector); i { case 0: return &v.state @@ -12388,7 +13496,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[42].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*VectorExample); i { case 0: return &v.state @@ -12400,7 +13508,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[43].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*ContextExamplePair); i { case 0: return &v.state @@ -12412,7 +13520,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[44].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*DiscoverPoints); i { case 0: return &v.state @@ -12424,7 +13532,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[45].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*DiscoverBatchPoints); i { case 0: return &v.state @@ -12436,7 +13544,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[46].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*CountPoints); i { case 0: return &v.state @@ -12448,7 +13556,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[47].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*RecommendInput); i { case 0: return &v.state @@ -12460,7 +13568,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[48].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*ContextInputPair); i { case 0: return &v.state @@ -12472,7 +13580,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[49].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*DiscoverInput); i { case 0: return &v.state @@ -12484,7 +13592,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[50].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*ContextInput); i { case 0: return &v.state @@ -12496,7 +13604,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[51].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*Query); i { case 0: return &v.state @@ -12508,7 +13616,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[52].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*PrefetchQuery); i { case 0: return &v.state @@ -12520,7 +13628,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[53].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*QueryPoints); i { case 0: return &v.state @@ -12532,7 +13640,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[54].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*QueryBatchPoints); i { case 0: return &v.state @@ -12544,7 +13652,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[55].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*QueryPointGroups); i { case 0: return &v.state @@ -12556,7 +13664,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[56].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*FacetCounts); i { case 0: return &v.state @@ -12568,7 +13676,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[57].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*FacetValue); i { case 0: return &v.state @@ -12580,7 +13688,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[58].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*FacetHit); i { case 0: return &v.state @@ -12592,7 +13700,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[59].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*SearchMatrixPoints); i { case 0: return &v.state @@ -12604,7 +13712,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[60].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*SearchMatrixPairs); i { case 0: return &v.state @@ -12616,7 +13724,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[61].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*SearchMatrixPair); i { case 0: return &v.state @@ -12628,7 +13736,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[62].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*SearchMatrixOffsets); i { case 0: return &v.state @@ -12640,7 +13748,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[63].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation); i { case 0: return &v.state @@ -12652,7 +13760,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[64].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[70].Exporter = func(v any, i int) any { switch v := v.(*UpdateBatchPoints); i { case 0: return &v.state @@ -12664,7 +13772,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[65].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[71].Exporter = func(v any, i int) any { switch v := v.(*PointsOperationResponse); i { case 0: return &v.state @@ -12676,7 +13784,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[66].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[72].Exporter = func(v any, i int) any { switch v := v.(*UpdateResult); i { case 0: return &v.state @@ -12688,7 +13796,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[67].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[73].Exporter = func(v any, i int) any { switch v := v.(*OrderValue); i { case 0: return &v.state @@ -12700,7 +13808,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[68].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[74].Exporter = func(v any, i int) any { switch v := v.(*ScoredPoint); i { case 0: return &v.state @@ -12712,7 +13820,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[69].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[75].Exporter = func(v any, i int) any { switch v := v.(*GroupId); i { case 0: return &v.state @@ -12724,7 +13832,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[70].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[76].Exporter = func(v any, i int) any { switch v := v.(*PointGroup); i { case 0: return &v.state @@ -12736,7 +13844,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[71].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[77].Exporter = func(v any, i int) any { switch v := v.(*GroupsResult); i { case 0: return &v.state @@ -12748,7 +13856,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[72].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[78].Exporter = func(v any, i int) any { switch v := v.(*SearchResponse); i { case 0: return &v.state @@ -12760,7 +13868,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[73].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[79].Exporter = func(v any, i int) any { switch v := v.(*QueryResponse); i { case 0: return &v.state @@ -12772,7 +13880,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[74].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[80].Exporter = func(v any, i int) any { switch v := v.(*QueryBatchResponse); i { case 0: return &v.state @@ -12784,7 +13892,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[75].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[81].Exporter = func(v any, i int) any { switch v := v.(*QueryGroupsResponse); i { case 0: return &v.state @@ -12796,7 +13904,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[76].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[82].Exporter = func(v any, i int) any { switch v := v.(*BatchResult); i { case 0: return &v.state @@ -12808,7 +13916,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[77].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[83].Exporter = func(v any, i int) any { switch v := v.(*SearchBatchResponse); i { case 0: return &v.state @@ -12820,7 +13928,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[78].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[84].Exporter = func(v any, i int) any { switch v := v.(*SearchGroupsResponse); i { case 0: return &v.state @@ -12832,7 +13940,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[79].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[85].Exporter = func(v any, i int) any { switch v := v.(*CountResponse); i { case 0: return &v.state @@ -12844,7 +13952,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[80].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[86].Exporter = func(v any, i int) any { switch v := v.(*ScrollResponse); i { case 0: return &v.state @@ -12856,7 +13964,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[81].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[87].Exporter = func(v any, i int) any { switch v := v.(*CountResult); i { case 0: return &v.state @@ -12868,7 +13976,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[82].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[88].Exporter = func(v any, i int) any { switch v := v.(*RetrievedPoint); i { case 0: return &v.state @@ -12880,7 +13988,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[83].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[89].Exporter = func(v any, i int) any { switch v := v.(*GetResponse); i { case 0: return &v.state @@ -12892,7 +14000,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[84].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[90].Exporter = func(v any, i int) any { switch v := v.(*RecommendResponse); i { case 0: return &v.state @@ -12904,7 +14012,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[85].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[91].Exporter = func(v any, i int) any { switch v := v.(*RecommendBatchResponse); i { case 0: return &v.state @@ -12916,7 +14024,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[86].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[92].Exporter = func(v any, i int) any { switch v := v.(*DiscoverResponse); i { case 0: return &v.state @@ -12928,7 +14036,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[87].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[93].Exporter = func(v any, i int) any { switch v := v.(*DiscoverBatchResponse); i { case 0: return &v.state @@ -12940,7 +14048,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[88].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[94].Exporter = func(v any, i int) any { switch v := v.(*RecommendGroupsResponse); i { case 0: return &v.state @@ -12952,7 +14060,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[89].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[95].Exporter = func(v any, i int) any { switch v := v.(*UpdateBatchResponse); i { case 0: return &v.state @@ -12964,7 +14072,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[90].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[96].Exporter = func(v any, i int) any { switch v := v.(*FacetResponse); i { case 0: return &v.state @@ -12976,7 +14084,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[91].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[97].Exporter = func(v any, i int) any { switch v := v.(*SearchMatrixPairsResponse); i { case 0: return &v.state @@ -12988,7 +14096,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[92].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[98].Exporter = func(v any, i int) any { switch v := v.(*SearchMatrixOffsetsResponse); i { case 0: return &v.state @@ -13000,7 +14108,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[93].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[99].Exporter = func(v any, i int) any { switch v := v.(*Filter); i { case 0: return &v.state @@ -13012,7 +14120,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[94].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[100].Exporter = func(v any, i int) any { switch v := v.(*MinShould); i { case 0: return &v.state @@ -13024,7 +14132,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[95].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[101].Exporter = func(v any, i int) any { switch v := v.(*Condition); i { case 0: return &v.state @@ -13036,7 +14144,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[96].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[102].Exporter = func(v any, i int) any { switch v := v.(*IsEmptyCondition); i { case 0: return &v.state @@ -13048,7 +14156,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[97].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[103].Exporter = func(v any, i int) any { switch v := v.(*IsNullCondition); i { case 0: return &v.state @@ -13060,7 +14168,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[98].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[104].Exporter = func(v any, i int) any { switch v := v.(*HasIdCondition); i { case 0: return &v.state @@ -13072,7 +14180,19 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[99].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[105].Exporter = func(v any, i int) any { + switch v := v.(*HasVectorCondition); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[106].Exporter = func(v any, i int) any { switch v := v.(*NestedCondition); i { case 0: return &v.state @@ -13084,7 +14204,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[100].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[107].Exporter = func(v any, i int) any { switch v := v.(*FieldCondition); i { case 0: return &v.state @@ -13096,7 +14216,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[101].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[108].Exporter = func(v any, i int) any { switch v := v.(*Match); i { case 0: return &v.state @@ -13108,7 +14228,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[102].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[109].Exporter = func(v any, i int) any { switch v := v.(*RepeatedStrings); i { case 0: return &v.state @@ -13120,7 +14240,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[103].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[110].Exporter = func(v any, i int) any { switch v := v.(*RepeatedIntegers); i { case 0: return &v.state @@ -13132,7 +14252,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[104].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[111].Exporter = func(v any, i int) any { switch v := v.(*Range); i { case 0: return &v.state @@ -13144,7 +14264,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[105].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[112].Exporter = func(v any, i int) any { switch v := v.(*DatetimeRange); i { case 0: return &v.state @@ -13156,7 +14276,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[106].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[113].Exporter = func(v any, i int) any { switch v := v.(*GeoBoundingBox); i { case 0: return &v.state @@ -13168,7 +14288,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[107].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[114].Exporter = func(v any, i int) any { switch v := v.(*GeoRadius); i { case 0: return &v.state @@ -13180,7 +14300,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[108].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[115].Exporter = func(v any, i int) any { switch v := v.(*GeoLineString); i { case 0: return &v.state @@ -13192,7 +14312,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[109].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[116].Exporter = func(v any, i int) any { switch v := v.(*GeoPolygon); i { case 0: return &v.state @@ -13204,7 +14324,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[110].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[117].Exporter = func(v any, i int) any { switch v := v.(*ValuesCount); i { case 0: return &v.state @@ -13216,7 +14336,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[111].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[118].Exporter = func(v any, i int) any { switch v := v.(*PointsSelector); i { case 0: return &v.state @@ -13228,7 +14348,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[112].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[119].Exporter = func(v any, i int) any { switch v := v.(*PointsIdsList); i { case 0: return &v.state @@ -13240,7 +14360,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[113].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[120].Exporter = func(v any, i int) any { switch v := v.(*PointStruct); i { case 0: return &v.state @@ -13252,7 +14372,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[114].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[121].Exporter = func(v any, i int) any { switch v := v.(*GeoPoint); i { case 0: return &v.state @@ -13264,7 +14384,19 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[117].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[122].Exporter = func(v any, i int) any { + switch v := v.(*HardwareUsage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[129].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_PointStructList); i { case 0: return &v.state @@ -13276,7 +14408,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[118].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[130].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_SetPayload); i { case 0: return &v.state @@ -13288,7 +14420,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[119].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[131].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_OverwritePayload); i { case 0: return &v.state @@ -13300,7 +14432,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[120].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[132].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_DeletePayload); i { case 0: return &v.state @@ -13312,7 +14444,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[121].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[133].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_UpdateVectors); i { case 0: return &v.state @@ -13324,7 +14456,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[122].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[134].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_DeleteVectors); i { case 0: return &v.state @@ -13336,7 +14468,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[123].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[135].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_DeletePoints); i { case 0: return &v.state @@ -13348,7 +14480,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[124].Exporter = func(v any, i int) any { + file_points_proto_msgTypes[136].Exporter = func(v any, i int) any { switch v := v.(*PointsUpdateOperation_ClearPayload); i { case 0: return &v.state @@ -13369,66 +14501,85 @@ func file_points_proto_init() { (*PointId_Num)(nil), (*PointId_Uuid)(nil), } - file_points_proto_msgTypes[4].OneofWrappers = []any{} + file_points_proto_msgTypes[7].OneofWrappers = []any{ + (*Vector_Dense)(nil), + (*Vector_Sparse)(nil), + (*Vector_MultiDense)(nil), + (*Vector_Document)(nil), + (*Vector_Image)(nil), + (*Vector_Object)(nil), + } file_points_proto_msgTypes[8].OneofWrappers = []any{ + (*VectorOutput_Dense)(nil), + (*VectorOutput_Sparse)(nil), + (*VectorOutput_MultiDense)(nil), + } + file_points_proto_msgTypes[12].OneofWrappers = []any{ (*VectorInput_Id)(nil), (*VectorInput_Dense)(nil), (*VectorInput_Sparse)(nil), (*VectorInput_MultiDense)(nil), + (*VectorInput_Document)(nil), + (*VectorInput_Image)(nil), + (*VectorInput_Object)(nil), } - file_points_proto_msgTypes[10].OneofWrappers = []any{} - file_points_proto_msgTypes[11].OneofWrappers = []any{} - file_points_proto_msgTypes[12].OneofWrappers = []any{} - file_points_proto_msgTypes[13].OneofWrappers = []any{} + file_points_proto_msgTypes[14].OneofWrappers = []any{} file_points_proto_msgTypes[15].OneofWrappers = []any{} file_points_proto_msgTypes[16].OneofWrappers = []any{} file_points_proto_msgTypes[17].OneofWrappers = []any{} - file_points_proto_msgTypes[18].OneofWrappers = []any{} file_points_proto_msgTypes[19].OneofWrappers = []any{} file_points_proto_msgTypes[20].OneofWrappers = []any{} - file_points_proto_msgTypes[23].OneofWrappers = []any{ + file_points_proto_msgTypes[21].OneofWrappers = []any{} + file_points_proto_msgTypes[22].OneofWrappers = []any{} + file_points_proto_msgTypes[23].OneofWrappers = []any{} + file_points_proto_msgTypes[24].OneofWrappers = []any{} + file_points_proto_msgTypes[27].OneofWrappers = []any{ (*WithPayloadSelector_Enable)(nil), (*WithPayloadSelector_Include)(nil), (*WithPayloadSelector_Exclude)(nil), } - file_points_proto_msgTypes[25].OneofWrappers = []any{ + file_points_proto_msgTypes[30].OneofWrappers = []any{ (*Vectors_Vector)(nil), (*Vectors_Vectors)(nil), } - file_points_proto_msgTypes[27].OneofWrappers = []any{ + file_points_proto_msgTypes[31].OneofWrappers = []any{ + (*VectorsOutput_Vector)(nil), + (*VectorsOutput_Vectors)(nil), + } + file_points_proto_msgTypes[33].OneofWrappers = []any{ (*WithVectorsSelector_Enable)(nil), (*WithVectorsSelector_Include)(nil), } - file_points_proto_msgTypes[28].OneofWrappers = []any{} - file_points_proto_msgTypes[29].OneofWrappers = []any{} - file_points_proto_msgTypes[30].OneofWrappers = []any{} - file_points_proto_msgTypes[31].OneofWrappers = []any{} - file_points_proto_msgTypes[32].OneofWrappers = []any{} - file_points_proto_msgTypes[33].OneofWrappers = []any{} - file_points_proto_msgTypes[34].OneofWrappers = []any{ - (*StartFrom_Float)(nil), - (*StartFrom_Integer)(nil), - (*StartFrom_Timestamp)(nil), - (*StartFrom_Datetime)(nil), - } + file_points_proto_msgTypes[34].OneofWrappers = []any{} file_points_proto_msgTypes[35].OneofWrappers = []any{} file_points_proto_msgTypes[36].OneofWrappers = []any{} file_points_proto_msgTypes[37].OneofWrappers = []any{} file_points_proto_msgTypes[38].OneofWrappers = []any{} file_points_proto_msgTypes[39].OneofWrappers = []any{} - file_points_proto_msgTypes[40].OneofWrappers = []any{} - file_points_proto_msgTypes[41].OneofWrappers = []any{ + file_points_proto_msgTypes[40].OneofWrappers = []any{ + (*StartFrom_Float)(nil), + (*StartFrom_Integer)(nil), + (*StartFrom_Timestamp)(nil), + (*StartFrom_Datetime)(nil), + } + file_points_proto_msgTypes[41].OneofWrappers = []any{} + file_points_proto_msgTypes[42].OneofWrappers = []any{} + file_points_proto_msgTypes[43].OneofWrappers = []any{} + file_points_proto_msgTypes[44].OneofWrappers = []any{} + file_points_proto_msgTypes[45].OneofWrappers = []any{} + file_points_proto_msgTypes[46].OneofWrappers = []any{} + file_points_proto_msgTypes[47].OneofWrappers = []any{ (*TargetVector_Single)(nil), } - file_points_proto_msgTypes[42].OneofWrappers = []any{ + file_points_proto_msgTypes[48].OneofWrappers = []any{ (*VectorExample_Id)(nil), (*VectorExample_Vector)(nil), } - file_points_proto_msgTypes[44].OneofWrappers = []any{} - file_points_proto_msgTypes[45].OneofWrappers = []any{} - file_points_proto_msgTypes[46].OneofWrappers = []any{} - file_points_proto_msgTypes[47].OneofWrappers = []any{} - file_points_proto_msgTypes[51].OneofWrappers = []any{ + file_points_proto_msgTypes[50].OneofWrappers = []any{} + file_points_proto_msgTypes[51].OneofWrappers = []any{} + file_points_proto_msgTypes[52].OneofWrappers = []any{} + file_points_proto_msgTypes[53].OneofWrappers = []any{} + file_points_proto_msgTypes[57].OneofWrappers = []any{ (*Query_Nearest)(nil), (*Query_Recommend)(nil), (*Query_Discover)(nil), @@ -13437,18 +14588,18 @@ func file_points_proto_init() { (*Query_Fusion)(nil), (*Query_Sample)(nil), } - file_points_proto_msgTypes[52].OneofWrappers = []any{} - file_points_proto_msgTypes[53].OneofWrappers = []any{} - file_points_proto_msgTypes[54].OneofWrappers = []any{} - file_points_proto_msgTypes[55].OneofWrappers = []any{} - file_points_proto_msgTypes[56].OneofWrappers = []any{} - file_points_proto_msgTypes[57].OneofWrappers = []any{ + file_points_proto_msgTypes[58].OneofWrappers = []any{} + file_points_proto_msgTypes[59].OneofWrappers = []any{} + file_points_proto_msgTypes[60].OneofWrappers = []any{} + file_points_proto_msgTypes[61].OneofWrappers = []any{} + file_points_proto_msgTypes[62].OneofWrappers = []any{} + file_points_proto_msgTypes[63].OneofWrappers = []any{ (*FacetValue_StringValue)(nil), (*FacetValue_IntegerValue)(nil), (*FacetValue_BoolValue)(nil), } - file_points_proto_msgTypes[59].OneofWrappers = []any{} - file_points_proto_msgTypes[63].OneofWrappers = []any{ + file_points_proto_msgTypes[65].OneofWrappers = []any{} + file_points_proto_msgTypes[69].OneofWrappers = []any{ (*PointsUpdateOperation_Upsert)(nil), (*PointsUpdateOperation_DeleteDeprecated)(nil), (*PointsUpdateOperation_SetPayload_)(nil), @@ -13460,30 +14611,45 @@ func file_points_proto_init() { (*PointsUpdateOperation_DeletePoints_)(nil), (*PointsUpdateOperation_ClearPayload_)(nil), } - file_points_proto_msgTypes[64].OneofWrappers = []any{} - file_points_proto_msgTypes[66].OneofWrappers = []any{} - file_points_proto_msgTypes[67].OneofWrappers = []any{ + file_points_proto_msgTypes[70].OneofWrappers = []any{} + file_points_proto_msgTypes[72].OneofWrappers = []any{} + file_points_proto_msgTypes[73].OneofWrappers = []any{ (*OrderValue_Int)(nil), (*OrderValue_Float)(nil), } - file_points_proto_msgTypes[68].OneofWrappers = []any{} - file_points_proto_msgTypes[69].OneofWrappers = []any{ + file_points_proto_msgTypes[74].OneofWrappers = []any{} + file_points_proto_msgTypes[75].OneofWrappers = []any{ (*GroupId_UnsignedValue)(nil), (*GroupId_IntegerValue)(nil), (*GroupId_StringValue)(nil), } + file_points_proto_msgTypes[78].OneofWrappers = []any{} + file_points_proto_msgTypes[79].OneofWrappers = []any{} file_points_proto_msgTypes[80].OneofWrappers = []any{} - file_points_proto_msgTypes[82].OneofWrappers = []any{} + file_points_proto_msgTypes[81].OneofWrappers = []any{} + file_points_proto_msgTypes[83].OneofWrappers = []any{} + file_points_proto_msgTypes[84].OneofWrappers = []any{} + file_points_proto_msgTypes[85].OneofWrappers = []any{} + file_points_proto_msgTypes[86].OneofWrappers = []any{} + file_points_proto_msgTypes[88].OneofWrappers = []any{} + file_points_proto_msgTypes[90].OneofWrappers = []any{} + file_points_proto_msgTypes[91].OneofWrappers = []any{} + file_points_proto_msgTypes[92].OneofWrappers = []any{} file_points_proto_msgTypes[93].OneofWrappers = []any{} - file_points_proto_msgTypes[95].OneofWrappers = []any{ + file_points_proto_msgTypes[94].OneofWrappers = []any{} + file_points_proto_msgTypes[97].OneofWrappers = []any{} + file_points_proto_msgTypes[98].OneofWrappers = []any{} + file_points_proto_msgTypes[99].OneofWrappers = []any{} + file_points_proto_msgTypes[101].OneofWrappers = []any{ (*Condition_Field)(nil), (*Condition_IsEmpty)(nil), (*Condition_HasId)(nil), (*Condition_Filter)(nil), (*Condition_IsNull)(nil), (*Condition_Nested)(nil), + (*Condition_HasVector)(nil), } - file_points_proto_msgTypes[101].OneofWrappers = []any{ + file_points_proto_msgTypes[108].OneofWrappers = []any{ (*Match_Keyword)(nil), (*Match_Integer)(nil), (*Match_Boolean)(nil), @@ -13493,29 +14659,29 @@ func file_points_proto_init() { (*Match_ExceptIntegers)(nil), (*Match_ExceptKeywords)(nil), } - file_points_proto_msgTypes[104].OneofWrappers = []any{} - file_points_proto_msgTypes[105].OneofWrappers = []any{} - file_points_proto_msgTypes[110].OneofWrappers = []any{} - file_points_proto_msgTypes[111].OneofWrappers = []any{ + file_points_proto_msgTypes[111].OneofWrappers = []any{} + file_points_proto_msgTypes[112].OneofWrappers = []any{} + file_points_proto_msgTypes[117].OneofWrappers = []any{} + file_points_proto_msgTypes[118].OneofWrappers = []any{ (*PointsSelector_Points)(nil), (*PointsSelector_Filter)(nil), } - file_points_proto_msgTypes[113].OneofWrappers = []any{} - file_points_proto_msgTypes[117].OneofWrappers = []any{} - file_points_proto_msgTypes[118].OneofWrappers = []any{} - file_points_proto_msgTypes[119].OneofWrappers = []any{} file_points_proto_msgTypes[120].OneofWrappers = []any{} - file_points_proto_msgTypes[121].OneofWrappers = []any{} - file_points_proto_msgTypes[122].OneofWrappers = []any{} - file_points_proto_msgTypes[123].OneofWrappers = []any{} - file_points_proto_msgTypes[124].OneofWrappers = []any{} + file_points_proto_msgTypes[129].OneofWrappers = []any{} + file_points_proto_msgTypes[130].OneofWrappers = []any{} + file_points_proto_msgTypes[131].OneofWrappers = []any{} + file_points_proto_msgTypes[132].OneofWrappers = []any{} + file_points_proto_msgTypes[133].OneofWrappers = []any{} + file_points_proto_msgTypes[134].OneofWrappers = []any{} + file_points_proto_msgTypes[135].OneofWrappers = []any{} + file_points_proto_msgTypes[136].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_points_proto_rawDesc, NumEnums: 8, - NumMessages: 130, + NumMessages: 142, NumExtensions: 0, NumServices: 0, }, diff --git a/qdrant/points_service.pb.go b/qdrant/points_service.pb.go index 86850a2..649948f 100644 --- a/qdrant/points_service.pb.go +++ b/qdrant/points_service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.34.2 -// protoc v5.27.3 +// protoc v5.28.0 // source: points_service.proto package qdrant diff --git a/qdrant/points_service_grpc.pb.go b/qdrant/points_service_grpc.pb.go index b87f89d..42e3d02 100644 --- a/qdrant/points_service_grpc.pb.go +++ b/qdrant/points_service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.27.3 +// - protoc v5.28.0 // source: points_service.proto package qdrant @@ -9,6 +9,8 @@ package qdrant import ( context "context" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" ) // This is a compile-time assertion to ensure that this generated file @@ -410,3 +412,820 @@ func (c *pointsClient) SearchMatrixOffsets(ctx context.Context, in *SearchMatrix } return out, nil } + +// PointsServer is the server API for Points service. +// All implementations must embed UnimplementedPointsServer +// for forward compatibility. +type PointsServer interface { + // Perform insert + updates on points. If a point with a given ID already exists - it will be overwritten. + Upsert(context.Context, *UpsertPoints) (*PointsOperationResponse, error) + // Delete points + Delete(context.Context, *DeletePoints) (*PointsOperationResponse, error) + // Retrieve points + Get(context.Context, *GetPoints) (*GetResponse, error) + // Update named vectors for point + UpdateVectors(context.Context, *UpdatePointVectors) (*PointsOperationResponse, error) + // Delete named vectors for points + DeleteVectors(context.Context, *DeletePointVectors) (*PointsOperationResponse, error) + // Set payload for points + SetPayload(context.Context, *SetPayloadPoints) (*PointsOperationResponse, error) + // Overwrite payload for points + OverwritePayload(context.Context, *SetPayloadPoints) (*PointsOperationResponse, error) + // Delete specified key payload for points + DeletePayload(context.Context, *DeletePayloadPoints) (*PointsOperationResponse, error) + // Remove all payload for specified points + ClearPayload(context.Context, *ClearPayloadPoints) (*PointsOperationResponse, error) + // Create index for field in collection + CreateFieldIndex(context.Context, *CreateFieldIndexCollection) (*PointsOperationResponse, error) + // Delete field index for collection + DeleteFieldIndex(context.Context, *DeleteFieldIndexCollection) (*PointsOperationResponse, error) + // Retrieve closest points based on vector similarity and given filtering conditions + Search(context.Context, *SearchPoints) (*SearchResponse, error) + // Retrieve closest points based on vector similarity and given filtering conditions + SearchBatch(context.Context, *SearchBatchPoints) (*SearchBatchResponse, error) + // Retrieve closest points based on vector similarity and given filtering conditions, grouped by a given field + SearchGroups(context.Context, *SearchPointGroups) (*SearchGroupsResponse, error) + // Iterate over all or filtered points + Scroll(context.Context, *ScrollPoints) (*ScrollResponse, error) + // Look for the points which are closer to stored positive examples and at the same time further to negative examples. + Recommend(context.Context, *RecommendPoints) (*RecommendResponse, error) + // Look for the points which are closer to stored positive examples and at the same time further to negative examples. + RecommendBatch(context.Context, *RecommendBatchPoints) (*RecommendBatchResponse, error) + // Look for the points which are closer to stored positive examples and at the same time further to negative examples, grouped by a given field + RecommendGroups(context.Context, *RecommendPointGroups) (*RecommendGroupsResponse, error) + // Use context and a target to find the most similar points to the target, constrained by the context. + // + // When using only the context (without a target), a special search - called context search - is performed where + // pairs of points are used to generate a loss that guides the search towards the zone where + // most positive examples overlap. This means that the score minimizes the scenario of + // finding a point closer to a negative than to a positive part of a pair. + // + // Since the score of a context relates to loss, the maximum score a point can get is 0.0, + // and it becomes normal that many points can have a score of 0.0. + // + // When using target (with or without context), the score behaves a little different: The + // integer part of the score represents the rank with respect to the context, while the + // decimal part of the score relates to the distance to the target. The context part of the score for + // each pair is calculated +1 if the point is closer to a positive than to a negative part of a pair, + // and -1 otherwise. + Discover(context.Context, *DiscoverPoints) (*DiscoverResponse, error) + // Batch request points based on { positive, negative } pairs of examples, and/or a target + DiscoverBatch(context.Context, *DiscoverBatchPoints) (*DiscoverBatchResponse, error) + // Count points in collection with given filtering conditions + Count(context.Context, *CountPoints) (*CountResponse, error) + // Perform multiple update operations in one request + UpdateBatch(context.Context, *UpdateBatchPoints) (*UpdateBatchResponse, error) + // Universally query points. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + Query(context.Context, *QueryPoints) (*QueryResponse, error) + // Universally query points in a batch fashion. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + QueryBatch(context.Context, *QueryBatchPoints) (*QueryBatchResponse, error) + // Universally query points in a group fashion. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + QueryGroups(context.Context, *QueryPointGroups) (*QueryGroupsResponse, error) + // Perform facet counts. For each value in the field, count the number of points that have this value and match the conditions. + Facet(context.Context, *FacetCounts) (*FacetResponse, error) + // Compute distance matrix for sampled points with a pair based output format + SearchMatrixPairs(context.Context, *SearchMatrixPoints) (*SearchMatrixPairsResponse, error) + // Compute distance matrix for sampled points with an offset based output format + SearchMatrixOffsets(context.Context, *SearchMatrixPoints) (*SearchMatrixOffsetsResponse, error) + mustEmbedUnimplementedPointsServer() +} + +// UnimplementedPointsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedPointsServer struct{} + +func (UnimplementedPointsServer) Upsert(context.Context, *UpsertPoints) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Upsert not implemented") +} +func (UnimplementedPointsServer) Delete(context.Context, *DeletePoints) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedPointsServer) Get(context.Context, *GetPoints) (*GetResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedPointsServer) UpdateVectors(context.Context, *UpdatePointVectors) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateVectors not implemented") +} +func (UnimplementedPointsServer) DeleteVectors(context.Context, *DeletePointVectors) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteVectors not implemented") +} +func (UnimplementedPointsServer) SetPayload(context.Context, *SetPayloadPoints) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetPayload not implemented") +} +func (UnimplementedPointsServer) OverwritePayload(context.Context, *SetPayloadPoints) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method OverwritePayload not implemented") +} +func (UnimplementedPointsServer) DeletePayload(context.Context, *DeletePayloadPoints) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeletePayload not implemented") +} +func (UnimplementedPointsServer) ClearPayload(context.Context, *ClearPayloadPoints) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ClearPayload not implemented") +} +func (UnimplementedPointsServer) CreateFieldIndex(context.Context, *CreateFieldIndexCollection) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateFieldIndex not implemented") +} +func (UnimplementedPointsServer) DeleteFieldIndex(context.Context, *DeleteFieldIndexCollection) (*PointsOperationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteFieldIndex not implemented") +} +func (UnimplementedPointsServer) Search(context.Context, *SearchPoints) (*SearchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Search not implemented") +} +func (UnimplementedPointsServer) SearchBatch(context.Context, *SearchBatchPoints) (*SearchBatchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchBatch not implemented") +} +func (UnimplementedPointsServer) SearchGroups(context.Context, *SearchPointGroups) (*SearchGroupsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchGroups not implemented") +} +func (UnimplementedPointsServer) Scroll(context.Context, *ScrollPoints) (*ScrollResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Scroll not implemented") +} +func (UnimplementedPointsServer) Recommend(context.Context, *RecommendPoints) (*RecommendResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Recommend not implemented") +} +func (UnimplementedPointsServer) RecommendBatch(context.Context, *RecommendBatchPoints) (*RecommendBatchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecommendBatch not implemented") +} +func (UnimplementedPointsServer) RecommendGroups(context.Context, *RecommendPointGroups) (*RecommendGroupsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecommendGroups not implemented") +} +func (UnimplementedPointsServer) Discover(context.Context, *DiscoverPoints) (*DiscoverResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Discover not implemented") +} +func (UnimplementedPointsServer) DiscoverBatch(context.Context, *DiscoverBatchPoints) (*DiscoverBatchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DiscoverBatch not implemented") +} +func (UnimplementedPointsServer) Count(context.Context, *CountPoints) (*CountResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Count not implemented") +} +func (UnimplementedPointsServer) UpdateBatch(context.Context, *UpdateBatchPoints) (*UpdateBatchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateBatch not implemented") +} +func (UnimplementedPointsServer) Query(context.Context, *QueryPoints) (*QueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Query not implemented") +} +func (UnimplementedPointsServer) QueryBatch(context.Context, *QueryBatchPoints) (*QueryBatchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryBatch not implemented") +} +func (UnimplementedPointsServer) QueryGroups(context.Context, *QueryPointGroups) (*QueryGroupsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryGroups not implemented") +} +func (UnimplementedPointsServer) Facet(context.Context, *FacetCounts) (*FacetResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Facet not implemented") +} +func (UnimplementedPointsServer) SearchMatrixPairs(context.Context, *SearchMatrixPoints) (*SearchMatrixPairsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchMatrixPairs not implemented") +} +func (UnimplementedPointsServer) SearchMatrixOffsets(context.Context, *SearchMatrixPoints) (*SearchMatrixOffsetsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchMatrixOffsets not implemented") +} +func (UnimplementedPointsServer) mustEmbedUnimplementedPointsServer() {} +func (UnimplementedPointsServer) testEmbeddedByValue() {} + +// UnsafePointsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to PointsServer will +// result in compilation errors. +type UnsafePointsServer interface { + mustEmbedUnimplementedPointsServer() +} + +func RegisterPointsServer(s grpc.ServiceRegistrar, srv PointsServer) { + // If the following call pancis, it indicates UnimplementedPointsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Points_ServiceDesc, srv) +} + +func _Points_Upsert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpsertPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Upsert(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Upsert_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Upsert(ctx, req.(*UpsertPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Delete(ctx, req.(*DeletePoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Get_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Get(ctx, req.(*GetPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_UpdateVectors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePointVectors) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).UpdateVectors(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_UpdateVectors_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).UpdateVectors(ctx, req.(*UpdatePointVectors)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_DeleteVectors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePointVectors) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).DeleteVectors(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_DeleteVectors_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).DeleteVectors(ctx, req.(*DeletePointVectors)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_SetPayload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetPayloadPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).SetPayload(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_SetPayload_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).SetPayload(ctx, req.(*SetPayloadPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_OverwritePayload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetPayloadPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).OverwritePayload(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_OverwritePayload_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).OverwritePayload(ctx, req.(*SetPayloadPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_DeletePayload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePayloadPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).DeletePayload(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_DeletePayload_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).DeletePayload(ctx, req.(*DeletePayloadPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_ClearPayload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClearPayloadPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).ClearPayload(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_ClearPayload_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).ClearPayload(ctx, req.(*ClearPayloadPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_CreateFieldIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateFieldIndexCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).CreateFieldIndex(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_CreateFieldIndex_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).CreateFieldIndex(ctx, req.(*CreateFieldIndexCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_DeleteFieldIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteFieldIndexCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).DeleteFieldIndex(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_DeleteFieldIndex_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).DeleteFieldIndex(ctx, req.(*DeleteFieldIndexCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Search(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Search_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Search(ctx, req.(*SearchPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_SearchBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchBatchPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).SearchBatch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_SearchBatch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).SearchBatch(ctx, req.(*SearchBatchPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_SearchGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchPointGroups) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).SearchGroups(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_SearchGroups_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).SearchGroups(ctx, req.(*SearchPointGroups)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Scroll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ScrollPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Scroll(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Scroll_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Scroll(ctx, req.(*ScrollPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Recommend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RecommendPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Recommend(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Recommend_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Recommend(ctx, req.(*RecommendPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_RecommendBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RecommendBatchPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).RecommendBatch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_RecommendBatch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).RecommendBatch(ctx, req.(*RecommendBatchPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_RecommendGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RecommendPointGroups) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).RecommendGroups(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_RecommendGroups_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).RecommendGroups(ctx, req.(*RecommendPointGroups)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Discover_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DiscoverPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Discover(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Discover_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Discover(ctx, req.(*DiscoverPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_DiscoverBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DiscoverBatchPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).DiscoverBatch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_DiscoverBatch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).DiscoverBatch(ctx, req.(*DiscoverBatchPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Count_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CountPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Count(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Count_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Count(ctx, req.(*CountPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_UpdateBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateBatchPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).UpdateBatch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_UpdateBatch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).UpdateBatch(ctx, req.(*UpdateBatchPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Query_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Query(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Query_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Query(ctx, req.(*QueryPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_QueryBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryBatchPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).QueryBatch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_QueryBatch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).QueryBatch(ctx, req.(*QueryBatchPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_QueryGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPointGroups) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).QueryGroups(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_QueryGroups_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).QueryGroups(ctx, req.(*QueryPointGroups)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_Facet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FacetCounts) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Facet(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_Facet_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Facet(ctx, req.(*FacetCounts)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_SearchMatrixPairs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchMatrixPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).SearchMatrixPairs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_SearchMatrixPairs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).SearchMatrixPairs(ctx, req.(*SearchMatrixPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_SearchMatrixOffsets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchMatrixPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).SearchMatrixOffsets(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Points_SearchMatrixOffsets_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).SearchMatrixOffsets(ctx, req.(*SearchMatrixPoints)) + } + return interceptor(ctx, in, info, handler) +} + +// Points_ServiceDesc is the grpc.ServiceDesc for Points service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Points_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "qdrant.Points", + HandlerType: (*PointsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Upsert", + Handler: _Points_Upsert_Handler, + }, + { + MethodName: "Delete", + Handler: _Points_Delete_Handler, + }, + { + MethodName: "Get", + Handler: _Points_Get_Handler, + }, + { + MethodName: "UpdateVectors", + Handler: _Points_UpdateVectors_Handler, + }, + { + MethodName: "DeleteVectors", + Handler: _Points_DeleteVectors_Handler, + }, + { + MethodName: "SetPayload", + Handler: _Points_SetPayload_Handler, + }, + { + MethodName: "OverwritePayload", + Handler: _Points_OverwritePayload_Handler, + }, + { + MethodName: "DeletePayload", + Handler: _Points_DeletePayload_Handler, + }, + { + MethodName: "ClearPayload", + Handler: _Points_ClearPayload_Handler, + }, + { + MethodName: "CreateFieldIndex", + Handler: _Points_CreateFieldIndex_Handler, + }, + { + MethodName: "DeleteFieldIndex", + Handler: _Points_DeleteFieldIndex_Handler, + }, + { + MethodName: "Search", + Handler: _Points_Search_Handler, + }, + { + MethodName: "SearchBatch", + Handler: _Points_SearchBatch_Handler, + }, + { + MethodName: "SearchGroups", + Handler: _Points_SearchGroups_Handler, + }, + { + MethodName: "Scroll", + Handler: _Points_Scroll_Handler, + }, + { + MethodName: "Recommend", + Handler: _Points_Recommend_Handler, + }, + { + MethodName: "RecommendBatch", + Handler: _Points_RecommendBatch_Handler, + }, + { + MethodName: "RecommendGroups", + Handler: _Points_RecommendGroups_Handler, + }, + { + MethodName: "Discover", + Handler: _Points_Discover_Handler, + }, + { + MethodName: "DiscoverBatch", + Handler: _Points_DiscoverBatch_Handler, + }, + { + MethodName: "Count", + Handler: _Points_Count_Handler, + }, + { + MethodName: "UpdateBatch", + Handler: _Points_UpdateBatch_Handler, + }, + { + MethodName: "Query", + Handler: _Points_Query_Handler, + }, + { + MethodName: "QueryBatch", + Handler: _Points_QueryBatch_Handler, + }, + { + MethodName: "QueryGroups", + Handler: _Points_QueryGroups_Handler, + }, + { + MethodName: "Facet", + Handler: _Points_Facet_Handler, + }, + { + MethodName: "SearchMatrixPairs", + Handler: _Points_SearchMatrixPairs_Handler, + }, + { + MethodName: "SearchMatrixOffsets", + Handler: _Points_SearchMatrixOffsets_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "points_service.proto", +} diff --git a/qdrant/qdrant.pb.go b/qdrant/qdrant.pb.go index 795f8fd..11c5e8a 100644 --- a/qdrant/qdrant.pb.go +++ b/qdrant/qdrant.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.34.2 -// protoc v5.27.3 +// protoc v5.28.0 // source: qdrant.proto package qdrant diff --git a/qdrant/qdrant_grpc.pb.go b/qdrant/qdrant_grpc.pb.go index a7c4db2..7f23fbe 100644 --- a/qdrant/qdrant_grpc.pb.go +++ b/qdrant/qdrant_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.27.3 +// - protoc v5.28.0 // source: qdrant.proto package qdrant diff --git a/qdrant/snapshots_service.pb.go b/qdrant/snapshots_service.pb.go index de1db41..aae6436 100644 --- a/qdrant/snapshots_service.pb.go +++ b/qdrant/snapshots_service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.34.2 -// protoc v5.27.3 +// protoc v5.28.0 // source: snapshots_service.proto package qdrant diff --git a/qdrant/snapshots_service_grpc.pb.go b/qdrant/snapshots_service_grpc.pb.go index 57b6322..6134306 100644 --- a/qdrant/snapshots_service_grpc.pb.go +++ b/qdrant/snapshots_service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.27.3 +// - protoc v5.28.0 // source: snapshots_service.proto package qdrant @@ -9,6 +9,8 @@ package qdrant import ( context "context" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" ) // This is a compile-time assertion to ensure that this generated file @@ -110,3 +112,212 @@ func (c *snapshotsClient) DeleteFull(ctx context.Context, in *DeleteFullSnapshot } return out, nil } + +// SnapshotsServer is the server API for Snapshots service. +// All implementations must embed UnimplementedSnapshotsServer +// for forward compatibility. +type SnapshotsServer interface { + // Create collection snapshot + Create(context.Context, *CreateSnapshotRequest) (*CreateSnapshotResponse, error) + // List collection snapshots + List(context.Context, *ListSnapshotsRequest) (*ListSnapshotsResponse, error) + // Delete collection snapshot + Delete(context.Context, *DeleteSnapshotRequest) (*DeleteSnapshotResponse, error) + // Create full storage snapshot + CreateFull(context.Context, *CreateFullSnapshotRequest) (*CreateSnapshotResponse, error) + // List full storage snapshots + ListFull(context.Context, *ListFullSnapshotsRequest) (*ListSnapshotsResponse, error) + // Delete full storage snapshot + DeleteFull(context.Context, *DeleteFullSnapshotRequest) (*DeleteSnapshotResponse, error) + mustEmbedUnimplementedSnapshotsServer() +} + +// UnimplementedSnapshotsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedSnapshotsServer struct{} + +func (UnimplementedSnapshotsServer) Create(context.Context, *CreateSnapshotRequest) (*CreateSnapshotResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedSnapshotsServer) List(context.Context, *ListSnapshotsRequest) (*ListSnapshotsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedSnapshotsServer) Delete(context.Context, *DeleteSnapshotRequest) (*DeleteSnapshotResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedSnapshotsServer) CreateFull(context.Context, *CreateFullSnapshotRequest) (*CreateSnapshotResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateFull not implemented") +} +func (UnimplementedSnapshotsServer) ListFull(context.Context, *ListFullSnapshotsRequest) (*ListSnapshotsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFull not implemented") +} +func (UnimplementedSnapshotsServer) DeleteFull(context.Context, *DeleteFullSnapshotRequest) (*DeleteSnapshotResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteFull not implemented") +} +func (UnimplementedSnapshotsServer) mustEmbedUnimplementedSnapshotsServer() {} +func (UnimplementedSnapshotsServer) testEmbeddedByValue() {} + +// UnsafeSnapshotsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to SnapshotsServer will +// result in compilation errors. +type UnsafeSnapshotsServer interface { + mustEmbedUnimplementedSnapshotsServer() +} + +func RegisterSnapshotsServer(s grpc.ServiceRegistrar, srv SnapshotsServer) { + // If the following call pancis, it indicates UnimplementedSnapshotsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Snapshots_ServiceDesc, srv) +} + +func _Snapshots_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateSnapshotRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SnapshotsServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Snapshots_Create_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SnapshotsServer).Create(ctx, req.(*CreateSnapshotRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Snapshots_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListSnapshotsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SnapshotsServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Snapshots_List_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SnapshotsServer).List(ctx, req.(*ListSnapshotsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Snapshots_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteSnapshotRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SnapshotsServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Snapshots_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SnapshotsServer).Delete(ctx, req.(*DeleteSnapshotRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Snapshots_CreateFull_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateFullSnapshotRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SnapshotsServer).CreateFull(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Snapshots_CreateFull_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SnapshotsServer).CreateFull(ctx, req.(*CreateFullSnapshotRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Snapshots_ListFull_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFullSnapshotsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SnapshotsServer).ListFull(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Snapshots_ListFull_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SnapshotsServer).ListFull(ctx, req.(*ListFullSnapshotsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Snapshots_DeleteFull_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteFullSnapshotRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SnapshotsServer).DeleteFull(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Snapshots_DeleteFull_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SnapshotsServer).DeleteFull(ctx, req.(*DeleteFullSnapshotRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Snapshots_ServiceDesc is the grpc.ServiceDesc for Snapshots service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Snapshots_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "qdrant.Snapshots", + HandlerType: (*SnapshotsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _Snapshots_Create_Handler, + }, + { + MethodName: "List", + Handler: _Snapshots_List_Handler, + }, + { + MethodName: "Delete", + Handler: _Snapshots_Delete_Handler, + }, + { + MethodName: "CreateFull", + Handler: _Snapshots_CreateFull_Handler, + }, + { + MethodName: "ListFull", + Handler: _Snapshots_ListFull_Handler, + }, + { + MethodName: "DeleteFull", + Handler: _Snapshots_DeleteFull_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "snapshots_service.proto", +} diff --git a/qdrant_test/image_test.go b/qdrant_test/image_test.go index 0844ead..00d8662 100644 --- a/qdrant_test/image_test.go +++ b/qdrant_test/image_test.go @@ -8,7 +8,7 @@ import ( "github.com/testcontainers/testcontainers-go/wait" ) -const TestImage string = "qdrant/qdrant:v1.12.0" +const TestImage string = "qdrant/qdrant:v1.13.0" // We use an instance with distributed mode enabled // to test methods like CreateShardKey(), DeleteShardKey().