From 05e9e1f53f2a0c8b3aaadc1811338ca3e682f245 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 2 Feb 2024 21:26:41 +0000 Subject: [PATCH] feat(documentai): add model_type in v1beta3 processor proto (#9355) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 603726122 Source-Link: https://togithub.com/googleapis/googleapis/commit/c7fd8bd652ac690ca84f485014f70b52eef7cb9e Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/23bc05e699ad5701027589137be44d4a43091829 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjNiYzA1ZTY5OWFkNTcwMTAyNzU4OTEzN2JlNDRkNGE0MzA5MTgyOSJ9 BEGIN_NESTED_COMMIT chore(apps/meet): update go_package and Go importpath PiperOrigin-RevId: 603489497 Source-Link: https://togithub.com/googleapis/googleapis/commit/5335f41fadc7d784cdf91f0bbf595475f36b4074 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/f73599d0f6e124eb851f1c5ec065b21d59362201 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZjczNTk5ZDBmNmUxMjRlYjg1MWYxYzVlYzA2NWIyMWQ1OTM2MjIwMSJ9 END_NESTED_COMMIT BEGIN_NESTED_COMMIT feat(aiplatform): Add generateContent Unary API for aiplatform_v1 docs: Update comment for DirectPredict and DirectRawPredict PiperOrigin-RevId: 603498510 Source-Link: https://togithub.com/googleapis/googleapis/commit/49815f4d9ce5603b56207018e44255599ae68bd9 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/893e2e072e7aa54f3fb0425a3c2da9a2668c701b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiODkzZTJlMDcyZTdhYTU0ZjNmYjA0MjVhM2MyZGE5YTI2NjhjNzAxYiJ9 END_NESTED_COMMIT BEGIN_NESTED_COMMIT feat(aiplatform): Add generateContent Unary API for aiplatform_v1beta1 docs: Update comment for DirectPredict and DirectRawPredict PiperOrigin-RevId: 603497761 Source-Link: https://togithub.com/googleapis/googleapis/commit/4f5f442a1b0eea843ebd179f2b4673ae67332ed9 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/f1d6d8b375f1dbf6d5df26bcae3bf0c8b8cfddf7 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZjFkNmQ4YjM3NWYxZGJmNmQ1ZGYyNmJjYWUzYmYwYzhiOGNmZGRmNyJ9 END_NESTED_COMMIT --- .../aiplatformpb/prediction_service.pb.go | 1737 +++++++--- aiplatform/apiv1/gapic_metadata.json | 20 + aiplatform/apiv1/prediction_client.go | 107 +- .../apiv1/prediction_client_example_test.go | 105 + .../aiplatformpb/prediction_service.pb.go | 1636 +++++++--- aiplatform/apiv1beta1/gapic_metadata.json | 30 + aiplatform/apiv1beta1/prediction_client.go | 172 +- .../prediction_client_example_test.go | 105 + apps/meet/apiv2/auxiliary.go | 304 ++ apps/meet/apiv2/conference_records_client.go | 1936 +++++++++++ .../conference_records_client_example_test.go | 395 +++ apps/meet/apiv2/doc.go | 123 + apps/meet/apiv2/gapic_metadata.json | 197 ++ apps/meet/apiv2/meetpb/resource.pb.go | 1920 +++++++++++ apps/meet/apiv2/meetpb/service.pb.go | 2878 +++++++++++++++++ apps/meet/apiv2/spaces_client.go | 633 ++++ apps/meet/apiv2/spaces_client_example_test.go | 156 + apps/meet/apiv2/version.go | 23 + .../apiv1beta3/documentaipb/processor.pb.go | 336 +- internal/.repo-metadata-full.json | 10 + .../PredictionClient/GenerateContent/main.go | 53 + .../StreamDirectPredict/main.go | 69 + .../StreamDirectRawPredict/main.go | 69 + ...t_metadata.google.cloud.aiplatform.v1.json | 134 +- .../PredictionClient/GenerateContent/main.go | 53 + .../StreamDirectPredict/main.go | 69 + .../StreamDirectRawPredict/main.go | 69 + ...adata.google.cloud.aiplatform.v1beta1.json | 134 +- .../GetConferenceRecord/main.go | 53 + .../GetParticipant/main.go | 53 + .../GetParticipantSession/main.go | 53 + .../GetRecording/main.go | 53 + .../GetTranscript/main.go | 53 + .../GetTranscriptEntry/main.go | 53 + .../ListConferenceRecords/main.go | 60 + .../ListParticipantSessions/main.go | 60 + .../ListParticipants/main.go | 60 + .../ListRecordings/main.go | 60 + .../ListTranscriptEntries/main.go | 60 + .../ListTranscripts/main.go | 60 + .../apiv2/SpacesClient/CreateSpace/main.go | 53 + .../SpacesClient/EndActiveConference/main.go | 51 + .../meet/apiv2/SpacesClient/GetSpace/main.go | 53 + .../apiv2/SpacesClient/UpdateSpace/main.go | 53 + .../snippet_metadata.google.apps.meet.v2.json | 750 +++++ 45 files changed, 13962 insertions(+), 1149 deletions(-) create mode 100755 apps/meet/apiv2/auxiliary.go create mode 100755 apps/meet/apiv2/conference_records_client.go create mode 100644 apps/meet/apiv2/conference_records_client_example_test.go create mode 100755 apps/meet/apiv2/doc.go create mode 100644 apps/meet/apiv2/gapic_metadata.json create mode 100755 apps/meet/apiv2/meetpb/resource.pb.go create mode 100755 apps/meet/apiv2/meetpb/service.pb.go create mode 100755 apps/meet/apiv2/spaces_client.go create mode 100644 apps/meet/apiv2/spaces_client_example_test.go create mode 100644 apps/meet/apiv2/version.go create mode 100644 internal/generated/snippets/aiplatform/apiv1/PredictionClient/GenerateContent/main.go create mode 100644 internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectPredict/main.go create mode 100644 internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectRawPredict/main.go create mode 100644 internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/GenerateContent/main.go create mode 100644 internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectPredict/main.go create mode 100644 internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectRawPredict/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetConferenceRecord/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipant/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipantSession/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetRecording/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscript/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscriptEntry/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListConferenceRecords/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipantSessions/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipants/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListRecordings/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscriptEntries/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscripts/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/SpacesClient/CreateSpace/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/SpacesClient/EndActiveConference/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/SpacesClient/GetSpace/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/SpacesClient/UpdateSpace/main.go create mode 100644 internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json diff --git a/aiplatform/apiv1/aiplatformpb/prediction_service.pb.go b/aiplatform/apiv1/aiplatformpb/prediction_service.pb.go index c42607f30737..aba4d0a14c3c 100755 --- a/aiplatform/apiv1/aiplatformpb/prediction_service.pb.go +++ b/aiplatform/apiv1/aiplatformpb/prediction_service.pb.go @@ -92,7 +92,7 @@ func (x GenerateContentResponse_PromptFeedback_BlockedReason) Number() protorefl // Deprecated: Use GenerateContentResponse_PromptFeedback_BlockedReason.Descriptor instead. func (GenerateContentResponse_PromptFeedback_BlockedReason) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{16, 0, 0} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{21, 0, 0} } // Request message for @@ -356,6 +356,67 @@ func (x *RawPredictRequest) GetHttpBody() *httpbody.HttpBody { return nil } +// Request message for +// [PredictionService.StreamRawPredict][google.cloud.aiplatform.v1.PredictionService.StreamRawPredict]. +type StreamRawPredictRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the Endpoint requested to serve the prediction. + // Format: + // `projects/{project}/locations/{location}/endpoints/{endpoint}` + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // The prediction input. Supports HTTP headers and arbitrary data payload. + HttpBody *httpbody.HttpBody `protobuf:"bytes,2,opt,name=http_body,json=httpBody,proto3" json:"http_body,omitempty"` +} + +func (x *StreamRawPredictRequest) Reset() { + *x = StreamRawPredictRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamRawPredictRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamRawPredictRequest) ProtoMessage() {} + +func (x *StreamRawPredictRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[3] + 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 StreamRawPredictRequest.ProtoReflect.Descriptor instead. +func (*StreamRawPredictRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{3} +} + +func (x *StreamRawPredictRequest) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *StreamRawPredictRequest) GetHttpBody() *httpbody.HttpBody { + if x != nil { + return x.HttpBody + } + return nil +} + // Request message for // [PredictionService.DirectPredict][google.cloud.aiplatform.v1.PredictionService.DirectPredict]. type DirectPredictRequest struct { @@ -376,7 +437,7 @@ type DirectPredictRequest struct { func (x *DirectPredictRequest) Reset() { *x = DirectPredictRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[3] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -389,7 +450,7 @@ func (x *DirectPredictRequest) String() string { func (*DirectPredictRequest) ProtoMessage() {} func (x *DirectPredictRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[3] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -402,7 +463,7 @@ func (x *DirectPredictRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectPredictRequest.ProtoReflect.Descriptor instead. func (*DirectPredictRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{3} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{4} } func (x *DirectPredictRequest) GetEndpoint() string { @@ -442,7 +503,7 @@ type DirectPredictResponse struct { func (x *DirectPredictResponse) Reset() { *x = DirectPredictResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[4] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -455,7 +516,7 @@ func (x *DirectPredictResponse) String() string { func (*DirectPredictResponse) ProtoMessage() {} func (x *DirectPredictResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[4] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -468,7 +529,7 @@ func (x *DirectPredictResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectPredictResponse.ProtoReflect.Descriptor instead. func (*DirectPredictResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{4} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{5} } func (x *DirectPredictResponse) GetOutputs() []*Tensor { @@ -511,7 +572,7 @@ type DirectRawPredictRequest struct { func (x *DirectRawPredictRequest) Reset() { *x = DirectRawPredictRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[5] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -524,7 +585,7 @@ func (x *DirectRawPredictRequest) String() string { func (*DirectRawPredictRequest) ProtoMessage() {} func (x *DirectRawPredictRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[5] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -537,7 +598,7 @@ func (x *DirectRawPredictRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectRawPredictRequest.ProtoReflect.Descriptor instead. func (*DirectRawPredictRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{5} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{6} } func (x *DirectRawPredictRequest) GetEndpoint() string { @@ -575,7 +636,7 @@ type DirectRawPredictResponse struct { func (x *DirectRawPredictResponse) Reset() { *x = DirectRawPredictResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[6] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -588,7 +649,7 @@ func (x *DirectRawPredictResponse) String() string { func (*DirectRawPredictResponse) ProtoMessage() {} func (x *DirectRawPredictResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[6] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -601,7 +662,7 @@ func (x *DirectRawPredictResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectRawPredictResponse.ProtoReflect.Descriptor instead. func (*DirectRawPredictResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{6} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{7} } func (x *DirectRawPredictResponse) GetOutput() []byte { @@ -611,6 +672,277 @@ func (x *DirectRawPredictResponse) GetOutput() []byte { return nil } +// Request message for +// [PredictionService.StreamDirectPredict][google.cloud.aiplatform.v1.PredictionService.StreamDirectPredict]. +// +// The first message must contain +// [endpoint][google.cloud.aiplatform.v1.StreamDirectPredictRequest.endpoint] +// field and optionally [input][]. The subsequent messages must contain +// [input][]. +type StreamDirectPredictRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the Endpoint requested to serve the prediction. + // Format: + // `projects/{project}/locations/{location}/endpoints/{endpoint}` + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // Optional. The prediction input. + Inputs []*Tensor `protobuf:"bytes,2,rep,name=inputs,proto3" json:"inputs,omitempty"` + // Optional. The parameters that govern the prediction. + Parameters *Tensor `protobuf:"bytes,3,opt,name=parameters,proto3" json:"parameters,omitempty"` +} + +func (x *StreamDirectPredictRequest) Reset() { + *x = StreamDirectPredictRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectPredictRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectPredictRequest) ProtoMessage() {} + +func (x *StreamDirectPredictRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamDirectPredictRequest.ProtoReflect.Descriptor instead. +func (*StreamDirectPredictRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{8} +} + +func (x *StreamDirectPredictRequest) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *StreamDirectPredictRequest) GetInputs() []*Tensor { + if x != nil { + return x.Inputs + } + return nil +} + +func (x *StreamDirectPredictRequest) GetParameters() *Tensor { + if x != nil { + return x.Parameters + } + return nil +} + +// Response message for +// [PredictionService.StreamDirectPredict][google.cloud.aiplatform.v1.PredictionService.StreamDirectPredict]. +type StreamDirectPredictResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The prediction output. + Outputs []*Tensor `protobuf:"bytes,1,rep,name=outputs,proto3" json:"outputs,omitempty"` + // The parameters that govern the prediction. + Parameters *Tensor `protobuf:"bytes,2,opt,name=parameters,proto3" json:"parameters,omitempty"` +} + +func (x *StreamDirectPredictResponse) Reset() { + *x = StreamDirectPredictResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectPredictResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectPredictResponse) ProtoMessage() {} + +func (x *StreamDirectPredictResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[9] + 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 StreamDirectPredictResponse.ProtoReflect.Descriptor instead. +func (*StreamDirectPredictResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{9} +} + +func (x *StreamDirectPredictResponse) GetOutputs() []*Tensor { + if x != nil { + return x.Outputs + } + return nil +} + +func (x *StreamDirectPredictResponse) GetParameters() *Tensor { + if x != nil { + return x.Parameters + } + return nil +} + +// Request message for +// [PredictionService.StreamDirectRawPredict][google.cloud.aiplatform.v1.PredictionService.StreamDirectRawPredict]. +// +// The first message must contain +// [endpoint][google.cloud.aiplatform.v1.StreamDirectRawPredictRequest.endpoint] +// and +// [method_name][google.cloud.aiplatform.v1.StreamDirectRawPredictRequest.method_name] +// fields and optionally +// [input][google.cloud.aiplatform.v1.StreamDirectRawPredictRequest.input]. The +// subsequent messages must contain +// [input][google.cloud.aiplatform.v1.StreamDirectRawPredictRequest.input]. +// [method_name][google.cloud.aiplatform.v1.StreamDirectRawPredictRequest.method_name] +// in the subsequent messages have no effect. +type StreamDirectRawPredictRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the Endpoint requested to serve the prediction. + // Format: + // `projects/{project}/locations/{location}/endpoints/{endpoint}` + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // Optional. Fully qualified name of the API method being invoked to perform + // predictions. + // + // Format: + // `/namespace.Service/Method/` + // Example: + // `/tensorflow.serving.PredictionService/Predict` + MethodName string `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` + // Optional. The prediction input. + Input []byte `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` +} + +func (x *StreamDirectRawPredictRequest) Reset() { + *x = StreamDirectRawPredictRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectRawPredictRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectRawPredictRequest) ProtoMessage() {} + +func (x *StreamDirectRawPredictRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[10] + 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 StreamDirectRawPredictRequest.ProtoReflect.Descriptor instead. +func (*StreamDirectRawPredictRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{10} +} + +func (x *StreamDirectRawPredictRequest) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *StreamDirectRawPredictRequest) GetMethodName() string { + if x != nil { + return x.MethodName + } + return "" +} + +func (x *StreamDirectRawPredictRequest) GetInput() []byte { + if x != nil { + return x.Input + } + return nil +} + +// Response message for +// [PredictionService.StreamDirectRawPredict][google.cloud.aiplatform.v1.PredictionService.StreamDirectRawPredict]. +type StreamDirectRawPredictResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The prediction output. + Output []byte `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` +} + +func (x *StreamDirectRawPredictResponse) Reset() { + *x = StreamDirectRawPredictResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectRawPredictResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectRawPredictResponse) ProtoMessage() {} + +func (x *StreamDirectRawPredictResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamDirectRawPredictResponse.ProtoReflect.Descriptor instead. +func (*StreamDirectRawPredictResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{11} +} + +func (x *StreamDirectRawPredictResponse) GetOutput() []byte { + if x != nil { + return x.Output + } + return nil +} + // Request message for // [PredictionService.StreamingPredict][google.cloud.aiplatform.v1.PredictionService.StreamingPredict]. // @@ -635,7 +967,7 @@ type StreamingPredictRequest struct { func (x *StreamingPredictRequest) Reset() { *x = StreamingPredictRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[7] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -648,7 +980,7 @@ func (x *StreamingPredictRequest) String() string { func (*StreamingPredictRequest) ProtoMessage() {} func (x *StreamingPredictRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[7] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -661,7 +993,7 @@ func (x *StreamingPredictRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingPredictRequest.ProtoReflect.Descriptor instead. func (*StreamingPredictRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{7} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{12} } func (x *StreamingPredictRequest) GetEndpoint() string { @@ -701,7 +1033,7 @@ type StreamingPredictResponse struct { func (x *StreamingPredictResponse) Reset() { *x = StreamingPredictResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[8] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -714,7 +1046,7 @@ func (x *StreamingPredictResponse) String() string { func (*StreamingPredictResponse) ProtoMessage() {} func (x *StreamingPredictResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[8] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -727,7 +1059,7 @@ func (x *StreamingPredictResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingPredictResponse.ProtoReflect.Descriptor instead. func (*StreamingPredictResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{8} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{13} } func (x *StreamingPredictResponse) GetOutputs() []*Tensor { @@ -781,7 +1113,7 @@ type StreamingRawPredictRequest struct { func (x *StreamingRawPredictRequest) Reset() { *x = StreamingRawPredictRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[9] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -794,7 +1126,7 @@ func (x *StreamingRawPredictRequest) String() string { func (*StreamingRawPredictRequest) ProtoMessage() {} func (x *StreamingRawPredictRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[9] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -807,7 +1139,7 @@ func (x *StreamingRawPredictRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingRawPredictRequest.ProtoReflect.Descriptor instead. func (*StreamingRawPredictRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{9} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{14} } func (x *StreamingRawPredictRequest) GetEndpoint() string { @@ -845,7 +1177,7 @@ type StreamingRawPredictResponse struct { func (x *StreamingRawPredictResponse) Reset() { *x = StreamingRawPredictResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[10] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -858,7 +1190,7 @@ func (x *StreamingRawPredictResponse) String() string { func (*StreamingRawPredictResponse) ProtoMessage() {} func (x *StreamingRawPredictResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[10] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -871,7 +1203,7 @@ func (x *StreamingRawPredictResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingRawPredictResponse.ProtoReflect.Descriptor instead. func (*StreamingRawPredictResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{10} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{15} } func (x *StreamingRawPredictResponse) GetOutput() []byte { @@ -926,7 +1258,7 @@ type ExplainRequest struct { func (x *ExplainRequest) Reset() { *x = ExplainRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[11] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -939,7 +1271,7 @@ func (x *ExplainRequest) String() string { func (*ExplainRequest) ProtoMessage() {} func (x *ExplainRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[11] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -952,7 +1284,7 @@ func (x *ExplainRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExplainRequest.ProtoReflect.Descriptor instead. func (*ExplainRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{11} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{16} } func (x *ExplainRequest) GetEndpoint() string { @@ -1015,7 +1347,7 @@ type ExplainResponse struct { func (x *ExplainResponse) Reset() { *x = ExplainResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[12] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1028,7 +1360,7 @@ func (x *ExplainResponse) String() string { func (*ExplainResponse) ProtoMessage() {} func (x *ExplainResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[12] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1041,7 +1373,7 @@ func (x *ExplainResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExplainResponse.ProtoReflect.Descriptor instead. func (*ExplainResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{12} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{17} } func (x *ExplainResponse) GetExplanations() []*Explanation { @@ -1089,7 +1421,7 @@ type CountTokensRequest struct { func (x *CountTokensRequest) Reset() { *x = CountTokensRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[13] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1102,7 +1434,7 @@ func (x *CountTokensRequest) String() string { func (*CountTokensRequest) ProtoMessage() {} func (x *CountTokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[13] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1115,7 +1447,7 @@ func (x *CountTokensRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountTokensRequest.ProtoReflect.Descriptor instead. func (*CountTokensRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{13} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{18} } func (x *CountTokensRequest) GetEndpoint() string { @@ -1162,7 +1494,7 @@ type CountTokensResponse struct { func (x *CountTokensResponse) Reset() { *x = CountTokensResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[14] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1175,7 +1507,7 @@ func (x *CountTokensResponse) String() string { func (*CountTokensResponse) ProtoMessage() {} func (x *CountTokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[14] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1188,7 +1520,7 @@ func (x *CountTokensResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountTokensResponse.ProtoReflect.Descriptor instead. func (*CountTokensResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{14} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{19} } func (x *CountTokensResponse) GetTotalTokens() int32 { @@ -1239,7 +1571,7 @@ type GenerateContentRequest struct { func (x *GenerateContentRequest) Reset() { *x = GenerateContentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[15] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1252,7 +1584,7 @@ func (x *GenerateContentRequest) String() string { func (*GenerateContentRequest) ProtoMessage() {} func (x *GenerateContentRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[15] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1265,7 +1597,7 @@ func (x *GenerateContentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateContentRequest.ProtoReflect.Descriptor instead. func (*GenerateContentRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{15} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{20} } func (x *GenerateContentRequest) GetModel() string { @@ -1322,7 +1654,7 @@ type GenerateContentResponse struct { func (x *GenerateContentResponse) Reset() { *x = GenerateContentResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[16] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1335,7 +1667,7 @@ func (x *GenerateContentResponse) String() string { func (*GenerateContentResponse) ProtoMessage() {} func (x *GenerateContentResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[16] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1348,7 +1680,7 @@ func (x *GenerateContentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateContentResponse.ProtoReflect.Descriptor instead. func (*GenerateContentResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{16} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{21} } func (x *GenerateContentResponse) GetCandidates() []*Candidate { @@ -1389,7 +1721,7 @@ type GenerateContentResponse_PromptFeedback struct { func (x *GenerateContentResponse_PromptFeedback) Reset() { *x = GenerateContentResponse_PromptFeedback{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[17] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1402,7 +1734,7 @@ func (x *GenerateContentResponse_PromptFeedback) String() string { func (*GenerateContentResponse_PromptFeedback) ProtoMessage() {} func (x *GenerateContentResponse_PromptFeedback) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[17] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1415,7 +1747,7 @@ func (x *GenerateContentResponse_PromptFeedback) ProtoReflect() protoreflect.Mes // Deprecated: Use GenerateContentResponse_PromptFeedback.ProtoReflect.Descriptor instead. func (*GenerateContentResponse_PromptFeedback) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{16, 0} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{21, 0} } func (x *GenerateContentResponse_PromptFeedback) GetBlockReason() GenerateContentResponse_PromptFeedback_BlockedReason { @@ -1455,7 +1787,7 @@ type GenerateContentResponse_UsageMetadata struct { func (x *GenerateContentResponse_UsageMetadata) Reset() { *x = GenerateContentResponse_UsageMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[18] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1468,7 +1800,7 @@ func (x *GenerateContentResponse_UsageMetadata) String() string { func (*GenerateContentResponse_UsageMetadata) ProtoMessage() {} func (x *GenerateContentResponse_UsageMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[18] + mi := &file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1481,7 +1813,7 @@ func (x *GenerateContentResponse_UsageMetadata) ProtoReflect() protoreflect.Mess // Deprecated: Use GenerateContentResponse_UsageMetadata.ProtoReflect.Descriptor instead. func (*GenerateContentResponse_UsageMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{16, 1} + return file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP(), []int{21, 1} } func (x *GenerateContentResponse_UsageMetadata) GetPromptTokenCount() int32 { @@ -1577,364 +1909,468 @@ var file_google_cloud_aiplatform_v1_prediction_service_proto_rawDesc = []byte{ 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x08, 0x68, - 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xde, 0x01, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x15, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x17, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, - 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, - 0x32, 0x0a, 0x18, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x22, 0xe1, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x94, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x68, + 0x74, 0x74, 0x70, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x42, 0x6f, 0x64, 0x79, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xde, + 0x01, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x3a, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, + 0x73, 0x6f, 0x72, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, + 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, + 0x99, 0x01, 0x0a, 0x15, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, + 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x17, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x32, 0x0a, 0x18, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xee, 0x01, 0x0a, 0x1a, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x1b, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, + 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0xa8, 0x01, + 0x0a, 0x1d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, + 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, - 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x22, 0x35, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xe8, 0x02, 0x0a, 0x0e, - 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x38, 0x0a, 0x1e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x22, 0xe1, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, + 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x6f, 0x0a, 0x19, 0x65, 0x78, 0x70, - 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x52, 0x17, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, - 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x22, 0xc4, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x65, 0x78, - 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, - 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf8, 0x01, - 0x0a, 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x05, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x13, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6c, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x69, 0x6c, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0xef, - 0x02, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x44, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x74, 0x6f, - 0x6f, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x57, 0x0a, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x74, - 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, - 0x66, 0x65, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x5e, 0x0a, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, + 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x22, 0x35, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, + 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xe8, 0x02, 0x0a, 0x0e, 0x45, + 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x6f, 0x0a, 0x19, 0x65, 0x78, 0x70, 0x6c, + 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x22, 0xc5, 0x06, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0a, - 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, - 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x61, - 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x70, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, - 0x70, 0x74, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x52, 0x17, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, + 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x49, 0x64, 0x22, 0xc4, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x65, 0x78, 0x70, + 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf8, 0x01, 0x0a, + 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x44, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x13, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0xef, 0x02, + 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x12, 0x44, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x74, 0x6f, 0x6f, + 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x57, 0x0a, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x66, + 0x65, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0e, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x5e, 0x0a, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0xc5, 0x06, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0a, 0x63, + 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, + 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6e, + 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x70, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, + 0x62, 0x61, 0x63, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x68, 0x0a, 0x0e, 0x75, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, - 0x64, 0x62, 0x61, 0x63, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, - 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x68, 0x0a, 0x0e, 0x75, 0x73, - 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x75, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0xdf, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, - 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x78, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, - 0x6b, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x54, 0x0a, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x75, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x1a, 0xdf, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, + 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x78, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x12, 0x54, 0x0a, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x46, 0x0a, + 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, + 0x0a, 0x1a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x53, 0x41, 0x46, 0x45, 0x54, 0x59, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, + 0x48, 0x45, 0x52, 0x10, 0x02, 0x1a, 0x9f, 0x01, 0x0a, 0x0d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xe0, 0x17, 0x0a, 0x11, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x94, 0x02, + 0x0a, 0x07, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x61, 0x74, - 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, - 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x46, - 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x1e, 0x0a, 0x1a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x46, 0x45, 0x54, 0x59, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4f, - 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x1a, 0x9f, 0x01, 0x0a, 0x0d, 0x55, 0x73, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x6d, - 0x70, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xf4, 0x10, 0x0a, 0x11, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x94, - 0x02, 0x0a, 0x07, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xaf, 0x01, 0xda, 0x41, 0x1d, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2c, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x88, 0x01, 0x3a, 0x01, 0x2a, 0x5a, + 0x48, 0x3a, 0x01, 0x2a, 0x22, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x12, 0xfe, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xaa, 0x01, 0xda, 0x41, 0x12, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x62, 0x6f, 0x64, 0x79, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8e, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x4b, 0x3a, 0x01, 0x2a, 0x22, + 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, + 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x61, 0x77, + 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x61, 0x77, 0x50, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x98, 0x02, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xaf, 0x01, 0xda, 0x41, 0x1d, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2c, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x88, 0x01, 0x3a, 0x01, 0x2a, - 0x5a, 0x48, 0x3a, 0x01, 0x2a, 0x22, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x61, + 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, + 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xb6, 0x01, 0xda, 0x41, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x9a, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x51, 0x3a, 0x01, 0x2a, 0x22, 0x4c, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0xfe, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x30, 0x01, + 0x12, 0xc0, 0x01, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xaa, 0x01, 0xda, 0x41, 0x12, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x62, 0x6f, 0x64, - 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8e, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x4b, 0x3a, 0x01, 0x2a, - 0x22, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, - 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x61, - 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x61, 0x77, 0x50, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0xc0, 0x01, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, + 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x12, 0xcc, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, + 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0xcc, 0x01, 0x0a, 0x10, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x33, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x47, 0x3a, 0x01, 0x2a, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, - 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x83, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x33, 0x2e, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x01, 0x2a, 0x22, 0x42, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x12, 0x8c, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xb5, - 0x02, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa6, 0x01, 0x3a, 0x01, - 0x2a, 0x5a, 0x57, 0x3a, 0x01, 0x2a, 0x22, 0x52, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x36, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x95, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x39, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x10, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xda, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, - 0x6e, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0xda, 0x41, 0x2f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x2c, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, + 0xb5, 0x02, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, + 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa6, 0x01, 0x3a, + 0x01, 0x2a, 0x5a, 0x57, 0x3a, 0x01, 0x2a, 0x22, 0x52, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x78, 0x70, 0x6c, 0x61, - 0x69, 0x6e, 0x12, 0xbb, 0x02, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb6, 0x01, 0xda, 0x41, 0x0e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x2c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9e, 0x01, - 0x3a, 0x01, 0x2a, 0x5a, 0x53, 0x3a, 0x01, 0x2a, 0x22, 0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x30, 0x01, - 0x1a, 0x4d, 0xca, 0x41, 0x19, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, - 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, - 0xd4, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x42, 0x16, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, - 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, - 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, - 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x48, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x74, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, + 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, + 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xda, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0xda, 0x41, 0x2f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2c, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x12, 0xa7, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xaa, 0x01, 0xda, 0x41, 0x0e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x92, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x4d, + 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0xbb, 0x02, + 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xb6, 0x01, 0xda, 0x41, 0x0e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9e, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x53, + 0x3a, 0x01, 0x2a, 0x22, 0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x1a, 0x4d, 0xca, 0x41, 0x19, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xd4, 0x01, 0x0a, 0x1e, 0x63, + 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x16, 0x50, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, + 0x31, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1950,93 +2386,111 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_rawDescGZIP() []by } var file_google_cloud_aiplatform_v1_prediction_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_google_cloud_aiplatform_v1_prediction_service_proto_goTypes = []interface{}{ (GenerateContentResponse_PromptFeedback_BlockedReason)(0), // 0: google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback.BlockedReason (*PredictRequest)(nil), // 1: google.cloud.aiplatform.v1.PredictRequest (*PredictResponse)(nil), // 2: google.cloud.aiplatform.v1.PredictResponse (*RawPredictRequest)(nil), // 3: google.cloud.aiplatform.v1.RawPredictRequest - (*DirectPredictRequest)(nil), // 4: google.cloud.aiplatform.v1.DirectPredictRequest - (*DirectPredictResponse)(nil), // 5: google.cloud.aiplatform.v1.DirectPredictResponse - (*DirectRawPredictRequest)(nil), // 6: google.cloud.aiplatform.v1.DirectRawPredictRequest - (*DirectRawPredictResponse)(nil), // 7: google.cloud.aiplatform.v1.DirectRawPredictResponse - (*StreamingPredictRequest)(nil), // 8: google.cloud.aiplatform.v1.StreamingPredictRequest - (*StreamingPredictResponse)(nil), // 9: google.cloud.aiplatform.v1.StreamingPredictResponse - (*StreamingRawPredictRequest)(nil), // 10: google.cloud.aiplatform.v1.StreamingRawPredictRequest - (*StreamingRawPredictResponse)(nil), // 11: google.cloud.aiplatform.v1.StreamingRawPredictResponse - (*ExplainRequest)(nil), // 12: google.cloud.aiplatform.v1.ExplainRequest - (*ExplainResponse)(nil), // 13: google.cloud.aiplatform.v1.ExplainResponse - (*CountTokensRequest)(nil), // 14: google.cloud.aiplatform.v1.CountTokensRequest - (*CountTokensResponse)(nil), // 15: google.cloud.aiplatform.v1.CountTokensResponse - (*GenerateContentRequest)(nil), // 16: google.cloud.aiplatform.v1.GenerateContentRequest - (*GenerateContentResponse)(nil), // 17: google.cloud.aiplatform.v1.GenerateContentResponse - (*GenerateContentResponse_PromptFeedback)(nil), // 18: google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback - (*GenerateContentResponse_UsageMetadata)(nil), // 19: google.cloud.aiplatform.v1.GenerateContentResponse.UsageMetadata - (*structpb.Value)(nil), // 20: google.protobuf.Value - (*httpbody.HttpBody)(nil), // 21: google.api.HttpBody - (*Tensor)(nil), // 22: google.cloud.aiplatform.v1.Tensor - (*ExplanationSpecOverride)(nil), // 23: google.cloud.aiplatform.v1.ExplanationSpecOverride - (*Explanation)(nil), // 24: google.cloud.aiplatform.v1.Explanation - (*Content)(nil), // 25: google.cloud.aiplatform.v1.Content - (*Tool)(nil), // 26: google.cloud.aiplatform.v1.Tool - (*SafetySetting)(nil), // 27: google.cloud.aiplatform.v1.SafetySetting - (*GenerationConfig)(nil), // 28: google.cloud.aiplatform.v1.GenerationConfig - (*Candidate)(nil), // 29: google.cloud.aiplatform.v1.Candidate - (*SafetyRating)(nil), // 30: google.cloud.aiplatform.v1.SafetyRating + (*StreamRawPredictRequest)(nil), // 4: google.cloud.aiplatform.v1.StreamRawPredictRequest + (*DirectPredictRequest)(nil), // 5: google.cloud.aiplatform.v1.DirectPredictRequest + (*DirectPredictResponse)(nil), // 6: google.cloud.aiplatform.v1.DirectPredictResponse + (*DirectRawPredictRequest)(nil), // 7: google.cloud.aiplatform.v1.DirectRawPredictRequest + (*DirectRawPredictResponse)(nil), // 8: google.cloud.aiplatform.v1.DirectRawPredictResponse + (*StreamDirectPredictRequest)(nil), // 9: google.cloud.aiplatform.v1.StreamDirectPredictRequest + (*StreamDirectPredictResponse)(nil), // 10: google.cloud.aiplatform.v1.StreamDirectPredictResponse + (*StreamDirectRawPredictRequest)(nil), // 11: google.cloud.aiplatform.v1.StreamDirectRawPredictRequest + (*StreamDirectRawPredictResponse)(nil), // 12: google.cloud.aiplatform.v1.StreamDirectRawPredictResponse + (*StreamingPredictRequest)(nil), // 13: google.cloud.aiplatform.v1.StreamingPredictRequest + (*StreamingPredictResponse)(nil), // 14: google.cloud.aiplatform.v1.StreamingPredictResponse + (*StreamingRawPredictRequest)(nil), // 15: google.cloud.aiplatform.v1.StreamingRawPredictRequest + (*StreamingRawPredictResponse)(nil), // 16: google.cloud.aiplatform.v1.StreamingRawPredictResponse + (*ExplainRequest)(nil), // 17: google.cloud.aiplatform.v1.ExplainRequest + (*ExplainResponse)(nil), // 18: google.cloud.aiplatform.v1.ExplainResponse + (*CountTokensRequest)(nil), // 19: google.cloud.aiplatform.v1.CountTokensRequest + (*CountTokensResponse)(nil), // 20: google.cloud.aiplatform.v1.CountTokensResponse + (*GenerateContentRequest)(nil), // 21: google.cloud.aiplatform.v1.GenerateContentRequest + (*GenerateContentResponse)(nil), // 22: google.cloud.aiplatform.v1.GenerateContentResponse + (*GenerateContentResponse_PromptFeedback)(nil), // 23: google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback + (*GenerateContentResponse_UsageMetadata)(nil), // 24: google.cloud.aiplatform.v1.GenerateContentResponse.UsageMetadata + (*structpb.Value)(nil), // 25: google.protobuf.Value + (*httpbody.HttpBody)(nil), // 26: google.api.HttpBody + (*Tensor)(nil), // 27: google.cloud.aiplatform.v1.Tensor + (*ExplanationSpecOverride)(nil), // 28: google.cloud.aiplatform.v1.ExplanationSpecOverride + (*Explanation)(nil), // 29: google.cloud.aiplatform.v1.Explanation + (*Content)(nil), // 30: google.cloud.aiplatform.v1.Content + (*Tool)(nil), // 31: google.cloud.aiplatform.v1.Tool + (*SafetySetting)(nil), // 32: google.cloud.aiplatform.v1.SafetySetting + (*GenerationConfig)(nil), // 33: google.cloud.aiplatform.v1.GenerationConfig + (*Candidate)(nil), // 34: google.cloud.aiplatform.v1.Candidate + (*SafetyRating)(nil), // 35: google.cloud.aiplatform.v1.SafetyRating } var file_google_cloud_aiplatform_v1_prediction_service_proto_depIdxs = []int32{ - 20, // 0: google.cloud.aiplatform.v1.PredictRequest.instances:type_name -> google.protobuf.Value - 20, // 1: google.cloud.aiplatform.v1.PredictRequest.parameters:type_name -> google.protobuf.Value - 20, // 2: google.cloud.aiplatform.v1.PredictResponse.predictions:type_name -> google.protobuf.Value - 20, // 3: google.cloud.aiplatform.v1.PredictResponse.metadata:type_name -> google.protobuf.Value - 21, // 4: google.cloud.aiplatform.v1.RawPredictRequest.http_body:type_name -> google.api.HttpBody - 22, // 5: google.cloud.aiplatform.v1.DirectPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1.Tensor - 22, // 6: google.cloud.aiplatform.v1.DirectPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1.Tensor - 22, // 7: google.cloud.aiplatform.v1.DirectPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1.Tensor - 22, // 8: google.cloud.aiplatform.v1.DirectPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1.Tensor - 22, // 9: google.cloud.aiplatform.v1.StreamingPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1.Tensor - 22, // 10: google.cloud.aiplatform.v1.StreamingPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1.Tensor - 22, // 11: google.cloud.aiplatform.v1.StreamingPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1.Tensor - 22, // 12: google.cloud.aiplatform.v1.StreamingPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1.Tensor - 20, // 13: google.cloud.aiplatform.v1.ExplainRequest.instances:type_name -> google.protobuf.Value - 20, // 14: google.cloud.aiplatform.v1.ExplainRequest.parameters:type_name -> google.protobuf.Value - 23, // 15: google.cloud.aiplatform.v1.ExplainRequest.explanation_spec_override:type_name -> google.cloud.aiplatform.v1.ExplanationSpecOverride - 24, // 16: google.cloud.aiplatform.v1.ExplainResponse.explanations:type_name -> google.cloud.aiplatform.v1.Explanation - 20, // 17: google.cloud.aiplatform.v1.ExplainResponse.predictions:type_name -> google.protobuf.Value - 20, // 18: google.cloud.aiplatform.v1.CountTokensRequest.instances:type_name -> google.protobuf.Value - 25, // 19: google.cloud.aiplatform.v1.CountTokensRequest.contents:type_name -> google.cloud.aiplatform.v1.Content - 25, // 20: google.cloud.aiplatform.v1.GenerateContentRequest.contents:type_name -> google.cloud.aiplatform.v1.Content - 26, // 21: google.cloud.aiplatform.v1.GenerateContentRequest.tools:type_name -> google.cloud.aiplatform.v1.Tool - 27, // 22: google.cloud.aiplatform.v1.GenerateContentRequest.safety_settings:type_name -> google.cloud.aiplatform.v1.SafetySetting - 28, // 23: google.cloud.aiplatform.v1.GenerateContentRequest.generation_config:type_name -> google.cloud.aiplatform.v1.GenerationConfig - 29, // 24: google.cloud.aiplatform.v1.GenerateContentResponse.candidates:type_name -> google.cloud.aiplatform.v1.Candidate - 18, // 25: google.cloud.aiplatform.v1.GenerateContentResponse.prompt_feedback:type_name -> google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback - 19, // 26: google.cloud.aiplatform.v1.GenerateContentResponse.usage_metadata:type_name -> google.cloud.aiplatform.v1.GenerateContentResponse.UsageMetadata - 0, // 27: google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback.block_reason:type_name -> google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback.BlockedReason - 30, // 28: google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback.safety_ratings:type_name -> google.cloud.aiplatform.v1.SafetyRating - 1, // 29: google.cloud.aiplatform.v1.PredictionService.Predict:input_type -> google.cloud.aiplatform.v1.PredictRequest - 3, // 30: google.cloud.aiplatform.v1.PredictionService.RawPredict:input_type -> google.cloud.aiplatform.v1.RawPredictRequest - 4, // 31: google.cloud.aiplatform.v1.PredictionService.DirectPredict:input_type -> google.cloud.aiplatform.v1.DirectPredictRequest - 6, // 32: google.cloud.aiplatform.v1.PredictionService.DirectRawPredict:input_type -> google.cloud.aiplatform.v1.DirectRawPredictRequest - 8, // 33: google.cloud.aiplatform.v1.PredictionService.StreamingPredict:input_type -> google.cloud.aiplatform.v1.StreamingPredictRequest - 8, // 34: google.cloud.aiplatform.v1.PredictionService.ServerStreamingPredict:input_type -> google.cloud.aiplatform.v1.StreamingPredictRequest - 10, // 35: google.cloud.aiplatform.v1.PredictionService.StreamingRawPredict:input_type -> google.cloud.aiplatform.v1.StreamingRawPredictRequest - 12, // 36: google.cloud.aiplatform.v1.PredictionService.Explain:input_type -> google.cloud.aiplatform.v1.ExplainRequest - 16, // 37: google.cloud.aiplatform.v1.PredictionService.StreamGenerateContent:input_type -> google.cloud.aiplatform.v1.GenerateContentRequest - 2, // 38: google.cloud.aiplatform.v1.PredictionService.Predict:output_type -> google.cloud.aiplatform.v1.PredictResponse - 21, // 39: google.cloud.aiplatform.v1.PredictionService.RawPredict:output_type -> google.api.HttpBody - 5, // 40: google.cloud.aiplatform.v1.PredictionService.DirectPredict:output_type -> google.cloud.aiplatform.v1.DirectPredictResponse - 7, // 41: google.cloud.aiplatform.v1.PredictionService.DirectRawPredict:output_type -> google.cloud.aiplatform.v1.DirectRawPredictResponse - 9, // 42: google.cloud.aiplatform.v1.PredictionService.StreamingPredict:output_type -> google.cloud.aiplatform.v1.StreamingPredictResponse - 9, // 43: google.cloud.aiplatform.v1.PredictionService.ServerStreamingPredict:output_type -> google.cloud.aiplatform.v1.StreamingPredictResponse - 11, // 44: google.cloud.aiplatform.v1.PredictionService.StreamingRawPredict:output_type -> google.cloud.aiplatform.v1.StreamingRawPredictResponse - 13, // 45: google.cloud.aiplatform.v1.PredictionService.Explain:output_type -> google.cloud.aiplatform.v1.ExplainResponse - 17, // 46: google.cloud.aiplatform.v1.PredictionService.StreamGenerateContent:output_type -> google.cloud.aiplatform.v1.GenerateContentResponse - 38, // [38:47] is the sub-list for method output_type - 29, // [29:38] is the sub-list for method input_type - 29, // [29:29] is the sub-list for extension type_name - 29, // [29:29] is the sub-list for extension extendee - 0, // [0:29] is the sub-list for field type_name + 25, // 0: google.cloud.aiplatform.v1.PredictRequest.instances:type_name -> google.protobuf.Value + 25, // 1: google.cloud.aiplatform.v1.PredictRequest.parameters:type_name -> google.protobuf.Value + 25, // 2: google.cloud.aiplatform.v1.PredictResponse.predictions:type_name -> google.protobuf.Value + 25, // 3: google.cloud.aiplatform.v1.PredictResponse.metadata:type_name -> google.protobuf.Value + 26, // 4: google.cloud.aiplatform.v1.RawPredictRequest.http_body:type_name -> google.api.HttpBody + 26, // 5: google.cloud.aiplatform.v1.StreamRawPredictRequest.http_body:type_name -> google.api.HttpBody + 27, // 6: google.cloud.aiplatform.v1.DirectPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 7: google.cloud.aiplatform.v1.DirectPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 8: google.cloud.aiplatform.v1.DirectPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 9: google.cloud.aiplatform.v1.DirectPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 10: google.cloud.aiplatform.v1.StreamDirectPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 11: google.cloud.aiplatform.v1.StreamDirectPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 12: google.cloud.aiplatform.v1.StreamDirectPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 13: google.cloud.aiplatform.v1.StreamDirectPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 14: google.cloud.aiplatform.v1.StreamingPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 15: google.cloud.aiplatform.v1.StreamingPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 16: google.cloud.aiplatform.v1.StreamingPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1.Tensor + 27, // 17: google.cloud.aiplatform.v1.StreamingPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1.Tensor + 25, // 18: google.cloud.aiplatform.v1.ExplainRequest.instances:type_name -> google.protobuf.Value + 25, // 19: google.cloud.aiplatform.v1.ExplainRequest.parameters:type_name -> google.protobuf.Value + 28, // 20: google.cloud.aiplatform.v1.ExplainRequest.explanation_spec_override:type_name -> google.cloud.aiplatform.v1.ExplanationSpecOverride + 29, // 21: google.cloud.aiplatform.v1.ExplainResponse.explanations:type_name -> google.cloud.aiplatform.v1.Explanation + 25, // 22: google.cloud.aiplatform.v1.ExplainResponse.predictions:type_name -> google.protobuf.Value + 25, // 23: google.cloud.aiplatform.v1.CountTokensRequest.instances:type_name -> google.protobuf.Value + 30, // 24: google.cloud.aiplatform.v1.CountTokensRequest.contents:type_name -> google.cloud.aiplatform.v1.Content + 30, // 25: google.cloud.aiplatform.v1.GenerateContentRequest.contents:type_name -> google.cloud.aiplatform.v1.Content + 31, // 26: google.cloud.aiplatform.v1.GenerateContentRequest.tools:type_name -> google.cloud.aiplatform.v1.Tool + 32, // 27: google.cloud.aiplatform.v1.GenerateContentRequest.safety_settings:type_name -> google.cloud.aiplatform.v1.SafetySetting + 33, // 28: google.cloud.aiplatform.v1.GenerateContentRequest.generation_config:type_name -> google.cloud.aiplatform.v1.GenerationConfig + 34, // 29: google.cloud.aiplatform.v1.GenerateContentResponse.candidates:type_name -> google.cloud.aiplatform.v1.Candidate + 23, // 30: google.cloud.aiplatform.v1.GenerateContentResponse.prompt_feedback:type_name -> google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback + 24, // 31: google.cloud.aiplatform.v1.GenerateContentResponse.usage_metadata:type_name -> google.cloud.aiplatform.v1.GenerateContentResponse.UsageMetadata + 0, // 32: google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback.block_reason:type_name -> google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback.BlockedReason + 35, // 33: google.cloud.aiplatform.v1.GenerateContentResponse.PromptFeedback.safety_ratings:type_name -> google.cloud.aiplatform.v1.SafetyRating + 1, // 34: google.cloud.aiplatform.v1.PredictionService.Predict:input_type -> google.cloud.aiplatform.v1.PredictRequest + 3, // 35: google.cloud.aiplatform.v1.PredictionService.RawPredict:input_type -> google.cloud.aiplatform.v1.RawPredictRequest + 4, // 36: google.cloud.aiplatform.v1.PredictionService.StreamRawPredict:input_type -> google.cloud.aiplatform.v1.StreamRawPredictRequest + 5, // 37: google.cloud.aiplatform.v1.PredictionService.DirectPredict:input_type -> google.cloud.aiplatform.v1.DirectPredictRequest + 7, // 38: google.cloud.aiplatform.v1.PredictionService.DirectRawPredict:input_type -> google.cloud.aiplatform.v1.DirectRawPredictRequest + 9, // 39: google.cloud.aiplatform.v1.PredictionService.StreamDirectPredict:input_type -> google.cloud.aiplatform.v1.StreamDirectPredictRequest + 11, // 40: google.cloud.aiplatform.v1.PredictionService.StreamDirectRawPredict:input_type -> google.cloud.aiplatform.v1.StreamDirectRawPredictRequest + 13, // 41: google.cloud.aiplatform.v1.PredictionService.StreamingPredict:input_type -> google.cloud.aiplatform.v1.StreamingPredictRequest + 13, // 42: google.cloud.aiplatform.v1.PredictionService.ServerStreamingPredict:input_type -> google.cloud.aiplatform.v1.StreamingPredictRequest + 15, // 43: google.cloud.aiplatform.v1.PredictionService.StreamingRawPredict:input_type -> google.cloud.aiplatform.v1.StreamingRawPredictRequest + 17, // 44: google.cloud.aiplatform.v1.PredictionService.Explain:input_type -> google.cloud.aiplatform.v1.ExplainRequest + 21, // 45: google.cloud.aiplatform.v1.PredictionService.GenerateContent:input_type -> google.cloud.aiplatform.v1.GenerateContentRequest + 21, // 46: google.cloud.aiplatform.v1.PredictionService.StreamGenerateContent:input_type -> google.cloud.aiplatform.v1.GenerateContentRequest + 2, // 47: google.cloud.aiplatform.v1.PredictionService.Predict:output_type -> google.cloud.aiplatform.v1.PredictResponse + 26, // 48: google.cloud.aiplatform.v1.PredictionService.RawPredict:output_type -> google.api.HttpBody + 26, // 49: google.cloud.aiplatform.v1.PredictionService.StreamRawPredict:output_type -> google.api.HttpBody + 6, // 50: google.cloud.aiplatform.v1.PredictionService.DirectPredict:output_type -> google.cloud.aiplatform.v1.DirectPredictResponse + 8, // 51: google.cloud.aiplatform.v1.PredictionService.DirectRawPredict:output_type -> google.cloud.aiplatform.v1.DirectRawPredictResponse + 10, // 52: google.cloud.aiplatform.v1.PredictionService.StreamDirectPredict:output_type -> google.cloud.aiplatform.v1.StreamDirectPredictResponse + 12, // 53: google.cloud.aiplatform.v1.PredictionService.StreamDirectRawPredict:output_type -> google.cloud.aiplatform.v1.StreamDirectRawPredictResponse + 14, // 54: google.cloud.aiplatform.v1.PredictionService.StreamingPredict:output_type -> google.cloud.aiplatform.v1.StreamingPredictResponse + 14, // 55: google.cloud.aiplatform.v1.PredictionService.ServerStreamingPredict:output_type -> google.cloud.aiplatform.v1.StreamingPredictResponse + 16, // 56: google.cloud.aiplatform.v1.PredictionService.StreamingRawPredict:output_type -> google.cloud.aiplatform.v1.StreamingRawPredictResponse + 18, // 57: google.cloud.aiplatform.v1.PredictionService.Explain:output_type -> google.cloud.aiplatform.v1.ExplainResponse + 22, // 58: google.cloud.aiplatform.v1.PredictionService.GenerateContent:output_type -> google.cloud.aiplatform.v1.GenerateContentResponse + 22, // 59: google.cloud.aiplatform.v1.PredictionService.StreamGenerateContent:output_type -> google.cloud.aiplatform.v1.GenerateContentResponse + 47, // [47:60] is the sub-list for method output_type + 34, // [34:47] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name } func init() { file_google_cloud_aiplatform_v1_prediction_service_proto_init() } @@ -2086,7 +2540,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectPredictRequest); i { + switch v := v.(*StreamRawPredictRequest); i { case 0: return &v.state case 1: @@ -2098,7 +2552,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectPredictResponse); i { + switch v := v.(*DirectPredictRequest); i { case 0: return &v.state case 1: @@ -2110,7 +2564,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectRawPredictRequest); i { + switch v := v.(*DirectPredictResponse); i { case 0: return &v.state case 1: @@ -2122,7 +2576,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectRawPredictResponse); i { + switch v := v.(*DirectRawPredictRequest); i { case 0: return &v.state case 1: @@ -2134,7 +2588,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingPredictRequest); i { + switch v := v.(*DirectRawPredictResponse); i { case 0: return &v.state case 1: @@ -2146,7 +2600,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingPredictResponse); i { + switch v := v.(*StreamDirectPredictRequest); i { case 0: return &v.state case 1: @@ -2158,7 +2612,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingRawPredictRequest); i { + switch v := v.(*StreamDirectPredictResponse); i { case 0: return &v.state case 1: @@ -2170,7 +2624,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingRawPredictResponse); i { + switch v := v.(*StreamDirectRawPredictRequest); i { case 0: return &v.state case 1: @@ -2182,7 +2636,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExplainRequest); i { + switch v := v.(*StreamDirectRawPredictResponse); i { case 0: return &v.state case 1: @@ -2194,7 +2648,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExplainResponse); i { + switch v := v.(*StreamingPredictRequest); i { case 0: return &v.state case 1: @@ -2206,7 +2660,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountTokensRequest); i { + switch v := v.(*StreamingPredictResponse); i { case 0: return &v.state case 1: @@ -2218,7 +2672,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountTokensResponse); i { + switch v := v.(*StreamingRawPredictRequest); i { case 0: return &v.state case 1: @@ -2230,7 +2684,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateContentRequest); i { + switch v := v.(*StreamingRawPredictResponse); i { case 0: return &v.state case 1: @@ -2242,7 +2696,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateContentResponse); i { + switch v := v.(*ExplainRequest); i { case 0: return &v.state case 1: @@ -2254,7 +2708,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateContentResponse_PromptFeedback); i { + switch v := v.(*ExplainResponse); i { case 0: return &v.state case 1: @@ -2266,6 +2720,66 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CountTokensRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CountTokensResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateContentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateContentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateContentResponse_PromptFeedback); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1_prediction_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateContentResponse_UsageMetadata); i { case 0: return &v.state @@ -2284,7 +2798,7 @@ func file_google_cloud_aiplatform_v1_prediction_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_aiplatform_v1_prediction_service_proto_rawDesc, NumEnums: 1, - NumMessages: 19, + NumMessages: 24, NumExtensions: 0, NumServices: 1, }, @@ -2325,11 +2839,20 @@ type PredictionServiceClient interface { // [DeployedModel][google.cloud.aiplatform.v1.DeployedModel] that served this // prediction. RawPredict(ctx context.Context, in *RawPredictRequest, opts ...grpc.CallOption) (*httpbody.HttpBody, error) - // Perform an unary online prediction request for Vertex first-party products - // and frameworks. + // Perform a streaming online prediction with an arbitrary HTTP payload. + StreamRawPredict(ctx context.Context, in *StreamRawPredictRequest, opts ...grpc.CallOption) (PredictionService_StreamRawPredictClient, error) + // Perform an unary online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. DirectPredict(ctx context.Context, in *DirectPredictRequest, opts ...grpc.CallOption) (*DirectPredictResponse, error) - // Perform an online prediction request through gRPC. + // Perform an unary online prediction request to a gRPC model server for + // custom containers. DirectRawPredict(ctx context.Context, in *DirectRawPredictRequest, opts ...grpc.CallOption) (*DirectRawPredictResponse, error) + // Perform a streaming online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. + StreamDirectPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectPredictClient, error) + // Perform a streaming online prediction request to a gRPC model server for + // custom containers. + StreamDirectRawPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectRawPredictClient, error) // Perform a streaming online prediction request for Vertex first-party // products and frameworks. StreamingPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamingPredictClient, error) @@ -2350,6 +2873,8 @@ type PredictionServiceClient interface { // [explanation_spec][google.cloud.aiplatform.v1.DeployedModel.explanation_spec] // populated. Explain(ctx context.Context, in *ExplainRequest, opts ...grpc.CallOption) (*ExplainResponse, error) + // Generate content with multimodal inputs. + GenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (*GenerateContentResponse, error) // Generate content with multimodal inputs with streaming support. StreamGenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (PredictionService_StreamGenerateContentClient, error) } @@ -2380,6 +2905,38 @@ func (c *predictionServiceClient) RawPredict(ctx context.Context, in *RawPredict return out, nil } +func (c *predictionServiceClient) StreamRawPredict(ctx context.Context, in *StreamRawPredictRequest, opts ...grpc.CallOption) (PredictionService_StreamRawPredictClient, error) { + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[0], "/google.cloud.aiplatform.v1.PredictionService/StreamRawPredict", opts...) + if err != nil { + return nil, err + } + x := &predictionServiceStreamRawPredictClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type PredictionService_StreamRawPredictClient interface { + Recv() (*httpbody.HttpBody, error) + grpc.ClientStream +} + +type predictionServiceStreamRawPredictClient struct { + grpc.ClientStream +} + +func (x *predictionServiceStreamRawPredictClient) Recv() (*httpbody.HttpBody, error) { + m := new(httpbody.HttpBody) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *predictionServiceClient) DirectPredict(ctx context.Context, in *DirectPredictRequest, opts ...grpc.CallOption) (*DirectPredictResponse, error) { out := new(DirectPredictResponse) err := c.cc.Invoke(ctx, "/google.cloud.aiplatform.v1.PredictionService/DirectPredict", in, out, opts...) @@ -2398,8 +2955,70 @@ func (c *predictionServiceClient) DirectRawPredict(ctx context.Context, in *Dire return out, nil } +func (c *predictionServiceClient) StreamDirectPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectPredictClient, error) { + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[1], "/google.cloud.aiplatform.v1.PredictionService/StreamDirectPredict", opts...) + if err != nil { + return nil, err + } + x := &predictionServiceStreamDirectPredictClient{stream} + return x, nil +} + +type PredictionService_StreamDirectPredictClient interface { + Send(*StreamDirectPredictRequest) error + Recv() (*StreamDirectPredictResponse, error) + grpc.ClientStream +} + +type predictionServiceStreamDirectPredictClient struct { + grpc.ClientStream +} + +func (x *predictionServiceStreamDirectPredictClient) Send(m *StreamDirectPredictRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectPredictClient) Recv() (*StreamDirectPredictResponse, error) { + m := new(StreamDirectPredictResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *predictionServiceClient) StreamDirectRawPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectRawPredictClient, error) { + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[2], "/google.cloud.aiplatform.v1.PredictionService/StreamDirectRawPredict", opts...) + if err != nil { + return nil, err + } + x := &predictionServiceStreamDirectRawPredictClient{stream} + return x, nil +} + +type PredictionService_StreamDirectRawPredictClient interface { + Send(*StreamDirectRawPredictRequest) error + Recv() (*StreamDirectRawPredictResponse, error) + grpc.ClientStream +} + +type predictionServiceStreamDirectRawPredictClient struct { + grpc.ClientStream +} + +func (x *predictionServiceStreamDirectRawPredictClient) Send(m *StreamDirectRawPredictRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectRawPredictClient) Recv() (*StreamDirectRawPredictResponse, error) { + m := new(StreamDirectRawPredictResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *predictionServiceClient) StreamingPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamingPredictClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[0], "/google.cloud.aiplatform.v1.PredictionService/StreamingPredict", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[3], "/google.cloud.aiplatform.v1.PredictionService/StreamingPredict", opts...) if err != nil { return nil, err } @@ -2430,7 +3049,7 @@ func (x *predictionServiceStreamingPredictClient) Recv() (*StreamingPredictRespo } func (c *predictionServiceClient) ServerStreamingPredict(ctx context.Context, in *StreamingPredictRequest, opts ...grpc.CallOption) (PredictionService_ServerStreamingPredictClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[1], "/google.cloud.aiplatform.v1.PredictionService/ServerStreamingPredict", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[4], "/google.cloud.aiplatform.v1.PredictionService/ServerStreamingPredict", opts...) if err != nil { return nil, err } @@ -2462,7 +3081,7 @@ func (x *predictionServiceServerStreamingPredictClient) Recv() (*StreamingPredic } func (c *predictionServiceClient) StreamingRawPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamingRawPredictClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[2], "/google.cloud.aiplatform.v1.PredictionService/StreamingRawPredict", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[5], "/google.cloud.aiplatform.v1.PredictionService/StreamingRawPredict", opts...) if err != nil { return nil, err } @@ -2501,8 +3120,17 @@ func (c *predictionServiceClient) Explain(ctx context.Context, in *ExplainReques return out, nil } +func (c *predictionServiceClient) GenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (*GenerateContentResponse, error) { + out := new(GenerateContentResponse) + err := c.cc.Invoke(ctx, "/google.cloud.aiplatform.v1.PredictionService/GenerateContent", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *predictionServiceClient) StreamGenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (PredictionService_StreamGenerateContentClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[3], "/google.cloud.aiplatform.v1.PredictionService/StreamGenerateContent", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[6], "/google.cloud.aiplatform.v1.PredictionService/StreamGenerateContent", opts...) if err != nil { return nil, err } @@ -2549,11 +3177,20 @@ type PredictionServiceServer interface { // [DeployedModel][google.cloud.aiplatform.v1.DeployedModel] that served this // prediction. RawPredict(context.Context, *RawPredictRequest) (*httpbody.HttpBody, error) - // Perform an unary online prediction request for Vertex first-party products - // and frameworks. + // Perform a streaming online prediction with an arbitrary HTTP payload. + StreamRawPredict(*StreamRawPredictRequest, PredictionService_StreamRawPredictServer) error + // Perform an unary online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. DirectPredict(context.Context, *DirectPredictRequest) (*DirectPredictResponse, error) - // Perform an online prediction request through gRPC. + // Perform an unary online prediction request to a gRPC model server for + // custom containers. DirectRawPredict(context.Context, *DirectRawPredictRequest) (*DirectRawPredictResponse, error) + // Perform a streaming online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. + StreamDirectPredict(PredictionService_StreamDirectPredictServer) error + // Perform a streaming online prediction request to a gRPC model server for + // custom containers. + StreamDirectRawPredict(PredictionService_StreamDirectRawPredictServer) error // Perform a streaming online prediction request for Vertex first-party // products and frameworks. StreamingPredict(PredictionService_StreamingPredictServer) error @@ -2574,6 +3211,8 @@ type PredictionServiceServer interface { // [explanation_spec][google.cloud.aiplatform.v1.DeployedModel.explanation_spec] // populated. Explain(context.Context, *ExplainRequest) (*ExplainResponse, error) + // Generate content with multimodal inputs. + GenerateContent(context.Context, *GenerateContentRequest) (*GenerateContentResponse, error) // Generate content with multimodal inputs with streaming support. StreamGenerateContent(*GenerateContentRequest, PredictionService_StreamGenerateContentServer) error } @@ -2588,12 +3227,21 @@ func (*UnimplementedPredictionServiceServer) Predict(context.Context, *PredictRe func (*UnimplementedPredictionServiceServer) RawPredict(context.Context, *RawPredictRequest) (*httpbody.HttpBody, error) { return nil, status.Errorf(codes.Unimplemented, "method RawPredict not implemented") } +func (*UnimplementedPredictionServiceServer) StreamRawPredict(*StreamRawPredictRequest, PredictionService_StreamRawPredictServer) error { + return status.Errorf(codes.Unimplemented, "method StreamRawPredict not implemented") +} func (*UnimplementedPredictionServiceServer) DirectPredict(context.Context, *DirectPredictRequest) (*DirectPredictResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DirectPredict not implemented") } func (*UnimplementedPredictionServiceServer) DirectRawPredict(context.Context, *DirectRawPredictRequest) (*DirectRawPredictResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DirectRawPredict not implemented") } +func (*UnimplementedPredictionServiceServer) StreamDirectPredict(PredictionService_StreamDirectPredictServer) error { + return status.Errorf(codes.Unimplemented, "method StreamDirectPredict not implemented") +} +func (*UnimplementedPredictionServiceServer) StreamDirectRawPredict(PredictionService_StreamDirectRawPredictServer) error { + return status.Errorf(codes.Unimplemented, "method StreamDirectRawPredict not implemented") +} func (*UnimplementedPredictionServiceServer) StreamingPredict(PredictionService_StreamingPredictServer) error { return status.Errorf(codes.Unimplemented, "method StreamingPredict not implemented") } @@ -2606,6 +3254,9 @@ func (*UnimplementedPredictionServiceServer) StreamingRawPredict(PredictionServi func (*UnimplementedPredictionServiceServer) Explain(context.Context, *ExplainRequest) (*ExplainResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Explain not implemented") } +func (*UnimplementedPredictionServiceServer) GenerateContent(context.Context, *GenerateContentRequest) (*GenerateContentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateContent not implemented") +} func (*UnimplementedPredictionServiceServer) StreamGenerateContent(*GenerateContentRequest, PredictionService_StreamGenerateContentServer) error { return status.Errorf(codes.Unimplemented, "method StreamGenerateContent not implemented") } @@ -2650,6 +3301,27 @@ func _PredictionService_RawPredict_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _PredictionService_StreamRawPredict_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamRawPredictRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(PredictionServiceServer).StreamRawPredict(m, &predictionServiceStreamRawPredictServer{stream}) +} + +type PredictionService_StreamRawPredictServer interface { + Send(*httpbody.HttpBody) error + grpc.ServerStream +} + +type predictionServiceStreamRawPredictServer struct { + grpc.ServerStream +} + +func (x *predictionServiceStreamRawPredictServer) Send(m *httpbody.HttpBody) error { + return x.ServerStream.SendMsg(m) +} + func _PredictionService_DirectPredict_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DirectPredictRequest) if err := dec(in); err != nil { @@ -2686,6 +3358,58 @@ func _PredictionService_DirectRawPredict_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _PredictionService_StreamDirectPredict_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(PredictionServiceServer).StreamDirectPredict(&predictionServiceStreamDirectPredictServer{stream}) +} + +type PredictionService_StreamDirectPredictServer interface { + Send(*StreamDirectPredictResponse) error + Recv() (*StreamDirectPredictRequest, error) + grpc.ServerStream +} + +type predictionServiceStreamDirectPredictServer struct { + grpc.ServerStream +} + +func (x *predictionServiceStreamDirectPredictServer) Send(m *StreamDirectPredictResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectPredictServer) Recv() (*StreamDirectPredictRequest, error) { + m := new(StreamDirectPredictRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _PredictionService_StreamDirectRawPredict_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(PredictionServiceServer).StreamDirectRawPredict(&predictionServiceStreamDirectRawPredictServer{stream}) +} + +type PredictionService_StreamDirectRawPredictServer interface { + Send(*StreamDirectRawPredictResponse) error + Recv() (*StreamDirectRawPredictRequest, error) + grpc.ServerStream +} + +type predictionServiceStreamDirectRawPredictServer struct { + grpc.ServerStream +} + +func (x *predictionServiceStreamDirectRawPredictServer) Send(m *StreamDirectRawPredictResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectRawPredictServer) Recv() (*StreamDirectRawPredictRequest, error) { + m := new(StreamDirectRawPredictRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func _PredictionService_StreamingPredict_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(PredictionServiceServer).StreamingPredict(&predictionServiceStreamingPredictServer{stream}) } @@ -2777,6 +3501,24 @@ func _PredictionService_Explain_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _PredictionService_GenerateContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateContentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PredictionServiceServer).GenerateContent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.aiplatform.v1.PredictionService/GenerateContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PredictionServiceServer).GenerateContent(ctx, req.(*GenerateContentRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _PredictionService_StreamGenerateContent_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(GenerateContentRequest) if err := stream.RecvMsg(m); err != nil { @@ -2822,8 +3564,29 @@ var _PredictionService_serviceDesc = grpc.ServiceDesc{ MethodName: "Explain", Handler: _PredictionService_Explain_Handler, }, + { + MethodName: "GenerateContent", + Handler: _PredictionService_GenerateContent_Handler, + }, }, Streams: []grpc.StreamDesc{ + { + StreamName: "StreamRawPredict", + Handler: _PredictionService_StreamRawPredict_Handler, + ServerStreams: true, + }, + { + StreamName: "StreamDirectPredict", + Handler: _PredictionService_StreamDirectPredict_Handler, + ServerStreams: true, + ClientStreams: true, + }, + { + StreamName: "StreamDirectRawPredict", + Handler: _PredictionService_StreamDirectRawPredict_Handler, + ServerStreams: true, + ClientStreams: true, + }, { StreamName: "StreamingPredict", Handler: _PredictionService_StreamingPredict_Handler, diff --git a/aiplatform/apiv1/gapic_metadata.json b/aiplatform/apiv1/gapic_metadata.json index c76841df65b8..44fa68b2462f 100644 --- a/aiplatform/apiv1/gapic_metadata.json +++ b/aiplatform/apiv1/gapic_metadata.json @@ -2077,6 +2077,11 @@ "Explain" ] }, + "GenerateContent": { + "methods": [ + "GenerateContent" + ] + }, "GetIamPolicy": { "methods": [ "GetIamPolicy" @@ -2122,11 +2127,26 @@ "SetIamPolicy" ] }, + "StreamDirectPredict": { + "methods": [ + "StreamDirectPredict" + ] + }, + "StreamDirectRawPredict": { + "methods": [ + "StreamDirectRawPredict" + ] + }, "StreamGenerateContent": { "methods": [ "StreamGenerateContent" ] }, + "StreamRawPredict": { + "methods": [ + "StreamRawPredict" + ] + }, "StreamingPredict": { "methods": [ "StreamingPredict" diff --git a/aiplatform/apiv1/prediction_client.go b/aiplatform/apiv1/prediction_client.go index 40ff838d0fd3..b6d2524b3fad 100755 --- a/aiplatform/apiv1/prediction_client.go +++ b/aiplatform/apiv1/prediction_client.go @@ -42,12 +42,16 @@ var newPredictionClientHook clientHook type PredictionCallOptions struct { Predict []gax.CallOption RawPredict []gax.CallOption + StreamRawPredict []gax.CallOption DirectPredict []gax.CallOption DirectRawPredict []gax.CallOption + StreamDirectPredict []gax.CallOption + StreamDirectRawPredict []gax.CallOption StreamingPredict []gax.CallOption ServerStreamingPredict []gax.CallOption StreamingRawPredict []gax.CallOption Explain []gax.CallOption + GenerateContent []gax.CallOption StreamGenerateContent []gax.CallOption GetLocation []gax.CallOption ListLocations []gax.CallOption @@ -79,12 +83,16 @@ func defaultPredictionCallOptions() *PredictionCallOptions { return &PredictionCallOptions{ Predict: []gax.CallOption{}, RawPredict: []gax.CallOption{}, + StreamRawPredict: []gax.CallOption{}, DirectPredict: []gax.CallOption{}, DirectRawPredict: []gax.CallOption{}, + StreamDirectPredict: []gax.CallOption{}, + StreamDirectRawPredict: []gax.CallOption{}, StreamingPredict: []gax.CallOption{}, ServerStreamingPredict: []gax.CallOption{}, StreamingRawPredict: []gax.CallOption{}, Explain: []gax.CallOption{}, + GenerateContent: []gax.CallOption{}, StreamGenerateContent: []gax.CallOption{}, GetLocation: []gax.CallOption{}, ListLocations: []gax.CallOption{}, @@ -106,12 +114,16 @@ type internalPredictionClient interface { Connection() *grpc.ClientConn Predict(context.Context, *aiplatformpb.PredictRequest, ...gax.CallOption) (*aiplatformpb.PredictResponse, error) RawPredict(context.Context, *aiplatformpb.RawPredictRequest, ...gax.CallOption) (*httpbodypb.HttpBody, error) + StreamRawPredict(context.Context, *aiplatformpb.StreamRawPredictRequest, ...gax.CallOption) (aiplatformpb.PredictionService_StreamRawPredictClient, error) DirectPredict(context.Context, *aiplatformpb.DirectPredictRequest, ...gax.CallOption) (*aiplatformpb.DirectPredictResponse, error) DirectRawPredict(context.Context, *aiplatformpb.DirectRawPredictRequest, ...gax.CallOption) (*aiplatformpb.DirectRawPredictResponse, error) + StreamDirectPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectPredictClient, error) + StreamDirectRawPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectRawPredictClient, error) StreamingPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamingPredictClient, error) ServerStreamingPredict(context.Context, *aiplatformpb.StreamingPredictRequest, ...gax.CallOption) (aiplatformpb.PredictionService_ServerStreamingPredictClient, error) StreamingRawPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamingRawPredictClient, error) Explain(context.Context, *aiplatformpb.ExplainRequest, ...gax.CallOption) (*aiplatformpb.ExplainResponse, error) + GenerateContent(context.Context, *aiplatformpb.GenerateContentRequest, ...gax.CallOption) (*aiplatformpb.GenerateContentResponse, error) StreamGenerateContent(context.Context, *aiplatformpb.GenerateContentRequest, ...gax.CallOption) (aiplatformpb.PredictionService_StreamGenerateContentClient, error) GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator @@ -180,17 +192,35 @@ func (c *PredictionClient) RawPredict(ctx context.Context, req *aiplatformpb.Raw return c.internalClient.RawPredict(ctx, req, opts...) } -// DirectPredict perform an unary online prediction request for Vertex first-party products -// and frameworks. +// StreamRawPredict perform a streaming online prediction with an arbitrary HTTP payload. +func (c *PredictionClient) StreamRawPredict(ctx context.Context, req *aiplatformpb.StreamRawPredictRequest, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamRawPredictClient, error) { + return c.internalClient.StreamRawPredict(ctx, req, opts...) +} + +// DirectPredict perform an unary online prediction request to a gRPC model server for +// Vertex first-party products and frameworks. func (c *PredictionClient) DirectPredict(ctx context.Context, req *aiplatformpb.DirectPredictRequest, opts ...gax.CallOption) (*aiplatformpb.DirectPredictResponse, error) { return c.internalClient.DirectPredict(ctx, req, opts...) } -// DirectRawPredict perform an online prediction request through gRPC. +// DirectRawPredict perform an unary online prediction request to a gRPC model server for +// custom containers. func (c *PredictionClient) DirectRawPredict(ctx context.Context, req *aiplatformpb.DirectRawPredictRequest, opts ...gax.CallOption) (*aiplatformpb.DirectRawPredictResponse, error) { return c.internalClient.DirectRawPredict(ctx, req, opts...) } +// StreamDirectPredict perform a streaming online prediction request to a gRPC model server for +// Vertex first-party products and frameworks. +func (c *PredictionClient) StreamDirectPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectPredictClient, error) { + return c.internalClient.StreamDirectPredict(ctx, opts...) +} + +// StreamDirectRawPredict perform a streaming online prediction request to a gRPC model server for +// custom containers. +func (c *PredictionClient) StreamDirectRawPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectRawPredictClient, error) { + return c.internalClient.StreamDirectRawPredict(ctx, opts...) +} + // StreamingPredict perform a streaming online prediction request for Vertex first-party // products and frameworks. func (c *PredictionClient) StreamingPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamingPredictClient, error) { @@ -223,6 +253,11 @@ func (c *PredictionClient) Explain(ctx context.Context, req *aiplatformpb.Explai return c.internalClient.Explain(ctx, req, opts...) } +// GenerateContent generate content with multimodal inputs. +func (c *PredictionClient) GenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (*aiplatformpb.GenerateContentResponse, error) { + return c.internalClient.GenerateContent(ctx, req, opts...) +} + // StreamGenerateContent generate content with multimodal inputs with streaming support. func (c *PredictionClient) StreamGenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamGenerateContentClient, error) { return c.internalClient.StreamGenerateContent(ctx, req, opts...) @@ -406,6 +441,24 @@ func (c *predictionGRPCClient) RawPredict(ctx context.Context, req *aiplatformpb return resp, nil } +func (c *predictionGRPCClient) StreamRawPredict(ctx context.Context, req *aiplatformpb.StreamRawPredictRequest, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamRawPredictClient, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "endpoint", url.QueryEscape(req.GetEndpoint()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).StreamRawPredict[0:len((*c.CallOptions).StreamRawPredict):len((*c.CallOptions).StreamRawPredict)], opts...) + var resp aiplatformpb.PredictionService_StreamRawPredictClient + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.predictionClient.StreamRawPredict(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *predictionGRPCClient) DirectPredict(ctx context.Context, req *aiplatformpb.DirectPredictRequest, opts ...gax.CallOption) (*aiplatformpb.DirectPredictResponse, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "endpoint", url.QueryEscape(req.GetEndpoint()))} @@ -442,6 +495,36 @@ func (c *predictionGRPCClient) DirectRawPredict(ctx context.Context, req *aiplat return resp, nil } +func (c *predictionGRPCClient) StreamDirectPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectPredictClient, error) { + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) + var resp aiplatformpb.PredictionService_StreamDirectPredictClient + opts = append((*c.CallOptions).StreamDirectPredict[0:len((*c.CallOptions).StreamDirectPredict):len((*c.CallOptions).StreamDirectPredict)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.predictionClient.StreamDirectPredict(ctx, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *predictionGRPCClient) StreamDirectRawPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectRawPredictClient, error) { + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) + var resp aiplatformpb.PredictionService_StreamDirectRawPredictClient + opts = append((*c.CallOptions).StreamDirectRawPredict[0:len((*c.CallOptions).StreamDirectRawPredict):len((*c.CallOptions).StreamDirectRawPredict)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.predictionClient.StreamDirectRawPredict(ctx, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *predictionGRPCClient) StreamingPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamingPredictClient, error) { ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) var resp aiplatformpb.PredictionService_StreamingPredictClient @@ -508,6 +591,24 @@ func (c *predictionGRPCClient) Explain(ctx context.Context, req *aiplatformpb.Ex return resp, nil } +func (c *predictionGRPCClient) GenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (*aiplatformpb.GenerateContentResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "model", url.QueryEscape(req.GetModel()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GenerateContent[0:len((*c.CallOptions).GenerateContent):len((*c.CallOptions).GenerateContent)], opts...) + var resp *aiplatformpb.GenerateContentResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.predictionClient.GenerateContent(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *predictionGRPCClient) StreamGenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamGenerateContentClient, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "model", url.QueryEscape(req.GetModel()))} diff --git a/aiplatform/apiv1/prediction_client_example_test.go b/aiplatform/apiv1/prediction_client_example_test.go index 4c50e1dd5027..21ee3cca1932 100644 --- a/aiplatform/apiv1/prediction_client_example_test.go +++ b/aiplatform/apiv1/prediction_client_example_test.go @@ -120,6 +120,31 @@ func ExamplePredictionClient_Explain() { _ = resp } +func ExamplePredictionClient_GenerateContent() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &aiplatformpb.GenerateContentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/aiplatform/apiv1/aiplatformpb#GenerateContentRequest. + } + resp, err := c.GenerateContent(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExamplePredictionClient_Predict() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -170,6 +195,86 @@ func ExamplePredictionClient_RawPredict() { _ = resp } +func ExamplePredictionClient_StreamDirectPredict() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExamplePredictionClient_StreamDirectRawPredict() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectRawPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectRawPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + func ExamplePredictionClient_StreamingPredict() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/aiplatform/apiv1beta1/aiplatformpb/prediction_service.pb.go b/aiplatform/apiv1beta1/aiplatformpb/prediction_service.pb.go index cb3e7161d537..5eb284f1dfff 100755 --- a/aiplatform/apiv1beta1/aiplatformpb/prediction_service.pb.go +++ b/aiplatform/apiv1beta1/aiplatformpb/prediction_service.pb.go @@ -92,7 +92,7 @@ func (x GenerateContentResponse_PromptFeedback_BlockedReason) Number() protorefl // Deprecated: Use GenerateContentResponse_PromptFeedback_BlockedReason.Descriptor instead. func (GenerateContentResponse_PromptFeedback_BlockedReason) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{16, 0, 0} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{20, 0, 0} } // Request message for @@ -613,6 +613,277 @@ func (x *DirectRawPredictResponse) GetOutput() []byte { return nil } +// Request message for +// [PredictionService.StreamDirectPredict][google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectPredict]. +// +// The first message must contain +// [endpoint][google.cloud.aiplatform.v1beta1.StreamDirectPredictRequest.endpoint] +// field and optionally [input][]. The subsequent messages must contain +// [input][]. +type StreamDirectPredictRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the Endpoint requested to serve the prediction. + // Format: + // `projects/{project}/locations/{location}/endpoints/{endpoint}` + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // Optional. The prediction input. + Inputs []*Tensor `protobuf:"bytes,2,rep,name=inputs,proto3" json:"inputs,omitempty"` + // Optional. The parameters that govern the prediction. + Parameters *Tensor `protobuf:"bytes,3,opt,name=parameters,proto3" json:"parameters,omitempty"` +} + +func (x *StreamDirectPredictRequest) Reset() { + *x = StreamDirectPredictRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectPredictRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectPredictRequest) ProtoMessage() {} + +func (x *StreamDirectPredictRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[7] + 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 StreamDirectPredictRequest.ProtoReflect.Descriptor instead. +func (*StreamDirectPredictRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{7} +} + +func (x *StreamDirectPredictRequest) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *StreamDirectPredictRequest) GetInputs() []*Tensor { + if x != nil { + return x.Inputs + } + return nil +} + +func (x *StreamDirectPredictRequest) GetParameters() *Tensor { + if x != nil { + return x.Parameters + } + return nil +} + +// Response message for +// [PredictionService.StreamDirectPredict][google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectPredict]. +type StreamDirectPredictResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The prediction output. + Outputs []*Tensor `protobuf:"bytes,1,rep,name=outputs,proto3" json:"outputs,omitempty"` + // The parameters that govern the prediction. + Parameters *Tensor `protobuf:"bytes,2,opt,name=parameters,proto3" json:"parameters,omitempty"` +} + +func (x *StreamDirectPredictResponse) Reset() { + *x = StreamDirectPredictResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectPredictResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectPredictResponse) ProtoMessage() {} + +func (x *StreamDirectPredictResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamDirectPredictResponse.ProtoReflect.Descriptor instead. +func (*StreamDirectPredictResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{8} +} + +func (x *StreamDirectPredictResponse) GetOutputs() []*Tensor { + if x != nil { + return x.Outputs + } + return nil +} + +func (x *StreamDirectPredictResponse) GetParameters() *Tensor { + if x != nil { + return x.Parameters + } + return nil +} + +// Request message for +// [PredictionService.StreamDirectRawPredict][google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectRawPredict]. +// +// The first message must contain +// [endpoint][google.cloud.aiplatform.v1beta1.StreamDirectRawPredictRequest.endpoint] +// and +// [method_name][google.cloud.aiplatform.v1beta1.StreamDirectRawPredictRequest.method_name] +// fields and optionally +// [input][google.cloud.aiplatform.v1beta1.StreamDirectRawPredictRequest.input]. +// The subsequent messages must contain +// [input][google.cloud.aiplatform.v1beta1.StreamDirectRawPredictRequest.input]. +// [method_name][google.cloud.aiplatform.v1beta1.StreamDirectRawPredictRequest.method_name] +// in the subsequent messages have no effect. +type StreamDirectRawPredictRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the Endpoint requested to serve the prediction. + // Format: + // `projects/{project}/locations/{location}/endpoints/{endpoint}` + Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // Optional. Fully qualified name of the API method being invoked to perform + // predictions. + // + // Format: + // `/namespace.Service/Method/` + // Example: + // `/tensorflow.serving.PredictionService/Predict` + MethodName string `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` + // Optional. The prediction input. + Input []byte `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` +} + +func (x *StreamDirectRawPredictRequest) Reset() { + *x = StreamDirectRawPredictRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectRawPredictRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectRawPredictRequest) ProtoMessage() {} + +func (x *StreamDirectRawPredictRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[9] + 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 StreamDirectRawPredictRequest.ProtoReflect.Descriptor instead. +func (*StreamDirectRawPredictRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{9} +} + +func (x *StreamDirectRawPredictRequest) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *StreamDirectRawPredictRequest) GetMethodName() string { + if x != nil { + return x.MethodName + } + return "" +} + +func (x *StreamDirectRawPredictRequest) GetInput() []byte { + if x != nil { + return x.Input + } + return nil +} + +// Response message for +// [PredictionService.StreamDirectRawPredict][google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectRawPredict]. +type StreamDirectRawPredictResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The prediction output. + Output []byte `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` +} + +func (x *StreamDirectRawPredictResponse) Reset() { + *x = StreamDirectRawPredictResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamDirectRawPredictResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamDirectRawPredictResponse) ProtoMessage() {} + +func (x *StreamDirectRawPredictResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[10] + 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 StreamDirectRawPredictResponse.ProtoReflect.Descriptor instead. +func (*StreamDirectRawPredictResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{10} +} + +func (x *StreamDirectRawPredictResponse) GetOutput() []byte { + if x != nil { + return x.Output + } + return nil +} + // Request message for // [PredictionService.StreamingPredict][google.cloud.aiplatform.v1beta1.PredictionService.StreamingPredict]. // @@ -638,7 +909,7 @@ type StreamingPredictRequest struct { func (x *StreamingPredictRequest) Reset() { *x = StreamingPredictRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[7] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -651,7 +922,7 @@ func (x *StreamingPredictRequest) String() string { func (*StreamingPredictRequest) ProtoMessage() {} func (x *StreamingPredictRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[7] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -664,7 +935,7 @@ func (x *StreamingPredictRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingPredictRequest.ProtoReflect.Descriptor instead. func (*StreamingPredictRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{7} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{11} } func (x *StreamingPredictRequest) GetEndpoint() string { @@ -704,7 +975,7 @@ type StreamingPredictResponse struct { func (x *StreamingPredictResponse) Reset() { *x = StreamingPredictResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[8] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -717,7 +988,7 @@ func (x *StreamingPredictResponse) String() string { func (*StreamingPredictResponse) ProtoMessage() {} func (x *StreamingPredictResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[8] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -730,7 +1001,7 @@ func (x *StreamingPredictResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingPredictResponse.ProtoReflect.Descriptor instead. func (*StreamingPredictResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{8} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{12} } func (x *StreamingPredictResponse) GetOutputs() []*Tensor { @@ -784,7 +1055,7 @@ type StreamingRawPredictRequest struct { func (x *StreamingRawPredictRequest) Reset() { *x = StreamingRawPredictRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[9] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -797,7 +1068,7 @@ func (x *StreamingRawPredictRequest) String() string { func (*StreamingRawPredictRequest) ProtoMessage() {} func (x *StreamingRawPredictRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[9] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -810,7 +1081,7 @@ func (x *StreamingRawPredictRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingRawPredictRequest.ProtoReflect.Descriptor instead. func (*StreamingRawPredictRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{9} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{13} } func (x *StreamingRawPredictRequest) GetEndpoint() string { @@ -848,7 +1119,7 @@ type StreamingRawPredictResponse struct { func (x *StreamingRawPredictResponse) Reset() { *x = StreamingRawPredictResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[10] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -861,7 +1132,7 @@ func (x *StreamingRawPredictResponse) String() string { func (*StreamingRawPredictResponse) ProtoMessage() {} func (x *StreamingRawPredictResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[10] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -874,7 +1145,7 @@ func (x *StreamingRawPredictResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingRawPredictResponse.ProtoReflect.Descriptor instead. func (*StreamingRawPredictResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{10} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{14} } func (x *StreamingRawPredictResponse) GetOutput() []byte { @@ -938,7 +1209,7 @@ type ExplainRequest struct { func (x *ExplainRequest) Reset() { *x = ExplainRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[11] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -951,7 +1222,7 @@ func (x *ExplainRequest) String() string { func (*ExplainRequest) ProtoMessage() {} func (x *ExplainRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[11] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -964,7 +1235,7 @@ func (x *ExplainRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExplainRequest.ProtoReflect.Descriptor instead. func (*ExplainRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{11} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{15} } func (x *ExplainRequest) GetEndpoint() string { @@ -1037,7 +1308,7 @@ type ExplainResponse struct { func (x *ExplainResponse) Reset() { *x = ExplainResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[12] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1050,7 +1321,7 @@ func (x *ExplainResponse) String() string { func (*ExplainResponse) ProtoMessage() {} func (x *ExplainResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[12] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1063,7 +1334,7 @@ func (x *ExplainResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExplainResponse.ProtoReflect.Descriptor instead. func (*ExplainResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{12} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{16} } func (x *ExplainResponse) GetExplanations() []*Explanation { @@ -1119,7 +1390,7 @@ type CountTokensRequest struct { func (x *CountTokensRequest) Reset() { *x = CountTokensRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[13] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1132,7 +1403,7 @@ func (x *CountTokensRequest) String() string { func (*CountTokensRequest) ProtoMessage() {} func (x *CountTokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[13] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1145,7 +1416,7 @@ func (x *CountTokensRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountTokensRequest.ProtoReflect.Descriptor instead. func (*CountTokensRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{13} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{17} } func (x *CountTokensRequest) GetEndpoint() string { @@ -1193,7 +1464,7 @@ type CountTokensResponse struct { func (x *CountTokensResponse) Reset() { *x = CountTokensResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[14] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1206,7 +1477,7 @@ func (x *CountTokensResponse) String() string { func (*CountTokensResponse) ProtoMessage() {} func (x *CountTokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[14] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1219,7 +1490,7 @@ func (x *CountTokensResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountTokensResponse.ProtoReflect.Descriptor instead. func (*CountTokensResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{14} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{18} } func (x *CountTokensResponse) GetTotalTokens() int32 { @@ -1270,7 +1541,7 @@ type GenerateContentRequest struct { func (x *GenerateContentRequest) Reset() { *x = GenerateContentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[15] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1283,7 +1554,7 @@ func (x *GenerateContentRequest) String() string { func (*GenerateContentRequest) ProtoMessage() {} func (x *GenerateContentRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[15] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1296,7 +1567,7 @@ func (x *GenerateContentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateContentRequest.ProtoReflect.Descriptor instead. func (*GenerateContentRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{15} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{19} } func (x *GenerateContentRequest) GetModel() string { @@ -1353,7 +1624,7 @@ type GenerateContentResponse struct { func (x *GenerateContentResponse) Reset() { *x = GenerateContentResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[16] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1366,7 +1637,7 @@ func (x *GenerateContentResponse) String() string { func (*GenerateContentResponse) ProtoMessage() {} func (x *GenerateContentResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[16] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1379,7 +1650,7 @@ func (x *GenerateContentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateContentResponse.ProtoReflect.Descriptor instead. func (*GenerateContentResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{16} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{20} } func (x *GenerateContentResponse) GetCandidates() []*Candidate { @@ -1421,7 +1692,7 @@ type ExplainResponse_ConcurrentExplanation struct { func (x *ExplainResponse_ConcurrentExplanation) Reset() { *x = ExplainResponse_ConcurrentExplanation{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[18] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1434,7 +1705,7 @@ func (x *ExplainResponse_ConcurrentExplanation) String() string { func (*ExplainResponse_ConcurrentExplanation) ProtoMessage() {} func (x *ExplainResponse_ConcurrentExplanation) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[18] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1447,7 +1718,7 @@ func (x *ExplainResponse_ConcurrentExplanation) ProtoReflect() protoreflect.Mess // Deprecated: Use ExplainResponse_ConcurrentExplanation.ProtoReflect.Descriptor instead. func (*ExplainResponse_ConcurrentExplanation) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{12, 0} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{16, 0} } func (x *ExplainResponse_ConcurrentExplanation) GetExplanations() []*Explanation { @@ -1474,7 +1745,7 @@ type GenerateContentResponse_PromptFeedback struct { func (x *GenerateContentResponse_PromptFeedback) Reset() { *x = GenerateContentResponse_PromptFeedback{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[20] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1487,7 +1758,7 @@ func (x *GenerateContentResponse_PromptFeedback) String() string { func (*GenerateContentResponse_PromptFeedback) ProtoMessage() {} func (x *GenerateContentResponse_PromptFeedback) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[20] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1500,7 +1771,7 @@ func (x *GenerateContentResponse_PromptFeedback) ProtoReflect() protoreflect.Mes // Deprecated: Use GenerateContentResponse_PromptFeedback.ProtoReflect.Descriptor instead. func (*GenerateContentResponse_PromptFeedback) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{16, 0} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{20, 0} } func (x *GenerateContentResponse_PromptFeedback) GetBlockReason() GenerateContentResponse_PromptFeedback_BlockedReason { @@ -1540,7 +1811,7 @@ type GenerateContentResponse_UsageMetadata struct { func (x *GenerateContentResponse_UsageMetadata) Reset() { *x = GenerateContentResponse_UsageMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[21] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1553,7 +1824,7 @@ func (x *GenerateContentResponse_UsageMetadata) String() string { func (*GenerateContentResponse_UsageMetadata) ProtoMessage() {} func (x *GenerateContentResponse_UsageMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[21] + mi := &file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1566,7 +1837,7 @@ func (x *GenerateContentResponse_UsageMetadata) ProtoReflect() protoreflect.Mess // Deprecated: Use GenerateContentResponse_UsageMetadata.ProtoReflect.Descriptor instead. func (*GenerateContentResponse_UsageMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{16, 1} + return file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP(), []int{20, 1} } func (x *GenerateContentResponse_UsageMetadata) GetPromptTokenCount() int32 { @@ -1702,23 +1973,24 @@ var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDesc = []by 0x74, 0x22, 0x32, 0x0a, 0x18, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, - 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, @@ -1727,381 +1999,461 @@ var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDesc = []by 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, - 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9b, 0x01, 0x0a, - 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x35, 0x0a, 0x1b, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x22, 0xad, 0x05, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, - 0x74, 0x0a, 0x19, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x17, 0x65, 0x78, - 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x24, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x21, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, - 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, - 0x1a, 0x8e, 0x01, 0x0a, 0x26, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, - 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4e, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xd0, 0x04, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, - 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x70, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x69, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, - 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x91, 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, - 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 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, 0x5c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, - 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x39, - 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x13, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3a, - 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0x83, 0x03, 0x0a, 0x16, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x12, 0x49, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x74, - 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, + 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0xa8, 0x01, 0x0a, + 0x1d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, + 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x38, 0x0a, 0x1e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, - 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x5c, 0x0a, - 0x0f, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x61, 0x66, - 0x65, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x63, 0x0a, 0x11, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x22, 0xde, 0x06, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, - 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x75, 0x0a, - 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, - 0x62, 0x61, 0x63, 0x6b, 0x12, 0x6d, 0x0a, 0x0e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x75, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0xe9, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, - 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x7d, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x55, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, - 0x64, 0x62, 0x61, 0x63, 0x6b, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, - 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6e, + 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, + 0xa6, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0d, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x35, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x46, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x4c, 0x4f, 0x43, - 0x4b, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x46, 0x45, - 0x54, 0x59, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x1a, - 0x9f, 0x01, 0x0a, 0x0d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, - 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x34, 0x0a, 0x16, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x14, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x32, 0xb4, 0x14, 0x0a, 0x11, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa8, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb9, 0x01, 0xda, 0x41, 0x1d, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2c, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x92, 0x01, - 0x3a, 0x01, 0x2a, 0x5a, 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, - 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, - 0x63, 0x74, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, - 0x63, 0x74, 0x12, 0x8d, 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xb4, 0x01, 0xda, 0x41, - 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x62, - 0x6f, 0x64, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x98, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x50, 0x3a, - 0x01, 0x2a, 0x22, 0x4b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, - 0x41, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, - 0x63, 0x74, 0x12, 0xcf, 0x01, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x12, 0xdb, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, - 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, + 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, - 0x7d, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, - 0x63, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x35, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xad, 0x05, + 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x74, 0x0a, 0x19, 0x65, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, + 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x17, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x12, 0xac, 0x01, 0x0a, 0x24, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, + 0x63, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x56, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, + 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x21, 0x63, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x1a, 0x8e, 0x01, 0x0a, + 0x26, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4e, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd0, 0x04, + 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, - 0x30, 0x01, 0x12, 0xc9, 0x02, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x38, 0x2e, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x69, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0c, 0x65, 0x78, + 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x91, 0x01, 0x0a, + 0x1b, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x6e, 0x61, 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, 0x5c, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xfd, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xb7, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb0, 0x01, 0x3a, 0x01, 0x2a, 0x5a, - 0x5c, 0x3a, 0x01, 0x2a, 0x22, 0x57, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0x74, 0x0a, 0x13, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x72, + 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0x83, 0x03, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x49, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x5c, 0x0a, 0x0f, 0x73, 0x61, 0x66, + 0x65, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x63, 0x0a, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xde, 0x06, 0x0a, + 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x63, 0x61, 0x6e, 0x64, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, + 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x70, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x12, 0x6d, 0x0a, 0x0e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x0d, 0x75, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, + 0xe9, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x12, 0x7d, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x55, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x12, 0x59, 0x0a, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, + 0x74, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x73, + 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x14, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0x46, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x5f, + 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x46, 0x45, 0x54, 0x59, 0x10, 0x01, + 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x1a, 0x9f, 0x01, 0x0a, 0x0d, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, + 0x12, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, + 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x63, 0x61, 0x6e, + 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xad, 0x19, + 0x0a, 0x11, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0xa8, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, + 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xb9, 0x01, 0xda, 0x41, 0x1d, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2c, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x92, 0x01, 0x3a, 0x01, 0x2a, 0x5a, + 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x4d, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x30, 0x01, 0x12, 0x96, - 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, + 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x3e, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x8d, + 0x02, 0x0a, 0x0a, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x32, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xb4, 0x01, 0xda, 0x41, 0x12, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x98, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x50, 0x3a, 0x01, 0x2a, 0x22, 0x4b, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x72, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x22, 0x41, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0xcf, + 0x01, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x12, 0xdb, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, + 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x96, + 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, - 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xe9, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x70, 0x6c, - 0x61, 0x69, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0xda, 0x41, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2c, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, - 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, - 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x78, 0x70, 0x6c, - 0x61, 0x69, 0x6e, 0x12, 0xb1, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x9f, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x38, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb6, - 0x01, 0xda, 0x41, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9a, 0x01, 0x3a, 0x01, 0x2a, - 0x5a, 0x51, 0x3a, 0x01, 0x2a, 0x22, 0x4c, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xc9, 0x02, 0x0a, 0x16, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, + 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb7, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0xb0, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x5c, 0x3a, 0x01, 0x2a, 0x22, 0x57, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x30, 0x01, 0x12, 0x96, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x12, 0x3b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x77, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0xe9, + 0x01, 0x0a, 0x07, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0xda, + 0x41, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2c, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2c, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x12, 0xb1, 0x02, 0x0a, 0x0b, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb6, 0x01, 0xda, 0x41, 0x12, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x9a, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x51, 0x3a, 0x01, 0x2a, 0x22, 0x4c, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0xbb, + 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb4, 0x01, 0xda, 0x41, 0x0e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9c, 0x01, + 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0xcf, 0x02, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0xda, 0x41, 0x0e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa8, 0x01, 0x3a, - 0x01, 0x2a, 0x5a, 0x58, 0x3a, 0x01, 0x2a, 0x22, 0x53, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x49, 0x2f, 0x76, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0xcf, 0x02, 0x0a, + 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0xda, 0x41, 0x0e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0xa8, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x58, 0x3a, 0x01, 0x2a, 0x22, 0x53, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, - 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x1a, 0x4d, 0xca, 0x41, 0x19, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, - 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xed, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x42, 0x16, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, - 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, - 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, - 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, + 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x22, 0x49, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x1a, 0x4d, + 0xca, 0x41, 0x19, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xed, 0x01, + 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x16, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, + 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, + 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2117,7 +2469,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDescGZIP() } var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_goTypes = []interface{}{ (GenerateContentResponse_PromptFeedback_BlockedReason)(0), // 0: google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback.BlockedReason (*PredictRequest)(nil), // 1: google.cloud.aiplatform.v1beta1.PredictRequest @@ -2127,93 +2479,107 @@ var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_goTypes = []in (*DirectPredictResponse)(nil), // 5: google.cloud.aiplatform.v1beta1.DirectPredictResponse (*DirectRawPredictRequest)(nil), // 6: google.cloud.aiplatform.v1beta1.DirectRawPredictRequest (*DirectRawPredictResponse)(nil), // 7: google.cloud.aiplatform.v1beta1.DirectRawPredictResponse - (*StreamingPredictRequest)(nil), // 8: google.cloud.aiplatform.v1beta1.StreamingPredictRequest - (*StreamingPredictResponse)(nil), // 9: google.cloud.aiplatform.v1beta1.StreamingPredictResponse - (*StreamingRawPredictRequest)(nil), // 10: google.cloud.aiplatform.v1beta1.StreamingRawPredictRequest - (*StreamingRawPredictResponse)(nil), // 11: google.cloud.aiplatform.v1beta1.StreamingRawPredictResponse - (*ExplainRequest)(nil), // 12: google.cloud.aiplatform.v1beta1.ExplainRequest - (*ExplainResponse)(nil), // 13: google.cloud.aiplatform.v1beta1.ExplainResponse - (*CountTokensRequest)(nil), // 14: google.cloud.aiplatform.v1beta1.CountTokensRequest - (*CountTokensResponse)(nil), // 15: google.cloud.aiplatform.v1beta1.CountTokensResponse - (*GenerateContentRequest)(nil), // 16: google.cloud.aiplatform.v1beta1.GenerateContentRequest - (*GenerateContentResponse)(nil), // 17: google.cloud.aiplatform.v1beta1.GenerateContentResponse - nil, // 18: google.cloud.aiplatform.v1beta1.ExplainRequest.ConcurrentExplanationSpecOverrideEntry - (*ExplainResponse_ConcurrentExplanation)(nil), // 19: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanation - nil, // 20: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanationsEntry - (*GenerateContentResponse_PromptFeedback)(nil), // 21: google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback - (*GenerateContentResponse_UsageMetadata)(nil), // 22: google.cloud.aiplatform.v1beta1.GenerateContentResponse.UsageMetadata - (*structpb.Value)(nil), // 23: google.protobuf.Value - (*httpbody.HttpBody)(nil), // 24: google.api.HttpBody - (*Tensor)(nil), // 25: google.cloud.aiplatform.v1beta1.Tensor - (*ExplanationSpecOverride)(nil), // 26: google.cloud.aiplatform.v1beta1.ExplanationSpecOverride - (*Explanation)(nil), // 27: google.cloud.aiplatform.v1beta1.Explanation - (*Content)(nil), // 28: google.cloud.aiplatform.v1beta1.Content - (*Tool)(nil), // 29: google.cloud.aiplatform.v1beta1.Tool - (*SafetySetting)(nil), // 30: google.cloud.aiplatform.v1beta1.SafetySetting - (*GenerationConfig)(nil), // 31: google.cloud.aiplatform.v1beta1.GenerationConfig - (*Candidate)(nil), // 32: google.cloud.aiplatform.v1beta1.Candidate - (*SafetyRating)(nil), // 33: google.cloud.aiplatform.v1beta1.SafetyRating + (*StreamDirectPredictRequest)(nil), // 8: google.cloud.aiplatform.v1beta1.StreamDirectPredictRequest + (*StreamDirectPredictResponse)(nil), // 9: google.cloud.aiplatform.v1beta1.StreamDirectPredictResponse + (*StreamDirectRawPredictRequest)(nil), // 10: google.cloud.aiplatform.v1beta1.StreamDirectRawPredictRequest + (*StreamDirectRawPredictResponse)(nil), // 11: google.cloud.aiplatform.v1beta1.StreamDirectRawPredictResponse + (*StreamingPredictRequest)(nil), // 12: google.cloud.aiplatform.v1beta1.StreamingPredictRequest + (*StreamingPredictResponse)(nil), // 13: google.cloud.aiplatform.v1beta1.StreamingPredictResponse + (*StreamingRawPredictRequest)(nil), // 14: google.cloud.aiplatform.v1beta1.StreamingRawPredictRequest + (*StreamingRawPredictResponse)(nil), // 15: google.cloud.aiplatform.v1beta1.StreamingRawPredictResponse + (*ExplainRequest)(nil), // 16: google.cloud.aiplatform.v1beta1.ExplainRequest + (*ExplainResponse)(nil), // 17: google.cloud.aiplatform.v1beta1.ExplainResponse + (*CountTokensRequest)(nil), // 18: google.cloud.aiplatform.v1beta1.CountTokensRequest + (*CountTokensResponse)(nil), // 19: google.cloud.aiplatform.v1beta1.CountTokensResponse + (*GenerateContentRequest)(nil), // 20: google.cloud.aiplatform.v1beta1.GenerateContentRequest + (*GenerateContentResponse)(nil), // 21: google.cloud.aiplatform.v1beta1.GenerateContentResponse + nil, // 22: google.cloud.aiplatform.v1beta1.ExplainRequest.ConcurrentExplanationSpecOverrideEntry + (*ExplainResponse_ConcurrentExplanation)(nil), // 23: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanation + nil, // 24: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanationsEntry + (*GenerateContentResponse_PromptFeedback)(nil), // 25: google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback + (*GenerateContentResponse_UsageMetadata)(nil), // 26: google.cloud.aiplatform.v1beta1.GenerateContentResponse.UsageMetadata + (*structpb.Value)(nil), // 27: google.protobuf.Value + (*httpbody.HttpBody)(nil), // 28: google.api.HttpBody + (*Tensor)(nil), // 29: google.cloud.aiplatform.v1beta1.Tensor + (*ExplanationSpecOverride)(nil), // 30: google.cloud.aiplatform.v1beta1.ExplanationSpecOverride + (*Explanation)(nil), // 31: google.cloud.aiplatform.v1beta1.Explanation + (*Content)(nil), // 32: google.cloud.aiplatform.v1beta1.Content + (*Tool)(nil), // 33: google.cloud.aiplatform.v1beta1.Tool + (*SafetySetting)(nil), // 34: google.cloud.aiplatform.v1beta1.SafetySetting + (*GenerationConfig)(nil), // 35: google.cloud.aiplatform.v1beta1.GenerationConfig + (*Candidate)(nil), // 36: google.cloud.aiplatform.v1beta1.Candidate + (*SafetyRating)(nil), // 37: google.cloud.aiplatform.v1beta1.SafetyRating } var file_google_cloud_aiplatform_v1beta1_prediction_service_proto_depIdxs = []int32{ - 23, // 0: google.cloud.aiplatform.v1beta1.PredictRequest.instances:type_name -> google.protobuf.Value - 23, // 1: google.cloud.aiplatform.v1beta1.PredictRequest.parameters:type_name -> google.protobuf.Value - 23, // 2: google.cloud.aiplatform.v1beta1.PredictResponse.predictions:type_name -> google.protobuf.Value - 23, // 3: google.cloud.aiplatform.v1beta1.PredictResponse.metadata:type_name -> google.protobuf.Value - 24, // 4: google.cloud.aiplatform.v1beta1.RawPredictRequest.http_body:type_name -> google.api.HttpBody - 25, // 5: google.cloud.aiplatform.v1beta1.DirectPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 25, // 6: google.cloud.aiplatform.v1beta1.DirectPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 25, // 7: google.cloud.aiplatform.v1beta1.DirectPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 25, // 8: google.cloud.aiplatform.v1beta1.DirectPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 25, // 9: google.cloud.aiplatform.v1beta1.StreamingPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 25, // 10: google.cloud.aiplatform.v1beta1.StreamingPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 25, // 11: google.cloud.aiplatform.v1beta1.StreamingPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 25, // 12: google.cloud.aiplatform.v1beta1.StreamingPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor - 23, // 13: google.cloud.aiplatform.v1beta1.ExplainRequest.instances:type_name -> google.protobuf.Value - 23, // 14: google.cloud.aiplatform.v1beta1.ExplainRequest.parameters:type_name -> google.protobuf.Value - 26, // 15: google.cloud.aiplatform.v1beta1.ExplainRequest.explanation_spec_override:type_name -> google.cloud.aiplatform.v1beta1.ExplanationSpecOverride - 18, // 16: google.cloud.aiplatform.v1beta1.ExplainRequest.concurrent_explanation_spec_override:type_name -> google.cloud.aiplatform.v1beta1.ExplainRequest.ConcurrentExplanationSpecOverrideEntry - 27, // 17: google.cloud.aiplatform.v1beta1.ExplainResponse.explanations:type_name -> google.cloud.aiplatform.v1beta1.Explanation - 20, // 18: google.cloud.aiplatform.v1beta1.ExplainResponse.concurrent_explanations:type_name -> google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanationsEntry - 23, // 19: google.cloud.aiplatform.v1beta1.ExplainResponse.predictions:type_name -> google.protobuf.Value - 23, // 20: google.cloud.aiplatform.v1beta1.CountTokensRequest.instances:type_name -> google.protobuf.Value - 28, // 21: google.cloud.aiplatform.v1beta1.CountTokensRequest.contents:type_name -> google.cloud.aiplatform.v1beta1.Content - 28, // 22: google.cloud.aiplatform.v1beta1.GenerateContentRequest.contents:type_name -> google.cloud.aiplatform.v1beta1.Content - 29, // 23: google.cloud.aiplatform.v1beta1.GenerateContentRequest.tools:type_name -> google.cloud.aiplatform.v1beta1.Tool - 30, // 24: google.cloud.aiplatform.v1beta1.GenerateContentRequest.safety_settings:type_name -> google.cloud.aiplatform.v1beta1.SafetySetting - 31, // 25: google.cloud.aiplatform.v1beta1.GenerateContentRequest.generation_config:type_name -> google.cloud.aiplatform.v1beta1.GenerationConfig - 32, // 26: google.cloud.aiplatform.v1beta1.GenerateContentResponse.candidates:type_name -> google.cloud.aiplatform.v1beta1.Candidate - 21, // 27: google.cloud.aiplatform.v1beta1.GenerateContentResponse.prompt_feedback:type_name -> google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback - 22, // 28: google.cloud.aiplatform.v1beta1.GenerateContentResponse.usage_metadata:type_name -> google.cloud.aiplatform.v1beta1.GenerateContentResponse.UsageMetadata - 26, // 29: google.cloud.aiplatform.v1beta1.ExplainRequest.ConcurrentExplanationSpecOverrideEntry.value:type_name -> google.cloud.aiplatform.v1beta1.ExplanationSpecOverride - 27, // 30: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanation.explanations:type_name -> google.cloud.aiplatform.v1beta1.Explanation - 19, // 31: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanationsEntry.value:type_name -> google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanation - 0, // 32: google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback.block_reason:type_name -> google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback.BlockedReason - 33, // 33: google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback.safety_ratings:type_name -> google.cloud.aiplatform.v1beta1.SafetyRating - 1, // 34: google.cloud.aiplatform.v1beta1.PredictionService.Predict:input_type -> google.cloud.aiplatform.v1beta1.PredictRequest - 3, // 35: google.cloud.aiplatform.v1beta1.PredictionService.RawPredict:input_type -> google.cloud.aiplatform.v1beta1.RawPredictRequest - 4, // 36: google.cloud.aiplatform.v1beta1.PredictionService.DirectPredict:input_type -> google.cloud.aiplatform.v1beta1.DirectPredictRequest - 6, // 37: google.cloud.aiplatform.v1beta1.PredictionService.DirectRawPredict:input_type -> google.cloud.aiplatform.v1beta1.DirectRawPredictRequest - 8, // 38: google.cloud.aiplatform.v1beta1.PredictionService.StreamingPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamingPredictRequest - 8, // 39: google.cloud.aiplatform.v1beta1.PredictionService.ServerStreamingPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamingPredictRequest - 10, // 40: google.cloud.aiplatform.v1beta1.PredictionService.StreamingRawPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamingRawPredictRequest - 12, // 41: google.cloud.aiplatform.v1beta1.PredictionService.Explain:input_type -> google.cloud.aiplatform.v1beta1.ExplainRequest - 14, // 42: google.cloud.aiplatform.v1beta1.PredictionService.CountTokens:input_type -> google.cloud.aiplatform.v1beta1.CountTokensRequest - 16, // 43: google.cloud.aiplatform.v1beta1.PredictionService.StreamGenerateContent:input_type -> google.cloud.aiplatform.v1beta1.GenerateContentRequest - 2, // 44: google.cloud.aiplatform.v1beta1.PredictionService.Predict:output_type -> google.cloud.aiplatform.v1beta1.PredictResponse - 24, // 45: google.cloud.aiplatform.v1beta1.PredictionService.RawPredict:output_type -> google.api.HttpBody - 5, // 46: google.cloud.aiplatform.v1beta1.PredictionService.DirectPredict:output_type -> google.cloud.aiplatform.v1beta1.DirectPredictResponse - 7, // 47: google.cloud.aiplatform.v1beta1.PredictionService.DirectRawPredict:output_type -> google.cloud.aiplatform.v1beta1.DirectRawPredictResponse - 9, // 48: google.cloud.aiplatform.v1beta1.PredictionService.StreamingPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamingPredictResponse - 9, // 49: google.cloud.aiplatform.v1beta1.PredictionService.ServerStreamingPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamingPredictResponse - 11, // 50: google.cloud.aiplatform.v1beta1.PredictionService.StreamingRawPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamingRawPredictResponse - 13, // 51: google.cloud.aiplatform.v1beta1.PredictionService.Explain:output_type -> google.cloud.aiplatform.v1beta1.ExplainResponse - 15, // 52: google.cloud.aiplatform.v1beta1.PredictionService.CountTokens:output_type -> google.cloud.aiplatform.v1beta1.CountTokensResponse - 17, // 53: google.cloud.aiplatform.v1beta1.PredictionService.StreamGenerateContent:output_type -> google.cloud.aiplatform.v1beta1.GenerateContentResponse - 44, // [44:54] is the sub-list for method output_type - 34, // [34:44] is the sub-list for method input_type - 34, // [34:34] is the sub-list for extension type_name - 34, // [34:34] is the sub-list for extension extendee - 0, // [0:34] is the sub-list for field type_name + 27, // 0: google.cloud.aiplatform.v1beta1.PredictRequest.instances:type_name -> google.protobuf.Value + 27, // 1: google.cloud.aiplatform.v1beta1.PredictRequest.parameters:type_name -> google.protobuf.Value + 27, // 2: google.cloud.aiplatform.v1beta1.PredictResponse.predictions:type_name -> google.protobuf.Value + 27, // 3: google.cloud.aiplatform.v1beta1.PredictResponse.metadata:type_name -> google.protobuf.Value + 28, // 4: google.cloud.aiplatform.v1beta1.RawPredictRequest.http_body:type_name -> google.api.HttpBody + 29, // 5: google.cloud.aiplatform.v1beta1.DirectPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 6: google.cloud.aiplatform.v1beta1.DirectPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 7: google.cloud.aiplatform.v1beta1.DirectPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 8: google.cloud.aiplatform.v1beta1.DirectPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 9: google.cloud.aiplatform.v1beta1.StreamDirectPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 10: google.cloud.aiplatform.v1beta1.StreamDirectPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 11: google.cloud.aiplatform.v1beta1.StreamDirectPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 12: google.cloud.aiplatform.v1beta1.StreamDirectPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 13: google.cloud.aiplatform.v1beta1.StreamingPredictRequest.inputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 14: google.cloud.aiplatform.v1beta1.StreamingPredictRequest.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 15: google.cloud.aiplatform.v1beta1.StreamingPredictResponse.outputs:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 29, // 16: google.cloud.aiplatform.v1beta1.StreamingPredictResponse.parameters:type_name -> google.cloud.aiplatform.v1beta1.Tensor + 27, // 17: google.cloud.aiplatform.v1beta1.ExplainRequest.instances:type_name -> google.protobuf.Value + 27, // 18: google.cloud.aiplatform.v1beta1.ExplainRequest.parameters:type_name -> google.protobuf.Value + 30, // 19: google.cloud.aiplatform.v1beta1.ExplainRequest.explanation_spec_override:type_name -> google.cloud.aiplatform.v1beta1.ExplanationSpecOverride + 22, // 20: google.cloud.aiplatform.v1beta1.ExplainRequest.concurrent_explanation_spec_override:type_name -> google.cloud.aiplatform.v1beta1.ExplainRequest.ConcurrentExplanationSpecOverrideEntry + 31, // 21: google.cloud.aiplatform.v1beta1.ExplainResponse.explanations:type_name -> google.cloud.aiplatform.v1beta1.Explanation + 24, // 22: google.cloud.aiplatform.v1beta1.ExplainResponse.concurrent_explanations:type_name -> google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanationsEntry + 27, // 23: google.cloud.aiplatform.v1beta1.ExplainResponse.predictions:type_name -> google.protobuf.Value + 27, // 24: google.cloud.aiplatform.v1beta1.CountTokensRequest.instances:type_name -> google.protobuf.Value + 32, // 25: google.cloud.aiplatform.v1beta1.CountTokensRequest.contents:type_name -> google.cloud.aiplatform.v1beta1.Content + 32, // 26: google.cloud.aiplatform.v1beta1.GenerateContentRequest.contents:type_name -> google.cloud.aiplatform.v1beta1.Content + 33, // 27: google.cloud.aiplatform.v1beta1.GenerateContentRequest.tools:type_name -> google.cloud.aiplatform.v1beta1.Tool + 34, // 28: google.cloud.aiplatform.v1beta1.GenerateContentRequest.safety_settings:type_name -> google.cloud.aiplatform.v1beta1.SafetySetting + 35, // 29: google.cloud.aiplatform.v1beta1.GenerateContentRequest.generation_config:type_name -> google.cloud.aiplatform.v1beta1.GenerationConfig + 36, // 30: google.cloud.aiplatform.v1beta1.GenerateContentResponse.candidates:type_name -> google.cloud.aiplatform.v1beta1.Candidate + 25, // 31: google.cloud.aiplatform.v1beta1.GenerateContentResponse.prompt_feedback:type_name -> google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback + 26, // 32: google.cloud.aiplatform.v1beta1.GenerateContentResponse.usage_metadata:type_name -> google.cloud.aiplatform.v1beta1.GenerateContentResponse.UsageMetadata + 30, // 33: google.cloud.aiplatform.v1beta1.ExplainRequest.ConcurrentExplanationSpecOverrideEntry.value:type_name -> google.cloud.aiplatform.v1beta1.ExplanationSpecOverride + 31, // 34: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanation.explanations:type_name -> google.cloud.aiplatform.v1beta1.Explanation + 23, // 35: google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanationsEntry.value:type_name -> google.cloud.aiplatform.v1beta1.ExplainResponse.ConcurrentExplanation + 0, // 36: google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback.block_reason:type_name -> google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback.BlockedReason + 37, // 37: google.cloud.aiplatform.v1beta1.GenerateContentResponse.PromptFeedback.safety_ratings:type_name -> google.cloud.aiplatform.v1beta1.SafetyRating + 1, // 38: google.cloud.aiplatform.v1beta1.PredictionService.Predict:input_type -> google.cloud.aiplatform.v1beta1.PredictRequest + 3, // 39: google.cloud.aiplatform.v1beta1.PredictionService.RawPredict:input_type -> google.cloud.aiplatform.v1beta1.RawPredictRequest + 4, // 40: google.cloud.aiplatform.v1beta1.PredictionService.DirectPredict:input_type -> google.cloud.aiplatform.v1beta1.DirectPredictRequest + 6, // 41: google.cloud.aiplatform.v1beta1.PredictionService.DirectRawPredict:input_type -> google.cloud.aiplatform.v1beta1.DirectRawPredictRequest + 8, // 42: google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamDirectPredictRequest + 10, // 43: google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectRawPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamDirectRawPredictRequest + 12, // 44: google.cloud.aiplatform.v1beta1.PredictionService.StreamingPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamingPredictRequest + 12, // 45: google.cloud.aiplatform.v1beta1.PredictionService.ServerStreamingPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamingPredictRequest + 14, // 46: google.cloud.aiplatform.v1beta1.PredictionService.StreamingRawPredict:input_type -> google.cloud.aiplatform.v1beta1.StreamingRawPredictRequest + 16, // 47: google.cloud.aiplatform.v1beta1.PredictionService.Explain:input_type -> google.cloud.aiplatform.v1beta1.ExplainRequest + 18, // 48: google.cloud.aiplatform.v1beta1.PredictionService.CountTokens:input_type -> google.cloud.aiplatform.v1beta1.CountTokensRequest + 20, // 49: google.cloud.aiplatform.v1beta1.PredictionService.GenerateContent:input_type -> google.cloud.aiplatform.v1beta1.GenerateContentRequest + 20, // 50: google.cloud.aiplatform.v1beta1.PredictionService.StreamGenerateContent:input_type -> google.cloud.aiplatform.v1beta1.GenerateContentRequest + 2, // 51: google.cloud.aiplatform.v1beta1.PredictionService.Predict:output_type -> google.cloud.aiplatform.v1beta1.PredictResponse + 28, // 52: google.cloud.aiplatform.v1beta1.PredictionService.RawPredict:output_type -> google.api.HttpBody + 5, // 53: google.cloud.aiplatform.v1beta1.PredictionService.DirectPredict:output_type -> google.cloud.aiplatform.v1beta1.DirectPredictResponse + 7, // 54: google.cloud.aiplatform.v1beta1.PredictionService.DirectRawPredict:output_type -> google.cloud.aiplatform.v1beta1.DirectRawPredictResponse + 9, // 55: google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamDirectPredictResponse + 11, // 56: google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectRawPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamDirectRawPredictResponse + 13, // 57: google.cloud.aiplatform.v1beta1.PredictionService.StreamingPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamingPredictResponse + 13, // 58: google.cloud.aiplatform.v1beta1.PredictionService.ServerStreamingPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamingPredictResponse + 15, // 59: google.cloud.aiplatform.v1beta1.PredictionService.StreamingRawPredict:output_type -> google.cloud.aiplatform.v1beta1.StreamingRawPredictResponse + 17, // 60: google.cloud.aiplatform.v1beta1.PredictionService.Explain:output_type -> google.cloud.aiplatform.v1beta1.ExplainResponse + 19, // 61: google.cloud.aiplatform.v1beta1.PredictionService.CountTokens:output_type -> google.cloud.aiplatform.v1beta1.CountTokensResponse + 21, // 62: google.cloud.aiplatform.v1beta1.PredictionService.GenerateContent:output_type -> google.cloud.aiplatform.v1beta1.GenerateContentResponse + 21, // 63: google.cloud.aiplatform.v1beta1.PredictionService.StreamGenerateContent:output_type -> google.cloud.aiplatform.v1beta1.GenerateContentResponse + 51, // [51:64] is the sub-list for method output_type + 38, // [38:51] is the sub-list for method input_type + 38, // [38:38] is the sub-list for extension type_name + 38, // [38:38] is the sub-list for extension extendee + 0, // [0:38] is the sub-list for field type_name } func init() { file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() } @@ -2311,7 +2677,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingPredictRequest); i { + switch v := v.(*StreamDirectPredictRequest); i { case 0: return &v.state case 1: @@ -2323,7 +2689,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingPredictResponse); i { + switch v := v.(*StreamDirectPredictResponse); i { case 0: return &v.state case 1: @@ -2335,7 +2701,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingRawPredictRequest); i { + switch v := v.(*StreamDirectRawPredictRequest); i { case 0: return &v.state case 1: @@ -2347,7 +2713,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingRawPredictResponse); i { + switch v := v.(*StreamDirectRawPredictResponse); i { case 0: return &v.state case 1: @@ -2359,7 +2725,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExplainRequest); i { + switch v := v.(*StreamingPredictRequest); i { case 0: return &v.state case 1: @@ -2371,7 +2737,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExplainResponse); i { + switch v := v.(*StreamingPredictResponse); i { case 0: return &v.state case 1: @@ -2383,7 +2749,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountTokensRequest); i { + switch v := v.(*StreamingRawPredictRequest); i { case 0: return &v.state case 1: @@ -2395,7 +2761,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountTokensResponse); i { + switch v := v.(*StreamingRawPredictResponse); i { case 0: return &v.state case 1: @@ -2407,7 +2773,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateContentRequest); i { + switch v := v.(*ExplainRequest); i { case 0: return &v.state case 1: @@ -2419,7 +2785,19 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateContentResponse); i { + switch v := v.(*ExplainResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CountTokensRequest); i { case 0: return &v.state case 1: @@ -2431,7 +2809,19 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExplainResponse_ConcurrentExplanation); i { + switch v := v.(*CountTokensResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateContentRequest); i { case 0: return &v.state case 1: @@ -2443,6 +2833,30 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { } } file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateContentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExplainResponse_ConcurrentExplanation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateContentResponse_PromptFeedback); i { case 0: return &v.state @@ -2454,7 +2868,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_google_cloud_aiplatform_v1beta1_prediction_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateContentResponse_UsageMetadata); i { case 0: return &v.state @@ -2473,7 +2887,7 @@ func file_google_cloud_aiplatform_v1beta1_prediction_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_aiplatform_v1beta1_prediction_service_proto_rawDesc, NumEnums: 1, - NumMessages: 22, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, @@ -2514,11 +2928,18 @@ type PredictionServiceClient interface { // [DeployedModel][google.cloud.aiplatform.v1beta1.DeployedModel] that served // this prediction. RawPredict(ctx context.Context, in *RawPredictRequest, opts ...grpc.CallOption) (*httpbody.HttpBody, error) - // Perform an unary online prediction request for Vertex first-party products - // and frameworks. + // Perform an unary online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. DirectPredict(ctx context.Context, in *DirectPredictRequest, opts ...grpc.CallOption) (*DirectPredictResponse, error) - // Perform an online prediction request through gRPC. + // Perform an unary online prediction request to a gRPC model server for + // custom containers. DirectRawPredict(ctx context.Context, in *DirectRawPredictRequest, opts ...grpc.CallOption) (*DirectRawPredictResponse, error) + // Perform a streaming online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. + StreamDirectPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectPredictClient, error) + // Perform a streaming online prediction request to a gRPC model server for + // custom containers. + StreamDirectRawPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectRawPredictClient, error) // Perform a streaming online prediction request for Vertex first-party // products and frameworks. StreamingPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamingPredictClient, error) @@ -2541,6 +2962,8 @@ type PredictionServiceClient interface { Explain(ctx context.Context, in *ExplainRequest, opts ...grpc.CallOption) (*ExplainResponse, error) // Perform a token counting. CountTokens(ctx context.Context, in *CountTokensRequest, opts ...grpc.CallOption) (*CountTokensResponse, error) + // Generate content with multimodal inputs. + GenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (*GenerateContentResponse, error) // Generate content with multimodal inputs with streaming support. StreamGenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (PredictionService_StreamGenerateContentClient, error) } @@ -2589,8 +3012,70 @@ func (c *predictionServiceClient) DirectRawPredict(ctx context.Context, in *Dire return out, nil } +func (c *predictionServiceClient) StreamDirectPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectPredictClient, error) { + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[0], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamDirectPredict", opts...) + if err != nil { + return nil, err + } + x := &predictionServiceStreamDirectPredictClient{stream} + return x, nil +} + +type PredictionService_StreamDirectPredictClient interface { + Send(*StreamDirectPredictRequest) error + Recv() (*StreamDirectPredictResponse, error) + grpc.ClientStream +} + +type predictionServiceStreamDirectPredictClient struct { + grpc.ClientStream +} + +func (x *predictionServiceStreamDirectPredictClient) Send(m *StreamDirectPredictRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectPredictClient) Recv() (*StreamDirectPredictResponse, error) { + m := new(StreamDirectPredictResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *predictionServiceClient) StreamDirectRawPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamDirectRawPredictClient, error) { + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[1], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamDirectRawPredict", opts...) + if err != nil { + return nil, err + } + x := &predictionServiceStreamDirectRawPredictClient{stream} + return x, nil +} + +type PredictionService_StreamDirectRawPredictClient interface { + Send(*StreamDirectRawPredictRequest) error + Recv() (*StreamDirectRawPredictResponse, error) + grpc.ClientStream +} + +type predictionServiceStreamDirectRawPredictClient struct { + grpc.ClientStream +} + +func (x *predictionServiceStreamDirectRawPredictClient) Send(m *StreamDirectRawPredictRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectRawPredictClient) Recv() (*StreamDirectRawPredictResponse, error) { + m := new(StreamDirectRawPredictResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *predictionServiceClient) StreamingPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamingPredictClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[0], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamingPredict", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[2], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamingPredict", opts...) if err != nil { return nil, err } @@ -2621,7 +3106,7 @@ func (x *predictionServiceStreamingPredictClient) Recv() (*StreamingPredictRespo } func (c *predictionServiceClient) ServerStreamingPredict(ctx context.Context, in *StreamingPredictRequest, opts ...grpc.CallOption) (PredictionService_ServerStreamingPredictClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[1], "/google.cloud.aiplatform.v1beta1.PredictionService/ServerStreamingPredict", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[3], "/google.cloud.aiplatform.v1beta1.PredictionService/ServerStreamingPredict", opts...) if err != nil { return nil, err } @@ -2653,7 +3138,7 @@ func (x *predictionServiceServerStreamingPredictClient) Recv() (*StreamingPredic } func (c *predictionServiceClient) StreamingRawPredict(ctx context.Context, opts ...grpc.CallOption) (PredictionService_StreamingRawPredictClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[2], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamingRawPredict", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[4], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamingRawPredict", opts...) if err != nil { return nil, err } @@ -2701,8 +3186,17 @@ func (c *predictionServiceClient) CountTokens(ctx context.Context, in *CountToke return out, nil } +func (c *predictionServiceClient) GenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (*GenerateContentResponse, error) { + out := new(GenerateContentResponse) + err := c.cc.Invoke(ctx, "/google.cloud.aiplatform.v1beta1.PredictionService/GenerateContent", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *predictionServiceClient) StreamGenerateContent(ctx context.Context, in *GenerateContentRequest, opts ...grpc.CallOption) (PredictionService_StreamGenerateContentClient, error) { - stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[3], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamGenerateContent", opts...) + stream, err := c.cc.NewStream(ctx, &_PredictionService_serviceDesc.Streams[5], "/google.cloud.aiplatform.v1beta1.PredictionService/StreamGenerateContent", opts...) if err != nil { return nil, err } @@ -2749,11 +3243,18 @@ type PredictionServiceServer interface { // [DeployedModel][google.cloud.aiplatform.v1beta1.DeployedModel] that served // this prediction. RawPredict(context.Context, *RawPredictRequest) (*httpbody.HttpBody, error) - // Perform an unary online prediction request for Vertex first-party products - // and frameworks. + // Perform an unary online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. DirectPredict(context.Context, *DirectPredictRequest) (*DirectPredictResponse, error) - // Perform an online prediction request through gRPC. + // Perform an unary online prediction request to a gRPC model server for + // custom containers. DirectRawPredict(context.Context, *DirectRawPredictRequest) (*DirectRawPredictResponse, error) + // Perform a streaming online prediction request to a gRPC model server for + // Vertex first-party products and frameworks. + StreamDirectPredict(PredictionService_StreamDirectPredictServer) error + // Perform a streaming online prediction request to a gRPC model server for + // custom containers. + StreamDirectRawPredict(PredictionService_StreamDirectRawPredictServer) error // Perform a streaming online prediction request for Vertex first-party // products and frameworks. StreamingPredict(PredictionService_StreamingPredictServer) error @@ -2776,6 +3277,8 @@ type PredictionServiceServer interface { Explain(context.Context, *ExplainRequest) (*ExplainResponse, error) // Perform a token counting. CountTokens(context.Context, *CountTokensRequest) (*CountTokensResponse, error) + // Generate content with multimodal inputs. + GenerateContent(context.Context, *GenerateContentRequest) (*GenerateContentResponse, error) // Generate content with multimodal inputs with streaming support. StreamGenerateContent(*GenerateContentRequest, PredictionService_StreamGenerateContentServer) error } @@ -2796,6 +3299,12 @@ func (*UnimplementedPredictionServiceServer) DirectPredict(context.Context, *Dir func (*UnimplementedPredictionServiceServer) DirectRawPredict(context.Context, *DirectRawPredictRequest) (*DirectRawPredictResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DirectRawPredict not implemented") } +func (*UnimplementedPredictionServiceServer) StreamDirectPredict(PredictionService_StreamDirectPredictServer) error { + return status.Errorf(codes.Unimplemented, "method StreamDirectPredict not implemented") +} +func (*UnimplementedPredictionServiceServer) StreamDirectRawPredict(PredictionService_StreamDirectRawPredictServer) error { + return status.Errorf(codes.Unimplemented, "method StreamDirectRawPredict not implemented") +} func (*UnimplementedPredictionServiceServer) StreamingPredict(PredictionService_StreamingPredictServer) error { return status.Errorf(codes.Unimplemented, "method StreamingPredict not implemented") } @@ -2811,6 +3320,9 @@ func (*UnimplementedPredictionServiceServer) Explain(context.Context, *ExplainRe func (*UnimplementedPredictionServiceServer) CountTokens(context.Context, *CountTokensRequest) (*CountTokensResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CountTokens not implemented") } +func (*UnimplementedPredictionServiceServer) GenerateContent(context.Context, *GenerateContentRequest) (*GenerateContentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateContent not implemented") +} func (*UnimplementedPredictionServiceServer) StreamGenerateContent(*GenerateContentRequest, PredictionService_StreamGenerateContentServer) error { return status.Errorf(codes.Unimplemented, "method StreamGenerateContent not implemented") } @@ -2891,6 +3403,58 @@ func _PredictionService_DirectRawPredict_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _PredictionService_StreamDirectPredict_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(PredictionServiceServer).StreamDirectPredict(&predictionServiceStreamDirectPredictServer{stream}) +} + +type PredictionService_StreamDirectPredictServer interface { + Send(*StreamDirectPredictResponse) error + Recv() (*StreamDirectPredictRequest, error) + grpc.ServerStream +} + +type predictionServiceStreamDirectPredictServer struct { + grpc.ServerStream +} + +func (x *predictionServiceStreamDirectPredictServer) Send(m *StreamDirectPredictResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectPredictServer) Recv() (*StreamDirectPredictRequest, error) { + m := new(StreamDirectPredictRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _PredictionService_StreamDirectRawPredict_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(PredictionServiceServer).StreamDirectRawPredict(&predictionServiceStreamDirectRawPredictServer{stream}) +} + +type PredictionService_StreamDirectRawPredictServer interface { + Send(*StreamDirectRawPredictResponse) error + Recv() (*StreamDirectRawPredictRequest, error) + grpc.ServerStream +} + +type predictionServiceStreamDirectRawPredictServer struct { + grpc.ServerStream +} + +func (x *predictionServiceStreamDirectRawPredictServer) Send(m *StreamDirectRawPredictResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *predictionServiceStreamDirectRawPredictServer) Recv() (*StreamDirectRawPredictRequest, error) { + m := new(StreamDirectRawPredictRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func _PredictionService_StreamingPredict_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(PredictionServiceServer).StreamingPredict(&predictionServiceStreamingPredictServer{stream}) } @@ -3000,6 +3564,24 @@ func _PredictionService_CountTokens_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _PredictionService_GenerateContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateContentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PredictionServiceServer).GenerateContent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.aiplatform.v1beta1.PredictionService/GenerateContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PredictionServiceServer).GenerateContent(ctx, req.(*GenerateContentRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _PredictionService_StreamGenerateContent_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(GenerateContentRequest) if err := stream.RecvMsg(m); err != nil { @@ -3049,8 +3631,24 @@ var _PredictionService_serviceDesc = grpc.ServiceDesc{ MethodName: "CountTokens", Handler: _PredictionService_CountTokens_Handler, }, + { + MethodName: "GenerateContent", + Handler: _PredictionService_GenerateContent_Handler, + }, }, Streams: []grpc.StreamDesc{ + { + StreamName: "StreamDirectPredict", + Handler: _PredictionService_StreamDirectPredict_Handler, + ServerStreams: true, + ClientStreams: true, + }, + { + StreamName: "StreamDirectRawPredict", + Handler: _PredictionService_StreamDirectRawPredict_Handler, + ServerStreams: true, + ClientStreams: true, + }, { StreamName: "StreamingPredict", Handler: _PredictionService_StreamingPredict_Handler, diff --git a/aiplatform/apiv1beta1/gapic_metadata.json b/aiplatform/apiv1beta1/gapic_metadata.json index 4e555498d1f7..588398fce1df 100644 --- a/aiplatform/apiv1beta1/gapic_metadata.json +++ b/aiplatform/apiv1beta1/gapic_metadata.json @@ -4246,6 +4246,11 @@ "Explain" ] }, + "GenerateContent": { + "methods": [ + "GenerateContent" + ] + }, "GetIamPolicy": { "methods": [ "GetIamPolicy" @@ -4291,6 +4296,16 @@ "SetIamPolicy" ] }, + "StreamDirectPredict": { + "methods": [ + "StreamDirectPredict" + ] + }, + "StreamDirectRawPredict": { + "methods": [ + "StreamDirectRawPredict" + ] + }, "StreamGenerateContent": { "methods": [ "StreamGenerateContent" @@ -4351,6 +4366,11 @@ "Explain" ] }, + "GenerateContent": { + "methods": [ + "GenerateContent" + ] + }, "GetIamPolicy": { "methods": [ "GetIamPolicy" @@ -4396,6 +4416,16 @@ "SetIamPolicy" ] }, + "StreamDirectPredict": { + "methods": [ + "StreamDirectPredict" + ] + }, + "StreamDirectRawPredict": { + "methods": [ + "StreamDirectRawPredict" + ] + }, "StreamGenerateContent": { "methods": [ "StreamGenerateContent" diff --git a/aiplatform/apiv1beta1/prediction_client.go b/aiplatform/apiv1beta1/prediction_client.go index 6cfc851f6af2..15d89ed7d73c 100755 --- a/aiplatform/apiv1beta1/prediction_client.go +++ b/aiplatform/apiv1beta1/prediction_client.go @@ -52,11 +52,14 @@ type PredictionCallOptions struct { RawPredict []gax.CallOption DirectPredict []gax.CallOption DirectRawPredict []gax.CallOption + StreamDirectPredict []gax.CallOption + StreamDirectRawPredict []gax.CallOption StreamingPredict []gax.CallOption ServerStreamingPredict []gax.CallOption StreamingRawPredict []gax.CallOption Explain []gax.CallOption CountTokens []gax.CallOption + GenerateContent []gax.CallOption StreamGenerateContent []gax.CallOption GetLocation []gax.CallOption ListLocations []gax.CallOption @@ -92,6 +95,8 @@ func defaultPredictionCallOptions() *PredictionCallOptions { RawPredict: []gax.CallOption{}, DirectPredict: []gax.CallOption{}, DirectRawPredict: []gax.CallOption{}, + StreamDirectPredict: []gax.CallOption{}, + StreamDirectRawPredict: []gax.CallOption{}, StreamingPredict: []gax.CallOption{}, ServerStreamingPredict: []gax.CallOption{}, StreamingRawPredict: []gax.CallOption{}, @@ -99,6 +104,7 @@ func defaultPredictionCallOptions() *PredictionCallOptions { gax.WithTimeout(5000 * time.Millisecond), }, CountTokens: []gax.CallOption{}, + GenerateContent: []gax.CallOption{}, StreamGenerateContent: []gax.CallOption{}, GetLocation: []gax.CallOption{}, ListLocations: []gax.CallOption{}, @@ -121,6 +127,8 @@ func defaultPredictionRESTCallOptions() *PredictionCallOptions { RawPredict: []gax.CallOption{}, DirectPredict: []gax.CallOption{}, DirectRawPredict: []gax.CallOption{}, + StreamDirectPredict: []gax.CallOption{}, + StreamDirectRawPredict: []gax.CallOption{}, StreamingPredict: []gax.CallOption{}, ServerStreamingPredict: []gax.CallOption{}, StreamingRawPredict: []gax.CallOption{}, @@ -128,6 +136,7 @@ func defaultPredictionRESTCallOptions() *PredictionCallOptions { gax.WithTimeout(5000 * time.Millisecond), }, CountTokens: []gax.CallOption{}, + GenerateContent: []gax.CallOption{}, StreamGenerateContent: []gax.CallOption{}, GetLocation: []gax.CallOption{}, ListLocations: []gax.CallOption{}, @@ -151,11 +160,14 @@ type internalPredictionClient interface { RawPredict(context.Context, *aiplatformpb.RawPredictRequest, ...gax.CallOption) (*httpbodypb.HttpBody, error) DirectPredict(context.Context, *aiplatformpb.DirectPredictRequest, ...gax.CallOption) (*aiplatformpb.DirectPredictResponse, error) DirectRawPredict(context.Context, *aiplatformpb.DirectRawPredictRequest, ...gax.CallOption) (*aiplatformpb.DirectRawPredictResponse, error) + StreamDirectPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectPredictClient, error) + StreamDirectRawPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectRawPredictClient, error) StreamingPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamingPredictClient, error) ServerStreamingPredict(context.Context, *aiplatformpb.StreamingPredictRequest, ...gax.CallOption) (aiplatformpb.PredictionService_ServerStreamingPredictClient, error) StreamingRawPredict(context.Context, ...gax.CallOption) (aiplatformpb.PredictionService_StreamingRawPredictClient, error) Explain(context.Context, *aiplatformpb.ExplainRequest, ...gax.CallOption) (*aiplatformpb.ExplainResponse, error) CountTokens(context.Context, *aiplatformpb.CountTokensRequest, ...gax.CallOption) (*aiplatformpb.CountTokensResponse, error) + GenerateContent(context.Context, *aiplatformpb.GenerateContentRequest, ...gax.CallOption) (*aiplatformpb.GenerateContentResponse, error) StreamGenerateContent(context.Context, *aiplatformpb.GenerateContentRequest, ...gax.CallOption) (aiplatformpb.PredictionService_StreamGenerateContentClient, error) GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator @@ -224,17 +236,34 @@ func (c *PredictionClient) RawPredict(ctx context.Context, req *aiplatformpb.Raw return c.internalClient.RawPredict(ctx, req, opts...) } -// DirectPredict perform an unary online prediction request for Vertex first-party products -// and frameworks. +// DirectPredict perform an unary online prediction request to a gRPC model server for +// Vertex first-party products and frameworks. func (c *PredictionClient) DirectPredict(ctx context.Context, req *aiplatformpb.DirectPredictRequest, opts ...gax.CallOption) (*aiplatformpb.DirectPredictResponse, error) { return c.internalClient.DirectPredict(ctx, req, opts...) } -// DirectRawPredict perform an online prediction request through gRPC. +// DirectRawPredict perform an unary online prediction request to a gRPC model server for +// custom containers. func (c *PredictionClient) DirectRawPredict(ctx context.Context, req *aiplatformpb.DirectRawPredictRequest, opts ...gax.CallOption) (*aiplatformpb.DirectRawPredictResponse, error) { return c.internalClient.DirectRawPredict(ctx, req, opts...) } +// StreamDirectPredict perform a streaming online prediction request to a gRPC model server for +// Vertex first-party products and frameworks. +// +// This method is not supported for the REST transport. +func (c *PredictionClient) StreamDirectPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectPredictClient, error) { + return c.internalClient.StreamDirectPredict(ctx, opts...) +} + +// StreamDirectRawPredict perform a streaming online prediction request to a gRPC model server for +// custom containers. +// +// This method is not supported for the REST transport. +func (c *PredictionClient) StreamDirectRawPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectRawPredictClient, error) { + return c.internalClient.StreamDirectRawPredict(ctx, opts...) +} + // StreamingPredict perform a streaming online prediction request for Vertex first-party // products and frameworks. // @@ -276,6 +305,11 @@ func (c *PredictionClient) CountTokens(ctx context.Context, req *aiplatformpb.Co return c.internalClient.CountTokens(ctx, req, opts...) } +// GenerateContent generate content with multimodal inputs. +func (c *PredictionClient) GenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (*aiplatformpb.GenerateContentResponse, error) { + return c.internalClient.GenerateContent(ctx, req, opts...) +} + // StreamGenerateContent generate content with multimodal inputs with streaming support. func (c *PredictionClient) StreamGenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamGenerateContentClient, error) { return c.internalClient.StreamGenerateContent(ctx, req, opts...) @@ -565,6 +599,36 @@ func (c *predictionGRPCClient) DirectRawPredict(ctx context.Context, req *aiplat return resp, nil } +func (c *predictionGRPCClient) StreamDirectPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectPredictClient, error) { + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) + var resp aiplatformpb.PredictionService_StreamDirectPredictClient + opts = append((*c.CallOptions).StreamDirectPredict[0:len((*c.CallOptions).StreamDirectPredict):len((*c.CallOptions).StreamDirectPredict)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.predictionClient.StreamDirectPredict(ctx, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *predictionGRPCClient) StreamDirectRawPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectRawPredictClient, error) { + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) + var resp aiplatformpb.PredictionService_StreamDirectRawPredictClient + opts = append((*c.CallOptions).StreamDirectRawPredict[0:len((*c.CallOptions).StreamDirectRawPredict):len((*c.CallOptions).StreamDirectRawPredict)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.predictionClient.StreamDirectRawPredict(ctx, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *predictionGRPCClient) StreamingPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamingPredictClient, error) { ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) var resp aiplatformpb.PredictionService_StreamingPredictClient @@ -649,6 +713,24 @@ func (c *predictionGRPCClient) CountTokens(ctx context.Context, req *aiplatformp return resp, nil } +func (c *predictionGRPCClient) GenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (*aiplatformpb.GenerateContentResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "model", url.QueryEscape(req.GetModel()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GenerateContent[0:len((*c.CallOptions).GenerateContent):len((*c.CallOptions).GenerateContent)], opts...) + var resp *aiplatformpb.GenerateContentResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.predictionClient.GenerateContent(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *predictionGRPCClient) StreamGenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamGenerateContentClient, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "model", url.QueryEscape(req.GetModel()))} @@ -1027,8 +1109,8 @@ func (c *predictionRESTClient) RawPredict(ctx context.Context, req *aiplatformpb return resp, nil } -// DirectPredict perform an unary online prediction request for Vertex first-party products -// and frameworks. +// DirectPredict perform an unary online prediction request to a gRPC model server for +// Vertex first-party products and frameworks. func (c *predictionRESTClient) DirectPredict(ctx context.Context, req *aiplatformpb.DirectPredictRequest, opts ...gax.CallOption) (*aiplatformpb.DirectPredictResponse, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} jsonReq, err := m.Marshal(req) @@ -1089,7 +1171,8 @@ func (c *predictionRESTClient) DirectPredict(ctx context.Context, req *aiplatfor return resp, nil } -// DirectRawPredict perform an online prediction request through gRPC. +// DirectRawPredict perform an unary online prediction request to a gRPC model server for +// custom containers. func (c *predictionRESTClient) DirectRawPredict(ctx context.Context, req *aiplatformpb.DirectRawPredictRequest, opts ...gax.CallOption) (*aiplatformpb.DirectRawPredictResponse, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} jsonReq, err := m.Marshal(req) @@ -1150,6 +1233,22 @@ func (c *predictionRESTClient) DirectRawPredict(ctx context.Context, req *aiplat return resp, nil } +// StreamDirectPredict perform a streaming online prediction request to a gRPC model server for +// Vertex first-party products and frameworks. +// +// This method is not supported for the REST transport. +func (c *predictionRESTClient) StreamDirectPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectPredictClient, error) { + return nil, fmt.Errorf("StreamDirectPredict not yet supported for REST clients") +} + +// StreamDirectRawPredict perform a streaming online prediction request to a gRPC model server for +// custom containers. +// +// This method is not supported for the REST transport. +func (c *predictionRESTClient) StreamDirectRawPredict(ctx context.Context, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamDirectRawPredictClient, error) { + return nil, fmt.Errorf("StreamDirectRawPredict not yet supported for REST clients") +} + // StreamingPredict perform a streaming online prediction request for Vertex first-party // products and frameworks. // @@ -1399,6 +1498,67 @@ func (c *predictionRESTClient) CountTokens(ctx context.Context, req *aiplatformp return resp, nil } +// GenerateContent generate content with multimodal inputs. +func (c *predictionRESTClient) GenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (*aiplatformpb.GenerateContentResponse, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta1/%v:generateContent", req.GetModel()) + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "model", url.QueryEscape(req.GetModel()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GenerateContent[0:len((*c.CallOptions).GenerateContent):len((*c.CallOptions).GenerateContent)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &aiplatformpb.GenerateContentResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + // StreamGenerateContent generate content with multimodal inputs with streaming support. func (c *predictionRESTClient) StreamGenerateContent(ctx context.Context, req *aiplatformpb.GenerateContentRequest, opts ...gax.CallOption) (aiplatformpb.PredictionService_StreamGenerateContentClient, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} diff --git a/aiplatform/apiv1beta1/prediction_client_example_test.go b/aiplatform/apiv1beta1/prediction_client_example_test.go index 6863fc6820f0..6fe767277eae 100644 --- a/aiplatform/apiv1beta1/prediction_client_example_test.go +++ b/aiplatform/apiv1beta1/prediction_client_example_test.go @@ -162,6 +162,31 @@ func ExamplePredictionClient_Explain() { _ = resp } +func ExamplePredictionClient_GenerateContent() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &aiplatformpb.GenerateContentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb#GenerateContentRequest. + } + resp, err := c.GenerateContent(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExamplePredictionClient_Predict() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -212,6 +237,86 @@ func ExamplePredictionClient_RawPredict() { _ = resp } +func ExamplePredictionClient_StreamDirectPredict() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExamplePredictionClient_StreamDirectRawPredict() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectRawPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectRawPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + func ExamplePredictionClient_StreamingPredict() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/apps/meet/apiv2/auxiliary.go b/apps/meet/apiv2/auxiliary.go new file mode 100755 index 000000000000..a2a0b2874a23 --- /dev/null +++ b/apps/meet/apiv2/auxiliary.go @@ -0,0 +1,304 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package meet + +import ( + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +// ConferenceRecordIterator manages a stream of *meetpb.ConferenceRecord. +type ConferenceRecordIterator struct { + items []*meetpb.ConferenceRecord + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*meetpb.ConferenceRecord, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *ConferenceRecordIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *ConferenceRecordIterator) Next() (*meetpb.ConferenceRecord, error) { + var item *meetpb.ConferenceRecord + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *ConferenceRecordIterator) bufLen() int { + return len(it.items) +} + +func (it *ConferenceRecordIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// ParticipantIterator manages a stream of *meetpb.Participant. +type ParticipantIterator struct { + items []*meetpb.Participant + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*meetpb.Participant, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *ParticipantIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *ParticipantIterator) Next() (*meetpb.Participant, error) { + var item *meetpb.Participant + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *ParticipantIterator) bufLen() int { + return len(it.items) +} + +func (it *ParticipantIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// ParticipantSessionIterator manages a stream of *meetpb.ParticipantSession. +type ParticipantSessionIterator struct { + items []*meetpb.ParticipantSession + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*meetpb.ParticipantSession, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *ParticipantSessionIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *ParticipantSessionIterator) Next() (*meetpb.ParticipantSession, error) { + var item *meetpb.ParticipantSession + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *ParticipantSessionIterator) bufLen() int { + return len(it.items) +} + +func (it *ParticipantSessionIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// RecordingIterator manages a stream of *meetpb.Recording. +type RecordingIterator struct { + items []*meetpb.Recording + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*meetpb.Recording, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *RecordingIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *RecordingIterator) Next() (*meetpb.Recording, error) { + var item *meetpb.Recording + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *RecordingIterator) bufLen() int { + return len(it.items) +} + +func (it *RecordingIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// TranscriptEntryIterator manages a stream of *meetpb.TranscriptEntry. +type TranscriptEntryIterator struct { + items []*meetpb.TranscriptEntry + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*meetpb.TranscriptEntry, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *TranscriptEntryIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *TranscriptEntryIterator) Next() (*meetpb.TranscriptEntry, error) { + var item *meetpb.TranscriptEntry + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *TranscriptEntryIterator) bufLen() int { + return len(it.items) +} + +func (it *TranscriptEntryIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// TranscriptIterator manages a stream of *meetpb.Transcript. +type TranscriptIterator struct { + items []*meetpb.Transcript + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*meetpb.Transcript, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *TranscriptIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *TranscriptIterator) Next() (*meetpb.Transcript, error) { + var item *meetpb.Transcript + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *TranscriptIterator) bufLen() int { + return len(it.items) +} + +func (it *TranscriptIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} diff --git a/apps/meet/apiv2/conference_records_client.go b/apps/meet/apiv2/conference_records_client.go new file mode 100755 index 000000000000..71953de94b74 --- /dev/null +++ b/apps/meet/apiv2/conference_records_client.go @@ -0,0 +1,1936 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package meet + +import ( + "context" + "fmt" + "io" + "math" + "net/http" + "net/url" + "time" + + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/googleapi" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newConferenceRecordsClientHook clientHook + +// ConferenceRecordsCallOptions contains the retry settings for each method of ConferenceRecordsClient. +type ConferenceRecordsCallOptions struct { + GetConferenceRecord []gax.CallOption + ListConferenceRecords []gax.CallOption + GetParticipant []gax.CallOption + ListParticipants []gax.CallOption + GetParticipantSession []gax.CallOption + ListParticipantSessions []gax.CallOption + GetRecording []gax.CallOption + ListRecordings []gax.CallOption + GetTranscript []gax.CallOption + ListTranscripts []gax.CallOption + GetTranscriptEntry []gax.CallOption + ListTranscriptEntries []gax.CallOption +} + +func defaultConferenceRecordsGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("meet.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("meet.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("meet.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://meet.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultConferenceRecordsCallOptions() *ConferenceRecordsCallOptions { + return &ConferenceRecordsCallOptions{ + GetConferenceRecord: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListConferenceRecords: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetParticipant: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListParticipants: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetParticipantSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListParticipantSessions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetRecording: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListRecordings: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetTranscript: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListTranscripts: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetTranscriptEntry: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListTranscriptEntries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + } +} + +func defaultConferenceRecordsRESTCallOptions() *ConferenceRecordsCallOptions { + return &ConferenceRecordsCallOptions{ + GetConferenceRecord: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListConferenceRecords: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetParticipant: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListParticipants: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetParticipantSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListParticipantSessions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetRecording: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListRecordings: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetTranscript: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListTranscripts: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetTranscriptEntry: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListTranscriptEntries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + } +} + +// internalConferenceRecordsClient is an interface that defines the methods available from Google Meet API. +type internalConferenceRecordsClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + GetConferenceRecord(context.Context, *meetpb.GetConferenceRecordRequest, ...gax.CallOption) (*meetpb.ConferenceRecord, error) + ListConferenceRecords(context.Context, *meetpb.ListConferenceRecordsRequest, ...gax.CallOption) *ConferenceRecordIterator + GetParticipant(context.Context, *meetpb.GetParticipantRequest, ...gax.CallOption) (*meetpb.Participant, error) + ListParticipants(context.Context, *meetpb.ListParticipantsRequest, ...gax.CallOption) *ParticipantIterator + GetParticipantSession(context.Context, *meetpb.GetParticipantSessionRequest, ...gax.CallOption) (*meetpb.ParticipantSession, error) + ListParticipantSessions(context.Context, *meetpb.ListParticipantSessionsRequest, ...gax.CallOption) *ParticipantSessionIterator + GetRecording(context.Context, *meetpb.GetRecordingRequest, ...gax.CallOption) (*meetpb.Recording, error) + ListRecordings(context.Context, *meetpb.ListRecordingsRequest, ...gax.CallOption) *RecordingIterator + GetTranscript(context.Context, *meetpb.GetTranscriptRequest, ...gax.CallOption) (*meetpb.Transcript, error) + ListTranscripts(context.Context, *meetpb.ListTranscriptsRequest, ...gax.CallOption) *TranscriptIterator + GetTranscriptEntry(context.Context, *meetpb.GetTranscriptEntryRequest, ...gax.CallOption) (*meetpb.TranscriptEntry, error) + ListTranscriptEntries(context.Context, *meetpb.ListTranscriptEntriesRequest, ...gax.CallOption) *TranscriptEntryIterator +} + +// ConferenceRecordsClient is a client for interacting with Google Meet API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// REST API for services dealing with conference records. +type ConferenceRecordsClient struct { + // The internal transport-dependent client. + internalClient internalConferenceRecordsClient + + // The call options for this service. + CallOptions *ConferenceRecordsCallOptions +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *ConferenceRecordsClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *ConferenceRecordsClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *ConferenceRecordsClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// GetConferenceRecord gets a conference record by conference ID. +func (c *ConferenceRecordsClient) GetConferenceRecord(ctx context.Context, req *meetpb.GetConferenceRecordRequest, opts ...gax.CallOption) (*meetpb.ConferenceRecord, error) { + return c.internalClient.GetConferenceRecord(ctx, req, opts...) +} + +// ListConferenceRecords lists the conference records. By default, ordered by start time and in +// descending order. +func (c *ConferenceRecordsClient) ListConferenceRecords(ctx context.Context, req *meetpb.ListConferenceRecordsRequest, opts ...gax.CallOption) *ConferenceRecordIterator { + return c.internalClient.ListConferenceRecords(ctx, req, opts...) +} + +// GetParticipant gets a participant by participant ID. +func (c *ConferenceRecordsClient) GetParticipant(ctx context.Context, req *meetpb.GetParticipantRequest, opts ...gax.CallOption) (*meetpb.Participant, error) { + return c.internalClient.GetParticipant(ctx, req, opts...) +} + +// ListParticipants lists the participants in a conference record. By default, ordered by join +// time and in descending order. This API supports fields as standard +// parameters like every other API. However, when the fields request +// parameter is omitted, this API defaults to 'participants/*, next_page_token'. +func (c *ConferenceRecordsClient) ListParticipants(ctx context.Context, req *meetpb.ListParticipantsRequest, opts ...gax.CallOption) *ParticipantIterator { + return c.internalClient.ListParticipants(ctx, req, opts...) +} + +// GetParticipantSession gets a participant session by participant session ID. +func (c *ConferenceRecordsClient) GetParticipantSession(ctx context.Context, req *meetpb.GetParticipantSessionRequest, opts ...gax.CallOption) (*meetpb.ParticipantSession, error) { + return c.internalClient.GetParticipantSession(ctx, req, opts...) +} + +// ListParticipantSessions lists the participant sessions of a participant in a conference record. By +// default, ordered by join time and in descending order. This API supports +// fields as standard parameters like every other API. However, when the +// fields request parameter is omitted this API defaults to +// 'participantsessions/*, next_page_token'. +func (c *ConferenceRecordsClient) ListParticipantSessions(ctx context.Context, req *meetpb.ListParticipantSessionsRequest, opts ...gax.CallOption) *ParticipantSessionIterator { + return c.internalClient.ListParticipantSessions(ctx, req, opts...) +} + +// GetRecording gets a recording by recording ID. +func (c *ConferenceRecordsClient) GetRecording(ctx context.Context, req *meetpb.GetRecordingRequest, opts ...gax.CallOption) (*meetpb.Recording, error) { + return c.internalClient.GetRecording(ctx, req, opts...) +} + +// ListRecordings lists the recording resources from the conference record. By default, +// ordered by start time and in ascending order. +func (c *ConferenceRecordsClient) ListRecordings(ctx context.Context, req *meetpb.ListRecordingsRequest, opts ...gax.CallOption) *RecordingIterator { + return c.internalClient.ListRecordings(ctx, req, opts...) +} + +// GetTranscript gets a transcript by transcript ID. +func (c *ConferenceRecordsClient) GetTranscript(ctx context.Context, req *meetpb.GetTranscriptRequest, opts ...gax.CallOption) (*meetpb.Transcript, error) { + return c.internalClient.GetTranscript(ctx, req, opts...) +} + +// ListTranscripts lists the set of transcripts from the conference record. By default, +// ordered by start time and in ascending order. +func (c *ConferenceRecordsClient) ListTranscripts(ctx context.Context, req *meetpb.ListTranscriptsRequest, opts ...gax.CallOption) *TranscriptIterator { + return c.internalClient.ListTranscripts(ctx, req, opts...) +} + +// GetTranscriptEntry gets a TranscriptEntry resource by entry ID. +// +// Note: The transcript entries returned by the Google Meet API might not +// match the transcription found in the Google Docs transcript file. This can +// occur when the Google Docs transcript file is modified after generation. +func (c *ConferenceRecordsClient) GetTranscriptEntry(ctx context.Context, req *meetpb.GetTranscriptEntryRequest, opts ...gax.CallOption) (*meetpb.TranscriptEntry, error) { + return c.internalClient.GetTranscriptEntry(ctx, req, opts...) +} + +// ListTranscriptEntries lists the structured transcript entries per transcript. By default, ordered +// by start time and in ascending order. +// +// Note: The transcript entries returned by the Google Meet API might not +// match the transcription found in the Google Docs transcript file. This can +// occur when the Google Docs transcript file is modified after generation. +func (c *ConferenceRecordsClient) ListTranscriptEntries(ctx context.Context, req *meetpb.ListTranscriptEntriesRequest, opts ...gax.CallOption) *TranscriptEntryIterator { + return c.internalClient.ListTranscriptEntries(ctx, req, opts...) +} + +// conferenceRecordsGRPCClient is a client for interacting with Google Meet API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type conferenceRecordsGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing ConferenceRecordsClient + CallOptions **ConferenceRecordsCallOptions + + // The gRPC API client. + conferenceRecordsClient meetpb.ConferenceRecordsServiceClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string +} + +// NewConferenceRecordsClient creates a new conference records service client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// REST API for services dealing with conference records. +func NewConferenceRecordsClient(ctx context.Context, opts ...option.ClientOption) (*ConferenceRecordsClient, error) { + clientOpts := defaultConferenceRecordsGRPCClientOptions() + if newConferenceRecordsClientHook != nil { + hookOpts, err := newConferenceRecordsClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := ConferenceRecordsClient{CallOptions: defaultConferenceRecordsCallOptions()} + + c := &conferenceRecordsGRPCClient{ + connPool: connPool, + conferenceRecordsClient: meetpb.NewConferenceRecordsServiceClient(connPool), + CallOptions: &client.CallOptions, + } + c.setGoogleClientInfo() + + client.internalClient = c + + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *conferenceRecordsGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *conferenceRecordsGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) + c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *conferenceRecordsGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type conferenceRecordsRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing ConferenceRecordsClient + CallOptions **ConferenceRecordsCallOptions +} + +// NewConferenceRecordsRESTClient creates a new conference records service rest client. +// +// REST API for services dealing with conference records. +func NewConferenceRecordsRESTClient(ctx context.Context, opts ...option.ClientOption) (*ConferenceRecordsClient, error) { + clientOpts := append(defaultConferenceRecordsRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultConferenceRecordsRESTCallOptions() + c := &conferenceRecordsRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + } + c.setGoogleClientInfo() + + return &ConferenceRecordsClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultConferenceRecordsRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://meet.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://meet.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://meet.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://meet.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *conferenceRecordsRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") + c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *conferenceRecordsRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *conferenceRecordsRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *conferenceRecordsGRPCClient) GetConferenceRecord(ctx context.Context, req *meetpb.GetConferenceRecordRequest, opts ...gax.CallOption) (*meetpb.ConferenceRecord, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetConferenceRecord[0:len((*c.CallOptions).GetConferenceRecord):len((*c.CallOptions).GetConferenceRecord)], opts...) + var resp *meetpb.ConferenceRecord + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.GetConferenceRecord(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *conferenceRecordsGRPCClient) ListConferenceRecords(ctx context.Context, req *meetpb.ListConferenceRecordsRequest, opts ...gax.CallOption) *ConferenceRecordIterator { + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) + opts = append((*c.CallOptions).ListConferenceRecords[0:len((*c.CallOptions).ListConferenceRecords):len((*c.CallOptions).ListConferenceRecords)], opts...) + it := &ConferenceRecordIterator{} + req = proto.Clone(req).(*meetpb.ListConferenceRecordsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.ConferenceRecord, string, error) { + resp := &meetpb.ListConferenceRecordsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.ListConferenceRecords(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetConferenceRecords(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *conferenceRecordsGRPCClient) GetParticipant(ctx context.Context, req *meetpb.GetParticipantRequest, opts ...gax.CallOption) (*meetpb.Participant, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetParticipant[0:len((*c.CallOptions).GetParticipant):len((*c.CallOptions).GetParticipant)], opts...) + var resp *meetpb.Participant + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.GetParticipant(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *conferenceRecordsGRPCClient) ListParticipants(ctx context.Context, req *meetpb.ListParticipantsRequest, opts ...gax.CallOption) *ParticipantIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListParticipants[0:len((*c.CallOptions).ListParticipants):len((*c.CallOptions).ListParticipants)], opts...) + it := &ParticipantIterator{} + req = proto.Clone(req).(*meetpb.ListParticipantsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.Participant, string, error) { + resp := &meetpb.ListParticipantsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.ListParticipants(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetParticipants(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *conferenceRecordsGRPCClient) GetParticipantSession(ctx context.Context, req *meetpb.GetParticipantSessionRequest, opts ...gax.CallOption) (*meetpb.ParticipantSession, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetParticipantSession[0:len((*c.CallOptions).GetParticipantSession):len((*c.CallOptions).GetParticipantSession)], opts...) + var resp *meetpb.ParticipantSession + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.GetParticipantSession(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *conferenceRecordsGRPCClient) ListParticipantSessions(ctx context.Context, req *meetpb.ListParticipantSessionsRequest, opts ...gax.CallOption) *ParticipantSessionIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListParticipantSessions[0:len((*c.CallOptions).ListParticipantSessions):len((*c.CallOptions).ListParticipantSessions)], opts...) + it := &ParticipantSessionIterator{} + req = proto.Clone(req).(*meetpb.ListParticipantSessionsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.ParticipantSession, string, error) { + resp := &meetpb.ListParticipantSessionsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.ListParticipantSessions(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetParticipantSessions(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *conferenceRecordsGRPCClient) GetRecording(ctx context.Context, req *meetpb.GetRecordingRequest, opts ...gax.CallOption) (*meetpb.Recording, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetRecording[0:len((*c.CallOptions).GetRecording):len((*c.CallOptions).GetRecording)], opts...) + var resp *meetpb.Recording + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.GetRecording(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *conferenceRecordsGRPCClient) ListRecordings(ctx context.Context, req *meetpb.ListRecordingsRequest, opts ...gax.CallOption) *RecordingIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListRecordings[0:len((*c.CallOptions).ListRecordings):len((*c.CallOptions).ListRecordings)], opts...) + it := &RecordingIterator{} + req = proto.Clone(req).(*meetpb.ListRecordingsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.Recording, string, error) { + resp := &meetpb.ListRecordingsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.ListRecordings(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetRecordings(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *conferenceRecordsGRPCClient) GetTranscript(ctx context.Context, req *meetpb.GetTranscriptRequest, opts ...gax.CallOption) (*meetpb.Transcript, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetTranscript[0:len((*c.CallOptions).GetTranscript):len((*c.CallOptions).GetTranscript)], opts...) + var resp *meetpb.Transcript + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.GetTranscript(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *conferenceRecordsGRPCClient) ListTranscripts(ctx context.Context, req *meetpb.ListTranscriptsRequest, opts ...gax.CallOption) *TranscriptIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListTranscripts[0:len((*c.CallOptions).ListTranscripts):len((*c.CallOptions).ListTranscripts)], opts...) + it := &TranscriptIterator{} + req = proto.Clone(req).(*meetpb.ListTranscriptsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.Transcript, string, error) { + resp := &meetpb.ListTranscriptsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.ListTranscripts(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetTranscripts(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *conferenceRecordsGRPCClient) GetTranscriptEntry(ctx context.Context, req *meetpb.GetTranscriptEntryRequest, opts ...gax.CallOption) (*meetpb.TranscriptEntry, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetTranscriptEntry[0:len((*c.CallOptions).GetTranscriptEntry):len((*c.CallOptions).GetTranscriptEntry)], opts...) + var resp *meetpb.TranscriptEntry + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.GetTranscriptEntry(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *conferenceRecordsGRPCClient) ListTranscriptEntries(ctx context.Context, req *meetpb.ListTranscriptEntriesRequest, opts ...gax.CallOption) *TranscriptEntryIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListTranscriptEntries[0:len((*c.CallOptions).ListTranscriptEntries):len((*c.CallOptions).ListTranscriptEntries)], opts...) + it := &TranscriptEntryIterator{} + req = proto.Clone(req).(*meetpb.ListTranscriptEntriesRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.TranscriptEntry, string, error) { + resp := &meetpb.ListTranscriptEntriesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.conferenceRecordsClient.ListTranscriptEntries(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetTranscriptEntries(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetConferenceRecord gets a conference record by conference ID. +func (c *conferenceRecordsRESTClient) GetConferenceRecord(ctx context.Context, req *meetpb.GetConferenceRecordRequest, opts ...gax.CallOption) (*meetpb.ConferenceRecord, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetConferenceRecord[0:len((*c.CallOptions).GetConferenceRecord):len((*c.CallOptions).GetConferenceRecord)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.ConferenceRecord{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListConferenceRecords lists the conference records. By default, ordered by start time and in +// descending order. +func (c *conferenceRecordsRESTClient) ListConferenceRecords(ctx context.Context, req *meetpb.ListConferenceRecordsRequest, opts ...gax.CallOption) *ConferenceRecordIterator { + it := &ConferenceRecordIterator{} + req = proto.Clone(req).(*meetpb.ListConferenceRecordsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.ConferenceRecord, string, error) { + resp := &meetpb.ListConferenceRecordsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v2/conferenceRecords") + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetConferenceRecords(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetParticipant gets a participant by participant ID. +func (c *conferenceRecordsRESTClient) GetParticipant(ctx context.Context, req *meetpb.GetParticipantRequest, opts ...gax.CallOption) (*meetpb.Participant, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetParticipant[0:len((*c.CallOptions).GetParticipant):len((*c.CallOptions).GetParticipant)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.Participant{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListParticipants lists the participants in a conference record. By default, ordered by join +// time and in descending order. This API supports fields as standard +// parameters like every other API. However, when the fields request +// parameter is omitted, this API defaults to 'participants/*, next_page_token'. +func (c *conferenceRecordsRESTClient) ListParticipants(ctx context.Context, req *meetpb.ListParticipantsRequest, opts ...gax.CallOption) *ParticipantIterator { + it := &ParticipantIterator{} + req = proto.Clone(req).(*meetpb.ListParticipantsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.Participant, string, error) { + resp := &meetpb.ListParticipantsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v2/%v/participants", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetParticipants(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetParticipantSession gets a participant session by participant session ID. +func (c *conferenceRecordsRESTClient) GetParticipantSession(ctx context.Context, req *meetpb.GetParticipantSessionRequest, opts ...gax.CallOption) (*meetpb.ParticipantSession, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetParticipantSession[0:len((*c.CallOptions).GetParticipantSession):len((*c.CallOptions).GetParticipantSession)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.ParticipantSession{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListParticipantSessions lists the participant sessions of a participant in a conference record. By +// default, ordered by join time and in descending order. This API supports +// fields as standard parameters like every other API. However, when the +// fields request parameter is omitted this API defaults to +// 'participantsessions/*, next_page_token'. +func (c *conferenceRecordsRESTClient) ListParticipantSessions(ctx context.Context, req *meetpb.ListParticipantSessionsRequest, opts ...gax.CallOption) *ParticipantSessionIterator { + it := &ParticipantSessionIterator{} + req = proto.Clone(req).(*meetpb.ListParticipantSessionsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.ParticipantSession, string, error) { + resp := &meetpb.ListParticipantSessionsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v2/%v/participantSessions", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetParticipantSessions(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetRecording gets a recording by recording ID. +func (c *conferenceRecordsRESTClient) GetRecording(ctx context.Context, req *meetpb.GetRecordingRequest, opts ...gax.CallOption) (*meetpb.Recording, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetRecording[0:len((*c.CallOptions).GetRecording):len((*c.CallOptions).GetRecording)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.Recording{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListRecordings lists the recording resources from the conference record. By default, +// ordered by start time and in ascending order. +func (c *conferenceRecordsRESTClient) ListRecordings(ctx context.Context, req *meetpb.ListRecordingsRequest, opts ...gax.CallOption) *RecordingIterator { + it := &RecordingIterator{} + req = proto.Clone(req).(*meetpb.ListRecordingsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.Recording, string, error) { + resp := &meetpb.ListRecordingsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v2/%v/recordings", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetRecordings(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetTranscript gets a transcript by transcript ID. +func (c *conferenceRecordsRESTClient) GetTranscript(ctx context.Context, req *meetpb.GetTranscriptRequest, opts ...gax.CallOption) (*meetpb.Transcript, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetTranscript[0:len((*c.CallOptions).GetTranscript):len((*c.CallOptions).GetTranscript)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.Transcript{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListTranscripts lists the set of transcripts from the conference record. By default, +// ordered by start time and in ascending order. +func (c *conferenceRecordsRESTClient) ListTranscripts(ctx context.Context, req *meetpb.ListTranscriptsRequest, opts ...gax.CallOption) *TranscriptIterator { + it := &TranscriptIterator{} + req = proto.Clone(req).(*meetpb.ListTranscriptsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.Transcript, string, error) { + resp := &meetpb.ListTranscriptsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v2/%v/transcripts", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetTranscripts(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetTranscriptEntry gets a TranscriptEntry resource by entry ID. +// +// Note: The transcript entries returned by the Google Meet API might not +// match the transcription found in the Google Docs transcript file. This can +// occur when the Google Docs transcript file is modified after generation. +func (c *conferenceRecordsRESTClient) GetTranscriptEntry(ctx context.Context, req *meetpb.GetTranscriptEntryRequest, opts ...gax.CallOption) (*meetpb.TranscriptEntry, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetTranscriptEntry[0:len((*c.CallOptions).GetTranscriptEntry):len((*c.CallOptions).GetTranscriptEntry)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.TranscriptEntry{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListTranscriptEntries lists the structured transcript entries per transcript. By default, ordered +// by start time and in ascending order. +// +// Note: The transcript entries returned by the Google Meet API might not +// match the transcription found in the Google Docs transcript file. This can +// occur when the Google Docs transcript file is modified after generation. +func (c *conferenceRecordsRESTClient) ListTranscriptEntries(ctx context.Context, req *meetpb.ListTranscriptEntriesRequest, opts ...gax.CallOption) *TranscriptEntryIterator { + it := &TranscriptEntryIterator{} + req = proto.Clone(req).(*meetpb.ListTranscriptEntriesRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*meetpb.TranscriptEntry, string, error) { + resp := &meetpb.ListTranscriptEntriesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v2/%v/entries", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetTranscriptEntries(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} diff --git a/apps/meet/apiv2/conference_records_client_example_test.go b/apps/meet/apiv2/conference_records_client_example_test.go new file mode 100644 index 000000000000..d892da4a4a65 --- /dev/null +++ b/apps/meet/apiv2/conference_records_client_example_test.go @@ -0,0 +1,395 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package meet_test + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +func ExampleNewConferenceRecordsClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewConferenceRecordsRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleConferenceRecordsClient_GetConferenceRecord() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetConferenceRecordRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetConferenceRecordRequest. + } + resp, err := c.GetConferenceRecord(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConferenceRecordsClient_GetParticipant() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetParticipantRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetParticipantRequest. + } + resp, err := c.GetParticipant(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConferenceRecordsClient_GetParticipantSession() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetParticipantSessionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetParticipantSessionRequest. + } + resp, err := c.GetParticipantSession(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConferenceRecordsClient_GetRecording() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetRecordingRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetRecordingRequest. + } + resp, err := c.GetRecording(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConferenceRecordsClient_GetTranscript() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetTranscriptRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetTranscriptRequest. + } + resp, err := c.GetTranscript(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConferenceRecordsClient_GetTranscriptEntry() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetTranscriptEntryRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetTranscriptEntryRequest. + } + resp, err := c.GetTranscriptEntry(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConferenceRecordsClient_ListConferenceRecords() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListConferenceRecordsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListConferenceRecordsRequest. + } + it := c.ListConferenceRecords(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConferenceRecordsClient_ListParticipantSessions() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListParticipantSessionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListParticipantSessionsRequest. + } + it := c.ListParticipantSessions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConferenceRecordsClient_ListParticipants() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListParticipantsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListParticipantsRequest. + } + it := c.ListParticipants(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConferenceRecordsClient_ListRecordings() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListRecordingsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListRecordingsRequest. + } + it := c.ListRecordings(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConferenceRecordsClient_ListTranscriptEntries() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListTranscriptEntriesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListTranscriptEntriesRequest. + } + it := c.ListTranscriptEntries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConferenceRecordsClient_ListTranscripts() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListTranscriptsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListTranscriptsRequest. + } + it := c.ListTranscripts(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/apps/meet/apiv2/doc.go b/apps/meet/apiv2/doc.go new file mode 100755 index 000000000000..6c4de35d9cef --- /dev/null +++ b/apps/meet/apiv2/doc.go @@ -0,0 +1,123 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// Package meet is an auto-generated package for the +// Google Meet API. +// +// Create and manage meetings in Google Meet. +// +// NOTE: This package is in beta. It is not stable, and may be subject to changes. +// +// # General documentation +// +// For information that is relevant for all client libraries please reference +// https://pkg.go.dev/cloud.google.com/go#pkg-overview. Some information on this +// page includes: +// +// - [Authentication and Authorization] +// - [Timeouts and Cancellation] +// - [Testing against Client Libraries] +// - [Debugging Client Libraries] +// - [Inspecting errors] +// +// # Example usage +// +// To get started with this package, create a client. +// +// ctx := context.Background() +// // This snippet has been automatically generated and should be regarded as a code template only. +// // It will require modifications to work: +// // - It may require correct/in-range values for request initialization. +// // - It may require specifying regional endpoints when creating the service client as shown in: +// // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options +// c, err := meet.NewSpacesClient(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// defer c.Close() +// +// The client will use your default application credentials. Clients should be reused instead of created as needed. +// The methods of Client are safe for concurrent use by multiple goroutines. +// The returned client must be Closed when it is done being used. +// +// # Using the Client +// +// The following is an example of making an API call with the newly created client. +// +// ctx := context.Background() +// // This snippet has been automatically generated and should be regarded as a code template only. +// // It will require modifications to work: +// // - It may require correct/in-range values for request initialization. +// // - It may require specifying regional endpoints when creating the service client as shown in: +// // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options +// c, err := meet.NewSpacesClient(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// defer c.Close() +// +// req := &meetpb.CreateSpaceRequest{ +// // TODO: Fill request struct fields. +// // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#CreateSpaceRequest. +// } +// resp, err := c.CreateSpace(ctx, req) +// if err != nil { +// // TODO: Handle error. +// } +// // TODO: Use resp. +// _ = resp +// +// # Use of Context +// +// The ctx passed to NewSpacesClient is used for authentication requests and +// for creating the underlying connection, but is not used for subsequent calls. +// Individual methods on the client use the ctx given to them. +// +// To close the open connection, use the Close() method. +// +// [Authentication and Authorization]: https://pkg.go.dev/cloud.google.com/go#hdr-Authentication_and_Authorization +// [Timeouts and Cancellation]: https://pkg.go.dev/cloud.google.com/go#hdr-Timeouts_and_Cancellation +// [Testing against Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Testing +// [Debugging Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Debugging +// [Inspecting errors]: https://pkg.go.dev/cloud.google.com/go#hdr-Inspecting_errors +package meet // import "cloud.google.com/go/apps/meet/apiv2" + +import ( + "context" + + "google.golang.org/api/option" +) + +// For more information on implementing a client constructor hook, see +// https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors. +type clientHookParams struct{} +type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) + +var versionClient string + +func getVersionClient() string { + if versionClient == "" { + return "UNKNOWN" + } + return versionClient +} + +// DefaultAuthScopes reports the default set of authentication scopes to use with this package. +func DefaultAuthScopes() []string { + return []string{ + "", + } +} diff --git a/apps/meet/apiv2/gapic_metadata.json b/apps/meet/apiv2/gapic_metadata.json new file mode 100644 index 000000000000..120649b58ec6 --- /dev/null +++ b/apps/meet/apiv2/gapic_metadata.json @@ -0,0 +1,197 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods.", + "language": "go", + "protoPackage": "google.apps.meet.v2", + "libraryPackage": "cloud.google.com/go/apps/meet/apiv2", + "services": { + "ConferenceRecordsService": { + "clients": { + "grpc": { + "libraryClient": "ConferenceRecordsClient", + "rpcs": { + "GetConferenceRecord": { + "methods": [ + "GetConferenceRecord" + ] + }, + "GetParticipant": { + "methods": [ + "GetParticipant" + ] + }, + "GetParticipantSession": { + "methods": [ + "GetParticipantSession" + ] + }, + "GetRecording": { + "methods": [ + "GetRecording" + ] + }, + "GetTranscript": { + "methods": [ + "GetTranscript" + ] + }, + "GetTranscriptEntry": { + "methods": [ + "GetTranscriptEntry" + ] + }, + "ListConferenceRecords": { + "methods": [ + "ListConferenceRecords" + ] + }, + "ListParticipantSessions": { + "methods": [ + "ListParticipantSessions" + ] + }, + "ListParticipants": { + "methods": [ + "ListParticipants" + ] + }, + "ListRecordings": { + "methods": [ + "ListRecordings" + ] + }, + "ListTranscriptEntries": { + "methods": [ + "ListTranscriptEntries" + ] + }, + "ListTranscripts": { + "methods": [ + "ListTranscripts" + ] + } + } + }, + "rest": { + "libraryClient": "ConferenceRecordsClient", + "rpcs": { + "GetConferenceRecord": { + "methods": [ + "GetConferenceRecord" + ] + }, + "GetParticipant": { + "methods": [ + "GetParticipant" + ] + }, + "GetParticipantSession": { + "methods": [ + "GetParticipantSession" + ] + }, + "GetRecording": { + "methods": [ + "GetRecording" + ] + }, + "GetTranscript": { + "methods": [ + "GetTranscript" + ] + }, + "GetTranscriptEntry": { + "methods": [ + "GetTranscriptEntry" + ] + }, + "ListConferenceRecords": { + "methods": [ + "ListConferenceRecords" + ] + }, + "ListParticipantSessions": { + "methods": [ + "ListParticipantSessions" + ] + }, + "ListParticipants": { + "methods": [ + "ListParticipants" + ] + }, + "ListRecordings": { + "methods": [ + "ListRecordings" + ] + }, + "ListTranscriptEntries": { + "methods": [ + "ListTranscriptEntries" + ] + }, + "ListTranscripts": { + "methods": [ + "ListTranscripts" + ] + } + } + } + } + }, + "SpacesService": { + "clients": { + "grpc": { + "libraryClient": "SpacesClient", + "rpcs": { + "CreateSpace": { + "methods": [ + "CreateSpace" + ] + }, + "EndActiveConference": { + "methods": [ + "EndActiveConference" + ] + }, + "GetSpace": { + "methods": [ + "GetSpace" + ] + }, + "UpdateSpace": { + "methods": [ + "UpdateSpace" + ] + } + } + }, + "rest": { + "libraryClient": "SpacesClient", + "rpcs": { + "CreateSpace": { + "methods": [ + "CreateSpace" + ] + }, + "EndActiveConference": { + "methods": [ + "EndActiveConference" + ] + }, + "GetSpace": { + "methods": [ + "GetSpace" + ] + }, + "UpdateSpace": { + "methods": [ + "UpdateSpace" + ] + } + } + } + } + } + } +} diff --git a/apps/meet/apiv2/meetpb/resource.pb.go b/apps/meet/apiv2/meetpb/resource.pb.go new file mode 100755 index 000000000000..c405110bbd77 --- /dev/null +++ b/apps/meet/apiv2/meetpb/resource.pb.go @@ -0,0 +1,1920 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.32.0 +// protoc v4.25.2 +// source: google/apps/meet/v2/resource.proto + +package meetpb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Possible access types for a meeting space. +type SpaceConfig_AccessType int32 + +const ( + // Default value specified by the user's organization. + // Note: This is never returned, as the configured access type is + // returned instead. + SpaceConfig_ACCESS_TYPE_UNSPECIFIED SpaceConfig_AccessType = 0 + // Anyone with the join information (for example, the URL or phone access + // information) can join without knocking. + SpaceConfig_OPEN SpaceConfig_AccessType = 1 + // Members of the host's organization, invited external users, and dial-in + // users can join without knocking. Everyone else must knock. + SpaceConfig_TRUSTED SpaceConfig_AccessType = 2 + // Only invitees can join without knocking. Everyone else must knock. + SpaceConfig_RESTRICTED SpaceConfig_AccessType = 3 +) + +// Enum value maps for SpaceConfig_AccessType. +var ( + SpaceConfig_AccessType_name = map[int32]string{ + 0: "ACCESS_TYPE_UNSPECIFIED", + 1: "OPEN", + 2: "TRUSTED", + 3: "RESTRICTED", + } + SpaceConfig_AccessType_value = map[string]int32{ + "ACCESS_TYPE_UNSPECIFIED": 0, + "OPEN": 1, + "TRUSTED": 2, + "RESTRICTED": 3, + } +) + +func (x SpaceConfig_AccessType) Enum() *SpaceConfig_AccessType { + p := new(SpaceConfig_AccessType) + *p = x + return p +} + +func (x SpaceConfig_AccessType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SpaceConfig_AccessType) Descriptor() protoreflect.EnumDescriptor { + return file_google_apps_meet_v2_resource_proto_enumTypes[0].Descriptor() +} + +func (SpaceConfig_AccessType) Type() protoreflect.EnumType { + return &file_google_apps_meet_v2_resource_proto_enumTypes[0] +} + +func (x SpaceConfig_AccessType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SpaceConfig_AccessType.Descriptor instead. +func (SpaceConfig_AccessType) EnumDescriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{2, 0} +} + +// Entry points that can be used to join a meeting. Example: +// `meet.google.com`, the Meet Embed SDK Web, or a mobile application. +type SpaceConfig_EntryPointAccess int32 + +const ( + // Unused. + SpaceConfig_ENTRY_POINT_ACCESS_UNSPECIFIED SpaceConfig_EntryPointAccess = 0 + // All entry points are allowed. + SpaceConfig_ALL SpaceConfig_EntryPointAccess = 1 + // Only entry points owned by the Google Cloud project that created the + // space can be used to join meetings in this space. Apps can use the Meet + // Embed SDK Web or mobile Meet SDKs to create owned entry points. + SpaceConfig_CREATOR_APP_ONLY SpaceConfig_EntryPointAccess = 2 +) + +// Enum value maps for SpaceConfig_EntryPointAccess. +var ( + SpaceConfig_EntryPointAccess_name = map[int32]string{ + 0: "ENTRY_POINT_ACCESS_UNSPECIFIED", + 1: "ALL", + 2: "CREATOR_APP_ONLY", + } + SpaceConfig_EntryPointAccess_value = map[string]int32{ + "ENTRY_POINT_ACCESS_UNSPECIFIED": 0, + "ALL": 1, + "CREATOR_APP_ONLY": 2, + } +) + +func (x SpaceConfig_EntryPointAccess) Enum() *SpaceConfig_EntryPointAccess { + p := new(SpaceConfig_EntryPointAccess) + *p = x + return p +} + +func (x SpaceConfig_EntryPointAccess) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SpaceConfig_EntryPointAccess) Descriptor() protoreflect.EnumDescriptor { + return file_google_apps_meet_v2_resource_proto_enumTypes[1].Descriptor() +} + +func (SpaceConfig_EntryPointAccess) Type() protoreflect.EnumType { + return &file_google_apps_meet_v2_resource_proto_enumTypes[1] +} + +func (x SpaceConfig_EntryPointAccess) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SpaceConfig_EntryPointAccess.Descriptor instead. +func (SpaceConfig_EntryPointAccess) EnumDescriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{2, 1} +} + +// Current state of the recording session. +type Recording_State int32 + +const ( + // Default, never used. + Recording_STATE_UNSPECIFIED Recording_State = 0 + // An active recording session has started. + Recording_STARTED Recording_State = 1 + // This recording session has ended, but the recording file hasn't been + // generated yet. + Recording_ENDED Recording_State = 2 + // Recording file is generated and ready to download. + Recording_FILE_GENERATED Recording_State = 3 +) + +// Enum value maps for Recording_State. +var ( + Recording_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 1: "STARTED", + 2: "ENDED", + 3: "FILE_GENERATED", + } + Recording_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "STARTED": 1, + "ENDED": 2, + "FILE_GENERATED": 3, + } +) + +func (x Recording_State) Enum() *Recording_State { + p := new(Recording_State) + *p = x + return p +} + +func (x Recording_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Recording_State) Descriptor() protoreflect.EnumDescriptor { + return file_google_apps_meet_v2_resource_proto_enumTypes[2].Descriptor() +} + +func (Recording_State) Type() protoreflect.EnumType { + return &file_google_apps_meet_v2_resource_proto_enumTypes[2] +} + +func (x Recording_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Recording_State.Descriptor instead. +func (Recording_State) EnumDescriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{9, 0} +} + +// Current state of the transcript session. +type Transcript_State int32 + +const ( + // Default, never used. + Transcript_STATE_UNSPECIFIED Transcript_State = 0 + // An active transcript session has started. + Transcript_STARTED Transcript_State = 1 + // This transcript session has ended, but the transcript file hasn't been + // generated yet. + Transcript_ENDED Transcript_State = 2 + // Transcript file is generated and ready to download. + Transcript_FILE_GENERATED Transcript_State = 3 +) + +// Enum value maps for Transcript_State. +var ( + Transcript_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 1: "STARTED", + 2: "ENDED", + 3: "FILE_GENERATED", + } + Transcript_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "STARTED": 1, + "ENDED": 2, + "FILE_GENERATED": 3, + } +) + +func (x Transcript_State) Enum() *Transcript_State { + p := new(Transcript_State) + *p = x + return p +} + +func (x Transcript_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Transcript_State) Descriptor() protoreflect.EnumDescriptor { + return file_google_apps_meet_v2_resource_proto_enumTypes[3].Descriptor() +} + +func (Transcript_State) Type() protoreflect.EnumType { + return &file_google_apps_meet_v2_resource_proto_enumTypes[3] +} + +func (x Transcript_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Transcript_State.Descriptor instead. +func (Transcript_State) EnumDescriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{11, 0} +} + +// Virtual place where conferences are held. Only one active conference can be +// held in one space at any given time. +type Space struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Immutable. Resource name of the space. + // Format: `spaces/{space}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. URI used to join meetings, such as + // `https://meet.google.com/abc-mnop-xyz`. + MeetingUri string `protobuf:"bytes,2,opt,name=meeting_uri,json=meetingUri,proto3" json:"meeting_uri,omitempty"` + // Output only. Type friendly code to join the meeting. Format: + // `[a-z]+-[a-z]+-[a-z]+` such as `abc-mnop-xyz`. The maximum length is 128 + // characters. Can only be used as an alias of the space ID to get the space. + MeetingCode string `protobuf:"bytes,3,opt,name=meeting_code,json=meetingCode,proto3" json:"meeting_code,omitempty"` + // Configuration pertaining to the meeting space. + Config *SpaceConfig `protobuf:"bytes,5,opt,name=config,proto3" json:"config,omitempty"` + // Active conference, if it exists. + ActiveConference *ActiveConference `protobuf:"bytes,6,opt,name=active_conference,json=activeConference,proto3" json:"active_conference,omitempty"` +} + +func (x *Space) Reset() { + *x = Space{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Space) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Space) ProtoMessage() {} + +func (x *Space) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[0] + 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 Space.ProtoReflect.Descriptor instead. +func (*Space) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{0} +} + +func (x *Space) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Space) GetMeetingUri() string { + if x != nil { + return x.MeetingUri + } + return "" +} + +func (x *Space) GetMeetingCode() string { + if x != nil { + return x.MeetingCode + } + return "" +} + +func (x *Space) GetConfig() *SpaceConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *Space) GetActiveConference() *ActiveConference { + if x != nil { + return x.ActiveConference + } + return nil +} + +// Active conference. +type ActiveConference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Reference to 'ConferenceRecord' resource. + // Format: `conferenceRecords/{conference_record}` where `{conference_record}` + // is a unique ID for each instance of a call within a space. + ConferenceRecord string `protobuf:"bytes,1,opt,name=conference_record,json=conferenceRecord,proto3" json:"conference_record,omitempty"` +} + +func (x *ActiveConference) Reset() { + *x = ActiveConference{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActiveConference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActiveConference) ProtoMessage() {} + +func (x *ActiveConference) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[1] + 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 ActiveConference.ProtoReflect.Descriptor instead. +func (*ActiveConference) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{1} +} + +func (x *ActiveConference) GetConferenceRecord() string { + if x != nil { + return x.ConferenceRecord + } + return "" +} + +// The configuration pertaining to a meeting space. +type SpaceConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Access type of the meeting space that determines who can join without + // knocking. Default: The user's default access settings. Controlled by the + // user's admin for enterprise users or RESTRICTED. + AccessType SpaceConfig_AccessType `protobuf:"varint,1,opt,name=access_type,json=accessType,proto3,enum=google.apps.meet.v2.SpaceConfig_AccessType" json:"access_type,omitempty"` + // Defines the entry points that can be used to join meetings hosted in this + // meeting space. + // Default: EntryPointAccess.ALL + EntryPointAccess SpaceConfig_EntryPointAccess `protobuf:"varint,2,opt,name=entry_point_access,json=entryPointAccess,proto3,enum=google.apps.meet.v2.SpaceConfig_EntryPointAccess" json:"entry_point_access,omitempty"` +} + +func (x *SpaceConfig) Reset() { + *x = SpaceConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SpaceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SpaceConfig) ProtoMessage() {} + +func (x *SpaceConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SpaceConfig.ProtoReflect.Descriptor instead. +func (*SpaceConfig) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{2} +} + +func (x *SpaceConfig) GetAccessType() SpaceConfig_AccessType { + if x != nil { + return x.AccessType + } + return SpaceConfig_ACCESS_TYPE_UNSPECIFIED +} + +func (x *SpaceConfig) GetEntryPointAccess() SpaceConfig_EntryPointAccess { + if x != nil { + return x.EntryPointAccess + } + return SpaceConfig_ENTRY_POINT_ACCESS_UNSPECIFIED +} + +// Single instance of a meeting held in a space. +type ConferenceRecord struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. Resource name of the conference record. + // Format: `conferenceRecords/{conference_record}` where `{conference_record}` + // is a unique ID for each instance of a call within a space. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. Timestamp when the conference started. Always set. + StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // Output only. Timestamp when the conference ended. + // Set for past conferences. Unset if the conference is ongoing. + EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Output only. Server enforced expiration time for when this conference + // record resource is deleted. The resource is deleted 30 days after the + // conference ends. + ExpireTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"` + // Output only. The space where the conference was held. + Space string `protobuf:"bytes,5,opt,name=space,proto3" json:"space,omitempty"` +} + +func (x *ConferenceRecord) Reset() { + *x = ConferenceRecord{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConferenceRecord) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConferenceRecord) ProtoMessage() {} + +func (x *ConferenceRecord) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[3] + 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 ConferenceRecord.ProtoReflect.Descriptor instead. +func (*ConferenceRecord) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{3} +} + +func (x *ConferenceRecord) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ConferenceRecord) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *ConferenceRecord) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *ConferenceRecord) GetExpireTime() *timestamppb.Timestamp { + if x != nil { + return x.ExpireTime + } + return nil +} + +func (x *ConferenceRecord) GetSpace() string { + if x != nil { + return x.Space + } + return "" +} + +// User who attended or is attending a conference. +type Participant struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to User: + // + // *Participant_SignedinUser + // *Participant_AnonymousUser + // *Participant_PhoneUser + User isParticipant_User `protobuf_oneof:"user"` + // Output only. Resource name of the participant. + // Format: `conferenceRecords/{conference_record}/participants/{participant}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. Time when the participant first joined the meeting. + EarliestStartTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=earliest_start_time,json=earliestStartTime,proto3" json:"earliest_start_time,omitempty"` + // Output only. Time when the participant left the meeting for the last time. + // This can be null if it's an active meeting. + LatestEndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=latest_end_time,json=latestEndTime,proto3" json:"latest_end_time,omitempty"` +} + +func (x *Participant) Reset() { + *x = Participant{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Participant) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Participant) ProtoMessage() {} + +func (x *Participant) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[4] + 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 Participant.ProtoReflect.Descriptor instead. +func (*Participant) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{4} +} + +func (m *Participant) GetUser() isParticipant_User { + if m != nil { + return m.User + } + return nil +} + +func (x *Participant) GetSignedinUser() *SignedinUser { + if x, ok := x.GetUser().(*Participant_SignedinUser); ok { + return x.SignedinUser + } + return nil +} + +func (x *Participant) GetAnonymousUser() *AnonymousUser { + if x, ok := x.GetUser().(*Participant_AnonymousUser); ok { + return x.AnonymousUser + } + return nil +} + +func (x *Participant) GetPhoneUser() *PhoneUser { + if x, ok := x.GetUser().(*Participant_PhoneUser); ok { + return x.PhoneUser + } + return nil +} + +func (x *Participant) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Participant) GetEarliestStartTime() *timestamppb.Timestamp { + if x != nil { + return x.EarliestStartTime + } + return nil +} + +func (x *Participant) GetLatestEndTime() *timestamppb.Timestamp { + if x != nil { + return x.LatestEndTime + } + return nil +} + +type isParticipant_User interface { + isParticipant_User() +} + +type Participant_SignedinUser struct { + // Signed-in user. + SignedinUser *SignedinUser `protobuf:"bytes,4,opt,name=signedin_user,json=signedinUser,proto3,oneof"` +} + +type Participant_AnonymousUser struct { + // Anonymous user. + AnonymousUser *AnonymousUser `protobuf:"bytes,5,opt,name=anonymous_user,json=anonymousUser,proto3,oneof"` +} + +type Participant_PhoneUser struct { + // User calling from their phone. + PhoneUser *PhoneUser `protobuf:"bytes,6,opt,name=phone_user,json=phoneUser,proto3,oneof"` +} + +func (*Participant_SignedinUser) isParticipant_User() {} + +func (*Participant_AnonymousUser) isParticipant_User() {} + +func (*Participant_PhoneUser) isParticipant_User() {} + +// Refers to each unique join or leave session when a user joins a conference +// from a device. Note that any time a user joins the conference a new unique ID +// is assigned. That means if a user joins a space multiple times from the same +// device, they're assigned different IDs, and are also be treated as different +// participant sessions. +type ParticipantSession struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. Session id. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. Timestamp when the user session starts. + StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // Output only. Timestamp when the user session ends. Unset if the user + // session hasn’t ended. + EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *ParticipantSession) Reset() { + *x = ParticipantSession{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParticipantSession) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParticipantSession) ProtoMessage() {} + +func (x *ParticipantSession) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[5] + 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 ParticipantSession.ProtoReflect.Descriptor instead. +func (*ParticipantSession) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{5} +} + +func (x *ParticipantSession) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ParticipantSession) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *ParticipantSession) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +// A signed-in user can be: +// a) An individual joining from a personal computer, mobile device, or through +// companion mode. +// b) A robot account used by conference room devices. +type SignedinUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Unique ID for the user. Interoperable with Admin SDK API and + // People API. Format: `users/{user}` + User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + // Output only. For a personal device, it's the user's first name and last + // name. For a robot account, it's the administrator-specified device name. + // For example, "Altostrat Room". + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` +} + +func (x *SignedinUser) Reset() { + *x = SignedinUser{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedinUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedinUser) ProtoMessage() {} + +func (x *SignedinUser) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[6] + 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 SignedinUser.ProtoReflect.Descriptor instead. +func (*SignedinUser) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{6} +} + +func (x *SignedinUser) GetUser() string { + if x != nil { + return x.User + } + return "" +} + +func (x *SignedinUser) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +// User who joins anonymously (meaning not signed into a Google Account). +type AnonymousUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. User provided name when they join a conference anonymously. + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` +} + +func (x *AnonymousUser) Reset() { + *x = AnonymousUser{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnonymousUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnonymousUser) ProtoMessage() {} + +func (x *AnonymousUser) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[7] + 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 AnonymousUser.ProtoReflect.Descriptor instead. +func (*AnonymousUser) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{7} +} + +func (x *AnonymousUser) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +// User dialing in from a phone where the user's identity is unknown because +// they haven't signed in with a Google Account. +type PhoneUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Partially redacted user's phone number when calling. + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` +} + +func (x *PhoneUser) Reset() { + *x = PhoneUser{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PhoneUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PhoneUser) ProtoMessage() {} + +func (x *PhoneUser) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PhoneUser.ProtoReflect.Descriptor instead. +func (*PhoneUser) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{8} +} + +func (x *PhoneUser) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +// Metadata about a recording created during a conference. +type Recording struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Destination: + // + // *Recording_DriveDestination + Destination isRecording_Destination `protobuf_oneof:"destination"` + // Output only. Resource name of the recording. + // Format: `conferenceRecords/{conference_record}/recordings/{recording}` + // where `{recording}` is a 1:1 mapping to each unique recording session + // during the conference. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. Current state. + State Recording_State `protobuf:"varint,3,opt,name=state,proto3,enum=google.apps.meet.v2.Recording_State" json:"state,omitempty"` + // Output only. Timestamp when the recording started. + StartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // Output only. Timestamp when the recording ended. + EndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *Recording) Reset() { + *x = Recording{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Recording) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Recording) ProtoMessage() {} + +func (x *Recording) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[9] + 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 Recording.ProtoReflect.Descriptor instead. +func (*Recording) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{9} +} + +func (m *Recording) GetDestination() isRecording_Destination { + if m != nil { + return m.Destination + } + return nil +} + +func (x *Recording) GetDriveDestination() *DriveDestination { + if x, ok := x.GetDestination().(*Recording_DriveDestination); ok { + return x.DriveDestination + } + return nil +} + +func (x *Recording) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Recording) GetState() Recording_State { + if x != nil { + return x.State + } + return Recording_STATE_UNSPECIFIED +} + +func (x *Recording) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *Recording) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +type isRecording_Destination interface { + isRecording_Destination() +} + +type Recording_DriveDestination struct { + // Output only. Recording is saved to Google Drive as an MP4 file. The + // `drive_destination` includes the Drive `fileId` that can be used to + // download the file using the `files.get` method of the Drive API. + DriveDestination *DriveDestination `protobuf:"bytes,6,opt,name=drive_destination,json=driveDestination,proto3,oneof"` +} + +func (*Recording_DriveDestination) isRecording_Destination() {} + +// Export location where a recording file is saved in Google Drive. +type DriveDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The `fileId` for the underlying MP4 file. For example, + // "1kuceFZohVoCh6FulBHxwy6I15Ogpc4hP". Use `$ GET + // https://www.googleapis.com/drive/v3/files/{$fileId}?alt=media` to download + // the blob. For more information, see + // https://developers.google.com/drive/api/v3/reference/files/get. + File string `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"` + // Output only. Link used to play back the recording file in the browser. For + // example, `https://drive.google.com/file/d/{$fileId}/view`. + ExportUri string `protobuf:"bytes,2,opt,name=export_uri,json=exportUri,proto3" json:"export_uri,omitempty"` +} + +func (x *DriveDestination) Reset() { + *x = DriveDestination{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DriveDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DriveDestination) ProtoMessage() {} + +func (x *DriveDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[10] + 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 DriveDestination.ProtoReflect.Descriptor instead. +func (*DriveDestination) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{10} +} + +func (x *DriveDestination) GetFile() string { + if x != nil { + return x.File + } + return "" +} + +func (x *DriveDestination) GetExportUri() string { + if x != nil { + return x.ExportUri + } + return "" +} + +// Metadata for a transcript generated from a conference. It refers to the ASR +// (Automatic Speech Recognition) result of user's speech during the conference. +type Transcript struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Destination: + // + // *Transcript_DocsDestination + Destination isTranscript_Destination `protobuf_oneof:"destination"` + // Output only. Resource name of the transcript. + // Format: `conferenceRecords/{conference_record}/transcripts/{transcript}`, + // where `{transcript}` is a 1:1 mapping to each unique transcription session + // of the conference. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. Current state. + State Transcript_State `protobuf:"varint,3,opt,name=state,proto3,enum=google.apps.meet.v2.Transcript_State" json:"state,omitempty"` + // Output only. Timestamp when the transcript started. + StartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // Output only. Timestamp when the transcript stopped. + EndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *Transcript) Reset() { + *x = Transcript{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transcript) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transcript) ProtoMessage() {} + +func (x *Transcript) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Transcript.ProtoReflect.Descriptor instead. +func (*Transcript) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{11} +} + +func (m *Transcript) GetDestination() isTranscript_Destination { + if m != nil { + return m.Destination + } + return nil +} + +func (x *Transcript) GetDocsDestination() *DocsDestination { + if x, ok := x.GetDestination().(*Transcript_DocsDestination); ok { + return x.DocsDestination + } + return nil +} + +func (x *Transcript) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Transcript) GetState() Transcript_State { + if x != nil { + return x.State + } + return Transcript_STATE_UNSPECIFIED +} + +func (x *Transcript) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *Transcript) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +type isTranscript_Destination interface { + isTranscript_Destination() +} + +type Transcript_DocsDestination struct { + // Output only. Where the Google Docs transcript is saved. + DocsDestination *DocsDestination `protobuf:"bytes,6,opt,name=docs_destination,json=docsDestination,proto3,oneof"` +} + +func (*Transcript_DocsDestination) isTranscript_Destination() {} + +// Google Docs location where the transcript file is saved. +type DocsDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The document ID for the underlying Google Docs transcript + // file. For example, "1kuceFZohVoCh6FulBHxwy6I15Ogpc4hP". Use the + // `documents.get` method of the Google Docs API + // (https://developers.google.com/docs/api/reference/rest/v1/documents/get) to + // fetch the content. + Document string `protobuf:"bytes,1,opt,name=document,proto3" json:"document,omitempty"` + // Output only. URI for the Google Docs transcript file. Use + // `https://docs.google.com/document/d/{$DocumentId}/view` to browse the + // transcript in the browser. + ExportUri string `protobuf:"bytes,2,opt,name=export_uri,json=exportUri,proto3" json:"export_uri,omitempty"` +} + +func (x *DocsDestination) Reset() { + *x = DocsDestination{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DocsDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DocsDestination) ProtoMessage() {} + +func (x *DocsDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DocsDestination.ProtoReflect.Descriptor instead. +func (*DocsDestination) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{12} +} + +func (x *DocsDestination) GetDocument() string { + if x != nil { + return x.Document + } + return "" +} + +func (x *DocsDestination) GetExportUri() string { + if x != nil { + return x.ExportUri + } + return "" +} + +// Single entry for one user’s speech during a transcript session. +type TranscriptEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Resource name of the entry. Format: + // "conferenceRecords/{conference_record}/transcripts/{transcript}/entries/{entry}" + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. Refers to the participant who speaks. + Participant string `protobuf:"bytes,2,opt,name=participant,proto3" json:"participant,omitempty"` + // Output only. The transcribed text of the participant's voice, at maximum + // 10K words. Note that the limit is subject to change. + Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"` + // Output only. Language of spoken text, such as "en-US". + // IETF BCP 47 syntax (https://tools.ietf.org/html/bcp47) + LanguageCode string `protobuf:"bytes,4,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"` + // Output only. Timestamp when the transcript entry started. + StartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // Output only. Timestamp when the transcript entry ended. + EndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *TranscriptEntry) Reset() { + *x = TranscriptEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TranscriptEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TranscriptEntry) ProtoMessage() {} + +func (x *TranscriptEntry) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_resource_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TranscriptEntry.ProtoReflect.Descriptor instead. +func (*TranscriptEntry) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_resource_proto_rawDescGZIP(), []int{13} +} + +func (x *TranscriptEntry) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TranscriptEntry) GetParticipant() string { + if x != nil { + return x.Participant + } + return "" +} + +func (x *TranscriptEntry) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *TranscriptEntry) GetLanguageCode() string { + if x != nil { + return x.LanguageCode + } + return "" +} + +func (x *TranscriptEntry) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *TranscriptEntry) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +var File_google_apps_meet_v2_resource_proto protoreflect.FileDescriptor + +var file_google_apps_meet_v2_resource_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6d, 0x65, + 0x65, 0x74, 0x2f, 0x76, 0x32, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, + 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, + 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x02, 0x0a, 0x05, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x65, 0x65, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x6d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x69, 0x12, + 0x26, 0x0a, 0x0c, 0x6d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x6d, 0x65, 0x65, 0x74, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x52, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, + 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x3a, 0x2e, 0xea, 0x41, 0x2b, 0x0a, 0x19, 0x6d, 0x65, 0x65, 0x74, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x7d, 0x22, 0x6d, 0x0a, 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x63, 0x6f, 0x6e, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x22, 0xe5, 0x02, 0x0a, 0x0b, 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, + 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x22, 0x50, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x52, 0x55, 0x53, + 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x53, 0x54, 0x52, 0x49, 0x43, + 0x54, 0x45, 0x44, 0x10, 0x03, 0x22, 0x55, 0x0a, 0x10, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x1e, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x52, 0x45, 0x41, 0x54, 0x4f, + 0x52, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x22, 0x99, 0x03, 0x0a, + 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x1b, 0x0a, + 0x19, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x3a, 0x75, 0xea, 0x41, 0x72, 0x0a, 0x24, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x25, 0x63, 0x6f, + 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x7d, 0x2a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x32, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0xa4, 0x04, 0x0a, 0x0b, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x69, 0x6e, 0x55, 0x73, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x69, 0x6e, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x0e, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, + 0x2e, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x0d, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x3f, 0x0a, 0x0a, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, + 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x13, 0x65, 0x61, 0x72, + 0x6c, 0x69, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, + 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x3a, 0x81, 0x01, 0xea, 0x41, 0x7e, 0x0a, 0x1f, 0x6d, 0x65, 0x65, 0x74, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x40, 0x63, 0x6f, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x63, + 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x7d, 0x2a, 0x0c, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x32, 0x0b, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, + 0xed, 0x02, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x3a, 0xc1, 0x01, 0xea, 0x41, + 0xbd, 0x01, 0x0a, 0x26, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x63, 0x6f, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x63, + 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x7d, 0x2f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2a, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x12, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x4f, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x17, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x37, 0x0a, 0x0d, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x33, 0x0a, 0x09, 0x50, 0x68, 0x6f, + 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x90, + 0x04, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x59, 0x0a, 0x11, + 0x64, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x72, + 0x69, 0x76, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x10, 0x64, 0x72, 0x69, 0x76, 0x65, 0x44, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4a, 0x0a, + 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, + 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, + 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x47, 0x45, + 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x3a, 0x77, 0xea, 0x41, 0x74, 0x0a, 0x1d, + 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x63, + 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, + 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x7d, 0x2a, 0x0a, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x32, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x4f, 0x0a, 0x10, 0x44, 0x72, 0x69, 0x76, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x22, + 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x55, + 0x72, 0x69, 0x22, 0x94, 0x04, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x12, 0x56, 0x0a, 0x10, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, + 0x32, 0x2e, 0x44, 0x6f, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x63, 0x73, 0x44, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, + 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x4a, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x4c, 0x45, + 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x3a, 0x7c, 0xea, 0x41, + 0x79, 0x0a, 0x1e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x12, 0x3e, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x7d, 0x2a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x32, 0x0a, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x0f, 0x44, 0x6f, 0x63, + 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x08, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, + 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x72, + 0x69, 0x22, 0xd4, 0x03, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, + 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6d, 0x65, 0x65, + 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x74, 0x65, + 0x78, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, + 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x3a, 0x9d, 0x01, 0xea, 0x41, 0x99, 0x01, 0x0a, + 0x23, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x4e, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x7d, 0x2a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x32, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xa2, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, + 0x74, 0x2e, 0x76, 0x32, 0x42, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, + 0x6d, 0x65, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6d, 0x65, 0x65, 0x74, 0x70, + 0x62, 0x3b, 0x6d, 0x65, 0x65, 0x74, 0x70, 0x62, 0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x41, 0x70, 0x70, 0x73, 0x2e, 0x4d, 0x65, 0x65, 0x74, 0x2e, 0x56, 0x32, 0xca, 0x02, + 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x41, 0x70, 0x70, 0x73, 0x5c, 0x4d, 0x65, 0x65, + 0x74, 0x5c, 0x56, 0x32, 0xea, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x41, + 0x70, 0x70, 0x73, 0x3a, 0x3a, 0x4d, 0x65, 0x65, 0x74, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_apps_meet_v2_resource_proto_rawDescOnce sync.Once + file_google_apps_meet_v2_resource_proto_rawDescData = file_google_apps_meet_v2_resource_proto_rawDesc +) + +func file_google_apps_meet_v2_resource_proto_rawDescGZIP() []byte { + file_google_apps_meet_v2_resource_proto_rawDescOnce.Do(func() { + file_google_apps_meet_v2_resource_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_apps_meet_v2_resource_proto_rawDescData) + }) + return file_google_apps_meet_v2_resource_proto_rawDescData +} + +var file_google_apps_meet_v2_resource_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_google_apps_meet_v2_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_google_apps_meet_v2_resource_proto_goTypes = []interface{}{ + (SpaceConfig_AccessType)(0), // 0: google.apps.meet.v2.SpaceConfig.AccessType + (SpaceConfig_EntryPointAccess)(0), // 1: google.apps.meet.v2.SpaceConfig.EntryPointAccess + (Recording_State)(0), // 2: google.apps.meet.v2.Recording.State + (Transcript_State)(0), // 3: google.apps.meet.v2.Transcript.State + (*Space)(nil), // 4: google.apps.meet.v2.Space + (*ActiveConference)(nil), // 5: google.apps.meet.v2.ActiveConference + (*SpaceConfig)(nil), // 6: google.apps.meet.v2.SpaceConfig + (*ConferenceRecord)(nil), // 7: google.apps.meet.v2.ConferenceRecord + (*Participant)(nil), // 8: google.apps.meet.v2.Participant + (*ParticipantSession)(nil), // 9: google.apps.meet.v2.ParticipantSession + (*SignedinUser)(nil), // 10: google.apps.meet.v2.SignedinUser + (*AnonymousUser)(nil), // 11: google.apps.meet.v2.AnonymousUser + (*PhoneUser)(nil), // 12: google.apps.meet.v2.PhoneUser + (*Recording)(nil), // 13: google.apps.meet.v2.Recording + (*DriveDestination)(nil), // 14: google.apps.meet.v2.DriveDestination + (*Transcript)(nil), // 15: google.apps.meet.v2.Transcript + (*DocsDestination)(nil), // 16: google.apps.meet.v2.DocsDestination + (*TranscriptEntry)(nil), // 17: google.apps.meet.v2.TranscriptEntry + (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp +} +var file_google_apps_meet_v2_resource_proto_depIdxs = []int32{ + 6, // 0: google.apps.meet.v2.Space.config:type_name -> google.apps.meet.v2.SpaceConfig + 5, // 1: google.apps.meet.v2.Space.active_conference:type_name -> google.apps.meet.v2.ActiveConference + 0, // 2: google.apps.meet.v2.SpaceConfig.access_type:type_name -> google.apps.meet.v2.SpaceConfig.AccessType + 1, // 3: google.apps.meet.v2.SpaceConfig.entry_point_access:type_name -> google.apps.meet.v2.SpaceConfig.EntryPointAccess + 18, // 4: google.apps.meet.v2.ConferenceRecord.start_time:type_name -> google.protobuf.Timestamp + 18, // 5: google.apps.meet.v2.ConferenceRecord.end_time:type_name -> google.protobuf.Timestamp + 18, // 6: google.apps.meet.v2.ConferenceRecord.expire_time:type_name -> google.protobuf.Timestamp + 10, // 7: google.apps.meet.v2.Participant.signedin_user:type_name -> google.apps.meet.v2.SignedinUser + 11, // 8: google.apps.meet.v2.Participant.anonymous_user:type_name -> google.apps.meet.v2.AnonymousUser + 12, // 9: google.apps.meet.v2.Participant.phone_user:type_name -> google.apps.meet.v2.PhoneUser + 18, // 10: google.apps.meet.v2.Participant.earliest_start_time:type_name -> google.protobuf.Timestamp + 18, // 11: google.apps.meet.v2.Participant.latest_end_time:type_name -> google.protobuf.Timestamp + 18, // 12: google.apps.meet.v2.ParticipantSession.start_time:type_name -> google.protobuf.Timestamp + 18, // 13: google.apps.meet.v2.ParticipantSession.end_time:type_name -> google.protobuf.Timestamp + 14, // 14: google.apps.meet.v2.Recording.drive_destination:type_name -> google.apps.meet.v2.DriveDestination + 2, // 15: google.apps.meet.v2.Recording.state:type_name -> google.apps.meet.v2.Recording.State + 18, // 16: google.apps.meet.v2.Recording.start_time:type_name -> google.protobuf.Timestamp + 18, // 17: google.apps.meet.v2.Recording.end_time:type_name -> google.protobuf.Timestamp + 16, // 18: google.apps.meet.v2.Transcript.docs_destination:type_name -> google.apps.meet.v2.DocsDestination + 3, // 19: google.apps.meet.v2.Transcript.state:type_name -> google.apps.meet.v2.Transcript.State + 18, // 20: google.apps.meet.v2.Transcript.start_time:type_name -> google.protobuf.Timestamp + 18, // 21: google.apps.meet.v2.Transcript.end_time:type_name -> google.protobuf.Timestamp + 18, // 22: google.apps.meet.v2.TranscriptEntry.start_time:type_name -> google.protobuf.Timestamp + 18, // 23: google.apps.meet.v2.TranscriptEntry.end_time:type_name -> google.protobuf.Timestamp + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name +} + +func init() { file_google_apps_meet_v2_resource_proto_init() } +func file_google_apps_meet_v2_resource_proto_init() { + if File_google_apps_meet_v2_resource_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_google_apps_meet_v2_resource_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Space); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActiveConference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SpaceConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConferenceRecord); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Participant); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParticipantSession); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignedinUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnonymousUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PhoneUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Recording); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DriveDestination); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Transcript); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DocsDestination); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TranscriptEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_google_apps_meet_v2_resource_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*Participant_SignedinUser)(nil), + (*Participant_AnonymousUser)(nil), + (*Participant_PhoneUser)(nil), + } + file_google_apps_meet_v2_resource_proto_msgTypes[9].OneofWrappers = []interface{}{ + (*Recording_DriveDestination)(nil), + } + file_google_apps_meet_v2_resource_proto_msgTypes[11].OneofWrappers = []interface{}{ + (*Transcript_DocsDestination)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_apps_meet_v2_resource_proto_rawDesc, + NumEnums: 4, + NumMessages: 14, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_apps_meet_v2_resource_proto_goTypes, + DependencyIndexes: file_google_apps_meet_v2_resource_proto_depIdxs, + EnumInfos: file_google_apps_meet_v2_resource_proto_enumTypes, + MessageInfos: file_google_apps_meet_v2_resource_proto_msgTypes, + }.Build() + File_google_apps_meet_v2_resource_proto = out.File + file_google_apps_meet_v2_resource_proto_rawDesc = nil + file_google_apps_meet_v2_resource_proto_goTypes = nil + file_google_apps_meet_v2_resource_proto_depIdxs = nil +} diff --git a/apps/meet/apiv2/meetpb/service.pb.go b/apps/meet/apiv2/meetpb/service.pb.go new file mode 100755 index 000000000000..7bd3f0163c77 --- /dev/null +++ b/apps/meet/apiv2/meetpb/service.pb.go @@ -0,0 +1,2878 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.32.0 +// protoc v4.25.2 +// source: google/apps/meet/v2/service.proto + +package meetpb + +import ( + context "context" + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Request to create a space. +type CreateSpaceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Space to be created. As of May 2023, the input space can be empty. Later on + // the input space can be non-empty when space configuration is introduced. + Space *Space `protobuf:"bytes,1,opt,name=space,proto3" json:"space,omitempty"` +} + +func (x *CreateSpaceRequest) Reset() { + *x = CreateSpaceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSpaceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSpaceRequest) ProtoMessage() {} + +func (x *CreateSpaceRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[0] + 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 CreateSpaceRequest.ProtoReflect.Descriptor instead. +func (*CreateSpaceRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateSpaceRequest) GetSpace() *Space { + if x != nil { + return x.Space + } + return nil +} + +// Request to get a space. +type GetSpaceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the space. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetSpaceRequest) Reset() { + *x = GetSpaceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSpaceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSpaceRequest) ProtoMessage() {} + +func (x *GetSpaceRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[1] + 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 GetSpaceRequest.ProtoReflect.Descriptor instead. +func (*GetSpaceRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{1} +} + +func (x *GetSpaceRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request to update a space. +type UpdateSpaceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Space to be updated. + Space *Space `protobuf:"bytes,1,opt,name=space,proto3" json:"space,omitempty"` + // Optional. Field mask used to specify the fields to be updated in the space. + // If update_mask isn't provided, it defaults to '*' and updates all + // fields provided in the request, including deleting fields not set in the + // request. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` +} + +func (x *UpdateSpaceRequest) Reset() { + *x = UpdateSpaceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateSpaceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSpaceRequest) ProtoMessage() {} + +func (x *UpdateSpaceRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSpaceRequest.ProtoReflect.Descriptor instead. +func (*UpdateSpaceRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{2} +} + +func (x *UpdateSpaceRequest) GetSpace() *Space { + if x != nil { + return x.Space + } + return nil +} + +func (x *UpdateSpaceRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// Request to end an ongoing conference of a space. +type EndActiveConferenceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the space. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *EndActiveConferenceRequest) Reset() { + *x = EndActiveConferenceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EndActiveConferenceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EndActiveConferenceRequest) ProtoMessage() {} + +func (x *EndActiveConferenceRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[3] + 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 EndActiveConferenceRequest.ProtoReflect.Descriptor instead. +func (*EndActiveConferenceRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{3} +} + +func (x *EndActiveConferenceRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request to get a conference record. +type GetConferenceRecordRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the conference. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetConferenceRecordRequest) Reset() { + *x = GetConferenceRecordRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetConferenceRecordRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConferenceRecordRequest) ProtoMessage() {} + +func (x *GetConferenceRecordRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[4] + 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 GetConferenceRecordRequest.ProtoReflect.Descriptor instead. +func (*GetConferenceRecordRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{4} +} + +func (x *GetConferenceRecordRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request to fetch list of conference records per user. +type ListConferenceRecordsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Maximum number of conference records to return. The service might + // return fewer than this value. If unspecified, at most 25 conference records + // are returned. The maximum value is 100; values above 100 are coerced to + // 100. Maximum might change in the future. + PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. Page token returned from previous List Call. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. User specified filtering condition in [EBNF + // format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). + // The following are the filterable fields: + // + // * `space.meeting_code` + // * `space.name` + // * `start_time` + // * `end_time` + // + // For example, `space.meeting_code = "abc-mnop-xyz"`. + Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListConferenceRecordsRequest) Reset() { + *x = ListConferenceRecordsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListConferenceRecordsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListConferenceRecordsRequest) ProtoMessage() {} + +func (x *ListConferenceRecordsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[5] + 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 ListConferenceRecordsRequest.ProtoReflect.Descriptor instead. +func (*ListConferenceRecordsRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{5} +} + +func (x *ListConferenceRecordsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListConferenceRecordsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListConferenceRecordsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// Response of ListConferenceRecords method. +type ListConferenceRecordsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of conferences in one page. + ConferenceRecords []*ConferenceRecord `protobuf:"bytes,1,rep,name=conference_records,json=conferenceRecords,proto3" json:"conference_records,omitempty"` + // Token to be circulated back for further List call if current List does NOT + // include all the Conferences. Unset if all conferences have been returned. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListConferenceRecordsResponse) Reset() { + *x = ListConferenceRecordsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListConferenceRecordsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListConferenceRecordsResponse) ProtoMessage() {} + +func (x *ListConferenceRecordsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[6] + 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 ListConferenceRecordsResponse.ProtoReflect.Descriptor instead. +func (*ListConferenceRecordsResponse) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{6} +} + +func (x *ListConferenceRecordsResponse) GetConferenceRecords() []*ConferenceRecord { + if x != nil { + return x.ConferenceRecords + } + return nil +} + +func (x *ListConferenceRecordsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request to get a participant. +type GetParticipantRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the participant. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetParticipantRequest) Reset() { + *x = GetParticipantRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetParticipantRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetParticipantRequest) ProtoMessage() {} + +func (x *GetParticipantRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[7] + 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 GetParticipantRequest.ProtoReflect.Descriptor instead. +func (*GetParticipantRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{7} +} + +func (x *GetParticipantRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request to fetch list of participants per conference. +type ListParticipantsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Format: `conferenceRecords/{conference_record}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Maximum number of participants to return. The service might return fewer + // than this value. + // If unspecified, at most 100 participants are returned. + // The maximum value is 250; values above 250 are coerced to 250. + // Maximum might change in the future. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Page token returned from previous List Call. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. User specified filtering condition in [EBNF + // format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). + // The following are the filterable fields: + // + // * `earliest_start_time` + // * `latest_end_time` + // + // For example, `latest_end_time IS NULL` returns active participants in + // the conference. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListParticipantsRequest) Reset() { + *x = ListParticipantsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListParticipantsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListParticipantsRequest) ProtoMessage() {} + +func (x *ListParticipantsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListParticipantsRequest.ProtoReflect.Descriptor instead. +func (*ListParticipantsRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{8} +} + +func (x *ListParticipantsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListParticipantsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListParticipantsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListParticipantsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// Response of ListParticipants method. +type ListParticipantsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of participants in one page. + Participants []*Participant `protobuf:"bytes,1,rep,name=participants,proto3" json:"participants,omitempty"` + // Token to be circulated back for further List call if current List doesn't + // include all the participants. Unset if all participants are returned. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Total, exact number of `participants`. By default, this field isn't + // included in the response. Set the field mask in + // [SystemParameterContext](https://cloud.google.com/apis/docs/system-parameters) + // to receive this field in the response. + TotalSize int32 `protobuf:"varint,3,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"` +} + +func (x *ListParticipantsResponse) Reset() { + *x = ListParticipantsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListParticipantsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListParticipantsResponse) ProtoMessage() {} + +func (x *ListParticipantsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[9] + 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 ListParticipantsResponse.ProtoReflect.Descriptor instead. +func (*ListParticipantsResponse) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{9} +} + +func (x *ListParticipantsResponse) GetParticipants() []*Participant { + if x != nil { + return x.Participants + } + return nil +} + +func (x *ListParticipantsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *ListParticipantsResponse) GetTotalSize() int32 { + if x != nil { + return x.TotalSize + } + return 0 +} + +// Request to get a participant session. +type GetParticipantSessionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the participant. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetParticipantSessionRequest) Reset() { + *x = GetParticipantSessionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetParticipantSessionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetParticipantSessionRequest) ProtoMessage() {} + +func (x *GetParticipantSessionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[10] + 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 GetParticipantSessionRequest.ProtoReflect.Descriptor instead. +func (*GetParticipantSessionRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{10} +} + +func (x *GetParticipantSessionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request to fetch list of participant sessions per conference record, per +// participant. +type ListParticipantSessionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Format: + // `conferenceRecords/{conference_record}/participants/{participant}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. Maximum number of participant sessions to return. The service + // might return fewer than this value. If unspecified, at most 100 + // participants are returned. The maximum value is 250; values above 250 are + // coerced to 250. Maximum might change in the future. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. Page token returned from previous List Call. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. User specified filtering condition in [EBNF + // format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). + // The following are the filterable fields: + // + // * `start_time` + // * `end_time` + // + // For example, `end_time IS NULL` returns active participant sessions in + // the conference record. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListParticipantSessionsRequest) Reset() { + *x = ListParticipantSessionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListParticipantSessionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListParticipantSessionsRequest) ProtoMessage() {} + +func (x *ListParticipantSessionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListParticipantSessionsRequest.ProtoReflect.Descriptor instead. +func (*ListParticipantSessionsRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{11} +} + +func (x *ListParticipantSessionsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListParticipantSessionsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListParticipantSessionsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListParticipantSessionsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// Response of ListParticipants method. +type ListParticipantSessionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of participants in one page. + ParticipantSessions []*ParticipantSession `protobuf:"bytes,1,rep,name=participant_sessions,json=participantSessions,proto3" json:"participant_sessions,omitempty"` + // Token to be circulated back for further List call if current List doesn't + // include all the participants. Unset if all participants are returned. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListParticipantSessionsResponse) Reset() { + *x = ListParticipantSessionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListParticipantSessionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListParticipantSessionsResponse) ProtoMessage() {} + +func (x *ListParticipantSessionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListParticipantSessionsResponse.ProtoReflect.Descriptor instead. +func (*ListParticipantSessionsResponse) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{12} +} + +func (x *ListParticipantSessionsResponse) GetParticipantSessions() []*ParticipantSession { + if x != nil { + return x.ParticipantSessions + } + return nil +} + +func (x *ListParticipantSessionsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request message for GetRecording method. +type GetRecordingRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the recording. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetRecordingRequest) Reset() { + *x = GetRecordingRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRecordingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRecordingRequest) ProtoMessage() {} + +func (x *GetRecordingRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRecordingRequest.ProtoReflect.Descriptor instead. +func (*GetRecordingRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{13} +} + +func (x *GetRecordingRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request for ListRecordings method. +type ListRecordingsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Format: `conferenceRecords/{conference_record}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Maximum number of recordings to return. The service might return fewer + // than this value. + // If unspecified, at most 10 recordings are returned. + // The maximum value is 100; values above 100 are coerced to 100. + // Maximum might change in the future. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Page token returned from previous List Call. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListRecordingsRequest) Reset() { + *x = ListRecordingsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRecordingsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRecordingsRequest) ProtoMessage() {} + +func (x *ListRecordingsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRecordingsRequest.ProtoReflect.Descriptor instead. +func (*ListRecordingsRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{14} +} + +func (x *ListRecordingsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListRecordingsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListRecordingsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// Response for ListRecordings method. +type ListRecordingsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of recordings in one page. + Recordings []*Recording `protobuf:"bytes,1,rep,name=recordings,proto3" json:"recordings,omitempty"` + // Token to be circulated back for further List call if current List doesn't + // include all the recordings. Unset if all recordings are returned. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListRecordingsResponse) Reset() { + *x = ListRecordingsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRecordingsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRecordingsResponse) ProtoMessage() {} + +func (x *ListRecordingsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRecordingsResponse.ProtoReflect.Descriptor instead. +func (*ListRecordingsResponse) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{15} +} + +func (x *ListRecordingsResponse) GetRecordings() []*Recording { + if x != nil { + return x.Recordings + } + return nil +} + +func (x *ListRecordingsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request for GetTranscript method. +type GetTranscriptRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the transcript. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetTranscriptRequest) Reset() { + *x = GetTranscriptRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTranscriptRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTranscriptRequest) ProtoMessage() {} + +func (x *GetTranscriptRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTranscriptRequest.ProtoReflect.Descriptor instead. +func (*GetTranscriptRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{16} +} + +func (x *GetTranscriptRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request for ListTranscripts method. +type ListTranscriptsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Format: `conferenceRecords/{conference_record}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Maximum number of transcripts to return. The service might return fewer + // than this value. + // If unspecified, at most 10 transcripts are returned. + // The maximum value is 100; values above 100 are coerced to 100. + // Maximum might change in the future. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Page token returned from previous List Call. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListTranscriptsRequest) Reset() { + *x = ListTranscriptsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTranscriptsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTranscriptsRequest) ProtoMessage() {} + +func (x *ListTranscriptsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_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 ListTranscriptsRequest.ProtoReflect.Descriptor instead. +func (*ListTranscriptsRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{17} +} + +func (x *ListTranscriptsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListTranscriptsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListTranscriptsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// Response for ListTranscripts method. +type ListTranscriptsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of transcripts in one page. + Transcripts []*Transcript `protobuf:"bytes,1,rep,name=transcripts,proto3" json:"transcripts,omitempty"` + // Token to be circulated back for further List call if current List doesn't + // include all the transcripts. Unset if all transcripts are returned. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListTranscriptsResponse) Reset() { + *x = ListTranscriptsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTranscriptsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTranscriptsResponse) ProtoMessage() {} + +func (x *ListTranscriptsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTranscriptsResponse.ProtoReflect.Descriptor instead. +func (*ListTranscriptsResponse) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{18} +} + +func (x *ListTranscriptsResponse) GetTranscripts() []*Transcript { + if x != nil { + return x.Transcripts + } + return nil +} + +func (x *ListTranscriptsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request for GetTranscriptEntry method. +type GetTranscriptEntryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the `TranscriptEntry`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetTranscriptEntryRequest) Reset() { + *x = GetTranscriptEntryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTranscriptEntryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTranscriptEntryRequest) ProtoMessage() {} + +func (x *GetTranscriptEntryRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTranscriptEntryRequest.ProtoReflect.Descriptor instead. +func (*GetTranscriptEntryRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{19} +} + +func (x *GetTranscriptEntryRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request for ListTranscriptEntries method. +type ListTranscriptEntriesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Format: + // `conferenceRecords/{conference_record}/transcripts/{transcript}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Maximum number of entries to return. The service might return fewer than + // this value. + // If unspecified, at most 10 entries are returned. + // The maximum value is 100; values above 100 are coerced to 100. + // Maximum might change in the future. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Page token returned from previous List Call. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListTranscriptEntriesRequest) Reset() { + *x = ListTranscriptEntriesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTranscriptEntriesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTranscriptEntriesRequest) ProtoMessage() {} + +func (x *ListTranscriptEntriesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTranscriptEntriesRequest.ProtoReflect.Descriptor instead. +func (*ListTranscriptEntriesRequest) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{20} +} + +func (x *ListTranscriptEntriesRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListTranscriptEntriesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListTranscriptEntriesRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// Response for ListTranscriptEntries method. +type ListTranscriptEntriesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of TranscriptEntries in one page. + TranscriptEntries []*TranscriptEntry `protobuf:"bytes,1,rep,name=transcript_entries,json=transcriptEntries,proto3" json:"transcript_entries,omitempty"` + // Token to be circulated back for further List call if current List doesn't + // include all the transcript entries. Unset if all entries are returned. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListTranscriptEntriesResponse) Reset() { + *x = ListTranscriptEntriesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTranscriptEntriesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTranscriptEntriesResponse) ProtoMessage() {} + +func (x *ListTranscriptEntriesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_apps_meet_v2_service_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTranscriptEntriesResponse.ProtoReflect.Descriptor instead. +func (*ListTranscriptEntriesResponse) Descriptor() ([]byte, []int) { + return file_google_apps_meet_v2_service_proto_rawDescGZIP(), []int{21} +} + +func (x *ListTranscriptEntriesResponse) GetTranscriptEntries() []*TranscriptEntry { + if x != nil { + return x.TranscriptEntries + } + return nil +} + +func (x *ListTranscriptEntriesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +var File_google_apps_meet_v2_service_proto protoreflect.FileDescriptor + +var file_google_apps_meet_v2_service_proto_rawDesc = []byte{ + 0x0a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6d, 0x65, + 0x65, 0x74, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, + 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6d, 0x65, 0x65, 0x74, 0x2f, 0x76, 0x32, + 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x46, + 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, + 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x48, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1b, 0x0a, + 0x19, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x40, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0x53, 0x0a, 0x1a, 0x45, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x1b, 0x0a, 0x19, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x6d, 0x65, 0x65, 0x74, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, + 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x1d, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x12, 0x63, + 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, + 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x11, + 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x54, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0xb3, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, + 0x62, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x12, 0x26, + 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x22, 0xa5, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, + 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x50, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x12, 0x1d, 0x6d, + 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x80, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, + 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x20, 0x0a, 0x1e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x12, 0x1e, 0x6d, 0x65, 0x65, 0x74, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x84, + 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x26, 0x0a, + 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x12, 0x23, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9c, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, + 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0xbf, 0x04, 0x0a, 0x0d, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x75, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, + 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, + 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, 0x21, 0xda, 0x41, 0x05, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x05, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x22, 0x0a, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x70, 0x0a, + 0x08, 0x47, 0x65, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, 0x22, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, + 0x90, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x22, 0x3c, 0xda, 0x41, 0x11, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2c, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, + 0x3a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x32, 0x19, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x13, 0x45, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, + 0x2e, 0x45, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x39, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x6e, 0x64, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x16, + 0xca, 0x41, 0x13, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x32, 0xf1, 0x10, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x22, 0x2d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x63, 0x6f, + 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0x9d, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x31, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, + 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x32, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, + 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, + 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x22, 0x3c, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x63, 0x6f, + 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, + 0x2a, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, + 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x3e, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x73, 0x12, 0xc7, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, + 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, 0x01, + 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, + 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, + 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, + 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, + 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0xda, + 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x63, 0x6f, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x29, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x3b, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, + 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x22, 0x45, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, + 0x12, 0x36, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x63, 0x6f, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc7, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, + 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, + 0x70, 0x70, 0x73, 0x2e, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x1a, 0x16, 0xca, 0x41, 0x13, 0x6d, 0x65, 0x65, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x42, 0xa1, 0x01, 0x0a, 0x17, 0x63, + 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x6d, + 0x65, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x70, 0x73, + 0x2f, 0x6d, 0x65, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6d, 0x65, 0x65, 0x74, + 0x70, 0x62, 0x3b, 0x6d, 0x65, 0x65, 0x74, 0x70, 0x62, 0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x73, 0x2e, 0x4d, 0x65, 0x65, 0x74, 0x2e, 0x56, 0x32, 0xca, + 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x41, 0x70, 0x70, 0x73, 0x5c, 0x4d, 0x65, + 0x65, 0x74, 0x5c, 0x56, 0x32, 0xea, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, + 0x41, 0x70, 0x70, 0x73, 0x3a, 0x3a, 0x4d, 0x65, 0x65, 0x74, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_apps_meet_v2_service_proto_rawDescOnce sync.Once + file_google_apps_meet_v2_service_proto_rawDescData = file_google_apps_meet_v2_service_proto_rawDesc +) + +func file_google_apps_meet_v2_service_proto_rawDescGZIP() []byte { + file_google_apps_meet_v2_service_proto_rawDescOnce.Do(func() { + file_google_apps_meet_v2_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_apps_meet_v2_service_proto_rawDescData) + }) + return file_google_apps_meet_v2_service_proto_rawDescData +} + +var file_google_apps_meet_v2_service_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_google_apps_meet_v2_service_proto_goTypes = []interface{}{ + (*CreateSpaceRequest)(nil), // 0: google.apps.meet.v2.CreateSpaceRequest + (*GetSpaceRequest)(nil), // 1: google.apps.meet.v2.GetSpaceRequest + (*UpdateSpaceRequest)(nil), // 2: google.apps.meet.v2.UpdateSpaceRequest + (*EndActiveConferenceRequest)(nil), // 3: google.apps.meet.v2.EndActiveConferenceRequest + (*GetConferenceRecordRequest)(nil), // 4: google.apps.meet.v2.GetConferenceRecordRequest + (*ListConferenceRecordsRequest)(nil), // 5: google.apps.meet.v2.ListConferenceRecordsRequest + (*ListConferenceRecordsResponse)(nil), // 6: google.apps.meet.v2.ListConferenceRecordsResponse + (*GetParticipantRequest)(nil), // 7: google.apps.meet.v2.GetParticipantRequest + (*ListParticipantsRequest)(nil), // 8: google.apps.meet.v2.ListParticipantsRequest + (*ListParticipantsResponse)(nil), // 9: google.apps.meet.v2.ListParticipantsResponse + (*GetParticipantSessionRequest)(nil), // 10: google.apps.meet.v2.GetParticipantSessionRequest + (*ListParticipantSessionsRequest)(nil), // 11: google.apps.meet.v2.ListParticipantSessionsRequest + (*ListParticipantSessionsResponse)(nil), // 12: google.apps.meet.v2.ListParticipantSessionsResponse + (*GetRecordingRequest)(nil), // 13: google.apps.meet.v2.GetRecordingRequest + (*ListRecordingsRequest)(nil), // 14: google.apps.meet.v2.ListRecordingsRequest + (*ListRecordingsResponse)(nil), // 15: google.apps.meet.v2.ListRecordingsResponse + (*GetTranscriptRequest)(nil), // 16: google.apps.meet.v2.GetTranscriptRequest + (*ListTranscriptsRequest)(nil), // 17: google.apps.meet.v2.ListTranscriptsRequest + (*ListTranscriptsResponse)(nil), // 18: google.apps.meet.v2.ListTranscriptsResponse + (*GetTranscriptEntryRequest)(nil), // 19: google.apps.meet.v2.GetTranscriptEntryRequest + (*ListTranscriptEntriesRequest)(nil), // 20: google.apps.meet.v2.ListTranscriptEntriesRequest + (*ListTranscriptEntriesResponse)(nil), // 21: google.apps.meet.v2.ListTranscriptEntriesResponse + (*Space)(nil), // 22: google.apps.meet.v2.Space + (*fieldmaskpb.FieldMask)(nil), // 23: google.protobuf.FieldMask + (*ConferenceRecord)(nil), // 24: google.apps.meet.v2.ConferenceRecord + (*Participant)(nil), // 25: google.apps.meet.v2.Participant + (*ParticipantSession)(nil), // 26: google.apps.meet.v2.ParticipantSession + (*Recording)(nil), // 27: google.apps.meet.v2.Recording + (*Transcript)(nil), // 28: google.apps.meet.v2.Transcript + (*TranscriptEntry)(nil), // 29: google.apps.meet.v2.TranscriptEntry + (*emptypb.Empty)(nil), // 30: google.protobuf.Empty +} +var file_google_apps_meet_v2_service_proto_depIdxs = []int32{ + 22, // 0: google.apps.meet.v2.CreateSpaceRequest.space:type_name -> google.apps.meet.v2.Space + 22, // 1: google.apps.meet.v2.UpdateSpaceRequest.space:type_name -> google.apps.meet.v2.Space + 23, // 2: google.apps.meet.v2.UpdateSpaceRequest.update_mask:type_name -> google.protobuf.FieldMask + 24, // 3: google.apps.meet.v2.ListConferenceRecordsResponse.conference_records:type_name -> google.apps.meet.v2.ConferenceRecord + 25, // 4: google.apps.meet.v2.ListParticipantsResponse.participants:type_name -> google.apps.meet.v2.Participant + 26, // 5: google.apps.meet.v2.ListParticipantSessionsResponse.participant_sessions:type_name -> google.apps.meet.v2.ParticipantSession + 27, // 6: google.apps.meet.v2.ListRecordingsResponse.recordings:type_name -> google.apps.meet.v2.Recording + 28, // 7: google.apps.meet.v2.ListTranscriptsResponse.transcripts:type_name -> google.apps.meet.v2.Transcript + 29, // 8: google.apps.meet.v2.ListTranscriptEntriesResponse.transcript_entries:type_name -> google.apps.meet.v2.TranscriptEntry + 0, // 9: google.apps.meet.v2.SpacesService.CreateSpace:input_type -> google.apps.meet.v2.CreateSpaceRequest + 1, // 10: google.apps.meet.v2.SpacesService.GetSpace:input_type -> google.apps.meet.v2.GetSpaceRequest + 2, // 11: google.apps.meet.v2.SpacesService.UpdateSpace:input_type -> google.apps.meet.v2.UpdateSpaceRequest + 3, // 12: google.apps.meet.v2.SpacesService.EndActiveConference:input_type -> google.apps.meet.v2.EndActiveConferenceRequest + 4, // 13: google.apps.meet.v2.ConferenceRecordsService.GetConferenceRecord:input_type -> google.apps.meet.v2.GetConferenceRecordRequest + 5, // 14: google.apps.meet.v2.ConferenceRecordsService.ListConferenceRecords:input_type -> google.apps.meet.v2.ListConferenceRecordsRequest + 7, // 15: google.apps.meet.v2.ConferenceRecordsService.GetParticipant:input_type -> google.apps.meet.v2.GetParticipantRequest + 8, // 16: google.apps.meet.v2.ConferenceRecordsService.ListParticipants:input_type -> google.apps.meet.v2.ListParticipantsRequest + 10, // 17: google.apps.meet.v2.ConferenceRecordsService.GetParticipantSession:input_type -> google.apps.meet.v2.GetParticipantSessionRequest + 11, // 18: google.apps.meet.v2.ConferenceRecordsService.ListParticipantSessions:input_type -> google.apps.meet.v2.ListParticipantSessionsRequest + 13, // 19: google.apps.meet.v2.ConferenceRecordsService.GetRecording:input_type -> google.apps.meet.v2.GetRecordingRequest + 14, // 20: google.apps.meet.v2.ConferenceRecordsService.ListRecordings:input_type -> google.apps.meet.v2.ListRecordingsRequest + 16, // 21: google.apps.meet.v2.ConferenceRecordsService.GetTranscript:input_type -> google.apps.meet.v2.GetTranscriptRequest + 17, // 22: google.apps.meet.v2.ConferenceRecordsService.ListTranscripts:input_type -> google.apps.meet.v2.ListTranscriptsRequest + 19, // 23: google.apps.meet.v2.ConferenceRecordsService.GetTranscriptEntry:input_type -> google.apps.meet.v2.GetTranscriptEntryRequest + 20, // 24: google.apps.meet.v2.ConferenceRecordsService.ListTranscriptEntries:input_type -> google.apps.meet.v2.ListTranscriptEntriesRequest + 22, // 25: google.apps.meet.v2.SpacesService.CreateSpace:output_type -> google.apps.meet.v2.Space + 22, // 26: google.apps.meet.v2.SpacesService.GetSpace:output_type -> google.apps.meet.v2.Space + 22, // 27: google.apps.meet.v2.SpacesService.UpdateSpace:output_type -> google.apps.meet.v2.Space + 30, // 28: google.apps.meet.v2.SpacesService.EndActiveConference:output_type -> google.protobuf.Empty + 24, // 29: google.apps.meet.v2.ConferenceRecordsService.GetConferenceRecord:output_type -> google.apps.meet.v2.ConferenceRecord + 6, // 30: google.apps.meet.v2.ConferenceRecordsService.ListConferenceRecords:output_type -> google.apps.meet.v2.ListConferenceRecordsResponse + 25, // 31: google.apps.meet.v2.ConferenceRecordsService.GetParticipant:output_type -> google.apps.meet.v2.Participant + 9, // 32: google.apps.meet.v2.ConferenceRecordsService.ListParticipants:output_type -> google.apps.meet.v2.ListParticipantsResponse + 26, // 33: google.apps.meet.v2.ConferenceRecordsService.GetParticipantSession:output_type -> google.apps.meet.v2.ParticipantSession + 12, // 34: google.apps.meet.v2.ConferenceRecordsService.ListParticipantSessions:output_type -> google.apps.meet.v2.ListParticipantSessionsResponse + 27, // 35: google.apps.meet.v2.ConferenceRecordsService.GetRecording:output_type -> google.apps.meet.v2.Recording + 15, // 36: google.apps.meet.v2.ConferenceRecordsService.ListRecordings:output_type -> google.apps.meet.v2.ListRecordingsResponse + 28, // 37: google.apps.meet.v2.ConferenceRecordsService.GetTranscript:output_type -> google.apps.meet.v2.Transcript + 18, // 38: google.apps.meet.v2.ConferenceRecordsService.ListTranscripts:output_type -> google.apps.meet.v2.ListTranscriptsResponse + 29, // 39: google.apps.meet.v2.ConferenceRecordsService.GetTranscriptEntry:output_type -> google.apps.meet.v2.TranscriptEntry + 21, // 40: google.apps.meet.v2.ConferenceRecordsService.ListTranscriptEntries:output_type -> google.apps.meet.v2.ListTranscriptEntriesResponse + 25, // [25:41] is the sub-list for method output_type + 9, // [9:25] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_google_apps_meet_v2_service_proto_init() } +func file_google_apps_meet_v2_service_proto_init() { + if File_google_apps_meet_v2_service_proto != nil { + return + } + file_google_apps_meet_v2_resource_proto_init() + if !protoimpl.UnsafeEnabled { + file_google_apps_meet_v2_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateSpaceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSpaceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateSpaceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndActiveConferenceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetConferenceRecordRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListConferenceRecordsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListConferenceRecordsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetParticipantRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListParticipantsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListParticipantsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetParticipantSessionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListParticipantSessionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListParticipantSessionsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRecordingRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRecordingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRecordingsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTranscriptRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTranscriptsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTranscriptsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTranscriptEntryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTranscriptEntriesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_apps_meet_v2_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTranscriptEntriesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_apps_meet_v2_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 22, + NumExtensions: 0, + NumServices: 2, + }, + GoTypes: file_google_apps_meet_v2_service_proto_goTypes, + DependencyIndexes: file_google_apps_meet_v2_service_proto_depIdxs, + MessageInfos: file_google_apps_meet_v2_service_proto_msgTypes, + }.Build() + File_google_apps_meet_v2_service_proto = out.File + file_google_apps_meet_v2_service_proto_rawDesc = nil + file_google_apps_meet_v2_service_proto_goTypes = nil + file_google_apps_meet_v2_service_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// SpacesServiceClient is the client API for SpacesService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type SpacesServiceClient interface { + // Creates a space. + CreateSpace(ctx context.Context, in *CreateSpaceRequest, opts ...grpc.CallOption) (*Space, error) + // Gets a space by `space_id` or `meeting_code`. + GetSpace(ctx context.Context, in *GetSpaceRequest, opts ...grpc.CallOption) (*Space, error) + // Updates a space. + UpdateSpace(ctx context.Context, in *UpdateSpaceRequest, opts ...grpc.CallOption) (*Space, error) + // Ends an active conference (if there's one). + EndActiveConference(ctx context.Context, in *EndActiveConferenceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type spacesServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewSpacesServiceClient(cc grpc.ClientConnInterface) SpacesServiceClient { + return &spacesServiceClient{cc} +} + +func (c *spacesServiceClient) CreateSpace(ctx context.Context, in *CreateSpaceRequest, opts ...grpc.CallOption) (*Space, error) { + out := new(Space) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.SpacesService/CreateSpace", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *spacesServiceClient) GetSpace(ctx context.Context, in *GetSpaceRequest, opts ...grpc.CallOption) (*Space, error) { + out := new(Space) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.SpacesService/GetSpace", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *spacesServiceClient) UpdateSpace(ctx context.Context, in *UpdateSpaceRequest, opts ...grpc.CallOption) (*Space, error) { + out := new(Space) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.SpacesService/UpdateSpace", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *spacesServiceClient) EndActiveConference(ctx context.Context, in *EndActiveConferenceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.SpacesService/EndActiveConference", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// SpacesServiceServer is the server API for SpacesService service. +type SpacesServiceServer interface { + // Creates a space. + CreateSpace(context.Context, *CreateSpaceRequest) (*Space, error) + // Gets a space by `space_id` or `meeting_code`. + GetSpace(context.Context, *GetSpaceRequest) (*Space, error) + // Updates a space. + UpdateSpace(context.Context, *UpdateSpaceRequest) (*Space, error) + // Ends an active conference (if there's one). + EndActiveConference(context.Context, *EndActiveConferenceRequest) (*emptypb.Empty, error) +} + +// UnimplementedSpacesServiceServer can be embedded to have forward compatible implementations. +type UnimplementedSpacesServiceServer struct { +} + +func (*UnimplementedSpacesServiceServer) CreateSpace(context.Context, *CreateSpaceRequest) (*Space, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateSpace not implemented") +} +func (*UnimplementedSpacesServiceServer) GetSpace(context.Context, *GetSpaceRequest) (*Space, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSpace not implemented") +} +func (*UnimplementedSpacesServiceServer) UpdateSpace(context.Context, *UpdateSpaceRequest) (*Space, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateSpace not implemented") +} +func (*UnimplementedSpacesServiceServer) EndActiveConference(context.Context, *EndActiveConferenceRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method EndActiveConference not implemented") +} + +func RegisterSpacesServiceServer(s *grpc.Server, srv SpacesServiceServer) { + s.RegisterService(&_SpacesService_serviceDesc, srv) +} + +func _SpacesService_CreateSpace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateSpaceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SpacesServiceServer).CreateSpace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.SpacesService/CreateSpace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SpacesServiceServer).CreateSpace(ctx, req.(*CreateSpaceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SpacesService_GetSpace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSpaceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SpacesServiceServer).GetSpace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.SpacesService/GetSpace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SpacesServiceServer).GetSpace(ctx, req.(*GetSpaceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SpacesService_UpdateSpace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateSpaceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SpacesServiceServer).UpdateSpace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.SpacesService/UpdateSpace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SpacesServiceServer).UpdateSpace(ctx, req.(*UpdateSpaceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SpacesService_EndActiveConference_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndActiveConferenceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SpacesServiceServer).EndActiveConference(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.SpacesService/EndActiveConference", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SpacesServiceServer).EndActiveConference(ctx, req.(*EndActiveConferenceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _SpacesService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.apps.meet.v2.SpacesService", + HandlerType: (*SpacesServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateSpace", + Handler: _SpacesService_CreateSpace_Handler, + }, + { + MethodName: "GetSpace", + Handler: _SpacesService_GetSpace_Handler, + }, + { + MethodName: "UpdateSpace", + Handler: _SpacesService_UpdateSpace_Handler, + }, + { + MethodName: "EndActiveConference", + Handler: _SpacesService_EndActiveConference_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/apps/meet/v2/service.proto", +} + +// ConferenceRecordsServiceClient is the client API for ConferenceRecordsService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ConferenceRecordsServiceClient interface { + // Gets a conference record by conference ID. + GetConferenceRecord(ctx context.Context, in *GetConferenceRecordRequest, opts ...grpc.CallOption) (*ConferenceRecord, error) + // Lists the conference records. By default, ordered by start time and in + // descending order. + ListConferenceRecords(ctx context.Context, in *ListConferenceRecordsRequest, opts ...grpc.CallOption) (*ListConferenceRecordsResponse, error) + // Gets a participant by participant ID. + GetParticipant(ctx context.Context, in *GetParticipantRequest, opts ...grpc.CallOption) (*Participant, error) + // Lists the participants in a conference record. By default, ordered by join + // time and in descending order. This API supports `fields` as standard + // parameters like every other API. However, when the `fields` request + // parameter is omitted, this API defaults to `'participants/*, + // next_page_token'`. + ListParticipants(ctx context.Context, in *ListParticipantsRequest, opts ...grpc.CallOption) (*ListParticipantsResponse, error) + // Gets a participant session by participant session ID. + GetParticipantSession(ctx context.Context, in *GetParticipantSessionRequest, opts ...grpc.CallOption) (*ParticipantSession, error) + // Lists the participant sessions of a participant in a conference record. By + // default, ordered by join time and in descending order. This API supports + // `fields` as standard parameters like every other API. However, when the + // `fields` request parameter is omitted this API defaults to + // `'participantsessions/*, next_page_token'`. + ListParticipantSessions(ctx context.Context, in *ListParticipantSessionsRequest, opts ...grpc.CallOption) (*ListParticipantSessionsResponse, error) + // Gets a recording by recording ID. + GetRecording(ctx context.Context, in *GetRecordingRequest, opts ...grpc.CallOption) (*Recording, error) + // Lists the recording resources from the conference record. By default, + // ordered by start time and in ascending order. + ListRecordings(ctx context.Context, in *ListRecordingsRequest, opts ...grpc.CallOption) (*ListRecordingsResponse, error) + // Gets a transcript by transcript ID. + GetTranscript(ctx context.Context, in *GetTranscriptRequest, opts ...grpc.CallOption) (*Transcript, error) + // Lists the set of transcripts from the conference record. By default, + // ordered by start time and in ascending order. + ListTranscripts(ctx context.Context, in *ListTranscriptsRequest, opts ...grpc.CallOption) (*ListTranscriptsResponse, error) + // Gets a `TranscriptEntry` resource by entry ID. + // + // Note: The transcript entries returned by the Google Meet API might not + // match the transcription found in the Google Docs transcript file. This can + // occur when the Google Docs transcript file is modified after generation. + GetTranscriptEntry(ctx context.Context, in *GetTranscriptEntryRequest, opts ...grpc.CallOption) (*TranscriptEntry, error) + // Lists the structured transcript entries per transcript. By default, ordered + // by start time and in ascending order. + // + // Note: The transcript entries returned by the Google Meet API might not + // match the transcription found in the Google Docs transcript file. This can + // occur when the Google Docs transcript file is modified after generation. + ListTranscriptEntries(ctx context.Context, in *ListTranscriptEntriesRequest, opts ...grpc.CallOption) (*ListTranscriptEntriesResponse, error) +} + +type conferenceRecordsServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewConferenceRecordsServiceClient(cc grpc.ClientConnInterface) ConferenceRecordsServiceClient { + return &conferenceRecordsServiceClient{cc} +} + +func (c *conferenceRecordsServiceClient) GetConferenceRecord(ctx context.Context, in *GetConferenceRecordRequest, opts ...grpc.CallOption) (*ConferenceRecord, error) { + out := new(ConferenceRecord) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/GetConferenceRecord", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) ListConferenceRecords(ctx context.Context, in *ListConferenceRecordsRequest, opts ...grpc.CallOption) (*ListConferenceRecordsResponse, error) { + out := new(ListConferenceRecordsResponse) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/ListConferenceRecords", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) GetParticipant(ctx context.Context, in *GetParticipantRequest, opts ...grpc.CallOption) (*Participant, error) { + out := new(Participant) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/GetParticipant", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) ListParticipants(ctx context.Context, in *ListParticipantsRequest, opts ...grpc.CallOption) (*ListParticipantsResponse, error) { + out := new(ListParticipantsResponse) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/ListParticipants", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) GetParticipantSession(ctx context.Context, in *GetParticipantSessionRequest, opts ...grpc.CallOption) (*ParticipantSession, error) { + out := new(ParticipantSession) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/GetParticipantSession", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) ListParticipantSessions(ctx context.Context, in *ListParticipantSessionsRequest, opts ...grpc.CallOption) (*ListParticipantSessionsResponse, error) { + out := new(ListParticipantSessionsResponse) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/ListParticipantSessions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) GetRecording(ctx context.Context, in *GetRecordingRequest, opts ...grpc.CallOption) (*Recording, error) { + out := new(Recording) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/GetRecording", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) ListRecordings(ctx context.Context, in *ListRecordingsRequest, opts ...grpc.CallOption) (*ListRecordingsResponse, error) { + out := new(ListRecordingsResponse) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/ListRecordings", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) GetTranscript(ctx context.Context, in *GetTranscriptRequest, opts ...grpc.CallOption) (*Transcript, error) { + out := new(Transcript) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/GetTranscript", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) ListTranscripts(ctx context.Context, in *ListTranscriptsRequest, opts ...grpc.CallOption) (*ListTranscriptsResponse, error) { + out := new(ListTranscriptsResponse) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/ListTranscripts", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) GetTranscriptEntry(ctx context.Context, in *GetTranscriptEntryRequest, opts ...grpc.CallOption) (*TranscriptEntry, error) { + out := new(TranscriptEntry) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/GetTranscriptEntry", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *conferenceRecordsServiceClient) ListTranscriptEntries(ctx context.Context, in *ListTranscriptEntriesRequest, opts ...grpc.CallOption) (*ListTranscriptEntriesResponse, error) { + out := new(ListTranscriptEntriesResponse) + err := c.cc.Invoke(ctx, "/google.apps.meet.v2.ConferenceRecordsService/ListTranscriptEntries", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ConferenceRecordsServiceServer is the server API for ConferenceRecordsService service. +type ConferenceRecordsServiceServer interface { + // Gets a conference record by conference ID. + GetConferenceRecord(context.Context, *GetConferenceRecordRequest) (*ConferenceRecord, error) + // Lists the conference records. By default, ordered by start time and in + // descending order. + ListConferenceRecords(context.Context, *ListConferenceRecordsRequest) (*ListConferenceRecordsResponse, error) + // Gets a participant by participant ID. + GetParticipant(context.Context, *GetParticipantRequest) (*Participant, error) + // Lists the participants in a conference record. By default, ordered by join + // time and in descending order. This API supports `fields` as standard + // parameters like every other API. However, when the `fields` request + // parameter is omitted, this API defaults to `'participants/*, + // next_page_token'`. + ListParticipants(context.Context, *ListParticipantsRequest) (*ListParticipantsResponse, error) + // Gets a participant session by participant session ID. + GetParticipantSession(context.Context, *GetParticipantSessionRequest) (*ParticipantSession, error) + // Lists the participant sessions of a participant in a conference record. By + // default, ordered by join time and in descending order. This API supports + // `fields` as standard parameters like every other API. However, when the + // `fields` request parameter is omitted this API defaults to + // `'participantsessions/*, next_page_token'`. + ListParticipantSessions(context.Context, *ListParticipantSessionsRequest) (*ListParticipantSessionsResponse, error) + // Gets a recording by recording ID. + GetRecording(context.Context, *GetRecordingRequest) (*Recording, error) + // Lists the recording resources from the conference record. By default, + // ordered by start time and in ascending order. + ListRecordings(context.Context, *ListRecordingsRequest) (*ListRecordingsResponse, error) + // Gets a transcript by transcript ID. + GetTranscript(context.Context, *GetTranscriptRequest) (*Transcript, error) + // Lists the set of transcripts from the conference record. By default, + // ordered by start time and in ascending order. + ListTranscripts(context.Context, *ListTranscriptsRequest) (*ListTranscriptsResponse, error) + // Gets a `TranscriptEntry` resource by entry ID. + // + // Note: The transcript entries returned by the Google Meet API might not + // match the transcription found in the Google Docs transcript file. This can + // occur when the Google Docs transcript file is modified after generation. + GetTranscriptEntry(context.Context, *GetTranscriptEntryRequest) (*TranscriptEntry, error) + // Lists the structured transcript entries per transcript. By default, ordered + // by start time and in ascending order. + // + // Note: The transcript entries returned by the Google Meet API might not + // match the transcription found in the Google Docs transcript file. This can + // occur when the Google Docs transcript file is modified after generation. + ListTranscriptEntries(context.Context, *ListTranscriptEntriesRequest) (*ListTranscriptEntriesResponse, error) +} + +// UnimplementedConferenceRecordsServiceServer can be embedded to have forward compatible implementations. +type UnimplementedConferenceRecordsServiceServer struct { +} + +func (*UnimplementedConferenceRecordsServiceServer) GetConferenceRecord(context.Context, *GetConferenceRecordRequest) (*ConferenceRecord, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetConferenceRecord not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) ListConferenceRecords(context.Context, *ListConferenceRecordsRequest) (*ListConferenceRecordsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListConferenceRecords not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) GetParticipant(context.Context, *GetParticipantRequest) (*Participant, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetParticipant not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) ListParticipants(context.Context, *ListParticipantsRequest) (*ListParticipantsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListParticipants not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) GetParticipantSession(context.Context, *GetParticipantSessionRequest) (*ParticipantSession, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetParticipantSession not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) ListParticipantSessions(context.Context, *ListParticipantSessionsRequest) (*ListParticipantSessionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListParticipantSessions not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) GetRecording(context.Context, *GetRecordingRequest) (*Recording, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetRecording not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) ListRecordings(context.Context, *ListRecordingsRequest) (*ListRecordingsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRecordings not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) GetTranscript(context.Context, *GetTranscriptRequest) (*Transcript, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTranscript not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) ListTranscripts(context.Context, *ListTranscriptsRequest) (*ListTranscriptsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTranscripts not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) GetTranscriptEntry(context.Context, *GetTranscriptEntryRequest) (*TranscriptEntry, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTranscriptEntry not implemented") +} +func (*UnimplementedConferenceRecordsServiceServer) ListTranscriptEntries(context.Context, *ListTranscriptEntriesRequest) (*ListTranscriptEntriesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTranscriptEntries not implemented") +} + +func RegisterConferenceRecordsServiceServer(s *grpc.Server, srv ConferenceRecordsServiceServer) { + s.RegisterService(&_ConferenceRecordsService_serviceDesc, srv) +} + +func _ConferenceRecordsService_GetConferenceRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetConferenceRecordRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).GetConferenceRecord(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/GetConferenceRecord", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).GetConferenceRecord(ctx, req.(*GetConferenceRecordRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_ListConferenceRecords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListConferenceRecordsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).ListConferenceRecords(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/ListConferenceRecords", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).ListConferenceRecords(ctx, req.(*ListConferenceRecordsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_GetParticipant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetParticipantRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).GetParticipant(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/GetParticipant", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).GetParticipant(ctx, req.(*GetParticipantRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_ListParticipants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListParticipantsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).ListParticipants(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/ListParticipants", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).ListParticipants(ctx, req.(*ListParticipantsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_GetParticipantSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetParticipantSessionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).GetParticipantSession(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/GetParticipantSession", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).GetParticipantSession(ctx, req.(*GetParticipantSessionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_ListParticipantSessions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListParticipantSessionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).ListParticipantSessions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/ListParticipantSessions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).ListParticipantSessions(ctx, req.(*ListParticipantSessionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_GetRecording_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRecordingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).GetRecording(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/GetRecording", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).GetRecording(ctx, req.(*GetRecordingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_ListRecordings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListRecordingsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).ListRecordings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/ListRecordings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).ListRecordings(ctx, req.(*ListRecordingsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_GetTranscript_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTranscriptRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).GetTranscript(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/GetTranscript", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).GetTranscript(ctx, req.(*GetTranscriptRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_ListTranscripts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTranscriptsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).ListTranscripts(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/ListTranscripts", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).ListTranscripts(ctx, req.(*ListTranscriptsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_GetTranscriptEntry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTranscriptEntryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).GetTranscriptEntry(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/GetTranscriptEntry", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).GetTranscriptEntry(ctx, req.(*GetTranscriptEntryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConferenceRecordsService_ListTranscriptEntries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTranscriptEntriesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConferenceRecordsServiceServer).ListTranscriptEntries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.apps.meet.v2.ConferenceRecordsService/ListTranscriptEntries", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConferenceRecordsServiceServer).ListTranscriptEntries(ctx, req.(*ListTranscriptEntriesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ConferenceRecordsService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.apps.meet.v2.ConferenceRecordsService", + HandlerType: (*ConferenceRecordsServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetConferenceRecord", + Handler: _ConferenceRecordsService_GetConferenceRecord_Handler, + }, + { + MethodName: "ListConferenceRecords", + Handler: _ConferenceRecordsService_ListConferenceRecords_Handler, + }, + { + MethodName: "GetParticipant", + Handler: _ConferenceRecordsService_GetParticipant_Handler, + }, + { + MethodName: "ListParticipants", + Handler: _ConferenceRecordsService_ListParticipants_Handler, + }, + { + MethodName: "GetParticipantSession", + Handler: _ConferenceRecordsService_GetParticipantSession_Handler, + }, + { + MethodName: "ListParticipantSessions", + Handler: _ConferenceRecordsService_ListParticipantSessions_Handler, + }, + { + MethodName: "GetRecording", + Handler: _ConferenceRecordsService_GetRecording_Handler, + }, + { + MethodName: "ListRecordings", + Handler: _ConferenceRecordsService_ListRecordings_Handler, + }, + { + MethodName: "GetTranscript", + Handler: _ConferenceRecordsService_GetTranscript_Handler, + }, + { + MethodName: "ListTranscripts", + Handler: _ConferenceRecordsService_ListTranscripts_Handler, + }, + { + MethodName: "GetTranscriptEntry", + Handler: _ConferenceRecordsService_GetTranscriptEntry_Handler, + }, + { + MethodName: "ListTranscriptEntries", + Handler: _ConferenceRecordsService_ListTranscriptEntries_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/apps/meet/v2/service.proto", +} diff --git a/apps/meet/apiv2/spaces_client.go b/apps/meet/apiv2/spaces_client.go new file mode 100755 index 000000000000..316e6461a88c --- /dev/null +++ b/apps/meet/apiv2/spaces_client.go @@ -0,0 +1,633 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package meet + +import ( + "bytes" + "context" + "fmt" + "io" + "math" + "net/http" + "net/url" + "time" + + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/googleapi" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" +) + +var newSpacesClientHook clientHook + +// SpacesCallOptions contains the retry settings for each method of SpacesClient. +type SpacesCallOptions struct { + CreateSpace []gax.CallOption + GetSpace []gax.CallOption + UpdateSpace []gax.CallOption + EndActiveConference []gax.CallOption +} + +func defaultSpacesGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("meet.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("meet.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("meet.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://meet.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultSpacesCallOptions() *SpacesCallOptions { + return &SpacesCallOptions{ + CreateSpace: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + GetSpace: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + UpdateSpace: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + EndActiveConference: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + } +} + +func defaultSpacesRESTCallOptions() *SpacesCallOptions { + return &SpacesCallOptions{ + CreateSpace: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + GetSpace: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateSpace: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + EndActiveConference: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + } +} + +// internalSpacesClient is an interface that defines the methods available from Google Meet API. +type internalSpacesClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + CreateSpace(context.Context, *meetpb.CreateSpaceRequest, ...gax.CallOption) (*meetpb.Space, error) + GetSpace(context.Context, *meetpb.GetSpaceRequest, ...gax.CallOption) (*meetpb.Space, error) + UpdateSpace(context.Context, *meetpb.UpdateSpaceRequest, ...gax.CallOption) (*meetpb.Space, error) + EndActiveConference(context.Context, *meetpb.EndActiveConferenceRequest, ...gax.CallOption) error +} + +// SpacesClient is a client for interacting with Google Meet API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// REST API for services dealing with spaces. +type SpacesClient struct { + // The internal transport-dependent client. + internalClient internalSpacesClient + + // The call options for this service. + CallOptions *SpacesCallOptions +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *SpacesClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *SpacesClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *SpacesClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// CreateSpace creates a space. +func (c *SpacesClient) CreateSpace(ctx context.Context, req *meetpb.CreateSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + return c.internalClient.CreateSpace(ctx, req, opts...) +} + +// GetSpace gets a space by space_id or meeting_code. +func (c *SpacesClient) GetSpace(ctx context.Context, req *meetpb.GetSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + return c.internalClient.GetSpace(ctx, req, opts...) +} + +// UpdateSpace updates a space. +func (c *SpacesClient) UpdateSpace(ctx context.Context, req *meetpb.UpdateSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + return c.internalClient.UpdateSpace(ctx, req, opts...) +} + +// EndActiveConference ends an active conference (if there’s one). +func (c *SpacesClient) EndActiveConference(ctx context.Context, req *meetpb.EndActiveConferenceRequest, opts ...gax.CallOption) error { + return c.internalClient.EndActiveConference(ctx, req, opts...) +} + +// spacesGRPCClient is a client for interacting with Google Meet API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type spacesGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing SpacesClient + CallOptions **SpacesCallOptions + + // The gRPC API client. + spacesClient meetpb.SpacesServiceClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string +} + +// NewSpacesClient creates a new spaces service client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// REST API for services dealing with spaces. +func NewSpacesClient(ctx context.Context, opts ...option.ClientOption) (*SpacesClient, error) { + clientOpts := defaultSpacesGRPCClientOptions() + if newSpacesClientHook != nil { + hookOpts, err := newSpacesClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := SpacesClient{CallOptions: defaultSpacesCallOptions()} + + c := &spacesGRPCClient{ + connPool: connPool, + spacesClient: meetpb.NewSpacesServiceClient(connPool), + CallOptions: &client.CallOptions, + } + c.setGoogleClientInfo() + + client.internalClient = c + + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *spacesGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *spacesGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) + c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *spacesGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type spacesRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing SpacesClient + CallOptions **SpacesCallOptions +} + +// NewSpacesRESTClient creates a new spaces service rest client. +// +// REST API for services dealing with spaces. +func NewSpacesRESTClient(ctx context.Context, opts ...option.ClientOption) (*SpacesClient, error) { + clientOpts := append(defaultSpacesRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultSpacesRESTCallOptions() + c := &spacesRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + } + c.setGoogleClientInfo() + + return &SpacesClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultSpacesRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://meet.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://meet.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://meet.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://meet.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *spacesRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") + c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *spacesRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *spacesRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *spacesGRPCClient) CreateSpace(ctx context.Context, req *meetpb.CreateSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) + opts = append((*c.CallOptions).CreateSpace[0:len((*c.CallOptions).CreateSpace):len((*c.CallOptions).CreateSpace)], opts...) + var resp *meetpb.Space + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.spacesClient.CreateSpace(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *spacesGRPCClient) GetSpace(ctx context.Context, req *meetpb.GetSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetSpace[0:len((*c.CallOptions).GetSpace):len((*c.CallOptions).GetSpace)], opts...) + var resp *meetpb.Space + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.spacesClient.GetSpace(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *spacesGRPCClient) UpdateSpace(ctx context.Context, req *meetpb.UpdateSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "space.name", url.QueryEscape(req.GetSpace().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateSpace[0:len((*c.CallOptions).UpdateSpace):len((*c.CallOptions).UpdateSpace)], opts...) + var resp *meetpb.Space + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.spacesClient.UpdateSpace(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *spacesGRPCClient) EndActiveConference(ctx context.Context, req *meetpb.EndActiveConferenceRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).EndActiveConference[0:len((*c.CallOptions).EndActiveConference):len((*c.CallOptions).EndActiveConference)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.spacesClient.EndActiveConference(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +// CreateSpace creates a space. +func (c *spacesRESTClient) CreateSpace(ctx context.Context, req *meetpb.CreateSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetSpace() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/spaces") + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreateSpace[0:len((*c.CallOptions).CreateSpace):len((*c.CallOptions).CreateSpace)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.Space{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// GetSpace gets a space by space_id or meeting_code. +func (c *spacesRESTClient) GetSpace(ctx context.Context, req *meetpb.GetSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetSpace[0:len((*c.CallOptions).GetSpace):len((*c.CallOptions).GetSpace)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.Space{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// UpdateSpace updates a space. +func (c *spacesRESTClient) UpdateSpace(ctx context.Context, req *meetpb.UpdateSpaceRequest, opts ...gax.CallOption) (*meetpb.Space, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetSpace() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v2/%v", req.GetSpace().GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + updateMask, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(updateMask[1:len(updateMask)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "space.name", url.QueryEscape(req.GetSpace().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateSpace[0:len((*c.CallOptions).UpdateSpace):len((*c.CallOptions).UpdateSpace)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &meetpb.Space{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// EndActiveConference ends an active conference (if there’s one). +func (c *spacesRESTClient) EndActiveConference(ctx context.Context, req *meetpb.EndActiveConferenceRequest, opts ...gax.CallOption) error { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v2/%v:endActiveConference", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) + }, opts...) +} diff --git a/apps/meet/apiv2/spaces_client_example_test.go b/apps/meet/apiv2/spaces_client_example_test.go new file mode 100644 index 000000000000..f30030e0dc30 --- /dev/null +++ b/apps/meet/apiv2/spaces_client_example_test.go @@ -0,0 +1,156 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package meet_test + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func ExampleNewSpacesClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewSpacesRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleSpacesClient_CreateSpace() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.CreateSpaceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#CreateSpaceRequest. + } + resp, err := c.CreateSpace(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleSpacesClient_EndActiveConference() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.EndActiveConferenceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#EndActiveConferenceRequest. + } + err = c.EndActiveConference(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleSpacesClient_GetSpace() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetSpaceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetSpaceRequest. + } + resp, err := c.GetSpace(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleSpacesClient_UpdateSpace() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.UpdateSpaceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#UpdateSpaceRequest. + } + resp, err := c.UpdateSpace(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} diff --git a/apps/meet/apiv2/version.go b/apps/meet/apiv2/version.go new file mode 100644 index 000000000000..b1dccc88e7f9 --- /dev/null +++ b/apps/meet/apiv2/version.go @@ -0,0 +1,23 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by gapicgen. DO NOT EDIT. + +package meet + +import "cloud.google.com/go/apps/internal" + +func init() { + versionClient = internal.Version +} diff --git a/documentai/apiv1beta3/documentaipb/processor.pb.go b/documentai/apiv1beta3/documentaipb/processor.pb.go index 013bf42c9ff7..db6c866791e5 100755 --- a/documentai/apiv1beta3/documentaipb/processor.pb.go +++ b/documentai/apiv1beta3/documentaipb/processor.pb.go @@ -114,6 +114,59 @@ func (ProcessorVersion_State) EnumDescriptor() ([]byte, []int) { return file_google_cloud_documentai_v1beta3_processor_proto_rawDescGZIP(), []int{0, 0} } +// The possible model types of the processor version. +type ProcessorVersion_ModelType int32 + +const ( + // The processor version has unspecified model type. + ProcessorVersion_MODEL_TYPE_UNSPECIFIED ProcessorVersion_ModelType = 0 + // The processor version has generative model type. + ProcessorVersion_MODEL_TYPE_GENERATIVE ProcessorVersion_ModelType = 1 + // The processor version has custom model type. + ProcessorVersion_MODEL_TYPE_CUSTOM ProcessorVersion_ModelType = 2 +) + +// Enum value maps for ProcessorVersion_ModelType. +var ( + ProcessorVersion_ModelType_name = map[int32]string{ + 0: "MODEL_TYPE_UNSPECIFIED", + 1: "MODEL_TYPE_GENERATIVE", + 2: "MODEL_TYPE_CUSTOM", + } + ProcessorVersion_ModelType_value = map[string]int32{ + "MODEL_TYPE_UNSPECIFIED": 0, + "MODEL_TYPE_GENERATIVE": 1, + "MODEL_TYPE_CUSTOM": 2, + } +) + +func (x ProcessorVersion_ModelType) Enum() *ProcessorVersion_ModelType { + p := new(ProcessorVersion_ModelType) + *p = x + return p +} + +func (x ProcessorVersion_ModelType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProcessorVersion_ModelType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_documentai_v1beta3_processor_proto_enumTypes[1].Descriptor() +} + +func (ProcessorVersion_ModelType) Type() protoreflect.EnumType { + return &file_google_cloud_documentai_v1beta3_processor_proto_enumTypes[1] +} + +func (x ProcessorVersion_ModelType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProcessorVersion_ModelType.Descriptor instead. +func (ProcessorVersion_ModelType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_documentai_v1beta3_processor_proto_rawDescGZIP(), []int{0, 1} +} + // The possible states of the processor. type Processor_State int32 @@ -179,11 +232,11 @@ func (x Processor_State) String() string { } func (Processor_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_documentai_v1beta3_processor_proto_enumTypes[1].Descriptor() + return file_google_cloud_documentai_v1beta3_processor_proto_enumTypes[2].Descriptor() } func (Processor_State) Type() protoreflect.EnumType { - return &file_google_cloud_documentai_v1beta3_processor_proto_enumTypes[1] + return &file_google_cloud_documentai_v1beta3_processor_proto_enumTypes[2] } func (x Processor_State) Number() protoreflect.EnumNumber { @@ -226,6 +279,8 @@ type ProcessorVersion struct { GoogleManaged bool `protobuf:"varint,11,opt,name=google_managed,json=googleManaged,proto3" json:"google_managed,omitempty"` // If set, information about the eventual deprecation of this version. DeprecationInfo *ProcessorVersion_DeprecationInfo `protobuf:"bytes,13,opt,name=deprecation_info,json=deprecationInfo,proto3" json:"deprecation_info,omitempty"` + // Output only. The model type of this processor version. + ModelType ProcessorVersion_ModelType `protobuf:"varint,15,opt,name=model_type,json=modelType,proto3,enum=google.cloud.documentai.v1beta3.ProcessorVersion_ModelType" json:"model_type,omitempty"` } func (x *ProcessorVersion) Reset() { @@ -330,6 +385,13 @@ func (x *ProcessorVersion) GetDeprecationInfo() *ProcessorVersion_DeprecationInf return nil } +func (x *ProcessorVersion) GetModelType() ProcessorVersion_ModelType { + if x != nil { + return x.ModelType + } + return ProcessorVersion_MODEL_TYPE_UNSPECIFIED +} + // Contains the alias and the aliased resource name of processor version. type ProcessorVersionAlias struct { state protoimpl.MessageState @@ -593,7 +655,7 @@ var file_google_cloud_documentai_v1beta3_processor_proto_rawDesc = []byte{ 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0x2f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x08, 0x0a, 0x10, 0x50, 0x72, 0x6f, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xba, 0x0a, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, @@ -633,112 +695,124 @@ var file_google_cloud_documentai_v1beta3_processor_proto_rawDesc = []byte{ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0xcd, 0x01, 0x0a, 0x0f, 0x44, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x45, - 0x0a, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x73, 0x0a, 0x1d, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xfa, 0x41, - 0x2c, 0x0a, 0x2a, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x72, - 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, - 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x44, 0x45, - 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x44, 0x45, - 0x50, 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, - 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x08, - 0x3a, 0x96, 0x01, 0xea, 0x41, 0x92, 0x01, 0x0a, 0x2a, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x6f, 0x72, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x22, 0x8b, 0x01, 0x0a, 0x15, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x5c, 0x0a, 0x11, 0x70, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x0a, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, + 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xcd, 0x01, 0x0a, 0x0f, + 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x45, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x73, 0x0a, 0x1d, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xfa, + 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x1b, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, + 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, + 0x50, 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, + 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, + 0x08, 0x22, 0x59, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x4f, + 0x44, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, + 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x02, 0x3a, 0x96, 0x01, 0xea, + 0x41, 0x92, 0x01, 0x0a, 0x2a, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x64, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x22, 0x8b, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x5c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2f, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x8d, 0x06, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, + 0x72, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xe0, 0x41, 0x05, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x6b, 0x0a, 0x19, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8d, 0x06, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x05, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x69, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x6f, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x6b, 0x0a, 0x19, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x77, 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, - 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x10, 0x70, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x70, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, - 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 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, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x6b, - 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7e, 0x0a, - 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, - 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, - 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, - 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, - 0x47, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, - 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x3a, 0x68, 0xea, - 0x41, 0x65, 0x0a, 0x23, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x3e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x7d, 0x42, 0xea, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0x42, - 0x13, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x69, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x6f, 0x72, 0x50, 0x01, 0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x33, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x70, 0x62, 0x3b, 0x64, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x41, 0x49, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x33, 0xca, 0x02, 0x1f, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x49, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0xea, - 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, - 0x3a, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x49, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x77, + 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x17, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6b, + 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, + 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x49, 0x4e, 0x47, + 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, + 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, + 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x3a, 0x68, 0xea, 0x41, 0x65, 0x0a, 0x23, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x6f, 0x72, 0x12, 0x3e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x6f, 0x72, 0x7d, 0x42, 0xea, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x69, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0x42, 0x13, 0x44, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x69, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, + 0x50, 0x01, 0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x61, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0x2f, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x69, 0x70, 0x62, 0x3b, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x69, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, + 0x49, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x33, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x41, 0x49, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, 0xea, 0x02, 0x22, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x49, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x33, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -753,34 +827,36 @@ func file_google_cloud_documentai_v1beta3_processor_proto_rawDescGZIP() []byte { return file_google_cloud_documentai_v1beta3_processor_proto_rawDescData } -var file_google_cloud_documentai_v1beta3_processor_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_google_cloud_documentai_v1beta3_processor_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_google_cloud_documentai_v1beta3_processor_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_google_cloud_documentai_v1beta3_processor_proto_goTypes = []interface{}{ (ProcessorVersion_State)(0), // 0: google.cloud.documentai.v1beta3.ProcessorVersion.State - (Processor_State)(0), // 1: google.cloud.documentai.v1beta3.Processor.State - (*ProcessorVersion)(nil), // 2: google.cloud.documentai.v1beta3.ProcessorVersion - (*ProcessorVersionAlias)(nil), // 3: google.cloud.documentai.v1beta3.ProcessorVersionAlias - (*Processor)(nil), // 4: google.cloud.documentai.v1beta3.Processor - (*ProcessorVersion_DeprecationInfo)(nil), // 5: google.cloud.documentai.v1beta3.ProcessorVersion.DeprecationInfo - (*DocumentSchema)(nil), // 6: google.cloud.documentai.v1beta3.DocumentSchema - (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp - (*EvaluationReference)(nil), // 8: google.cloud.documentai.v1beta3.EvaluationReference + (ProcessorVersion_ModelType)(0), // 1: google.cloud.documentai.v1beta3.ProcessorVersion.ModelType + (Processor_State)(0), // 2: google.cloud.documentai.v1beta3.Processor.State + (*ProcessorVersion)(nil), // 3: google.cloud.documentai.v1beta3.ProcessorVersion + (*ProcessorVersionAlias)(nil), // 4: google.cloud.documentai.v1beta3.ProcessorVersionAlias + (*Processor)(nil), // 5: google.cloud.documentai.v1beta3.Processor + (*ProcessorVersion_DeprecationInfo)(nil), // 6: google.cloud.documentai.v1beta3.ProcessorVersion.DeprecationInfo + (*DocumentSchema)(nil), // 7: google.cloud.documentai.v1beta3.DocumentSchema + (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp + (*EvaluationReference)(nil), // 9: google.cloud.documentai.v1beta3.EvaluationReference } var file_google_cloud_documentai_v1beta3_processor_proto_depIdxs = []int32{ - 6, // 0: google.cloud.documentai.v1beta3.ProcessorVersion.document_schema:type_name -> google.cloud.documentai.v1beta3.DocumentSchema - 0, // 1: google.cloud.documentai.v1beta3.ProcessorVersion.state:type_name -> google.cloud.documentai.v1beta3.ProcessorVersion.State - 7, // 2: google.cloud.documentai.v1beta3.ProcessorVersion.create_time:type_name -> google.protobuf.Timestamp - 8, // 3: google.cloud.documentai.v1beta3.ProcessorVersion.latest_evaluation:type_name -> google.cloud.documentai.v1beta3.EvaluationReference - 5, // 4: google.cloud.documentai.v1beta3.ProcessorVersion.deprecation_info:type_name -> google.cloud.documentai.v1beta3.ProcessorVersion.DeprecationInfo - 1, // 5: google.cloud.documentai.v1beta3.Processor.state:type_name -> google.cloud.documentai.v1beta3.Processor.State - 3, // 6: google.cloud.documentai.v1beta3.Processor.processor_version_aliases:type_name -> google.cloud.documentai.v1beta3.ProcessorVersionAlias - 7, // 7: google.cloud.documentai.v1beta3.Processor.create_time:type_name -> google.protobuf.Timestamp - 7, // 8: google.cloud.documentai.v1beta3.ProcessorVersion.DeprecationInfo.deprecation_time:type_name -> google.protobuf.Timestamp - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 7, // 0: google.cloud.documentai.v1beta3.ProcessorVersion.document_schema:type_name -> google.cloud.documentai.v1beta3.DocumentSchema + 0, // 1: google.cloud.documentai.v1beta3.ProcessorVersion.state:type_name -> google.cloud.documentai.v1beta3.ProcessorVersion.State + 8, // 2: google.cloud.documentai.v1beta3.ProcessorVersion.create_time:type_name -> google.protobuf.Timestamp + 9, // 3: google.cloud.documentai.v1beta3.ProcessorVersion.latest_evaluation:type_name -> google.cloud.documentai.v1beta3.EvaluationReference + 6, // 4: google.cloud.documentai.v1beta3.ProcessorVersion.deprecation_info:type_name -> google.cloud.documentai.v1beta3.ProcessorVersion.DeprecationInfo + 1, // 5: google.cloud.documentai.v1beta3.ProcessorVersion.model_type:type_name -> google.cloud.documentai.v1beta3.ProcessorVersion.ModelType + 2, // 6: google.cloud.documentai.v1beta3.Processor.state:type_name -> google.cloud.documentai.v1beta3.Processor.State + 4, // 7: google.cloud.documentai.v1beta3.Processor.processor_version_aliases:type_name -> google.cloud.documentai.v1beta3.ProcessorVersionAlias + 8, // 8: google.cloud.documentai.v1beta3.Processor.create_time:type_name -> google.protobuf.Timestamp + 8, // 9: google.cloud.documentai.v1beta3.ProcessorVersion.DeprecationInfo.deprecation_time:type_name -> google.protobuf.Timestamp + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_google_cloud_documentai_v1beta3_processor_proto_init() } @@ -845,7 +921,7 @@ func file_google_cloud_documentai_v1beta3_processor_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_documentai_v1beta3_processor_proto_rawDesc, - NumEnums: 2, + NumEnums: 3, NumMessages: 4, NumExtensions: 0, NumServices: 0, diff --git a/internal/.repo-metadata-full.json b/internal/.repo-metadata-full.json index f0845eec8c76..b8fa52c99702 100644 --- a/internal/.repo-metadata-full.json +++ b/internal/.repo-metadata-full.json @@ -199,6 +199,16 @@ "release_level": "stable", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/apps/meet/apiv2": { + "api_shortname": "meet", + "distribution_name": "cloud.google.com/go/apps/meet/apiv2", + "description": "Google Meet API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/apps/latest/meet/apiv2", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/apps/meet/apiv2beta": { "api_shortname": "meet", "distribution_name": "cloud.google.com/go/apps/meet/apiv2beta", diff --git a/internal/generated/snippets/aiplatform/apiv1/PredictionClient/GenerateContent/main.go b/internal/generated/snippets/aiplatform/apiv1/PredictionClient/GenerateContent/main.go new file mode 100644 index 000000000000..f4af1456cebd --- /dev/null +++ b/internal/generated/snippets/aiplatform/apiv1/PredictionClient/GenerateContent/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START aiplatform_v1_generated_PredictionService_GenerateContent_sync] + +package main + +import ( + "context" + + aiplatform "cloud.google.com/go/aiplatform/apiv1" + aiplatformpb "cloud.google.com/go/aiplatform/apiv1/aiplatformpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &aiplatformpb.GenerateContentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/aiplatform/apiv1/aiplatformpb#GenerateContentRequest. + } + resp, err := c.GenerateContent(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END aiplatform_v1_generated_PredictionService_GenerateContent_sync] diff --git a/internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectPredict/main.go b/internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectPredict/main.go new file mode 100644 index 000000000000..8692bd534150 --- /dev/null +++ b/internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectPredict/main.go @@ -0,0 +1,69 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START aiplatform_v1_generated_PredictionService_StreamDirectPredict_sync] + +package main + +import ( + "context" + "io" + + aiplatform "cloud.google.com/go/aiplatform/apiv1" + aiplatformpb "cloud.google.com/go/aiplatform/apiv1/aiplatformpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END aiplatform_v1_generated_PredictionService_StreamDirectPredict_sync] diff --git a/internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectRawPredict/main.go b/internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectRawPredict/main.go new file mode 100644 index 000000000000..fdbd6a57f192 --- /dev/null +++ b/internal/generated/snippets/aiplatform/apiv1/PredictionClient/StreamDirectRawPredict/main.go @@ -0,0 +1,69 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START aiplatform_v1_generated_PredictionService_StreamDirectRawPredict_sync] + +package main + +import ( + "context" + "io" + + aiplatform "cloud.google.com/go/aiplatform/apiv1" + aiplatformpb "cloud.google.com/go/aiplatform/apiv1/aiplatformpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectRawPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectRawPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END aiplatform_v1_generated_PredictionService_StreamDirectRawPredict_sync] diff --git a/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json b/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json index 956db2f96c60..ba8d54fc7e5f 100644 --- a/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json +++ b/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json @@ -17309,7 +17309,7 @@ { "regionTag": "aiplatform_v1_generated_PredictionService_DirectPredict_sync", "title": "aiplatform DirectPredict Sample", - "description": "DirectPredict perform an unary online prediction request for Vertex first-party products\nand frameworks.", + "description": "DirectPredict perform an unary online prediction request to a gRPC model server for\nVertex first-party products and frameworks.", "file": "PredictionClient/DirectPredict/main.go", "language": "GO", "clientMethod": { @@ -17355,7 +17355,7 @@ { "regionTag": "aiplatform_v1_generated_PredictionService_DirectRawPredict_sync", "title": "aiplatform DirectRawPredict Sample", - "description": "DirectRawPredict perform an online prediction request through gRPC.", + "description": "DirectRawPredict perform an unary online prediction request to a gRPC model server for\ncustom containers.", "file": "PredictionClient/DirectRawPredict/main.go", "language": "GO", "clientMethod": { @@ -17444,6 +17444,52 @@ } ] }, + { + "regionTag": "aiplatform_v1_generated_PredictionService_GenerateContent_sync", + "title": "aiplatform GenerateContent Sample", + "description": "GenerateContent generate content with multimodal inputs.", + "file": "PredictionClient/GenerateContent/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GenerateContent", + "fullName": "google.cloud.aiplatform.v1.PredictionClient.GenerateContent", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "aiplatformpb.GenerateContentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*aiplatformpb.GenerateContentResponse", + "client": { + "shortName": "PredictionClient", + "fullName": "google.cloud.aiplatform.v1.PredictionClient" + }, + "method": { + "shortName": "GenerateContent", + "fullName": "google.cloud.aiplatform.v1.PredictionService.GenerateContent", + "service": { + "shortName": "PredictionService", + "fullName": "google.cloud.aiplatform.v1.PredictionService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "aiplatform_v1_generated_PredictionService_GetIamPolicy_sync", "title": "aiplatform GetIamPolicy Sample", @@ -17812,6 +17858,90 @@ } ] }, + { + "regionTag": "aiplatform_v1_generated_PredictionService_StreamDirectPredict_sync", + "title": "aiplatform StreamDirectPredict Sample", + "description": "StreamDirectPredict perform a streaming online prediction request to a gRPC model server for\nVertex first-party products and frameworks.", + "file": "PredictionClient/StreamDirectPredict/main.go", + "language": "GO", + "clientMethod": { + "shortName": "StreamDirectPredict", + "fullName": "google.cloud.aiplatform.v1.PredictionClient.StreamDirectPredict", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "aiplatformpb.PredictionService_StreamDirectPredictClient", + "client": { + "shortName": "PredictionClient", + "fullName": "google.cloud.aiplatform.v1.PredictionClient" + }, + "method": { + "shortName": "StreamDirectPredict", + "fullName": "google.cloud.aiplatform.v1.PredictionService.StreamDirectPredict", + "service": { + "shortName": "PredictionService", + "fullName": "google.cloud.aiplatform.v1.PredictionService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 69, + "type": "FULL" + } + ] + }, + { + "regionTag": "aiplatform_v1_generated_PredictionService_StreamDirectRawPredict_sync", + "title": "aiplatform StreamDirectRawPredict Sample", + "description": "StreamDirectRawPredict perform a streaming online prediction request to a gRPC model server for\ncustom containers.", + "file": "PredictionClient/StreamDirectRawPredict/main.go", + "language": "GO", + "clientMethod": { + "shortName": "StreamDirectRawPredict", + "fullName": "google.cloud.aiplatform.v1.PredictionClient.StreamDirectRawPredict", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "aiplatformpb.PredictionService_StreamDirectRawPredictClient", + "client": { + "shortName": "PredictionClient", + "fullName": "google.cloud.aiplatform.v1.PredictionClient" + }, + "method": { + "shortName": "StreamDirectRawPredict", + "fullName": "google.cloud.aiplatform.v1.PredictionService.StreamDirectRawPredict", + "service": { + "shortName": "PredictionService", + "fullName": "google.cloud.aiplatform.v1.PredictionService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 69, + "type": "FULL" + } + ] + }, { "regionTag": "aiplatform_v1_generated_PredictionService_StreamingPredict_sync", "title": "aiplatform StreamingPredict Sample", diff --git a/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/GenerateContent/main.go b/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/GenerateContent/main.go new file mode 100644 index 000000000000..65b83797d475 --- /dev/null +++ b/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/GenerateContent/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START aiplatform_v1beta1_generated_PredictionService_GenerateContent_sync] + +package main + +import ( + "context" + + aiplatform "cloud.google.com/go/aiplatform/apiv1beta1" + aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &aiplatformpb.GenerateContentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb#GenerateContentRequest. + } + resp, err := c.GenerateContent(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END aiplatform_v1beta1_generated_PredictionService_GenerateContent_sync] diff --git a/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectPredict/main.go b/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectPredict/main.go new file mode 100644 index 000000000000..c7f4c9f817c3 --- /dev/null +++ b/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectPredict/main.go @@ -0,0 +1,69 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START aiplatform_v1beta1_generated_PredictionService_StreamDirectPredict_sync] + +package main + +import ( + "context" + "io" + + aiplatform "cloud.google.com/go/aiplatform/apiv1beta1" + aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END aiplatform_v1beta1_generated_PredictionService_StreamDirectPredict_sync] diff --git a/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectRawPredict/main.go b/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectRawPredict/main.go new file mode 100644 index 000000000000..77ce022a995b --- /dev/null +++ b/internal/generated/snippets/aiplatform/apiv1beta1/PredictionClient/StreamDirectRawPredict/main.go @@ -0,0 +1,69 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START aiplatform_v1beta1_generated_PredictionService_StreamDirectRawPredict_sync] + +package main + +import ( + "context" + "io" + + aiplatform "cloud.google.com/go/aiplatform/apiv1beta1" + aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewPredictionClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + stream, err := c.StreamDirectRawPredict(ctx) + if err != nil { + // TODO: Handle error. + } + go func() { + reqs := []*aiplatformpb.StreamDirectRawPredictRequest{ + // TODO: Create requests. + } + for _, req := range reqs { + if err := stream.Send(req); err != nil { + // TODO: Handle error. + } + } + stream.CloseSend() + }() + for { + resp, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { + // TODO: handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END aiplatform_v1beta1_generated_PredictionService_StreamDirectRawPredict_sync] diff --git a/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json b/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json index 9cd75ae883ec..cd02281ed35b 100644 --- a/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json +++ b/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json @@ -18181,7 +18181,7 @@ { "regionTag": "aiplatform_v1beta1_generated_PredictionService_DirectPredict_sync", "title": "aiplatform DirectPredict Sample", - "description": "DirectPredict perform an unary online prediction request for Vertex first-party products\nand frameworks.", + "description": "DirectPredict perform an unary online prediction request to a gRPC model server for\nVertex first-party products and frameworks.", "file": "PredictionClient/DirectPredict/main.go", "language": "GO", "clientMethod": { @@ -18227,7 +18227,7 @@ { "regionTag": "aiplatform_v1beta1_generated_PredictionService_DirectRawPredict_sync", "title": "aiplatform DirectRawPredict Sample", - "description": "DirectRawPredict perform an online prediction request through gRPC.", + "description": "DirectRawPredict perform an unary online prediction request to a gRPC model server for\ncustom containers.", "file": "PredictionClient/DirectRawPredict/main.go", "language": "GO", "clientMethod": { @@ -18316,6 +18316,52 @@ } ] }, + { + "regionTag": "aiplatform_v1beta1_generated_PredictionService_GenerateContent_sync", + "title": "aiplatform GenerateContent Sample", + "description": "GenerateContent generate content with multimodal inputs.", + "file": "PredictionClient/GenerateContent/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GenerateContent", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionClient.GenerateContent", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "aiplatformpb.GenerateContentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*aiplatformpb.GenerateContentResponse", + "client": { + "shortName": "PredictionClient", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionClient" + }, + "method": { + "shortName": "GenerateContent", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionService.GenerateContent", + "service": { + "shortName": "PredictionService", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "aiplatform_v1beta1_generated_PredictionService_GetIamPolicy_sync", "title": "aiplatform GetIamPolicy Sample", @@ -18684,6 +18730,90 @@ } ] }, + { + "regionTag": "aiplatform_v1beta1_generated_PredictionService_StreamDirectPredict_sync", + "title": "aiplatform StreamDirectPredict Sample", + "description": "StreamDirectPredict perform a streaming online prediction request to a gRPC model server for\nVertex first-party products and frameworks.\n\n\nThis method is not supported for the REST transport.", + "file": "PredictionClient/StreamDirectPredict/main.go", + "language": "GO", + "clientMethod": { + "shortName": "StreamDirectPredict", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionClient.StreamDirectPredict", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "aiplatformpb.PredictionService_StreamDirectPredictClient", + "client": { + "shortName": "PredictionClient", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionClient" + }, + "method": { + "shortName": "StreamDirectPredict", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectPredict", + "service": { + "shortName": "PredictionService", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 69, + "type": "FULL" + } + ] + }, + { + "regionTag": "aiplatform_v1beta1_generated_PredictionService_StreamDirectRawPredict_sync", + "title": "aiplatform StreamDirectRawPredict Sample", + "description": "StreamDirectRawPredict perform a streaming online prediction request to a gRPC model server for\ncustom containers.\n\n\nThis method is not supported for the REST transport.", + "file": "PredictionClient/StreamDirectRawPredict/main.go", + "language": "GO", + "clientMethod": { + "shortName": "StreamDirectRawPredict", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionClient.StreamDirectRawPredict", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "aiplatformpb.PredictionService_StreamDirectRawPredictClient", + "client": { + "shortName": "PredictionClient", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionClient" + }, + "method": { + "shortName": "StreamDirectRawPredict", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionService.StreamDirectRawPredict", + "service": { + "shortName": "PredictionService", + "fullName": "google.cloud.aiplatform.v1beta1.PredictionService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 69, + "type": "FULL" + } + ] + }, { "regionTag": "aiplatform_v1beta1_generated_PredictionService_StreamingPredict_sync", "title": "aiplatform StreamingPredict Sample", diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetConferenceRecord/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetConferenceRecord/main.go new file mode 100644 index 000000000000..3e22fcebcfb5 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetConferenceRecord/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_GetConferenceRecord_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetConferenceRecordRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetConferenceRecordRequest. + } + resp, err := c.GetConferenceRecord(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_ConferenceRecordsService_GetConferenceRecord_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipant/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipant/main.go new file mode 100644 index 000000000000..2a554c1e01cc --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipant/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_GetParticipant_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetParticipantRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetParticipantRequest. + } + resp, err := c.GetParticipant(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_ConferenceRecordsService_GetParticipant_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipantSession/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipantSession/main.go new file mode 100644 index 000000000000..04422251c750 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetParticipantSession/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_GetParticipantSession_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetParticipantSessionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetParticipantSessionRequest. + } + resp, err := c.GetParticipantSession(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_ConferenceRecordsService_GetParticipantSession_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetRecording/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetRecording/main.go new file mode 100644 index 000000000000..b3f43660d644 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetRecording/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_GetRecording_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetRecordingRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetRecordingRequest. + } + resp, err := c.GetRecording(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_ConferenceRecordsService_GetRecording_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscript/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscript/main.go new file mode 100644 index 000000000000..891761b5a642 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscript/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_GetTranscript_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetTranscriptRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetTranscriptRequest. + } + resp, err := c.GetTranscript(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_ConferenceRecordsService_GetTranscript_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscriptEntry/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscriptEntry/main.go new file mode 100644 index 000000000000..f390c5e7efbd --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/GetTranscriptEntry/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_GetTranscriptEntry_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetTranscriptEntryRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetTranscriptEntryRequest. + } + resp, err := c.GetTranscriptEntry(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_ConferenceRecordsService_GetTranscriptEntry_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListConferenceRecords/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListConferenceRecords/main.go new file mode 100644 index 000000000000..7f6cba360412 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListConferenceRecords/main.go @@ -0,0 +1,60 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_ListConferenceRecords_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListConferenceRecordsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListConferenceRecordsRequest. + } + it := c.ListConferenceRecords(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END meet_v2_generated_ConferenceRecordsService_ListConferenceRecords_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipantSessions/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipantSessions/main.go new file mode 100644 index 000000000000..fbdf56d1dbe1 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipantSessions/main.go @@ -0,0 +1,60 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_ListParticipantSessions_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListParticipantSessionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListParticipantSessionsRequest. + } + it := c.ListParticipantSessions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END meet_v2_generated_ConferenceRecordsService_ListParticipantSessions_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipants/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipants/main.go new file mode 100644 index 000000000000..7e3c9f680d51 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListParticipants/main.go @@ -0,0 +1,60 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_ListParticipants_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListParticipantsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListParticipantsRequest. + } + it := c.ListParticipants(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END meet_v2_generated_ConferenceRecordsService_ListParticipants_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListRecordings/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListRecordings/main.go new file mode 100644 index 000000000000..f6bfbf8c3c7b --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListRecordings/main.go @@ -0,0 +1,60 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_ListRecordings_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListRecordingsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListRecordingsRequest. + } + it := c.ListRecordings(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END meet_v2_generated_ConferenceRecordsService_ListRecordings_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscriptEntries/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscriptEntries/main.go new file mode 100644 index 000000000000..33a74795eda2 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscriptEntries/main.go @@ -0,0 +1,60 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_ListTranscriptEntries_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListTranscriptEntriesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListTranscriptEntriesRequest. + } + it := c.ListTranscriptEntries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END meet_v2_generated_ConferenceRecordsService_ListTranscriptEntries_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscripts/main.go b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscripts/main.go new file mode 100644 index 000000000000..9306b1ce6609 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/ConferenceRecordsClient/ListTranscripts/main.go @@ -0,0 +1,60 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_ConferenceRecordsService_ListTranscripts_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewConferenceRecordsClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.ListTranscriptsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#ListTranscriptsRequest. + } + it := c.ListTranscripts(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END meet_v2_generated_ConferenceRecordsService_ListTranscripts_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/SpacesClient/CreateSpace/main.go b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/CreateSpace/main.go new file mode 100644 index 000000000000..166061da2e50 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/CreateSpace/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_SpacesService_CreateSpace_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.CreateSpaceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#CreateSpaceRequest. + } + resp, err := c.CreateSpace(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_SpacesService_CreateSpace_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/SpacesClient/EndActiveConference/main.go b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/EndActiveConference/main.go new file mode 100644 index 000000000000..6d0683b99b69 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/EndActiveConference/main.go @@ -0,0 +1,51 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_SpacesService_EndActiveConference_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.EndActiveConferenceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#EndActiveConferenceRequest. + } + err = c.EndActiveConference(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END meet_v2_generated_SpacesService_EndActiveConference_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/SpacesClient/GetSpace/main.go b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/GetSpace/main.go new file mode 100644 index 000000000000..e4bd7e02b95c --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/GetSpace/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_SpacesService_GetSpace_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.GetSpaceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#GetSpaceRequest. + } + resp, err := c.GetSpace(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_SpacesService_GetSpace_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/SpacesClient/UpdateSpace/main.go b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/UpdateSpace/main.go new file mode 100644 index 000000000000..4b90461079f0 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/SpacesClient/UpdateSpace/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START meet_v2_generated_SpacesService_UpdateSpace_sync] + +package main + +import ( + "context" + + meet "cloud.google.com/go/apps/meet/apiv2" + meetpb "cloud.google.com/go/apps/meet/apiv2/meetpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := meet.NewSpacesClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &meetpb.UpdateSpaceRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/apps/meet/apiv2/meetpb#UpdateSpaceRequest. + } + resp, err := c.UpdateSpace(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END meet_v2_generated_SpacesService_UpdateSpace_sync] diff --git a/internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json b/internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json new file mode 100644 index 000000000000..34fec7feeb63 --- /dev/null +++ b/internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json @@ -0,0 +1,750 @@ +{ + "clientLibrary": { + "name": "cloud.google.com/go/apps/meet/apiv2", + "version": "0.2.1", + "language": "GO", + "apis": [ + { + "id": "google.apps.meet.v2", + "version": "v2" + } + ] + }, + "snippets": [ + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_GetConferenceRecord_sync", + "title": "meet GetConferenceRecord Sample", + "description": "GetConferenceRecord gets a conference record by conference ID.", + "file": "ConferenceRecordsClient/GetConferenceRecord/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetConferenceRecord", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.GetConferenceRecord", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.GetConferenceRecordRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.ConferenceRecord", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "GetConferenceRecord", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.GetConferenceRecord", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_GetParticipant_sync", + "title": "meet GetParticipant Sample", + "description": "GetParticipant gets a participant by participant ID.", + "file": "ConferenceRecordsClient/GetParticipant/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetParticipant", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.GetParticipant", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.GetParticipantRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.Participant", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "GetParticipant", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.GetParticipant", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_GetParticipantSession_sync", + "title": "meet GetParticipantSession Sample", + "description": "GetParticipantSession gets a participant session by participant session ID.", + "file": "ConferenceRecordsClient/GetParticipantSession/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetParticipantSession", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.GetParticipantSession", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.GetParticipantSessionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.ParticipantSession", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "GetParticipantSession", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.GetParticipantSession", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_GetRecording_sync", + "title": "meet GetRecording Sample", + "description": "GetRecording gets a recording by recording ID.", + "file": "ConferenceRecordsClient/GetRecording/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetRecording", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.GetRecording", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.GetRecordingRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.Recording", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "GetRecording", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.GetRecording", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_GetTranscript_sync", + "title": "meet GetTranscript Sample", + "description": "GetTranscript gets a transcript by transcript ID.", + "file": "ConferenceRecordsClient/GetTranscript/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetTranscript", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.GetTranscript", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.GetTranscriptRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.Transcript", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "GetTranscript", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.GetTranscript", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_GetTranscriptEntry_sync", + "title": "meet GetTranscriptEntry Sample", + "description": "GetTranscriptEntry gets a `TranscriptEntry` resource by entry ID.\n\nNote: The transcript entries returned by the Google Meet API might not\nmatch the transcription found in the Google Docs transcript file. This can\noccur when the Google Docs transcript file is modified after generation.", + "file": "ConferenceRecordsClient/GetTranscriptEntry/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetTranscriptEntry", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.GetTranscriptEntry", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.GetTranscriptEntryRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.TranscriptEntry", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "GetTranscriptEntry", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.GetTranscriptEntry", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_ListConferenceRecords_sync", + "title": "meet ListConferenceRecords Sample", + "description": "ListConferenceRecords lists the conference records. By default, ordered by start time and in\ndescending order.", + "file": "ConferenceRecordsClient/ListConferenceRecords/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListConferenceRecords", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.ListConferenceRecords", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.ListConferenceRecordsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ConferenceRecordIterator", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "ListConferenceRecords", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.ListConferenceRecords", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_ListParticipantSessions_sync", + "title": "meet ListParticipantSessions Sample", + "description": "ListParticipantSessions lists the participant sessions of a participant in a conference record. By\ndefault, ordered by join time and in descending order. This API supports\n`fields` as standard parameters like every other API. However, when the\n`fields` request parameter is omitted this API defaults to\n`'participantsessions/*, next_page_token'`.", + "file": "ConferenceRecordsClient/ListParticipantSessions/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListParticipantSessions", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.ListParticipantSessions", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.ListParticipantSessionsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ParticipantSessionIterator", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "ListParticipantSessions", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.ListParticipantSessions", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_ListParticipants_sync", + "title": "meet ListParticipants Sample", + "description": "ListParticipants lists the participants in a conference record. By default, ordered by join\ntime and in descending order. This API supports `fields` as standard\nparameters like every other API. However, when the `fields` request\nparameter is omitted, this API defaults to `'participants/*,\nnext_page_token'`.", + "file": "ConferenceRecordsClient/ListParticipants/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListParticipants", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.ListParticipants", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.ListParticipantsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ParticipantIterator", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "ListParticipants", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.ListParticipants", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_ListRecordings_sync", + "title": "meet ListRecordings Sample", + "description": "ListRecordings lists the recording resources from the conference record. By default,\nordered by start time and in ascending order.", + "file": "ConferenceRecordsClient/ListRecordings/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListRecordings", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.ListRecordings", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.ListRecordingsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "RecordingIterator", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "ListRecordings", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.ListRecordings", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_ListTranscriptEntries_sync", + "title": "meet ListTranscriptEntries Sample", + "description": "ListTranscriptEntries lists the structured transcript entries per transcript. By default, ordered\nby start time and in ascending order.\n\nNote: The transcript entries returned by the Google Meet API might not\nmatch the transcription found in the Google Docs transcript file. This can\noccur when the Google Docs transcript file is modified after generation.", + "file": "ConferenceRecordsClient/ListTranscriptEntries/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListTranscriptEntries", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.ListTranscriptEntries", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.ListTranscriptEntriesRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "TranscriptEntryIterator", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "ListTranscriptEntries", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.ListTranscriptEntries", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_ConferenceRecordsService_ListTranscripts_sync", + "title": "meet ListTranscripts Sample", + "description": "ListTranscripts lists the set of transcripts from the conference record. By default,\nordered by start time and in ascending order.", + "file": "ConferenceRecordsClient/ListTranscripts/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListTranscripts", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient.ListTranscripts", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.ListTranscriptsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "TranscriptIterator", + "client": { + "shortName": "ConferenceRecordsClient", + "fullName": "google.apps.meet.v2.ConferenceRecordsClient" + }, + "method": { + "shortName": "ListTranscripts", + "fullName": "google.apps.meet.v2.ConferenceRecordsService.ListTranscripts", + "service": { + "shortName": "ConferenceRecordsService", + "fullName": "google.apps.meet.v2.ConferenceRecordsService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_SpacesService_CreateSpace_sync", + "title": "meet CreateSpace Sample", + "description": "CreateSpace creates a space.", + "file": "SpacesClient/CreateSpace/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateSpace", + "fullName": "google.apps.meet.v2.SpacesClient.CreateSpace", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.CreateSpaceRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.Space", + "client": { + "shortName": "SpacesClient", + "fullName": "google.apps.meet.v2.SpacesClient" + }, + "method": { + "shortName": "CreateSpace", + "fullName": "google.apps.meet.v2.SpacesService.CreateSpace", + "service": { + "shortName": "SpacesService", + "fullName": "google.apps.meet.v2.SpacesService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_SpacesService_EndActiveConference_sync", + "title": "meet EndActiveConference Sample", + "description": "EndActiveConference ends an active conference (if there's one).", + "file": "SpacesClient/EndActiveConference/main.go", + "language": "GO", + "clientMethod": { + "shortName": "EndActiveConference", + "fullName": "google.apps.meet.v2.SpacesClient.EndActiveConference", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.EndActiveConferenceRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "SpacesClient", + "fullName": "google.apps.meet.v2.SpacesClient" + }, + "method": { + "shortName": "EndActiveConference", + "fullName": "google.apps.meet.v2.SpacesService.EndActiveConference", + "service": { + "shortName": "SpacesService", + "fullName": "google.apps.meet.v2.SpacesService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_SpacesService_GetSpace_sync", + "title": "meet GetSpace Sample", + "description": "GetSpace gets a space by `space_id` or `meeting_code`.", + "file": "SpacesClient/GetSpace/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetSpace", + "fullName": "google.apps.meet.v2.SpacesClient.GetSpace", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.GetSpaceRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.Space", + "client": { + "shortName": "SpacesClient", + "fullName": "google.apps.meet.v2.SpacesClient" + }, + "method": { + "shortName": "GetSpace", + "fullName": "google.apps.meet.v2.SpacesService.GetSpace", + "service": { + "shortName": "SpacesService", + "fullName": "google.apps.meet.v2.SpacesService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "meet_v2_generated_SpacesService_UpdateSpace_sync", + "title": "meet UpdateSpace Sample", + "description": "UpdateSpace updates a space.", + "file": "SpacesClient/UpdateSpace/main.go", + "language": "GO", + "clientMethod": { + "shortName": "UpdateSpace", + "fullName": "google.apps.meet.v2.SpacesClient.UpdateSpace", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "meetpb.UpdateSpaceRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*meetpb.Space", + "client": { + "shortName": "SpacesClient", + "fullName": "google.apps.meet.v2.SpacesClient" + }, + "method": { + "shortName": "UpdateSpace", + "fullName": "google.apps.meet.v2.SpacesService.UpdateSpace", + "service": { + "shortName": "SpacesService", + "fullName": "google.apps.meet.v2.SpacesService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + } + ] +} \ No newline at end of file