diff --git a/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads.pb.go b/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads.pb.go index 1be129a64..f87fc6e53 100644 --- a/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads.pb.go +++ b/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads.pb.go @@ -1145,6 +1145,11 @@ type Workload struct { // SAA enrollment response is queried during GetWorkload call. // In failure cases, user friendly error message is shown in SAA details page. SaaEnrollmentResponse *Workload_SaaEnrollmentResponse `protobuf:"bytes,20,opt,name=saa_enrollment_response,json=saaEnrollmentResponse,proto3" json:"saa_enrollment_response,omitempty"` + // Output only. Urls for services which are compliant for this Assured Workload, but which + // are currently disallowed by the ResourceUsageRestriction org policy. + // Invoke RestrictAllowedResources endpoint to allow your project developers + // to use these services in their environment." + CompliantButDisallowedServices []string `protobuf:"bytes,24,rep,name=compliant_but_disallowed_services,json=compliantButDisallowedServices,proto3" json:"compliant_but_disallowed_services,omitempty"` } func (x *Workload) Reset() { @@ -1317,6 +1322,13 @@ func (x *Workload) GetSaaEnrollmentResponse() *Workload_SaaEnrollmentResponse { return nil } +func (x *Workload) GetCompliantButDisallowedServices() []string { + if x != nil { + return x.CompliantButDisallowedServices + } + return nil +} + type isWorkload_ComplianceRegimeSettings interface { isWorkload_ComplianceRegimeSettings() } @@ -2015,7 +2027,7 @@ var file_google_cloud_assuredworkloads_v1beta1_assuredworkloads_proto_rawDesc = 0x72, 0x6b, 0x6c, 0x6f, 0x61, 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, - 0x86, 0x1f, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x17, 0x0a, 0x04, + 0xd6, 0x1f, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x02, @@ -2117,7 +2129,12 @@ var file_google_cloud_assuredworkloads_v1beta1_assuredworkloads_proto_rawDesc = 0x53, 0x61, 0x61, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x73, 0x61, 0x61, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x1a, 0xa8, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, + 0x65, 0x12, 0x4e, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x62, + 0x75, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x74, 0x44, + 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x1a, 0xa8, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x6e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, diff --git a/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads_service.pb.go b/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads_service.pb.go index 7866c2103..ae0ddee50 100644 --- a/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads_service.pb.go +++ b/googleapis/cloud/assuredworkloads/v1beta1/assuredworkloads_service.pb.go @@ -269,8 +269,8 @@ type AssuredWorkloadsServiceClient interface { DeleteWorkload(ctx context.Context, in *DeleteWorkloadRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // Gets Assured Workload associated with a CRM Node GetWorkload(ctx context.Context, in *GetWorkloadRequest, opts ...grpc.CallOption) (*Workload, error) - // A request to analyze a hypothetical move of a source project or - // project-based workload to a target (destination) folder-based workload. + // Analyze if the source Assured Workloads can be moved to the target Assured + // Workload AnalyzeWorkloadMove(ctx context.Context, in *AnalyzeWorkloadMoveRequest, opts ...grpc.CallOption) (*AnalyzeWorkloadMoveResponse, error) // Lists Assured Workloads under a CRM Node. ListWorkloads(ctx context.Context, in *ListWorkloadsRequest, opts ...grpc.CallOption) (*ListWorkloadsResponse, error) @@ -372,8 +372,8 @@ type AssuredWorkloadsServiceServer interface { DeleteWorkload(context.Context, *DeleteWorkloadRequest) (*emptypb.Empty, error) // Gets Assured Workload associated with a CRM Node GetWorkload(context.Context, *GetWorkloadRequest) (*Workload, error) - // A request to analyze a hypothetical move of a source project or - // project-based workload to a target (destination) folder-based workload. + // Analyze if the source Assured Workloads can be moved to the target Assured + // Workload AnalyzeWorkloadMove(context.Context, *AnalyzeWorkloadMoveRequest) (*AnalyzeWorkloadMoveResponse, error) // Lists Assured Workloads under a CRM Node. ListWorkloads(context.Context, *ListWorkloadsRequest) (*ListWorkloadsResponse, error) diff --git a/googleapis/cloud/bigquery/storage/v1/storage.pb.go b/googleapis/cloud/bigquery/storage/v1/storage.pb.go index 5fbfc2e2c..c16654172 100644 --- a/googleapis/cloud/bigquery/storage/v1/storage.pb.go +++ b/googleapis/cloud/bigquery/storage/v1/storage.pb.go @@ -439,6 +439,7 @@ type ReadRowsResponse struct { // Row data is returned in format specified during session creation. // // Types that are assignable to Rows: + // // *ReadRowsResponse_AvroRows // *ReadRowsResponse_ArrowRecordBatch Rows isReadRowsResponse_Rows `protobuf_oneof:"rows"` @@ -456,6 +457,7 @@ type ReadRowsResponse struct { // RPC. // // Types that are assignable to Schema: + // // *ReadRowsResponse_AvroSchema // *ReadRowsResponse_ArrowSchema Schema isReadRowsResponse_Schema `protobuf_oneof:"schema"` @@ -813,6 +815,7 @@ type AppendRowsRequest struct { // initial request. // // Types that are assignable to Rows: + // // *AppendRowsRequest_ProtoRows Rows isAppendRowsRequest_Rows `protobuf_oneof:"rows"` // Id set by client to annotate its identity. Only initial request setting is @@ -905,6 +908,7 @@ type AppendRowsResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: + // // *AppendRowsResponse_AppendResult_ // *AppendRowsResponse_Error Response isAppendRowsResponse_Response `protobuf_oneof:"response"` @@ -1041,6 +1045,9 @@ type GetWriteStreamRequest struct { // Required. Name of the stream to get, in the form of // `projects/{project}/datasets/{dataset}/tables/{table}/streams/{stream}`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Indicates whether to get full or partial view of the WriteStream. If + // not set, view returned will be basic. + View WriteStreamView `protobuf:"varint,3,opt,name=view,proto3,enum=google.cloud.bigquery.storage.v1.WriteStreamView" json:"view,omitempty"` } func (x *GetWriteStreamRequest) Reset() { @@ -1082,6 +1089,13 @@ func (x *GetWriteStreamRequest) GetName() string { return "" } +func (x *GetWriteStreamRequest) GetView() WriteStreamView { + if x != nil { + return x.View + } + return WriteStreamView_WRITE_STREAM_VIEW_UNSPECIFIED +} + // Request message for `BatchCommitWriteStreams`. type BatchCommitWriteStreamsRequest struct { state protoimpl.MessageState @@ -1934,257 +1948,261 @@ var file_google_cloud_bigquery_storage_v1_storage_proto_rawDesc = []byte{ 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, + 0x73, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x2c, 0x0a, 0x2a, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x89, 0x01, 0x0a, 0x1e, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 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, 0x0a, 0x1d, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, + 0x0d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x1f, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 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, 0x0a, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, + 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x0c, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x64, 0x0a, + 0x1a, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 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, 0x0a, 0x1d, - 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x22, - 0xb3, 0x01, 0x0a, 0x1f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 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, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x53, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x64, 0x0a, 0x1a, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x62, 0x69, 0x67, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x1b, 0x46, - 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, - 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, - 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x46, 0x6c, 0x75, 0x73, - 0x68, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x0c, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x62, 0x69, 0x67, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x12, 0x33, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x2b, 0x0a, 0x11, 0x46, 0x6c, 0x75, 0x73, - 0x68, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xc1, 0x03, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x53, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x9e, 0x02, 0x0a, 0x10, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, - 0x1e, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, - 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, - 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, - 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4e, - 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, - 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53, - 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x05, 0x12, 0x14, 0x0a, - 0x10, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, - 0x44, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x4d, 0x49, - 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x58, 0x54, 0x52, 0x41, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x53, 0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, - 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x08, - 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, - 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x09, 0x22, 0xc9, 0x01, 0x0a, 0x08, 0x52, 0x6f, - 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4b, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, - 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x52, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x40, 0x0a, 0x0c, 0x52, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x4f, 0x57, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x53, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x10, 0x01, 0x32, 0x92, 0x06, 0x0a, 0x0c, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x65, 0x61, 0x64, 0x12, 0xe9, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x67, + 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x1b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x9e, 0x01, 0x0a, 0x10, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x2c, 0x0a, 0x2a, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x0b, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x33, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x22, 0x2b, 0x0a, 0x11, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xc1, 0x03, + 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x53, + 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, - 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x24, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x2c, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0xcf, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x12, - 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, - 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x12, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2c, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x30, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x0f, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x52, 0x65, - 0x61, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x6c, 0x69, - 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x22, 0x9e, 0x02, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x1c, + 0x0a, 0x18, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, + 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, + 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53, 0x54, + 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x49, + 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, + 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x53, + 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x45, + 0x58, 0x54, 0x52, 0x41, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x53, 0x10, 0x07, 0x12, 0x19, 0x0a, + 0x15, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, + 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x46, 0x46, 0x53, + 0x45, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, + 0x09, 0x22, 0xc9, 0x01, 0x0a, 0x08, 0x52, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4b, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x7b, 0xca, - 0x41, 0x1e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0xd2, 0x41, 0x57, 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, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 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, 0x32, 0xbc, 0x0b, 0x0a, 0x0d, 0x42, - 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0xd7, 0x01, 0x0a, - 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x52, + 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x40, 0x0a, 0x0c, 0x52, + 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x52, + 0x4f, 0x57, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x32, 0x92, 0x06, + 0x0a, 0x0c, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x61, 0x64, 0x12, 0xe9, + 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x69, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x24, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xcf, 0x01, 0x0a, 0x08, 0x52, + 0x65, 0x61, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, + 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x61, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x12, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2c, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x30, 0x01, 0x12, 0xc6, 0x01, 0x0a, + 0x0f, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, + 0x6c, 0x69, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x7b, 0xca, 0x41, 0x1e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x57, 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, 0x62, 0x69, 0x67, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2c, 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, 0x32, 0xbc, 0x0b, 0x0a, 0x0d, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x12, 0xd7, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x22, 0x2b, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0c, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x2c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0xd2, + 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x77, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, + 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, + 0xda, 0x41, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x28, + 0x01, 0x30, 0x01, 0x12, 0xbf, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, + 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0x45, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, + 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd9, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0xdc, 0x01, 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, + 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0xcb, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0x57, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, + 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x77, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, + 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0xd2, 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x6e, - 0x64, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, - 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, - 0x70, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x28, 0x01, 0x30, 0x01, 0x12, 0xbf, 0x01, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x37, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, - 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x22, 0x33, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, - 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd9, 0x01, - 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, - 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xdc, 0x01, 0x0a, 0x17, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, + 0x41, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x1a, 0xb0, + 0x01, 0xca, 0x41, 0x1e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0xd2, 0x41, 0x8b, 0x01, 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, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 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, 0x62, + 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x64, 0x61, + 0x74, 0x61, 0x2c, 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, 0x9d, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, - 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xcb, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x75, - 0x73, 0x68, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, - 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6c, - 0x75, 0x73, 0x68, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x1a, 0xb0, 0x01, 0xca, 0x41, 0x1e, 0x62, 0x69, 0x67, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x8b, 0x01, 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, 0x62, 0x69, - 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 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, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2c, 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, 0x9d, 0x02, 0x0a, 0x24, 0x63, 0x6f, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, - 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x76, 0x31, 0x42, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x47, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, - 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, - 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0xaa, 0x02, 0x20, 0x47, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x42, 0x69, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5c, 0x56, - 0x31, 0xea, 0x41, 0x55, 0x0a, 0x1d, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, - 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x47, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, + 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x5c, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x41, 0x55, 0x0a, 0x1d, 0x62, 0x69, + 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2236,9 +2254,10 @@ var file_google_cloud_bigquery_storage_v1_storage_proto_goTypes = []interface{}{ (*wrapperspb.Int64Value)(nil), // 31: google.protobuf.Int64Value (*status.Status)(nil), // 32: google.rpc.Status (*TableSchema)(nil), // 33: google.cloud.bigquery.storage.v1.TableSchema - (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp - (*ProtoSchema)(nil), // 35: google.cloud.bigquery.storage.v1.ProtoSchema - (*ProtoRows)(nil), // 36: google.cloud.bigquery.storage.v1.ProtoRows + (WriteStreamView)(0), // 34: google.cloud.bigquery.storage.v1.WriteStreamView + (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp + (*ProtoSchema)(nil), // 36: google.cloud.bigquery.storage.v1.ProtoSchema + (*ProtoRows)(nil), // 37: google.cloud.bigquery.storage.v1.ProtoRows } var file_google_cloud_bigquery_storage_v1_storage_proto_depIdxs = []int32{ 24, // 0: google.cloud.bigquery.storage.v1.CreateReadSessionRequest.read_session:type_name -> google.cloud.bigquery.storage.v1.ReadSession @@ -2258,37 +2277,38 @@ var file_google_cloud_bigquery_storage_v1_storage_proto_depIdxs = []int32{ 32, // 14: google.cloud.bigquery.storage.v1.AppendRowsResponse.error:type_name -> google.rpc.Status 33, // 15: google.cloud.bigquery.storage.v1.AppendRowsResponse.updated_schema:type_name -> google.cloud.bigquery.storage.v1.TableSchema 20, // 16: google.cloud.bigquery.storage.v1.AppendRowsResponse.row_errors:type_name -> google.cloud.bigquery.storage.v1.RowError - 34, // 17: google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse.commit_time:type_name -> google.protobuf.Timestamp - 19, // 18: google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse.stream_errors:type_name -> google.cloud.bigquery.storage.v1.StorageError - 31, // 19: google.cloud.bigquery.storage.v1.FlushRowsRequest.offset:type_name -> google.protobuf.Int64Value - 0, // 20: google.cloud.bigquery.storage.v1.StorageError.code:type_name -> google.cloud.bigquery.storage.v1.StorageError.StorageErrorCode - 1, // 21: google.cloud.bigquery.storage.v1.RowError.code:type_name -> google.cloud.bigquery.storage.v1.RowError.RowErrorCode - 35, // 22: google.cloud.bigquery.storage.v1.AppendRowsRequest.ProtoData.writer_schema:type_name -> google.cloud.bigquery.storage.v1.ProtoSchema - 36, // 23: google.cloud.bigquery.storage.v1.AppendRowsRequest.ProtoData.rows:type_name -> google.cloud.bigquery.storage.v1.ProtoRows - 31, // 24: google.cloud.bigquery.storage.v1.AppendRowsResponse.AppendResult.offset:type_name -> google.protobuf.Int64Value - 2, // 25: google.cloud.bigquery.storage.v1.BigQueryRead.CreateReadSession:input_type -> google.cloud.bigquery.storage.v1.CreateReadSessionRequest - 3, // 26: google.cloud.bigquery.storage.v1.BigQueryRead.ReadRows:input_type -> google.cloud.bigquery.storage.v1.ReadRowsRequest - 7, // 27: google.cloud.bigquery.storage.v1.BigQueryRead.SplitReadStream:input_type -> google.cloud.bigquery.storage.v1.SplitReadStreamRequest - 9, // 28: google.cloud.bigquery.storage.v1.BigQueryWrite.CreateWriteStream:input_type -> google.cloud.bigquery.storage.v1.CreateWriteStreamRequest - 10, // 29: google.cloud.bigquery.storage.v1.BigQueryWrite.AppendRows:input_type -> google.cloud.bigquery.storage.v1.AppendRowsRequest - 12, // 30: google.cloud.bigquery.storage.v1.BigQueryWrite.GetWriteStream:input_type -> google.cloud.bigquery.storage.v1.GetWriteStreamRequest - 15, // 31: google.cloud.bigquery.storage.v1.BigQueryWrite.FinalizeWriteStream:input_type -> google.cloud.bigquery.storage.v1.FinalizeWriteStreamRequest - 13, // 32: google.cloud.bigquery.storage.v1.BigQueryWrite.BatchCommitWriteStreams:input_type -> google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsRequest - 17, // 33: google.cloud.bigquery.storage.v1.BigQueryWrite.FlushRows:input_type -> google.cloud.bigquery.storage.v1.FlushRowsRequest - 24, // 34: google.cloud.bigquery.storage.v1.BigQueryRead.CreateReadSession:output_type -> google.cloud.bigquery.storage.v1.ReadSession - 6, // 35: google.cloud.bigquery.storage.v1.BigQueryRead.ReadRows:output_type -> google.cloud.bigquery.storage.v1.ReadRowsResponse - 8, // 36: google.cloud.bigquery.storage.v1.BigQueryRead.SplitReadStream:output_type -> google.cloud.bigquery.storage.v1.SplitReadStreamResponse - 30, // 37: google.cloud.bigquery.storage.v1.BigQueryWrite.CreateWriteStream:output_type -> google.cloud.bigquery.storage.v1.WriteStream - 11, // 38: google.cloud.bigquery.storage.v1.BigQueryWrite.AppendRows:output_type -> google.cloud.bigquery.storage.v1.AppendRowsResponse - 30, // 39: google.cloud.bigquery.storage.v1.BigQueryWrite.GetWriteStream:output_type -> google.cloud.bigquery.storage.v1.WriteStream - 16, // 40: google.cloud.bigquery.storage.v1.BigQueryWrite.FinalizeWriteStream:output_type -> google.cloud.bigquery.storage.v1.FinalizeWriteStreamResponse - 14, // 41: google.cloud.bigquery.storage.v1.BigQueryWrite.BatchCommitWriteStreams:output_type -> google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse - 18, // 42: google.cloud.bigquery.storage.v1.BigQueryWrite.FlushRows:output_type -> google.cloud.bigquery.storage.v1.FlushRowsResponse - 34, // [34:43] is the sub-list for method output_type - 25, // [25:34] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 34, // 17: google.cloud.bigquery.storage.v1.GetWriteStreamRequest.view:type_name -> google.cloud.bigquery.storage.v1.WriteStreamView + 35, // 18: google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse.commit_time:type_name -> google.protobuf.Timestamp + 19, // 19: google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse.stream_errors:type_name -> google.cloud.bigquery.storage.v1.StorageError + 31, // 20: google.cloud.bigquery.storage.v1.FlushRowsRequest.offset:type_name -> google.protobuf.Int64Value + 0, // 21: google.cloud.bigquery.storage.v1.StorageError.code:type_name -> google.cloud.bigquery.storage.v1.StorageError.StorageErrorCode + 1, // 22: google.cloud.bigquery.storage.v1.RowError.code:type_name -> google.cloud.bigquery.storage.v1.RowError.RowErrorCode + 36, // 23: google.cloud.bigquery.storage.v1.AppendRowsRequest.ProtoData.writer_schema:type_name -> google.cloud.bigquery.storage.v1.ProtoSchema + 37, // 24: google.cloud.bigquery.storage.v1.AppendRowsRequest.ProtoData.rows:type_name -> google.cloud.bigquery.storage.v1.ProtoRows + 31, // 25: google.cloud.bigquery.storage.v1.AppendRowsResponse.AppendResult.offset:type_name -> google.protobuf.Int64Value + 2, // 26: google.cloud.bigquery.storage.v1.BigQueryRead.CreateReadSession:input_type -> google.cloud.bigquery.storage.v1.CreateReadSessionRequest + 3, // 27: google.cloud.bigquery.storage.v1.BigQueryRead.ReadRows:input_type -> google.cloud.bigquery.storage.v1.ReadRowsRequest + 7, // 28: google.cloud.bigquery.storage.v1.BigQueryRead.SplitReadStream:input_type -> google.cloud.bigquery.storage.v1.SplitReadStreamRequest + 9, // 29: google.cloud.bigquery.storage.v1.BigQueryWrite.CreateWriteStream:input_type -> google.cloud.bigquery.storage.v1.CreateWriteStreamRequest + 10, // 30: google.cloud.bigquery.storage.v1.BigQueryWrite.AppendRows:input_type -> google.cloud.bigquery.storage.v1.AppendRowsRequest + 12, // 31: google.cloud.bigquery.storage.v1.BigQueryWrite.GetWriteStream:input_type -> google.cloud.bigquery.storage.v1.GetWriteStreamRequest + 15, // 32: google.cloud.bigquery.storage.v1.BigQueryWrite.FinalizeWriteStream:input_type -> google.cloud.bigquery.storage.v1.FinalizeWriteStreamRequest + 13, // 33: google.cloud.bigquery.storage.v1.BigQueryWrite.BatchCommitWriteStreams:input_type -> google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsRequest + 17, // 34: google.cloud.bigquery.storage.v1.BigQueryWrite.FlushRows:input_type -> google.cloud.bigquery.storage.v1.FlushRowsRequest + 24, // 35: google.cloud.bigquery.storage.v1.BigQueryRead.CreateReadSession:output_type -> google.cloud.bigquery.storage.v1.ReadSession + 6, // 36: google.cloud.bigquery.storage.v1.BigQueryRead.ReadRows:output_type -> google.cloud.bigquery.storage.v1.ReadRowsResponse + 8, // 37: google.cloud.bigquery.storage.v1.BigQueryRead.SplitReadStream:output_type -> google.cloud.bigquery.storage.v1.SplitReadStreamResponse + 30, // 38: google.cloud.bigquery.storage.v1.BigQueryWrite.CreateWriteStream:output_type -> google.cloud.bigquery.storage.v1.WriteStream + 11, // 39: google.cloud.bigquery.storage.v1.BigQueryWrite.AppendRows:output_type -> google.cloud.bigquery.storage.v1.AppendRowsResponse + 30, // 40: google.cloud.bigquery.storage.v1.BigQueryWrite.GetWriteStream:output_type -> google.cloud.bigquery.storage.v1.WriteStream + 16, // 41: google.cloud.bigquery.storage.v1.BigQueryWrite.FinalizeWriteStream:output_type -> google.cloud.bigquery.storage.v1.FinalizeWriteStreamResponse + 14, // 42: google.cloud.bigquery.storage.v1.BigQueryWrite.BatchCommitWriteStreams:output_type -> google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse + 18, // 43: google.cloud.bigquery.storage.v1.BigQueryWrite.FlushRows:output_type -> google.cloud.bigquery.storage.v1.FlushRowsResponse + 35, // [35:44] is the sub-list for method output_type + 26, // [26:35] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_google_cloud_bigquery_storage_v1_storage_proto_init() } diff --git a/googleapis/cloud/bigquery/storage/v1/stream.pb.go b/googleapis/cloud/bigquery/storage/v1/stream.pb.go index 7769b92c8..b0cfb769c 100644 --- a/googleapis/cloud/bigquery/storage/v1/stream.pb.go +++ b/googleapis/cloud/bigquery/storage/v1/stream.pb.go @@ -92,6 +92,64 @@ func (DataFormat) EnumDescriptor() ([]byte, []int) { return file_google_cloud_bigquery_storage_v1_stream_proto_rawDescGZIP(), []int{0} } +// WriteStreamView is a view enum that controls what details about a write +// stream should be returned. +type WriteStreamView int32 + +const ( + // The default / unset value. + WriteStreamView_WRITE_STREAM_VIEW_UNSPECIFIED WriteStreamView = 0 + // The BASIC projection returns basic metadata about a write stream. The + // basic view does not include schema information. This is the default view + // returned by GetWriteStream. + WriteStreamView_BASIC WriteStreamView = 1 + // The FULL projection returns all available write stream metadata, including + // the schema. CreateWriteStream returns the full projection of write stream + // metadata. + WriteStreamView_FULL WriteStreamView = 2 +) + +// Enum value maps for WriteStreamView. +var ( + WriteStreamView_name = map[int32]string{ + 0: "WRITE_STREAM_VIEW_UNSPECIFIED", + 1: "BASIC", + 2: "FULL", + } + WriteStreamView_value = map[string]int32{ + "WRITE_STREAM_VIEW_UNSPECIFIED": 0, + "BASIC": 1, + "FULL": 2, + } +) + +func (x WriteStreamView) Enum() *WriteStreamView { + p := new(WriteStreamView) + *p = x + return p +} + +func (x WriteStreamView) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WriteStreamView) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[1].Descriptor() +} + +func (WriteStreamView) Type() protoreflect.EnumType { + return &file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[1] +} + +func (x WriteStreamView) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WriteStreamView.Descriptor instead. +func (WriteStreamView) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_bigquery_storage_v1_stream_proto_rawDescGZIP(), []int{1} +} + // Type enum of the stream. type WriteStream_Type int32 @@ -134,11 +192,11 @@ func (x WriteStream_Type) String() string { } func (WriteStream_Type) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[1].Descriptor() + return file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[2].Descriptor() } func (WriteStream_Type) Type() protoreflect.EnumType { - return &file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[1] + return &file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[2] } func (x WriteStream_Type) Number() protoreflect.EnumNumber { @@ -184,11 +242,11 @@ func (x WriteStream_WriteMode) String() string { } func (WriteStream_WriteMode) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[2].Descriptor() + return file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[3].Descriptor() } func (WriteStream_WriteMode) Type() protoreflect.EnumType { - return &file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[2] + return &file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes[3] } func (x WriteStream_WriteMode) Number() protoreflect.EnumNumber { @@ -463,6 +521,10 @@ type WriteStream struct { TableSchema *TableSchema `protobuf:"bytes,5,opt,name=table_schema,json=tableSchema,proto3" json:"table_schema,omitempty"` // Immutable. Mode of the stream. WriteMode WriteStream_WriteMode `protobuf:"varint,7,opt,name=write_mode,json=writeMode,proto3,enum=google.cloud.bigquery.storage.v1.WriteStream_WriteMode" json:"write_mode,omitempty"` + // Immutable. The geographic location where the stream's dataset resides. See + // https://cloud.google.com/bigquery/docs/locations for supported + // locations. + Location string `protobuf:"bytes,8,opt,name=location,proto3" json:"location,omitempty"` } func (x *WriteStream) Reset() { @@ -539,6 +601,13 @@ func (x *WriteStream) GetWriteMode() WriteStream_WriteMode { return WriteStream_WRITE_MODE_UNSPECIFIED } +func (x *WriteStream) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + // Additional attributes when reading a table. type ReadSession_TableModifiers struct { state protoimpl.MessageState @@ -871,7 +940,7 @@ var file_google_cloud_bigquery_storage_v1_stream_proto_rawDesc = []byte{ 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, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x7d, 0x22, 0xa0, + 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x7d, 0x22, 0xc1, 0x05, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 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, 0x4b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, @@ -898,39 +967,46 @@ var file_google_cloud_bigquery_storage_v1_stream_proto_rawDesc = []byte{ 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x05, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, - 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, - 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, - 0x45, 0x44, 0x10, 0x03, 0x22, 0x33, 0x0a, 0x09, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, - 0x06, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x3a, 0x76, 0xea, 0x41, 0x73, 0x0a, 0x2a, - 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x45, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, - 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x7d, 0x2a, 0x3e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, - 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x41, 0x56, 0x52, 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x52, 0x52, 0x4f, 0x57, 0x10, - 0x02, 0x42, 0xc4, 0x01, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x47, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x5c, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5c, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x05, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, + 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, + 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x55, 0x46, 0x46, 0x45, + 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x33, 0x0a, 0x09, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x3a, 0x76, 0xea, 0x41, 0x73, 0x0a, + 0x2a, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x45, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x7d, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x7d, 0x2a, 0x3e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, + 0x04, 0x41, 0x56, 0x52, 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x52, 0x52, 0x4f, 0x57, + 0x10, 0x02, 0x2a, 0x49, 0x0a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x56, 0x69, 0x65, 0x77, 0x12, 0x21, 0x0a, 0x1d, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x53, + 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, + 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x42, 0xc4, 0x01, + 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x47, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, + 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0xaa, 0x02, + 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x42, 0x69, + 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x5c, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x5c, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -945,40 +1021,41 @@ func file_google_cloud_bigquery_storage_v1_stream_proto_rawDescGZIP() []byte { return file_google_cloud_bigquery_storage_v1_stream_proto_rawDescData } -var file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_google_cloud_bigquery_storage_v1_stream_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_google_cloud_bigquery_storage_v1_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_google_cloud_bigquery_storage_v1_stream_proto_goTypes = []interface{}{ (DataFormat)(0), // 0: google.cloud.bigquery.storage.v1.DataFormat - (WriteStream_Type)(0), // 1: google.cloud.bigquery.storage.v1.WriteStream.Type - (WriteStream_WriteMode)(0), // 2: google.cloud.bigquery.storage.v1.WriteStream.WriteMode - (*ReadSession)(nil), // 3: google.cloud.bigquery.storage.v1.ReadSession - (*ReadStream)(nil), // 4: google.cloud.bigquery.storage.v1.ReadStream - (*WriteStream)(nil), // 5: google.cloud.bigquery.storage.v1.WriteStream - (*ReadSession_TableModifiers)(nil), // 6: google.cloud.bigquery.storage.v1.ReadSession.TableModifiers - (*ReadSession_TableReadOptions)(nil), // 7: google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions - (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp - (*AvroSchema)(nil), // 9: google.cloud.bigquery.storage.v1.AvroSchema - (*ArrowSchema)(nil), // 10: google.cloud.bigquery.storage.v1.ArrowSchema - (*TableSchema)(nil), // 11: google.cloud.bigquery.storage.v1.TableSchema - (*ArrowSerializationOptions)(nil), // 12: google.cloud.bigquery.storage.v1.ArrowSerializationOptions - (*AvroSerializationOptions)(nil), // 13: google.cloud.bigquery.storage.v1.AvroSerializationOptions + (WriteStreamView)(0), // 1: google.cloud.bigquery.storage.v1.WriteStreamView + (WriteStream_Type)(0), // 2: google.cloud.bigquery.storage.v1.WriteStream.Type + (WriteStream_WriteMode)(0), // 3: google.cloud.bigquery.storage.v1.WriteStream.WriteMode + (*ReadSession)(nil), // 4: google.cloud.bigquery.storage.v1.ReadSession + (*ReadStream)(nil), // 5: google.cloud.bigquery.storage.v1.ReadStream + (*WriteStream)(nil), // 6: google.cloud.bigquery.storage.v1.WriteStream + (*ReadSession_TableModifiers)(nil), // 7: google.cloud.bigquery.storage.v1.ReadSession.TableModifiers + (*ReadSession_TableReadOptions)(nil), // 8: google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp + (*AvroSchema)(nil), // 10: google.cloud.bigquery.storage.v1.AvroSchema + (*ArrowSchema)(nil), // 11: google.cloud.bigquery.storage.v1.ArrowSchema + (*TableSchema)(nil), // 12: google.cloud.bigquery.storage.v1.TableSchema + (*ArrowSerializationOptions)(nil), // 13: google.cloud.bigquery.storage.v1.ArrowSerializationOptions + (*AvroSerializationOptions)(nil), // 14: google.cloud.bigquery.storage.v1.AvroSerializationOptions } var file_google_cloud_bigquery_storage_v1_stream_proto_depIdxs = []int32{ - 8, // 0: google.cloud.bigquery.storage.v1.ReadSession.expire_time:type_name -> google.protobuf.Timestamp + 9, // 0: google.cloud.bigquery.storage.v1.ReadSession.expire_time:type_name -> google.protobuf.Timestamp 0, // 1: google.cloud.bigquery.storage.v1.ReadSession.data_format:type_name -> google.cloud.bigquery.storage.v1.DataFormat - 9, // 2: google.cloud.bigquery.storage.v1.ReadSession.avro_schema:type_name -> google.cloud.bigquery.storage.v1.AvroSchema - 10, // 3: google.cloud.bigquery.storage.v1.ReadSession.arrow_schema:type_name -> google.cloud.bigquery.storage.v1.ArrowSchema - 6, // 4: google.cloud.bigquery.storage.v1.ReadSession.table_modifiers:type_name -> google.cloud.bigquery.storage.v1.ReadSession.TableModifiers - 7, // 5: google.cloud.bigquery.storage.v1.ReadSession.read_options:type_name -> google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions - 4, // 6: google.cloud.bigquery.storage.v1.ReadSession.streams:type_name -> google.cloud.bigquery.storage.v1.ReadStream - 1, // 7: google.cloud.bigquery.storage.v1.WriteStream.type:type_name -> google.cloud.bigquery.storage.v1.WriteStream.Type - 8, // 8: google.cloud.bigquery.storage.v1.WriteStream.create_time:type_name -> google.protobuf.Timestamp - 8, // 9: google.cloud.bigquery.storage.v1.WriteStream.commit_time:type_name -> google.protobuf.Timestamp - 11, // 10: google.cloud.bigquery.storage.v1.WriteStream.table_schema:type_name -> google.cloud.bigquery.storage.v1.TableSchema - 2, // 11: google.cloud.bigquery.storage.v1.WriteStream.write_mode:type_name -> google.cloud.bigquery.storage.v1.WriteStream.WriteMode - 8, // 12: google.cloud.bigquery.storage.v1.ReadSession.TableModifiers.snapshot_time:type_name -> google.protobuf.Timestamp - 12, // 13: google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.arrow_serialization_options:type_name -> google.cloud.bigquery.storage.v1.ArrowSerializationOptions - 13, // 14: google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.avro_serialization_options:type_name -> google.cloud.bigquery.storage.v1.AvroSerializationOptions + 10, // 2: google.cloud.bigquery.storage.v1.ReadSession.avro_schema:type_name -> google.cloud.bigquery.storage.v1.AvroSchema + 11, // 3: google.cloud.bigquery.storage.v1.ReadSession.arrow_schema:type_name -> google.cloud.bigquery.storage.v1.ArrowSchema + 7, // 4: google.cloud.bigquery.storage.v1.ReadSession.table_modifiers:type_name -> google.cloud.bigquery.storage.v1.ReadSession.TableModifiers + 8, // 5: google.cloud.bigquery.storage.v1.ReadSession.read_options:type_name -> google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions + 5, // 6: google.cloud.bigquery.storage.v1.ReadSession.streams:type_name -> google.cloud.bigquery.storage.v1.ReadStream + 2, // 7: google.cloud.bigquery.storage.v1.WriteStream.type:type_name -> google.cloud.bigquery.storage.v1.WriteStream.Type + 9, // 8: google.cloud.bigquery.storage.v1.WriteStream.create_time:type_name -> google.protobuf.Timestamp + 9, // 9: google.cloud.bigquery.storage.v1.WriteStream.commit_time:type_name -> google.protobuf.Timestamp + 12, // 10: google.cloud.bigquery.storage.v1.WriteStream.table_schema:type_name -> google.cloud.bigquery.storage.v1.TableSchema + 3, // 11: google.cloud.bigquery.storage.v1.WriteStream.write_mode:type_name -> google.cloud.bigquery.storage.v1.WriteStream.WriteMode + 9, // 12: google.cloud.bigquery.storage.v1.ReadSession.TableModifiers.snapshot_time:type_name -> google.protobuf.Timestamp + 13, // 13: google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.arrow_serialization_options:type_name -> google.cloud.bigquery.storage.v1.ArrowSerializationOptions + 14, // 14: google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.avro_serialization_options:type_name -> google.cloud.bigquery.storage.v1.AvroSerializationOptions 15, // [15:15] is the sub-list for method output_type 15, // [15:15] is the sub-list for method input_type 15, // [15:15] is the sub-list for extension type_name @@ -1069,7 +1146,7 @@ func file_google_cloud_bigquery_storage_v1_stream_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_bigquery_storage_v1_stream_proto_rawDesc, - NumEnums: 3, + NumEnums: 4, NumMessages: 5, NumExtensions: 0, NumServices: 0, diff --git a/googleapis/cloud/retail/v2beta/catalog.pb.go b/googleapis/cloud/retail/v2beta/catalog.pb.go index c1252ba89..585aae635 100644 --- a/googleapis/cloud/retail/v2beta/catalog.pb.go +++ b/googleapis/cloud/retail/v2beta/catalog.pb.go @@ -254,6 +254,60 @@ func (CatalogAttribute_SearchableOption) EnumDescriptor() ([]byte, []int) { return file_google_cloud_retail_v2beta_catalog_proto_rawDescGZIP(), []int{1, 3} } +// The status of the exact-searchable option of a catalog attribute. +type CatalogAttribute_ExactSearchableOption int32 + +const ( + // Value used when unset. Defaults to + // [EXACT_SEARCHABLE_DISABLED][google.cloud.retail.v2beta.CatalogAttribute.ExactSearchableOption.EXACT_SEARCHABLE_DISABLED]. + CatalogAttribute_EXACT_SEARCHABLE_OPTION_UNSPECIFIED CatalogAttribute_ExactSearchableOption = 0 + // Exact searchable option enabled for an attribute. + CatalogAttribute_EXACT_SEARCHABLE_ENABLED CatalogAttribute_ExactSearchableOption = 1 + // Exact searchable option disabled for an attribute. + CatalogAttribute_EXACT_SEARCHABLE_DISABLED CatalogAttribute_ExactSearchableOption = 2 +) + +// Enum value maps for CatalogAttribute_ExactSearchableOption. +var ( + CatalogAttribute_ExactSearchableOption_name = map[int32]string{ + 0: "EXACT_SEARCHABLE_OPTION_UNSPECIFIED", + 1: "EXACT_SEARCHABLE_ENABLED", + 2: "EXACT_SEARCHABLE_DISABLED", + } + CatalogAttribute_ExactSearchableOption_value = map[string]int32{ + "EXACT_SEARCHABLE_OPTION_UNSPECIFIED": 0, + "EXACT_SEARCHABLE_ENABLED": 1, + "EXACT_SEARCHABLE_DISABLED": 2, + } +) + +func (x CatalogAttribute_ExactSearchableOption) Enum() *CatalogAttribute_ExactSearchableOption { + p := new(CatalogAttribute_ExactSearchableOption) + *p = x + return p +} + +func (x CatalogAttribute_ExactSearchableOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CatalogAttribute_ExactSearchableOption) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_retail_v2beta_catalog_proto_enumTypes[4].Descriptor() +} + +func (CatalogAttribute_ExactSearchableOption) Type() protoreflect.EnumType { + return &file_google_cloud_retail_v2beta_catalog_proto_enumTypes[4] +} + +func (x CatalogAttribute_ExactSearchableOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CatalogAttribute_ExactSearchableOption.Descriptor instead. +func (CatalogAttribute_ExactSearchableOption) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_catalog_proto_rawDescGZIP(), []int{1, 4} +} + // Configures what level the product should be uploaded with regards to // how users will be send events and how predictions will be made. type ProductLevelConfig struct { @@ -266,16 +320,17 @@ type ProductLevelConfig struct { // // * `primary` (default): You can ingest // [Product][google.cloud.retail.v2beta.Product]s of all types. When - // ingesting a [Product][google.cloud.retail.v2beta.Product], its type will - // default to - // [Product.Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] - // if unset. - // * `variant` (incompatible with Retail Search): You can only - // ingest - // [Product.Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] - // [Product][google.cloud.retail.v2beta.Product]s. This means - // [Product.primary_product_id][google.cloud.retail.v2beta.Product.primary_product_id] - // cannot be empty. + // + // ingesting a [Product][google.cloud.retail.v2beta.Product], its type will + // default to + // [Product.Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] + // if unset. + // - `variant` (incompatible with Retail Search): You can only + // ingest + // [Product.Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] + // [Product][google.cloud.retail.v2beta.Product]s. This means + // [Product.primary_product_id][google.cloud.retail.v2beta.Product.primary_product_id] + // cannot be empty. // // If this field is set to an invalid value other than these, an // INVALID_ARGUMENT error is returned. @@ -293,10 +348,10 @@ type ProductLevelConfig struct { // imported as [Product.id][google.cloud.retail.v2beta.Product.id]. Acceptable // values are: // - // * `offerId` (default): Import `offerId` as the product ID. - // * `itemGroupId`: Import `itemGroupId` as the product ID. Notice that Retail - // API will choose one item from the ones with the same `itemGroupId`, and - // use it to represent the item group. + // - `offerId` (default): Import `offerId` as the product ID. + // - `itemGroupId`: Import `itemGroupId` as the product ID. Notice that Retail + // API will choose one item from the ones with the same `itemGroupId`, and + // use it to represent the item group. // // If this field is set to an invalid value other than these, an // INVALID_ARGUMENT error is returned. @@ -428,6 +483,10 @@ type CatalogAttribute struct { // This option works for categorical features only, // does not work for numerical features, inventory filtering. RecommendationsFilteringOption RecommendationsFilteringOption `protobuf:"varint,8,opt,name=recommendations_filtering_option,json=recommendationsFilteringOption,proto3,enum=google.cloud.retail.v2beta.RecommendationsFilteringOption" json:"recommendations_filtering_option,omitempty"` + // If EXACT_SEARCHABLE_ENABLED, attribute values will be exact searchable. + // This property only applies to textual custom attributes and requires + // indexable set to enabled to enable exact-searchable. + ExactSearchableOption CatalogAttribute_ExactSearchableOption `protobuf:"varint,11,opt,name=exact_searchable_option,json=exactSearchableOption,proto3,enum=google.cloud.retail.v2beta.CatalogAttribute_ExactSearchableOption" json:"exact_searchable_option,omitempty"` } func (x *CatalogAttribute) Reset() { @@ -511,6 +570,13 @@ func (x *CatalogAttribute) GetRecommendationsFilteringOption() RecommendationsFi return RecommendationsFilteringOption_RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED } +func (x *CatalogAttribute) GetExactSearchableOption() CatalogAttribute_ExactSearchableOption { + if x != nil { + return x.ExactSearchableOption + } + return CatalogAttribute_EXACT_SEARCHABLE_OPTION_UNSPECIFIED +} + // Catalog level attribute config. type AttributesConfig struct { state protoimpl.MessageState @@ -783,8 +849,8 @@ type MerchantCenterLink struct { // A single branch id can only have one linked merchant center account id. BranchId string `protobuf:"bytes,2,opt,name=branch_id,json=branchId,proto3" json:"branch_id,omitempty"` // String representing the destination to import for, all if left empty. - // List of possible values can be found here. - // [https://support.google.com/merchants/answer/7501026] + // List of possible values is given in [Included + // destination](https://support.google.com/merchants/answer/7501026). // List of allowed string values: // "Shopping_ads", "Buy_on_google_listings", "Display_ads", "Local_inventory // _ads", "Free_listings", "Free_local_listings" @@ -1035,7 +1101,7 @@ var file_google_cloud_retail_v2beta_catalog_proto_rawDesc = []byte{ 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x22, 0xff, 0x07, 0x0a, 0x10, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, + 0x22, 0xfa, 0x09, 0x0a, 0x10, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x06, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, @@ -1074,180 +1140,196 @@ var file_google_cloud_retail_v2beta_catalog_proto_rawDesc = []byte{ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x38, 0x0a, 0x0d, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 0x58, 0x54, 0x55, 0x41, - 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x41, 0x4c, - 0x10, 0x02, 0x22, 0x62, 0x0a, 0x0f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x61, 0x62, 0x6c, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x44, 0x45, 0x58, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, - 0x0a, 0x12, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, - 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x22, 0x81, 0x01, 0x0a, 0x16, 0x44, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x46, 0x61, 0x63, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x46, 0x41, 0x43, - 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x44, - 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x59, - 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x22, 0x66, 0x0a, 0x10, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x1d, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x41, - 0x52, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, - 0x10, 0x02, 0x22, 0xfd, 0x03, 0x0a, 0x10, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x16, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x72, 0x0a, 0x16, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x42, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x78, 0xea, 0x41, 0x75, 0x0a, 0x26, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 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, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x87, 0x07, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, - 0x78, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, - 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x65, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x74, 0x0a, 0x18, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x16, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x21, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x69, - 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1e, 0x6c, 0x61, 0x73, 0x74, - 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6e, 0x0a, 0x15, 0x64, 0x65, - 0x6e, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7a, 0x0a, 0x17, 0x65, 0x78, 0x61, 0x63, + 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x64, 0x65, 0x6e, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a, 0x1e, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x64, 0x65, 0x6e, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6e, - 0x79, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x70, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, - 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x65, + 0x78, 0x61, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x38, 0x0a, 0x0d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 0x58, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x01, 0x12, + 0x0d, 0x0a, 0x09, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x02, 0x22, 0x62, + 0x0a, 0x0f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, + 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, + 0x44, 0x45, 0x58, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, + 0x10, 0x02, 0x22, 0x81, 0x01, 0x0a, 0x16, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, + 0x63, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x24, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x59, 0x4e, 0x41, 0x4d, + 0x49, 0x43, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, + 0x43, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x22, 0x66, 0x0a, 0x10, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x45, + 0x41, 0x52, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, + 0x12, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, + 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x22, 0x7d, + 0x0a, 0x15, 0x45, 0x78, 0x61, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x23, 0x45, 0x58, 0x41, 0x43, 0x54, + 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x41, 0x43, 0x54, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1d, + 0x0a, 0x19, 0x45, 0x58, 0x41, 0x43, 0x54, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x22, 0xfd, 0x03, + 0x0a, 0x10, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x72, + 0x0a, 0x12, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x11, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x16, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, + 0x72, 0x0a, 0x16, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 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, 0x42, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x3a, 0x78, 0xea, 0x41, 0x75, 0x0a, 0x26, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x4b, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, + 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x87, 0x07, + 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x6d, 0x61, 0x78, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, + 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x50, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, + 0x74, 0x6f, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x12, + 0x74, 0x0a, 0x18, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x73, + 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x21, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x75, 0x67, 0x67, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6e, 0x0a, 0x15, 0x64, 0x65, 0x6e, 0x79, 0x6c, 0x69, 0x73, + 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x1f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, - 0x69, 0x73, 0x74, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3a, 0x78, 0xea, 0x41, 0x75, 0x0a, 0x26, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x4b, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xdd, 0x01, 0x0a, - 0x12, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, - 0x69, 0x6e, 0x6b, 0x12, 0x40, 0x0a, 0x1a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x5f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x17, 0x6d, 0x65, - 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x63, 0x0a, 0x1b, - 0x4d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, - 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x05, 0x6c, - 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x52, 0x13, 0x64, 0x65, 0x6e, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a, 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, + 0x6e, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6e, 0x79, 0x6c, 0x69, 0x73, 0x74, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x70, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x4a, 0x0a, 0x1f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x78, 0xea, + 0x41, 0x75, 0x0a, 0x26, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xdd, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x72, 0x63, + 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x40, + 0x0a, 0x1a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x17, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, + 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x49, 0x64, 0x12, 0x22, 0x0a, + 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x63, 0x0a, 0x1b, 0x4d, 0x65, 0x72, 0x63, 0x68, + 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x95, 0x03, 0x0a, + 0x07, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, + 0x41, 0x05, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x65, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7c, 0x0a, 0x1e, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, + 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x72, 0x63, + 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x1b, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, + 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x5e, 0xea, 0x41, 0x5b, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x3a, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x7d, 0x42, 0xd5, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, - 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, - 0x73, 0x22, 0x95, 0x03, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, - 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0c, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7c, 0x0a, 0x1e, 0x6d, - 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, - 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2e, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, - 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x1b, 0x6d, 0x65, - 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x6b, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x5e, 0xea, 0x41, 0x5b, 0x0a, 0x1d, - 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x3a, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, - 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x42, 0xd5, 0x01, 0x0a, 0x1e, 0x63, 0x6f, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x0c, 0x43, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, - 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, - 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, - 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, - 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x0c, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, + 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, + 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1262,45 +1344,47 @@ func file_google_cloud_retail_v2beta_catalog_proto_rawDescGZIP() []byte { return file_google_cloud_retail_v2beta_catalog_proto_rawDescData } -var file_google_cloud_retail_v2beta_catalog_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_google_cloud_retail_v2beta_catalog_proto_enumTypes = make([]protoimpl.EnumInfo, 5) var file_google_cloud_retail_v2beta_catalog_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_google_cloud_retail_v2beta_catalog_proto_goTypes = []interface{}{ (CatalogAttribute_AttributeType)(0), // 0: google.cloud.retail.v2beta.CatalogAttribute.AttributeType (CatalogAttribute_IndexableOption)(0), // 1: google.cloud.retail.v2beta.CatalogAttribute.IndexableOption (CatalogAttribute_DynamicFacetableOption)(0), // 2: google.cloud.retail.v2beta.CatalogAttribute.DynamicFacetableOption (CatalogAttribute_SearchableOption)(0), // 3: google.cloud.retail.v2beta.CatalogAttribute.SearchableOption - (*ProductLevelConfig)(nil), // 4: google.cloud.retail.v2beta.ProductLevelConfig - (*CatalogAttribute)(nil), // 5: google.cloud.retail.v2beta.CatalogAttribute - (*AttributesConfig)(nil), // 6: google.cloud.retail.v2beta.AttributesConfig - (*CompletionConfig)(nil), // 7: google.cloud.retail.v2beta.CompletionConfig - (*MerchantCenterLink)(nil), // 8: google.cloud.retail.v2beta.MerchantCenterLink - (*MerchantCenterLinkingConfig)(nil), // 9: google.cloud.retail.v2beta.MerchantCenterLinkingConfig - (*Catalog)(nil), // 10: google.cloud.retail.v2beta.Catalog - nil, // 11: google.cloud.retail.v2beta.AttributesConfig.CatalogAttributesEntry - (RecommendationsFilteringOption)(0), // 12: google.cloud.retail.v2beta.RecommendationsFilteringOption - (AttributeConfigLevel)(0), // 13: google.cloud.retail.v2beta.AttributeConfigLevel - (*CompletionDataInputConfig)(nil), // 14: google.cloud.retail.v2beta.CompletionDataInputConfig + (CatalogAttribute_ExactSearchableOption)(0), // 4: google.cloud.retail.v2beta.CatalogAttribute.ExactSearchableOption + (*ProductLevelConfig)(nil), // 5: google.cloud.retail.v2beta.ProductLevelConfig + (*CatalogAttribute)(nil), // 6: google.cloud.retail.v2beta.CatalogAttribute + (*AttributesConfig)(nil), // 7: google.cloud.retail.v2beta.AttributesConfig + (*CompletionConfig)(nil), // 8: google.cloud.retail.v2beta.CompletionConfig + (*MerchantCenterLink)(nil), // 9: google.cloud.retail.v2beta.MerchantCenterLink + (*MerchantCenterLinkingConfig)(nil), // 10: google.cloud.retail.v2beta.MerchantCenterLinkingConfig + (*Catalog)(nil), // 11: google.cloud.retail.v2beta.Catalog + nil, // 12: google.cloud.retail.v2beta.AttributesConfig.CatalogAttributesEntry + (RecommendationsFilteringOption)(0), // 13: google.cloud.retail.v2beta.RecommendationsFilteringOption + (AttributeConfigLevel)(0), // 14: google.cloud.retail.v2beta.AttributeConfigLevel + (*CompletionDataInputConfig)(nil), // 15: google.cloud.retail.v2beta.CompletionDataInputConfig } var file_google_cloud_retail_v2beta_catalog_proto_depIdxs = []int32{ 0, // 0: google.cloud.retail.v2beta.CatalogAttribute.type:type_name -> google.cloud.retail.v2beta.CatalogAttribute.AttributeType 1, // 1: google.cloud.retail.v2beta.CatalogAttribute.indexable_option:type_name -> google.cloud.retail.v2beta.CatalogAttribute.IndexableOption 2, // 2: google.cloud.retail.v2beta.CatalogAttribute.dynamic_facetable_option:type_name -> google.cloud.retail.v2beta.CatalogAttribute.DynamicFacetableOption 3, // 3: google.cloud.retail.v2beta.CatalogAttribute.searchable_option:type_name -> google.cloud.retail.v2beta.CatalogAttribute.SearchableOption - 12, // 4: google.cloud.retail.v2beta.CatalogAttribute.recommendations_filtering_option:type_name -> google.cloud.retail.v2beta.RecommendationsFilteringOption - 11, // 5: google.cloud.retail.v2beta.AttributesConfig.catalog_attributes:type_name -> google.cloud.retail.v2beta.AttributesConfig.CatalogAttributesEntry - 13, // 6: google.cloud.retail.v2beta.AttributesConfig.attribute_config_level:type_name -> google.cloud.retail.v2beta.AttributeConfigLevel - 14, // 7: google.cloud.retail.v2beta.CompletionConfig.suggestions_input_config:type_name -> google.cloud.retail.v2beta.CompletionDataInputConfig - 14, // 8: google.cloud.retail.v2beta.CompletionConfig.denylist_input_config:type_name -> google.cloud.retail.v2beta.CompletionDataInputConfig - 14, // 9: google.cloud.retail.v2beta.CompletionConfig.allowlist_input_config:type_name -> google.cloud.retail.v2beta.CompletionDataInputConfig - 8, // 10: google.cloud.retail.v2beta.MerchantCenterLinkingConfig.links:type_name -> google.cloud.retail.v2beta.MerchantCenterLink - 4, // 11: google.cloud.retail.v2beta.Catalog.product_level_config:type_name -> google.cloud.retail.v2beta.ProductLevelConfig - 9, // 12: google.cloud.retail.v2beta.Catalog.merchant_center_linking_config:type_name -> google.cloud.retail.v2beta.MerchantCenterLinkingConfig - 5, // 13: google.cloud.retail.v2beta.AttributesConfig.CatalogAttributesEntry.value:type_name -> google.cloud.retail.v2beta.CatalogAttribute - 14, // [14:14] is the sub-list for method output_type - 14, // [14:14] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 13, // 4: google.cloud.retail.v2beta.CatalogAttribute.recommendations_filtering_option:type_name -> google.cloud.retail.v2beta.RecommendationsFilteringOption + 4, // 5: google.cloud.retail.v2beta.CatalogAttribute.exact_searchable_option:type_name -> google.cloud.retail.v2beta.CatalogAttribute.ExactSearchableOption + 12, // 6: google.cloud.retail.v2beta.AttributesConfig.catalog_attributes:type_name -> google.cloud.retail.v2beta.AttributesConfig.CatalogAttributesEntry + 14, // 7: google.cloud.retail.v2beta.AttributesConfig.attribute_config_level:type_name -> google.cloud.retail.v2beta.AttributeConfigLevel + 15, // 8: google.cloud.retail.v2beta.CompletionConfig.suggestions_input_config:type_name -> google.cloud.retail.v2beta.CompletionDataInputConfig + 15, // 9: google.cloud.retail.v2beta.CompletionConfig.denylist_input_config:type_name -> google.cloud.retail.v2beta.CompletionDataInputConfig + 15, // 10: google.cloud.retail.v2beta.CompletionConfig.allowlist_input_config:type_name -> google.cloud.retail.v2beta.CompletionDataInputConfig + 9, // 11: google.cloud.retail.v2beta.MerchantCenterLinkingConfig.links:type_name -> google.cloud.retail.v2beta.MerchantCenterLink + 5, // 12: google.cloud.retail.v2beta.Catalog.product_level_config:type_name -> google.cloud.retail.v2beta.ProductLevelConfig + 10, // 13: google.cloud.retail.v2beta.Catalog.merchant_center_linking_config:type_name -> google.cloud.retail.v2beta.MerchantCenterLinkingConfig + 6, // 14: google.cloud.retail.v2beta.AttributesConfig.CatalogAttributesEntry.value:type_name -> google.cloud.retail.v2beta.CatalogAttribute + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_google_cloud_retail_v2beta_catalog_proto_init() } @@ -1401,7 +1485,7 @@ func file_google_cloud_retail_v2beta_catalog_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_retail_v2beta_catalog_proto_rawDesc, - NumEnums: 4, + NumEnums: 5, NumMessages: 8, NumExtensions: 0, NumServices: 0, diff --git a/googleapis/cloud/retail/v2beta/catalog_service.pb.go b/googleapis/cloud/retail/v2beta/catalog_service.pb.go index 2e6ee17ad..4da14d0e3 100644 --- a/googleapis/cloud/retail/v2beta/catalog_service.pb.go +++ b/googleapis/cloud/retail/v2beta/catalog_service.pb.go @@ -484,7 +484,7 @@ type GetCompletionConfigRequest struct { unknownFields protoimpl.UnknownFields // Required. Full CompletionConfig resource name. Format: - // projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/completionConfig + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/completionConfig` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } @@ -847,6 +847,132 @@ func (x *RemoveCatalogAttributeRequest) GetKey() string { return "" } +// Request for +// [CatalogService.BatchRemoveCatalogAttributes][google.cloud.retail.v2beta.CatalogService.BatchRemoveCatalogAttributes] +// method. +type BatchRemoveCatalogAttributesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The attributes config resource shared by all catalog attributes + // being deleted. Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/attributesConfig` + AttributesConfig string `protobuf:"bytes,1,opt,name=attributes_config,json=attributesConfig,proto3" json:"attributes_config,omitempty"` + // Required. The attribute name keys of the + // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s to delete. + // A maximum of 1000 catalog attributes can be deleted in a batch. + AttributeKeys []string `protobuf:"bytes,2,rep,name=attribute_keys,json=attributeKeys,proto3" json:"attribute_keys,omitempty"` +} + +func (x *BatchRemoveCatalogAttributesRequest) Reset() { + *x = BatchRemoveCatalogAttributesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchRemoveCatalogAttributesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchRemoveCatalogAttributesRequest) ProtoMessage() {} + +func (x *BatchRemoveCatalogAttributesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_catalog_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 BatchRemoveCatalogAttributesRequest.ProtoReflect.Descriptor instead. +func (*BatchRemoveCatalogAttributesRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_catalog_service_proto_rawDescGZIP(), []int{12} +} + +func (x *BatchRemoveCatalogAttributesRequest) GetAttributesConfig() string { + if x != nil { + return x.AttributesConfig + } + return "" +} + +func (x *BatchRemoveCatalogAttributesRequest) GetAttributeKeys() []string { + if x != nil { + return x.AttributeKeys + } + return nil +} + +// Response of the +// [CatalogService.BatchRemoveCatalogAttributes][google.cloud.retail.v2beta.CatalogService.BatchRemoveCatalogAttributes]. +type BatchRemoveCatalogAttributesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Catalog attributes that were deleted. Only attributes that are not [in + // use][CatalogAttribute.in_use] by products can be deleted. + DeletedCatalogAttributes []string `protobuf:"bytes,1,rep,name=deleted_catalog_attributes,json=deletedCatalogAttributes,proto3" json:"deleted_catalog_attributes,omitempty"` + // Catalog attributes that were reset. Attributes that are [in + // use][CatalogAttribute.in_use] by products cannot be deleted, however their + // configuration properties will reset to default values upon removal request. + ResetCatalogAttributes []string `protobuf:"bytes,2,rep,name=reset_catalog_attributes,json=resetCatalogAttributes,proto3" json:"reset_catalog_attributes,omitempty"` +} + +func (x *BatchRemoveCatalogAttributesResponse) Reset() { + *x = BatchRemoveCatalogAttributesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchRemoveCatalogAttributesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchRemoveCatalogAttributesResponse) ProtoMessage() {} + +func (x *BatchRemoveCatalogAttributesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_catalog_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 BatchRemoveCatalogAttributesResponse.ProtoReflect.Descriptor instead. +func (*BatchRemoveCatalogAttributesResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_catalog_service_proto_rawDescGZIP(), []int{13} +} + +func (x *BatchRemoveCatalogAttributesResponse) GetDeletedCatalogAttributes() []string { + if x != nil { + return x.DeletedCatalogAttributes + } + return nil +} + +func (x *BatchRemoveCatalogAttributesResponse) GetResetCatalogAttributes() []string { + if x != nil { + return x.ResetCatalogAttributes + } + return nil +} + // Request for // [CatalogService.ReplaceCatalogAttribute][google.cloud.retail.v2beta.CatalogService.ReplaceCatalogAttribute] // method. @@ -874,7 +1000,7 @@ type ReplaceCatalogAttributeRequest struct { func (x *ReplaceCatalogAttributeRequest) Reset() { *x = ReplaceCatalogAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[12] + mi := &file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -887,7 +1013,7 @@ func (x *ReplaceCatalogAttributeRequest) String() string { func (*ReplaceCatalogAttributeRequest) ProtoMessage() {} func (x *ReplaceCatalogAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[12] + mi := &file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -900,7 +1026,7 @@ func (x *ReplaceCatalogAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplaceCatalogAttributeRequest.ProtoReflect.Descriptor instead. func (*ReplaceCatalogAttributeRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_retail_v2beta_catalog_service_proto_rawDescGZIP(), []int{12} + return file_google_cloud_retail_v2beta_catalog_service_proto_rawDescGZIP(), []int{14} } func (x *ReplaceCatalogAttributeRequest) GetAttributesConfig() string { @@ -1062,200 +1188,239 @@ var file_google_cloud_retail_v2beta_catalog_service_proto_rawDesc = []byte{ 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x22, 0x9a, 0x02, 0x0a, 0x1e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x5e, 0x0a, 0x11, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x10, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0x97, - 0x14, 0x0a, 0x0e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0xb4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0xda, - 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xc7, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, + 0x79, 0x22, 0xae, 0x01, 0x0a, 0x23, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x11, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, + 0x79, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x24, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x18, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x73, + 0x65, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x73, + 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x22, 0x9a, 0x02, 0x0a, 0x1e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x11, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x10, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x32, 0xb3, 0x16, 0x0a, 0x0e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0xb4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, + 0x30, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xc7, 0x01, 0x0a, 0x0d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x32, 0x38, 0x2f, 0x76, 0x32, 0x62, 0x65, - 0x74, 0x61, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x32, 0x38, 0x2f, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, + 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0xda, 0x41, + 0x13, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xba, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 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, 0x59, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, + 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, - 0x2f, 0x2a, 0x7d, 0x3a, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0xda, 0x41, 0x13, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x12, 0xba, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, - 0x72, 0x61, 0x6e, 0x63, 0x68, 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, 0x59, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, - 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x3d, 0x70, + 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, + 0x67, 0x12, 0xd5, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, + 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0xda, + 0x41, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0xcd, 0x01, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, + 0x41, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, - 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, - 0xd5, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0xda, 0x41, 0x07, - 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0xcd, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, - 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x92, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8e, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x68, 0x32, 0x53, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x3a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xda, 0x41, 0x1d, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xcd, 0x01, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x92, 0x02, 0x0a, 0x16, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x92, 0x02, 0x0a, - 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x22, 0x8e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x32, 0x53, 0x2f, 0x76, 0x32, 0x62, 0x65, - 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x3a, 0x11, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0xda, 0x41, 0x1d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x12, 0xea, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x22, 0x62, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8e, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x32, 0x53, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, + 0x7b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x3a, 0x11, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xda, 0x41, + 0x1d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xcd, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x50, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xf3, - 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x92, + 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x22, 0x65, 0x2f, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x3a, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xf6, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x69, 0x67, 0x22, 0x8e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x32, 0x53, 0x2f, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, + 0x3a, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0xda, 0x41, 0x1d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x12, 0xea, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x22, 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x22, 0x62, 0x2f, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x43, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0xf3, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x22, 0x65, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x3a, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x99, 0x02, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x6b, 0x22, 0x66, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x70, 0x22, 0x6b, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x7d, 0x3a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0xca, - 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0xdc, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, + 0x67, 0x7d, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x3a, + 0x01, 0x2a, 0x12, 0xf6, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x13, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, - 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, - 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, - 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6b, + 0x22, 0x66, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, + 0x3a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0xca, 0x41, 0x15, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0xdc, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x13, 0x43, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, + 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, + 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1270,41 +1435,43 @@ func file_google_cloud_retail_v2beta_catalog_service_proto_rawDescGZIP() []byte return file_google_cloud_retail_v2beta_catalog_service_proto_rawDescData } -var file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_google_cloud_retail_v2beta_catalog_service_proto_goTypes = []interface{}{ - (*ListCatalogsRequest)(nil), // 0: google.cloud.retail.v2beta.ListCatalogsRequest - (*ListCatalogsResponse)(nil), // 1: google.cloud.retail.v2beta.ListCatalogsResponse - (*UpdateCatalogRequest)(nil), // 2: google.cloud.retail.v2beta.UpdateCatalogRequest - (*SetDefaultBranchRequest)(nil), // 3: google.cloud.retail.v2beta.SetDefaultBranchRequest - (*GetDefaultBranchRequest)(nil), // 4: google.cloud.retail.v2beta.GetDefaultBranchRequest - (*GetDefaultBranchResponse)(nil), // 5: google.cloud.retail.v2beta.GetDefaultBranchResponse - (*GetCompletionConfigRequest)(nil), // 6: google.cloud.retail.v2beta.GetCompletionConfigRequest - (*UpdateCompletionConfigRequest)(nil), // 7: google.cloud.retail.v2beta.UpdateCompletionConfigRequest - (*GetAttributesConfigRequest)(nil), // 8: google.cloud.retail.v2beta.GetAttributesConfigRequest - (*UpdateAttributesConfigRequest)(nil), // 9: google.cloud.retail.v2beta.UpdateAttributesConfigRequest - (*AddCatalogAttributeRequest)(nil), // 10: google.cloud.retail.v2beta.AddCatalogAttributeRequest - (*RemoveCatalogAttributeRequest)(nil), // 11: google.cloud.retail.v2beta.RemoveCatalogAttributeRequest - (*ReplaceCatalogAttributeRequest)(nil), // 12: google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest - (*Catalog)(nil), // 13: google.cloud.retail.v2beta.Catalog - (*fieldmaskpb.FieldMask)(nil), // 14: google.protobuf.FieldMask - (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp - (*CompletionConfig)(nil), // 16: google.cloud.retail.v2beta.CompletionConfig - (*AttributesConfig)(nil), // 17: google.cloud.retail.v2beta.AttributesConfig - (*CatalogAttribute)(nil), // 18: google.cloud.retail.v2beta.CatalogAttribute - (*emptypb.Empty)(nil), // 19: google.protobuf.Empty + (*ListCatalogsRequest)(nil), // 0: google.cloud.retail.v2beta.ListCatalogsRequest + (*ListCatalogsResponse)(nil), // 1: google.cloud.retail.v2beta.ListCatalogsResponse + (*UpdateCatalogRequest)(nil), // 2: google.cloud.retail.v2beta.UpdateCatalogRequest + (*SetDefaultBranchRequest)(nil), // 3: google.cloud.retail.v2beta.SetDefaultBranchRequest + (*GetDefaultBranchRequest)(nil), // 4: google.cloud.retail.v2beta.GetDefaultBranchRequest + (*GetDefaultBranchResponse)(nil), // 5: google.cloud.retail.v2beta.GetDefaultBranchResponse + (*GetCompletionConfigRequest)(nil), // 6: google.cloud.retail.v2beta.GetCompletionConfigRequest + (*UpdateCompletionConfigRequest)(nil), // 7: google.cloud.retail.v2beta.UpdateCompletionConfigRequest + (*GetAttributesConfigRequest)(nil), // 8: google.cloud.retail.v2beta.GetAttributesConfigRequest + (*UpdateAttributesConfigRequest)(nil), // 9: google.cloud.retail.v2beta.UpdateAttributesConfigRequest + (*AddCatalogAttributeRequest)(nil), // 10: google.cloud.retail.v2beta.AddCatalogAttributeRequest + (*RemoveCatalogAttributeRequest)(nil), // 11: google.cloud.retail.v2beta.RemoveCatalogAttributeRequest + (*BatchRemoveCatalogAttributesRequest)(nil), // 12: google.cloud.retail.v2beta.BatchRemoveCatalogAttributesRequest + (*BatchRemoveCatalogAttributesResponse)(nil), // 13: google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse + (*ReplaceCatalogAttributeRequest)(nil), // 14: google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest + (*Catalog)(nil), // 15: google.cloud.retail.v2beta.Catalog + (*fieldmaskpb.FieldMask)(nil), // 16: google.protobuf.FieldMask + (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp + (*CompletionConfig)(nil), // 18: google.cloud.retail.v2beta.CompletionConfig + (*AttributesConfig)(nil), // 19: google.cloud.retail.v2beta.AttributesConfig + (*CatalogAttribute)(nil), // 20: google.cloud.retail.v2beta.CatalogAttribute + (*emptypb.Empty)(nil), // 21: google.protobuf.Empty } var file_google_cloud_retail_v2beta_catalog_service_proto_depIdxs = []int32{ - 13, // 0: google.cloud.retail.v2beta.ListCatalogsResponse.catalogs:type_name -> google.cloud.retail.v2beta.Catalog - 13, // 1: google.cloud.retail.v2beta.UpdateCatalogRequest.catalog:type_name -> google.cloud.retail.v2beta.Catalog - 14, // 2: google.cloud.retail.v2beta.UpdateCatalogRequest.update_mask:type_name -> google.protobuf.FieldMask - 15, // 3: google.cloud.retail.v2beta.GetDefaultBranchResponse.set_time:type_name -> google.protobuf.Timestamp - 16, // 4: google.cloud.retail.v2beta.UpdateCompletionConfigRequest.completion_config:type_name -> google.cloud.retail.v2beta.CompletionConfig - 14, // 5: google.cloud.retail.v2beta.UpdateCompletionConfigRequest.update_mask:type_name -> google.protobuf.FieldMask - 17, // 6: google.cloud.retail.v2beta.UpdateAttributesConfigRequest.attributes_config:type_name -> google.cloud.retail.v2beta.AttributesConfig - 14, // 7: google.cloud.retail.v2beta.UpdateAttributesConfigRequest.update_mask:type_name -> google.protobuf.FieldMask - 18, // 8: google.cloud.retail.v2beta.AddCatalogAttributeRequest.catalog_attribute:type_name -> google.cloud.retail.v2beta.CatalogAttribute - 18, // 9: google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest.catalog_attribute:type_name -> google.cloud.retail.v2beta.CatalogAttribute - 14, // 10: google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest.update_mask:type_name -> google.protobuf.FieldMask + 15, // 0: google.cloud.retail.v2beta.ListCatalogsResponse.catalogs:type_name -> google.cloud.retail.v2beta.Catalog + 15, // 1: google.cloud.retail.v2beta.UpdateCatalogRequest.catalog:type_name -> google.cloud.retail.v2beta.Catalog + 16, // 2: google.cloud.retail.v2beta.UpdateCatalogRequest.update_mask:type_name -> google.protobuf.FieldMask + 17, // 3: google.cloud.retail.v2beta.GetDefaultBranchResponse.set_time:type_name -> google.protobuf.Timestamp + 18, // 4: google.cloud.retail.v2beta.UpdateCompletionConfigRequest.completion_config:type_name -> google.cloud.retail.v2beta.CompletionConfig + 16, // 5: google.cloud.retail.v2beta.UpdateCompletionConfigRequest.update_mask:type_name -> google.protobuf.FieldMask + 19, // 6: google.cloud.retail.v2beta.UpdateAttributesConfigRequest.attributes_config:type_name -> google.cloud.retail.v2beta.AttributesConfig + 16, // 7: google.cloud.retail.v2beta.UpdateAttributesConfigRequest.update_mask:type_name -> google.protobuf.FieldMask + 20, // 8: google.cloud.retail.v2beta.AddCatalogAttributeRequest.catalog_attribute:type_name -> google.cloud.retail.v2beta.CatalogAttribute + 20, // 9: google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest.catalog_attribute:type_name -> google.cloud.retail.v2beta.CatalogAttribute + 16, // 10: google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest.update_mask:type_name -> google.protobuf.FieldMask 0, // 11: google.cloud.retail.v2beta.CatalogService.ListCatalogs:input_type -> google.cloud.retail.v2beta.ListCatalogsRequest 2, // 12: google.cloud.retail.v2beta.CatalogService.UpdateCatalog:input_type -> google.cloud.retail.v2beta.UpdateCatalogRequest 3, // 13: google.cloud.retail.v2beta.CatalogService.SetDefaultBranch:input_type -> google.cloud.retail.v2beta.SetDefaultBranchRequest @@ -1315,20 +1482,22 @@ var file_google_cloud_retail_v2beta_catalog_service_proto_depIdxs = []int32{ 9, // 18: google.cloud.retail.v2beta.CatalogService.UpdateAttributesConfig:input_type -> google.cloud.retail.v2beta.UpdateAttributesConfigRequest 10, // 19: google.cloud.retail.v2beta.CatalogService.AddCatalogAttribute:input_type -> google.cloud.retail.v2beta.AddCatalogAttributeRequest 11, // 20: google.cloud.retail.v2beta.CatalogService.RemoveCatalogAttribute:input_type -> google.cloud.retail.v2beta.RemoveCatalogAttributeRequest - 12, // 21: google.cloud.retail.v2beta.CatalogService.ReplaceCatalogAttribute:input_type -> google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest - 1, // 22: google.cloud.retail.v2beta.CatalogService.ListCatalogs:output_type -> google.cloud.retail.v2beta.ListCatalogsResponse - 13, // 23: google.cloud.retail.v2beta.CatalogService.UpdateCatalog:output_type -> google.cloud.retail.v2beta.Catalog - 19, // 24: google.cloud.retail.v2beta.CatalogService.SetDefaultBranch:output_type -> google.protobuf.Empty - 5, // 25: google.cloud.retail.v2beta.CatalogService.GetDefaultBranch:output_type -> google.cloud.retail.v2beta.GetDefaultBranchResponse - 16, // 26: google.cloud.retail.v2beta.CatalogService.GetCompletionConfig:output_type -> google.cloud.retail.v2beta.CompletionConfig - 16, // 27: google.cloud.retail.v2beta.CatalogService.UpdateCompletionConfig:output_type -> google.cloud.retail.v2beta.CompletionConfig - 17, // 28: google.cloud.retail.v2beta.CatalogService.GetAttributesConfig:output_type -> google.cloud.retail.v2beta.AttributesConfig - 17, // 29: google.cloud.retail.v2beta.CatalogService.UpdateAttributesConfig:output_type -> google.cloud.retail.v2beta.AttributesConfig - 17, // 30: google.cloud.retail.v2beta.CatalogService.AddCatalogAttribute:output_type -> google.cloud.retail.v2beta.AttributesConfig - 17, // 31: google.cloud.retail.v2beta.CatalogService.RemoveCatalogAttribute:output_type -> google.cloud.retail.v2beta.AttributesConfig - 17, // 32: google.cloud.retail.v2beta.CatalogService.ReplaceCatalogAttribute:output_type -> google.cloud.retail.v2beta.AttributesConfig - 22, // [22:33] is the sub-list for method output_type - 11, // [11:22] is the sub-list for method input_type + 12, // 21: google.cloud.retail.v2beta.CatalogService.BatchRemoveCatalogAttributes:input_type -> google.cloud.retail.v2beta.BatchRemoveCatalogAttributesRequest + 14, // 22: google.cloud.retail.v2beta.CatalogService.ReplaceCatalogAttribute:input_type -> google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest + 1, // 23: google.cloud.retail.v2beta.CatalogService.ListCatalogs:output_type -> google.cloud.retail.v2beta.ListCatalogsResponse + 15, // 24: google.cloud.retail.v2beta.CatalogService.UpdateCatalog:output_type -> google.cloud.retail.v2beta.Catalog + 21, // 25: google.cloud.retail.v2beta.CatalogService.SetDefaultBranch:output_type -> google.protobuf.Empty + 5, // 26: google.cloud.retail.v2beta.CatalogService.GetDefaultBranch:output_type -> google.cloud.retail.v2beta.GetDefaultBranchResponse + 18, // 27: google.cloud.retail.v2beta.CatalogService.GetCompletionConfig:output_type -> google.cloud.retail.v2beta.CompletionConfig + 18, // 28: google.cloud.retail.v2beta.CatalogService.UpdateCompletionConfig:output_type -> google.cloud.retail.v2beta.CompletionConfig + 19, // 29: google.cloud.retail.v2beta.CatalogService.GetAttributesConfig:output_type -> google.cloud.retail.v2beta.AttributesConfig + 19, // 30: google.cloud.retail.v2beta.CatalogService.UpdateAttributesConfig:output_type -> google.cloud.retail.v2beta.AttributesConfig + 19, // 31: google.cloud.retail.v2beta.CatalogService.AddCatalogAttribute:output_type -> google.cloud.retail.v2beta.AttributesConfig + 19, // 32: google.cloud.retail.v2beta.CatalogService.RemoveCatalogAttribute:output_type -> google.cloud.retail.v2beta.AttributesConfig + 13, // 33: google.cloud.retail.v2beta.CatalogService.BatchRemoveCatalogAttributes:output_type -> google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse + 19, // 34: google.cloud.retail.v2beta.CatalogService.ReplaceCatalogAttribute:output_type -> google.cloud.retail.v2beta.AttributesConfig + 23, // [23:35] is the sub-list for method output_type + 11, // [11:23] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name 11, // [11:11] is the sub-list for extension extendee 0, // [0:11] is the sub-list for field type_name @@ -1486,6 +1655,30 @@ func file_google_cloud_retail_v2beta_catalog_service_proto_init() { } } file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchRemoveCatalogAttributesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchRemoveCatalogAttributesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_catalog_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReplaceCatalogAttributeRequest); i { case 0: return &v.state @@ -1504,7 +1697,7 @@ func file_google_cloud_retail_v2beta_catalog_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_retail_v2beta_catalog_service_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 15, NumExtensions: 0, NumServices: 1, }, @@ -1563,11 +1756,11 @@ type CatalogServiceClient interface { // // More specifically: // - // * PredictionService will only return product IDs from branch {newBranch}. - // * SearchService will only return product IDs from branch {newBranch} - // (if branch is not explicitly set). - // * UserEventService will only join events with products from branch - // {newBranch}. + // - PredictionService will only return product IDs from branch {newBranch}. + // - SearchService will only return product IDs from branch {newBranch} + // (if branch is not explicitly set). + // - UserEventService will only join events with products from branch + // {newBranch}. SetDefaultBranch(ctx context.Context, in *SetDefaultBranchRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // Get which branch is currently default branch set by // [CatalogService.SetDefaultBranch][google.cloud.retail.v2beta.CatalogService.SetDefaultBranch] @@ -1604,6 +1797,10 @@ type CatalogServiceClient interface { // If the [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to // remove does not exist, a NOT_FOUND error is returned. RemoveCatalogAttribute(ctx context.Context, in *RemoveCatalogAttributeRequest, opts ...grpc.CallOption) (*AttributesConfig, error) + // Removes all specified + // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s from the + // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig]. + BatchRemoveCatalogAttributes(ctx context.Context, in *BatchRemoveCatalogAttributesRequest, opts ...grpc.CallOption) (*BatchRemoveCatalogAttributesResponse, error) // Replaces the specified // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] in the // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig] by updating @@ -1713,6 +1910,15 @@ func (c *catalogServiceClient) RemoveCatalogAttribute(ctx context.Context, in *R return out, nil } +func (c *catalogServiceClient) BatchRemoveCatalogAttributes(ctx context.Context, in *BatchRemoveCatalogAttributesRequest, opts ...grpc.CallOption) (*BatchRemoveCatalogAttributesResponse, error) { + out := new(BatchRemoveCatalogAttributesResponse) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.CatalogService/BatchRemoveCatalogAttributes", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *catalogServiceClient) ReplaceCatalogAttribute(ctx context.Context, in *ReplaceCatalogAttributeRequest, opts ...grpc.CallOption) (*AttributesConfig, error) { out := new(AttributesConfig) err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.CatalogService/ReplaceCatalogAttribute", in, out, opts...) @@ -1757,11 +1963,11 @@ type CatalogServiceServer interface { // // More specifically: // - // * PredictionService will only return product IDs from branch {newBranch}. - // * SearchService will only return product IDs from branch {newBranch} - // (if branch is not explicitly set). - // * UserEventService will only join events with products from branch - // {newBranch}. + // - PredictionService will only return product IDs from branch {newBranch}. + // - SearchService will only return product IDs from branch {newBranch} + // (if branch is not explicitly set). + // - UserEventService will only join events with products from branch + // {newBranch}. SetDefaultBranch(context.Context, *SetDefaultBranchRequest) (*emptypb.Empty, error) // Get which branch is currently default branch set by // [CatalogService.SetDefaultBranch][google.cloud.retail.v2beta.CatalogService.SetDefaultBranch] @@ -1798,6 +2004,10 @@ type CatalogServiceServer interface { // If the [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to // remove does not exist, a NOT_FOUND error is returned. RemoveCatalogAttribute(context.Context, *RemoveCatalogAttributeRequest) (*AttributesConfig, error) + // Removes all specified + // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s from the + // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig]. + BatchRemoveCatalogAttributes(context.Context, *BatchRemoveCatalogAttributesRequest) (*BatchRemoveCatalogAttributesResponse, error) // Replaces the specified // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] in the // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig] by updating @@ -1843,6 +2053,9 @@ func (*UnimplementedCatalogServiceServer) AddCatalogAttribute(context.Context, * func (*UnimplementedCatalogServiceServer) RemoveCatalogAttribute(context.Context, *RemoveCatalogAttributeRequest) (*AttributesConfig, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveCatalogAttribute not implemented") } +func (*UnimplementedCatalogServiceServer) BatchRemoveCatalogAttributes(context.Context, *BatchRemoveCatalogAttributesRequest) (*BatchRemoveCatalogAttributesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BatchRemoveCatalogAttributes not implemented") +} func (*UnimplementedCatalogServiceServer) ReplaceCatalogAttribute(context.Context, *ReplaceCatalogAttributeRequest) (*AttributesConfig, error) { return nil, status.Errorf(codes.Unimplemented, "method ReplaceCatalogAttribute not implemented") } @@ -2031,6 +2244,24 @@ func _CatalogService_RemoveCatalogAttribute_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _CatalogService_BatchRemoveCatalogAttributes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BatchRemoveCatalogAttributesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CatalogServiceServer).BatchRemoveCatalogAttributes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.CatalogService/BatchRemoveCatalogAttributes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CatalogServiceServer).BatchRemoveCatalogAttributes(ctx, req.(*BatchRemoveCatalogAttributesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _CatalogService_ReplaceCatalogAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ReplaceCatalogAttributeRequest) if err := dec(in); err != nil { @@ -2093,6 +2324,10 @@ var _CatalogService_serviceDesc = grpc.ServiceDesc{ MethodName: "RemoveCatalogAttribute", Handler: _CatalogService_RemoveCatalogAttribute_Handler, }, + { + MethodName: "BatchRemoveCatalogAttributes", + Handler: _CatalogService_BatchRemoveCatalogAttributes_Handler, + }, { MethodName: "ReplaceCatalogAttribute", Handler: _CatalogService_ReplaceCatalogAttribute_Handler, diff --git a/googleapis/cloud/retail/v2beta/common.pb.go b/googleapis/cloud/retail/v2beta/common.pb.go index 2a54611fc..3c1655e69 100644 --- a/googleapis/cloud/retail/v2beta/common.pb.go +++ b/googleapis/cloud/retail/v2beta/common.pb.go @@ -206,7 +206,7 @@ type SearchSolutionUseCase int32 const ( // The value when it's unspecified. In this case, server behavior defaults to - // [SEARCH_SOLUTION_USE_CASE_SEARCH][]. + // [SEARCH_SOLUTION_USE_CASE_SEARCH][google.cloud.retail.v2beta.SearchSolutionUseCase.SEARCH_SOLUTION_USE_CASE_SEARCH]. SearchSolutionUseCase_SEARCH_SOLUTION_USE_CASE_UNSPECIFIED SearchSolutionUseCase = 0 // Search use case. Expects the traffic has a non-empty // [query][google.cloud.retail.v2beta.SearchRequest.query]. @@ -325,10 +325,12 @@ func (x *Condition) GetActiveTimeRange() []*Condition_TimeRange { } // A rule is a condition-action pair +// // * A condition defines when a rule is to be triggered. // * An action specifies what occurs on that trigger. -// Currently only boost rules are supported. -// Currently only supported by the search endpoint. +// Currently rules only work for [controls][google.cloud.retail.v2beta.Control] +// with +// [SOLUTION_TYPE_SEARCH][google.cloud.retail.v2beta.SolutionType.SOLUTION_TYPE_SEARCH]. type Rule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -337,6 +339,7 @@ type Rule struct { // An action must be provided. // // Types that are assignable to Action: + // // *Rule_BoostAction_ // *Rule_RedirectAction_ // *Rule_OnewaySynonymsAction_ @@ -985,6 +988,7 @@ type Interval struct { // Otherwise, an INVALID_ARGUMENT error is returned. // // Types that are assignable to Min: + // // *Interval_Minimum // *Interval_ExclusiveMinimum Min isInterval_Min `protobuf_oneof:"min"` @@ -995,6 +999,7 @@ type Interval struct { // Otherwise, an INVALID_ARGUMENT error is returned. // // Types that are assignable to Max: + // // *Interval_Maximum // *Interval_ExclusiveMaximum Max isInterval_Max `protobuf_oneof:"max"` @@ -1496,18 +1501,18 @@ type LocalInventory struct { // This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT // error is returned: // - // * At most 30 attributes are allowed. - // * The key must be a UTF-8 encoded string with a length limit of 32 - // characters. - // * The key must match the pattern: `[a-zA-Z0-9][a-zA-Z0-9_]*`. For example, - // key0LikeThis or KEY_1_LIKE_THIS. - // * The attribute values must be of the same type (text or number). - // * Only 1 value is allowed for each attribute. - // * For text values, the length limit is 256 UTF-8 characters. - // * The attribute does not support search. The `searchable` field should be - // unset or set to false. - // * The max summed total bytes of custom attribute keys and values per - // product is 5MiB. + // - At most 30 attributes are allowed. + // - The key must be a UTF-8 encoded string with a length limit of 32 + // characters. + // - The key must match the pattern: `[a-zA-Z0-9][a-zA-Z0-9_]*`. For example, + // key0LikeThis or KEY_1_LIKE_THIS. + // - The attribute values must be of the same type (text or number). + // - Only 1 value is allowed for each attribute. + // - For text values, the length limit is 256 UTF-8 characters. + // - The attribute does not support search. The `searchable` field should be + // unset or set to false. + // - The max summed total bytes of custom attribute keys and values per + // product is 5MiB. Attributes map[string]*CustomAttribute `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Input only. Supported fulfillment types. Valid fulfillment type values // include commonly used types (such as pickup in store and same day @@ -1604,8 +1609,8 @@ type Condition_QueryTerm struct { // Value cannot be empty. // Value can have at most 3 terms if specified as a partial match. Each // space separated string is considered as one term. - // Example) "a b c" is 3 terms and allowed, " a b c d" is 4 terms and not - // allowed for partial match. + // For example, "a b c" is 3 terms and allowed, but " a b c d" is 4 terms + // and not allowed for a partial match. Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` // Whether this is supposed to be a full or partial match. FullMatch bool `protobuf:"varint,2,opt,name=full_match,json=fullMatch,proto3" json:"full_match,omitempty"` @@ -1750,10 +1755,11 @@ type Rule_BoostAction struct { // // * To boost products with product ID "product_1" or "product_2", and // color - // "Red" or "Blue":
- // *(id: ANY("product_1", "product_2"))
* - // *AND
* - // *(colorFamilies: ANY("Red", "Blue"))
* + // + // "Red" or "Blue":
+ // *(id: ANY("product_1", "product_2"))
* + // *AND
* + // *(colorFamilies: ANY("Red", "Blue"))
* ProductsFilter string `protobuf:"bytes,2,opt,name=products_filter,json=productsFilter,proto3" json:"products_filter,omitempty"` } @@ -1830,14 +1836,17 @@ type Rule_FilterAction struct { // * Filter syntax is identical to // [SearchRequest.filter][google.cloud.retail.v2beta.SearchRequest.filter]. // See more - // details at the Retail Search - // [user guide](/retail/search/docs/filter-and-order#filter). + // + // details at the Retail Search + // [user guide](/retail/search/docs/filter-and-order#filter). + // // * To filter products with product ID "product_1" or "product_2", and // color - // "Red" or "Blue":
- // *(id: ANY("product_1", "product_2"))
* - // *AND
* - // *(colorFamilies: ANY("Red", "Blue"))
* + // + // "Red" or "Blue":
+ // *(id: ANY("product_1", "product_2"))
* + // *AND
* + // *(colorFamilies: ANY("Red", "Blue"))
* Filter string `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` } diff --git a/googleapis/cloud/retail/v2beta/completion_service.pb.go b/googleapis/cloud/retail/v2beta/completion_service.pb.go index b73696580..ee6731394 100644 --- a/googleapis/cloud/retail/v2beta/completion_service.pb.go +++ b/googleapis/cloud/retail/v2beta/completion_service.pb.go @@ -99,9 +99,9 @@ type CompleteQueryRequest struct { // // * user-data // - // * cloud-retail: - // This option requires enabling auto-learning function first. See - // [guidelines](https://cloud.google.com/retail/docs/completion-overview#generated-completion-dataset). + // - cloud-retail: + // This option requires enabling auto-learning function first. See + // [guidelines](https://cloud.google.com/retail/docs/completion-overview#generated-completion-dataset). Dataset string `protobuf:"bytes,6,opt,name=dataset,proto3" json:"dataset,omitempty"` // Completion max suggestions. If left unset or set to 0, then will fallback // to the configured value @@ -216,15 +216,15 @@ type CompleteQueryResponse struct { // field is set and [UserEvent][google.cloud.retail.v2beta.UserEvent] is // imported. The recent searches satisfy the follow rules: // - // * They are ordered from latest to oldest. + // - They are ordered from latest to oldest. // - // * They are matched with - // [CompleteQueryRequest.query][google.cloud.retail.v2beta.CompleteQueryRequest.query] - // case insensitively. + // - They are matched with + // [CompleteQueryRequest.query][google.cloud.retail.v2beta.CompleteQueryRequest.query] + // case insensitively. // - // * They are transformed to lower case. + // - They are transformed to lower case. // - // * They are UTF-8 safe. + // - They are UTF-8 safe. // // Recent searches are deduplicated. More recent searches will be reserved // when duplication happens. @@ -665,7 +665,7 @@ type CompletionServiceClient interface { // Completes the specified prefix with keyword suggestions. // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. CompleteQuery(ctx context.Context, in *CompleteQueryRequest, opts ...grpc.CallOption) (*CompleteQueryResponse, error) // Bulk import of processed completion dataset. // @@ -675,7 +675,7 @@ type CompletionServiceClient interface { // are indexed successfully and ready for serving. The process takes hours. // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. ImportCompletionData(ctx context.Context, in *ImportCompletionDataRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) } @@ -710,7 +710,7 @@ type CompletionServiceServer interface { // Completes the specified prefix with keyword suggestions. // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. CompleteQuery(context.Context, *CompleteQueryRequest) (*CompleteQueryResponse, error) // Bulk import of processed completion dataset. // @@ -720,7 +720,7 @@ type CompletionServiceServer interface { // are indexed successfully and ready for serving. The process takes hours. // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. ImportCompletionData(context.Context, *ImportCompletionDataRequest) (*longrunning.Operation, error) } diff --git a/googleapis/cloud/retail/v2beta/control.pb.go b/googleapis/cloud/retail/v2beta/control.pb.go index 0bc461e8e..aab6cecde 100644 --- a/googleapis/cloud/retail/v2beta/control.pb.go +++ b/googleapis/cloud/retail/v2beta/control.pb.go @@ -36,8 +36,9 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Configures dynamic serving time metadata that is used to pre and post -// process search/recommendation model results. +// Configures dynamic metadata that can be linked to a +// [ServingConfig][google.cloud.retail.v2beta.ServingConfig] and affect search +// or recommendation results at serving time. type Control struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -50,6 +51,7 @@ type Control struct { // INVALID_ARGUMENT will be returned if either condition is violated. // // Types that are assignable to Control: + // // *Control_FacetSpec // *Control_Rule Control isControl_Control `protobuf_oneof:"control"` @@ -61,19 +63,30 @@ type Control struct { // This field must be a UTF-8 encoded string with a length limit of 128 // characters. Otherwise, an INVALID_ARGUMENT error is thrown. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Output only. List of serving configuration ids that that are associated - // with this control. Note the association is managed via the ServingConfig, - // this is an output only denormalizeed view. Assumed to be in the same - // catalog. + // Output only. List of [serving + // configuration][google.cloud.retail.v2beta.ServingConfig] ids that are + // associated with this control in the same + // [Catalog][google.cloud.retail.v2beta.Catalog]. + // + // Note the association is managed via the + // [ServingConfig][google.cloud.retail.v2beta.ServingConfig], this is an + // output only denormalized view. AssociatedServingConfigIds []string `protobuf:"bytes,5,rep,name=associated_serving_config_ids,json=associatedServingConfigIds,proto3" json:"associated_serving_config_ids,omitempty"` - // Required. Immutable. The solution types that the serving config is used - // for. Currently we support setting only one type of solution at creation - // time. + // Required. Immutable. The solution types that the control is used for. + // Currently we support setting only one type of solution at creation time. // // Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. // If no solution type is provided at creation time, will default to - // SOLUTION_TYPE_SEARCH. + // [SOLUTION_TYPE_SEARCH][google.cloud.retail.v2beta.SolutionType.SOLUTION_TYPE_SEARCH]. SolutionTypes []SolutionType `protobuf:"varint,6,rep,packed,name=solution_types,json=solutionTypes,proto3,enum=google.cloud.retail.v2beta.SolutionType" json:"solution_types,omitempty"` + // Specifies the use case for the control. + // Affects what condition fields can be set. + // Only settable by search controls. + // Will default to + // [SEARCH_SOLUTION_USE_CASE_SEARCH][google.cloud.retail.v2beta.SearchSolutionUseCase.SEARCH_SOLUTION_USE_CASE_SEARCH] + // if not specified. Currently only allow one search_solution_use_case per + // control. + SearchSolutionUseCase []SearchSolutionUseCase `protobuf:"varint,7,rep,packed,name=search_solution_use_case,json=searchSolutionUseCase,proto3,enum=google.cloud.retail.v2beta.SearchSolutionUseCase" json:"search_solution_use_case,omitempty"` } func (x *Control) Reset() { @@ -115,6 +128,7 @@ func (m *Control) GetControl() isControl_Control { return nil } +// Deprecated: Do not use. func (x *Control) GetFacetSpec() *SearchRequest_FacetSpec { if x, ok := x.GetControl().(*Control_FacetSpec); ok { return x.FacetSpec @@ -157,12 +171,24 @@ func (x *Control) GetSolutionTypes() []SolutionType { return nil } +func (x *Control) GetSearchSolutionUseCase() []SearchSolutionUseCase { + if x != nil { + return x.SearchSolutionUseCase + } + return nil +} + type isControl_Control interface { isControl_Control() } type Control_FacetSpec struct { // A facet specification to perform faceted search. + // + // Note that this field is deprecated and will throw NOT_IMPLEMENTED if + // used for creating a control. + // + // Deprecated: Do not use. FacetSpec *SearchRequest_FacetSpec `protobuf:"bytes,3,opt,name=facet_spec,json=facetSpec,proto3,oneof"` } @@ -193,31 +219,38 @@ var file_google_cloud_retail_v2beta_control_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x03, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x54, 0x0a, 0x0a, 0x66, 0x61, 0x63, 0x65, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x04, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x58, 0x0a, 0x0a, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, - 0x63, 0x48, 0x00, 0x52, 0x09, 0x66, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x36, - 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, - 0x52, 0x04, 0x72, 0x75, 0x6c, 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, - 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, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x1d, 0x61, 0x73, 0x73, 0x6f, 0x63, - 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x1a, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x73, 0x12, - 0x57, 0x0a, 0x0e, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x73, 0x6f, 0x6c, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x71, 0xea, 0x41, 0x6e, 0x0a, 0x1d, 0x72, + 0x63, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x66, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x75, + 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x75, 0x6c, 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, 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, 0x02, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x1d, 0x61, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, + 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1a, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x64, 0x73, 0x12, 0x57, 0x0a, 0x0e, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x73, + 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x18, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x75, 0x73, 0x65, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x31, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x43, 0x61, 0x73, + 0x65, 0x52, 0x15, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x73, 0x65, 0x43, 0x61, 0x73, 0x65, 0x3a, 0x71, 0xea, 0x41, 0x6e, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x4d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, @@ -260,16 +293,18 @@ var file_google_cloud_retail_v2beta_control_proto_goTypes = []interface{}{ (*SearchRequest_FacetSpec)(nil), // 1: google.cloud.retail.v2beta.SearchRequest.FacetSpec (*Rule)(nil), // 2: google.cloud.retail.v2beta.Rule (SolutionType)(0), // 3: google.cloud.retail.v2beta.SolutionType + (SearchSolutionUseCase)(0), // 4: google.cloud.retail.v2beta.SearchSolutionUseCase } var file_google_cloud_retail_v2beta_control_proto_depIdxs = []int32{ 1, // 0: google.cloud.retail.v2beta.Control.facet_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.FacetSpec 2, // 1: google.cloud.retail.v2beta.Control.rule:type_name -> google.cloud.retail.v2beta.Rule 3, // 2: google.cloud.retail.v2beta.Control.solution_types:type_name -> google.cloud.retail.v2beta.SolutionType - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 4, // 3: google.cloud.retail.v2beta.Control.search_solution_use_case:type_name -> google.cloud.retail.v2beta.SearchSolutionUseCase + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_google_cloud_retail_v2beta_control_proto_init() } diff --git a/googleapis/cloud/retail/v2beta/control_service.pb.go b/googleapis/cloud/retail/v2beta/control_service.pb.go index 5834e1722..63ad42fce 100644 --- a/googleapis/cloud/retail/v2beta/control_service.pb.go +++ b/googleapis/cloud/retail/v2beta/control_service.pb.go @@ -234,7 +234,7 @@ type GetControlRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The resource name of the Control to delete. Format: + // Required. The resource name of the Control to get. Format: // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/controls/{control_id}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } @@ -297,7 +297,7 @@ type ListControlsRequest struct { // // * List all the products under the parent branch if // [filter][google.cloud.retail.v2beta.ListControlsRequest.filter] is unset. - // * List controls that are used in a single ServingConfig: + // - List controls that are used in a single ServingConfig: // 'serving_config = "boosted_home_page_cvr"' Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` } @@ -748,12 +748,13 @@ type ControlServiceClient interface { // // [Control][google.cloud.retail.v2beta.Control] cannot be set to a different // oneof field, if so an INVALID_ARGUMENT is returned. If the - // [Control][google.cloud.retail.v2beta.Control] to delete does not exist, a + // [Control][google.cloud.retail.v2beta.Control] to update does not exist, a // NOT_FOUND error is returned. UpdateControl(ctx context.Context, in *UpdateControlRequest, opts ...grpc.CallOption) (*Control, error) // Gets a Control. GetControl(ctx context.Context, in *GetControlRequest, opts ...grpc.CallOption) (*Control, error) - // Lists all Controls linked to this catalog. + // Lists all Controls by their parent + // [Catalog][google.cloud.retail.v2beta.Catalog]. ListControls(ctx context.Context, in *ListControlsRequest, opts ...grpc.CallOption) (*ListControlsResponse, error) } @@ -826,12 +827,13 @@ type ControlServiceServer interface { // // [Control][google.cloud.retail.v2beta.Control] cannot be set to a different // oneof field, if so an INVALID_ARGUMENT is returned. If the - // [Control][google.cloud.retail.v2beta.Control] to delete does not exist, a + // [Control][google.cloud.retail.v2beta.Control] to update does not exist, a // NOT_FOUND error is returned. UpdateControl(context.Context, *UpdateControlRequest) (*Control, error) // Gets a Control. GetControl(context.Context, *GetControlRequest) (*Control, error) - // Lists all Controls linked to this catalog. + // Lists all Controls by their parent + // [Catalog][google.cloud.retail.v2beta.Catalog]. ListControls(context.Context, *ListControlsRequest) (*ListControlsResponse, error) } diff --git a/googleapis/cloud/retail/v2beta/export_config.pb.go b/googleapis/cloud/retail/v2beta/export_config.pb.go index 28d4c4853..f875af28f 100644 --- a/googleapis/cloud/retail/v2beta/export_config.pb.go +++ b/googleapis/cloud/retail/v2beta/export_config.pb.go @@ -24,6 +24,7 @@ import ( reflect "reflect" sync "sync" + _ "google.golang.org/genproto/googleapis/api/annotations" status "google.golang.org/genproto/googleapis/rpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -111,7 +112,7 @@ type ExportErrorsConfig_GcsPrefix struct { func (*ExportErrorsConfig_GcsPrefix) isExportErrorsConfig_Destination() {} -// Metadata related to the progress of the Export operation. This will be +// Metadata related to the progress of the Export operation. This is // returned by the google.longrunning.Operation.metadata field. type ExportMetadata struct { state protoimpl.MessageState @@ -424,80 +425,84 @@ var file_google_cloud_retail_v2beta_export_config_proto_rawDesc = []byte{ 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x44, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0a, - 0x67, 0x63, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x0d, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, - 0x0e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x16, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x53, 0x0a, - 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0xf7, 0x01, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, - 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x0d, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0c, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x69, 0x0a, 0x0c, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x62, - 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x50, 0x0a, 0x14, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x42, 0xda, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x11, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, - 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, - 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x44, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, + 0x67, 0x63, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 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, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x37, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x0d, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, + 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xf7, 0x01, + 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0d, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x62, 0x69, 0x67, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x42, 0x69, + 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x52, 0x0e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x50, 0x0a, 0x14, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x49, 0x64, 0x42, 0xda, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, + 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, + 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, + 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, + 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/googleapis/cloud/retail/v2beta/import_config.pb.go b/googleapis/cloud/retail/v2beta/import_config.pb.go index 00ec8e23a..0b158e5c6 100644 --- a/googleapis/cloud/retail/v2beta/import_config.pb.go +++ b/googleapis/cloud/retail/v2beta/import_config.pb.go @@ -51,16 +51,6 @@ const ( ImportProductsRequest_INCREMENTAL ImportProductsRequest_ReconciliationMode = 1 // Calculates diff and replaces the entire product dataset. Existing // products may be deleted if they are not present in the source location. - // - // Can only be set while using - // [BigQuerySource][google.cloud.retail.v2beta.BigQuerySource]. And the - // BigQuery dataset must be created in the data location "us (multiple - // regions in United States)", otherwise a PERMISSION_DENIED error is - // thrown. - // - // Add the IAM permission "BigQuery Data Viewer" for - // cloud-retail-customer-data-access@system.gserviceaccount.com before - // using this feature otherwise an error is thrown. ImportProductsRequest_FULL ImportProductsRequest_ReconciliationMode = 2 ) @@ -106,7 +96,6 @@ func (ImportProductsRequest_ReconciliationMode) EnumDescriptor() ([]byte, []int) } // Google Cloud Storage location for input content. -// format. type GcsSource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -127,25 +116,26 @@ type GcsSource struct { // // * `product` (default): One JSON // [Product][google.cloud.retail.v2beta.Product] per line. Each product must - // have a valid [Product.id][google.cloud.retail.v2beta.Product.id]. - // * `product_merchant_center`: See [Importing catalog data from Merchant - // Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). + // + // have a valid [Product.id][google.cloud.retail.v2beta.Product.id]. + // - `product_merchant_center`: See [Importing catalog data from Merchant + // Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). // // Supported values for user events imports: // // * `user_event` (default): One JSON // [UserEvent][google.cloud.retail.v2beta.UserEvent] per line. - // * `user_event_ga360`: Using - // https://support.google.com/analytics/answer/3437719. + // - `user_event_ga360`: Using + // https://support.google.com/analytics/answer/3437719. // // Supported values for control imports: // - // * 'control' (default): One JSON + // * `control` (default): One JSON // [Control][google.cloud.retail.v2beta.Control] per line. // // Supported values for catalog attribute imports: // - // * 'catalog_attribute' (default): One CSV + // * `catalog_attribute` (default): One CSV // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] per line. DataSchema string `protobuf:"bytes,2,opt,name=data_schema,json=dataSchema,proto3" json:"data_schema,omitempty"` } @@ -206,6 +196,7 @@ type BigQuerySource struct { // is not partitioned. // // Types that are assignable to Partition: + // // *BigQuerySource_PartitionDate Partition isBigQuerySource_Partition `protobuf_oneof:"partition"` // The project ID (can be project # or ID) that the BigQuery source is in with @@ -228,21 +219,21 @@ type BigQuerySource struct { // // * `product` (default): One JSON // [Product][google.cloud.retail.v2beta.Product] per line. Each product must - // have a valid [Product.id][google.cloud.retail.v2beta.Product.id]. - // * `product_merchant_center`: See [Importing catalog data from Merchant - // Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). + // + // have a valid [Product.id][google.cloud.retail.v2beta.Product.id]. + // - `product_merchant_center`: See [Importing catalog data from Merchant + // Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). // // Supported values for user events imports: // // * `user_event` (default): One JSON // [UserEvent][google.cloud.retail.v2beta.UserEvent] per line. - // * `user_event_ga360`: - // The schema is available here: - // https://support.google.com/analytics/answer/3437719. - // * `user_event_ga4`: This feature is in private preview. Please contact the - // support team for importing Google Analytics 4 events. - // The schema is available here: - // https://support.google.com/analytics/answer/7029846. + // - `user_event_ga360`: + // The schema is available here: + // https://support.google.com/analytics/answer/3437719. + // - `user_event_ga4`: + // The schema is available here: + // https://support.google.com/analytics/answer/7029846. // // Supported values for auto-completion imports: // @@ -340,9 +331,8 @@ type isBigQuerySource_Partition interface { type BigQuerySource_PartitionDate struct { // BigQuery time partitioned table's _PARTITIONDATE in YYYY-MM-DD format. // - // Only supported when - // [ImportProductsRequest.reconciliation_mode][google.cloud.retail.v2beta.ImportProductsRequest.reconciliation_mode] - // is set to `FULL`. + // Only supported in + // [ImportProductsRequest][google.cloud.retail.v2beta.ImportProductsRequest]. PartitionDate *date.Date `protobuf:"bytes,6,opt,name=partition_date,json=partitionDate,proto3,oneof"` } @@ -457,6 +447,7 @@ type ImportErrorsConfig struct { // Required. Errors destination. // // Types that are assignable to Destination: + // // *ImportErrorsConfig_GcsPrefix Destination isImportErrorsConfig_Destination `protobuf_oneof:"destination"` } @@ -513,7 +504,7 @@ type isImportErrorsConfig_Destination interface { type ImportErrorsConfig_GcsPrefix struct { // Google Cloud Storage prefix for import errors. This must be an empty, - // existing Cloud Storage directory. Import errors will be written to + // existing Cloud Storage directory. Import errors are written to // sharded files in this directory, one per line, as a JSON-encoded // `google.rpc.Status` message. GcsPrefix string `protobuf:"bytes,1,opt,name=gcs_prefix,json=gcsPrefix,proto3,oneof"` @@ -541,29 +532,24 @@ type ImportProductsRequest struct { InputConfig *ProductInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"` // The desired location of errors incurred during the Import. ErrorsConfig *ImportErrorsConfig `protobuf:"bytes,3,opt,name=errors_config,json=errorsConfig,proto3" json:"errors_config,omitempty"` - // Indicates which fields in the provided imported 'products' to update. If - // not set, will by default update all fields. + // Indicates which fields in the provided imported `products` to update. If + // not set, all fields are updated. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` // The mode of reconciliation between existing products and the products to be // imported. Defaults to // [ReconciliationMode.INCREMENTAL][google.cloud.retail.v2beta.ImportProductsRequest.ReconciliationMode.INCREMENTAL]. ReconciliationMode ImportProductsRequest_ReconciliationMode `protobuf:"varint,5,opt,name=reconciliation_mode,json=reconciliationMode,proto3,enum=google.cloud.retail.v2beta.ImportProductsRequest_ReconciliationMode" json:"reconciliation_mode,omitempty"` // Full Pub/Sub topic name for receiving notification. If this field is set, - // when the import is finished, a notification will be sent to - // specified Pub/Sub topic. The message data will be JSON string of a + // when the import is finished, a notification is sent to + // specified Pub/Sub topic. The message data is JSON string of a // [Operation][google.longrunning.Operation]. // // Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`. It has // to be within the same project as // [ImportProductsRequest.parent][google.cloud.retail.v2beta.ImportProductsRequest.parent]. - // Make sure that both - // `cloud-retail-customer-data-access@system.gserviceaccount.com` and - // `service-@gcp-sa-retail.iam.gserviceaccount.com` - // have the `pubsub.topics.publish` IAM permission on the topic. - // - // Only supported when - // [ImportProductsRequest.reconciliation_mode][google.cloud.retail.v2beta.ImportProductsRequest.reconciliation_mode] - // is set to `FULL`. + // Make sure that `service-@gcp-sa-retail.iam.gserviceaccount.com` has the + // `pubsub.topics.publish` IAM permission on the topic. NotificationPubsubTopic string `protobuf:"bytes,7,opt,name=notification_pubsub_topic,json=notificationPubsubTopic,proto3" json:"notification_pubsub_topic,omitempty"` } @@ -730,8 +716,8 @@ type ImportCompletionDataRequest struct { // Required. The desired input location of the data. InputConfig *CompletionDataInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"` // Pub/Sub topic for receiving notification. If this field is set, - // when the import is finished, a notification will be sent to - // specified Pub/Sub topic. The message data will be JSON string of a + // when the import is finished, a notification is sent to + // specified Pub/Sub topic. The message data is JSON string of a // [Operation][google.longrunning.Operation]. // Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`. NotificationPubsubTopic string `protobuf:"bytes,3,opt,name=notification_pubsub_topic,json=notificationPubsubTopic,proto3" json:"notification_pubsub_topic,omitempty"` @@ -799,6 +785,7 @@ type ProductInputConfig struct { // Required. The source of the input. // // Types that are assignable to Source: + // // *ProductInputConfig_ProductInlineSource // *ProductInputConfig_GcsSource // *ProductInputConfig_BigQuerySource @@ -899,6 +886,7 @@ type UserEventInputConfig struct { // The source of the input. // // Types that are assignable to Source: + // // *UserEventInputConfig_UserEventInlineSource // *UserEventInputConfig_GcsSource // *UserEventInputConfig_BigQuerySource @@ -1007,6 +995,7 @@ type CompletionDataInputConfig struct { // * `allowlist`: One JSON allow suggestion per line. // // Types that are assignable to Source: + // // *CompletionDataInputConfig_BigQuerySource Source isCompletionDataInputConfig_Source `protobuf_oneof:"source"` } @@ -1072,7 +1061,7 @@ type CompletionDataInputConfig_BigQuerySource struct { func (*CompletionDataInputConfig_BigQuerySource) isCompletionDataInputConfig_Source() {} -// Metadata related to the progress of the Import operation. This will be +// Metadata related to the progress of the Import operation. This is // returned by the google.longrunning.Operation.metadata field. type ImportMetadata struct { state protoimpl.MessageState @@ -1093,8 +1082,8 @@ type ImportMetadata struct { // Deprecated: Do not use. RequestId string `protobuf:"bytes,5,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` // Pub/Sub topic for receiving notification. If this field is set, - // when the import is finished, a notification will be sent to - // specified Pub/Sub topic. The message data will be JSON string of a + // when the import is finished, a notification is sent to + // specified Pub/Sub topic. The message data is JSON string of a // [Operation][google.longrunning.Operation]. // Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`. NotificationPubsubTopic string `protobuf:"bytes,6,opt,name=notification_pubsub_topic,json=notificationPubsubTopic,proto3" json:"notification_pubsub_topic,omitempty"` diff --git a/googleapis/cloud/retail/v2beta/model.pb.go b/googleapis/cloud/retail/v2beta/model.pb.go new file mode 100644 index 000000000..9f2559743 --- /dev/null +++ b/googleapis/cloud/retail/v2beta/model.pb.go @@ -0,0 +1,787 @@ +// Copyright 2022 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.26.0 +// protoc v3.12.2 +// source: google/cloud/retail/v2beta/model.proto + +package retail + +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) +) + +// The serving state of the model. +type Model_ServingState int32 + +const ( + // Unspecified serving state. + Model_SERVING_STATE_UNSPECIFIED Model_ServingState = 0 + // The model is not serving. + Model_INACTIVE Model_ServingState = 1 + // The model is serving and can be queried. + Model_ACTIVE Model_ServingState = 2 + // The model is trained on tuned hyperparameters and can be + // queried. + Model_TUNED Model_ServingState = 3 +) + +// Enum value maps for Model_ServingState. +var ( + Model_ServingState_name = map[int32]string{ + 0: "SERVING_STATE_UNSPECIFIED", + 1: "INACTIVE", + 2: "ACTIVE", + 3: "TUNED", + } + Model_ServingState_value = map[string]int32{ + "SERVING_STATE_UNSPECIFIED": 0, + "INACTIVE": 1, + "ACTIVE": 2, + "TUNED": 3, + } +) + +func (x Model_ServingState) Enum() *Model_ServingState { + p := new(Model_ServingState) + *p = x + return p +} + +func (x Model_ServingState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Model_ServingState) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_retail_v2beta_model_proto_enumTypes[0].Descriptor() +} + +func (Model_ServingState) Type() protoreflect.EnumType { + return &file_google_cloud_retail_v2beta_model_proto_enumTypes[0] +} + +func (x Model_ServingState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Model_ServingState.Descriptor instead. +func (Model_ServingState) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_proto_rawDescGZIP(), []int{0, 0} +} + +// The training state of the model. +type Model_TrainingState int32 + +const ( + // Unspecified training state. + Model_TRAINING_STATE_UNSPECIFIED Model_TrainingState = 0 + // The model training is paused. + Model_PAUSED Model_TrainingState = 1 + // The model is training. + Model_TRAINING Model_TrainingState = 2 +) + +// Enum value maps for Model_TrainingState. +var ( + Model_TrainingState_name = map[int32]string{ + 0: "TRAINING_STATE_UNSPECIFIED", + 1: "PAUSED", + 2: "TRAINING", + } + Model_TrainingState_value = map[string]int32{ + "TRAINING_STATE_UNSPECIFIED": 0, + "PAUSED": 1, + "TRAINING": 2, + } +) + +func (x Model_TrainingState) Enum() *Model_TrainingState { + p := new(Model_TrainingState) + *p = x + return p +} + +func (x Model_TrainingState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Model_TrainingState) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_retail_v2beta_model_proto_enumTypes[1].Descriptor() +} + +func (Model_TrainingState) Type() protoreflect.EnumType { + return &file_google_cloud_retail_v2beta_model_proto_enumTypes[1] +} + +func (x Model_TrainingState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Model_TrainingState.Descriptor instead. +func (Model_TrainingState) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_proto_rawDescGZIP(), []int{0, 1} +} + +// Describes whether periodic tuning is enabled for this model +// or not. Periodic tuning is scheduled at most every three months. You can +// start a tuning process manually by using the `TuneModel` +// method, which starts a tuning process immediately and resets the quarterly +// schedule. Enabling or disabling periodic tuning does not affect any +// current tuning processes. +type Model_PeriodicTuningState int32 + +const ( + // Unspecified default value, should never be explicitly set. + Model_PERIODIC_TUNING_STATE_UNSPECIFIED Model_PeriodicTuningState = 0 + // The model has periodic tuning disabled. Tuning + // can be reenabled by calling the `EnableModelPeriodicTuning` + // method or by calling the `TuneModel` method. + Model_PERIODIC_TUNING_DISABLED Model_PeriodicTuningState = 1 + // The model cannot be tuned with periodic tuning OR the + // `TuneModel` method. Hide the options in customer UI and + // reject any requests through the backend self serve API. + Model_ALL_TUNING_DISABLED Model_PeriodicTuningState = 3 + // The model has periodic tuning enabled. Tuning + // can be disabled by calling the `DisableModelPeriodicTuning` + // method. + Model_PERIODIC_TUNING_ENABLED Model_PeriodicTuningState = 2 +) + +// Enum value maps for Model_PeriodicTuningState. +var ( + Model_PeriodicTuningState_name = map[int32]string{ + 0: "PERIODIC_TUNING_STATE_UNSPECIFIED", + 1: "PERIODIC_TUNING_DISABLED", + 3: "ALL_TUNING_DISABLED", + 2: "PERIODIC_TUNING_ENABLED", + } + Model_PeriodicTuningState_value = map[string]int32{ + "PERIODIC_TUNING_STATE_UNSPECIFIED": 0, + "PERIODIC_TUNING_DISABLED": 1, + "ALL_TUNING_DISABLED": 3, + "PERIODIC_TUNING_ENABLED": 2, + } +) + +func (x Model_PeriodicTuningState) Enum() *Model_PeriodicTuningState { + p := new(Model_PeriodicTuningState) + *p = x + return p +} + +func (x Model_PeriodicTuningState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Model_PeriodicTuningState) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_retail_v2beta_model_proto_enumTypes[2].Descriptor() +} + +func (Model_PeriodicTuningState) Type() protoreflect.EnumType { + return &file_google_cloud_retail_v2beta_model_proto_enumTypes[2] +} + +func (x Model_PeriodicTuningState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Model_PeriodicTuningState.Descriptor instead. +func (Model_PeriodicTuningState) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_proto_rawDescGZIP(), []int{0, 2} +} + +// Describes whether this model have sufficient training data +// to be continuously trained. +type Model_DataState int32 + +const ( + // Unspecified default value, should never be explicitly set. + Model_DATA_STATE_UNSPECIFIED Model_DataState = 0 + // The model has sufficient training data. + Model_DATA_OK Model_DataState = 1 + // The model does not have sufficient training data. Error + // messages can be queried via Stackdriver. + Model_DATA_ERROR Model_DataState = 2 +) + +// Enum value maps for Model_DataState. +var ( + Model_DataState_name = map[int32]string{ + 0: "DATA_STATE_UNSPECIFIED", + 1: "DATA_OK", + 2: "DATA_ERROR", + } + Model_DataState_value = map[string]int32{ + "DATA_STATE_UNSPECIFIED": 0, + "DATA_OK": 1, + "DATA_ERROR": 2, + } +) + +func (x Model_DataState) Enum() *Model_DataState { + p := new(Model_DataState) + *p = x + return p +} + +func (x Model_DataState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Model_DataState) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_retail_v2beta_model_proto_enumTypes[3].Descriptor() +} + +func (Model_DataState) Type() protoreflect.EnumType { + return &file_google_cloud_retail_v2beta_model_proto_enumTypes[3] +} + +func (x Model_DataState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Model_DataState.Descriptor instead. +func (Model_DataState) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_proto_rawDescGZIP(), []int{0, 3} +} + +// Metadata that describes the training and serving parameters of a +// [Model][google.cloud.retail.v2beta.Model]. A +// [Model][google.cloud.retail.v2beta.Model] can be associated with a +// [ServingConfig][google.cloud.retail.v2beta.ServingConfig] and then queried +// through the Predict API. +type Model struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The fully qualified resource name of the model. + // + // Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` + // catalog_id has char limit of 50. + // recommendation_model_id has char limit of 40. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The display name of the model. + // + // Should be human readable, used to display Recommendation Models in the + // Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 + // characters. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Optional. The training state that the model is in (e.g. + // `TRAINING` or `PAUSED`). + // + // Since part of the cost of running the service + // is frequency of training - this can be used to determine when to train + // model in order to control cost. If not specified: the default value for + // `CreateModel` method is `TRAINING`. The default value for + // `UpdateModel` method is to keep the state the same as before. + TrainingState Model_TrainingState `protobuf:"varint,3,opt,name=training_state,json=trainingState,proto3,enum=google.cloud.retail.v2beta.Model_TrainingState" json:"training_state,omitempty"` + // Output only. The serving state of the model: `ACTIVE`, `NOT_ACTIVE`. + ServingState Model_ServingState `protobuf:"varint,4,opt,name=serving_state,json=servingState,proto3,enum=google.cloud.retail.v2beta.Model_ServingState" json:"serving_state,omitempty"` + // Output only. Timestamp the Recommendation Model was created at. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. Timestamp the Recommendation Model was last updated. E.g. + // if a Recommendation Model was paused - this would be the time the pause was + // initiated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Required. The type of model e.g. `home-page`. + // + // Currently supported values: `recommended-for-you`, `others-you-may-like`, + // `frequently-bought-together`, `page-optimization`, `similar-items`, + // `buy-it-again`, and `recently-viewed`(readonly value). + // + // This field together with + // [optimization_objective][google.cloud.retail.v2beta.Model.optimization_objective] + // describe model metadata to use to control model training and serving. + // See https://cloud.google.com/retail/docs/models + // for more details on what the model metadata control and which combination + // of parameters are valid. For invalid combinations of parameters (e.g. type + // = `frequently-bought-together` and optimization_objective = `ctr`), you + // receive an error 400 if you try to create/update a recommendation with + // this set of knobs. + Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` + // Optional. The optimization objective e.g. `cvr`. + // + // Currently supported + // values: `ctr`, `cvr`, `revenue-per-order`. + // + // If not specified, we choose default based on model type. + // + // Default depends on type of recommendation: + // + // `recommended-for-you` => `ctr` + // + // `others-you-may-like` => `ctr` + // + // `frequently-bought-together` => `revenue_per_order` + // + // This field together with + // [optimization_objective][google.cloud.retail.v2beta.Model.type] + // describe model metadata to use to control model training and serving. + // See https://cloud.google.com/retail/docs/models + // for more details on what the model metadata control and which combination + // of parameters are valid. For invalid combinations of parameters (e.g. type + // = `frequently-bought-together` and optimization_objective = `ctr`), you + // receive an error 400 if you try to create/update a recommendation with + // this set of knobs. + OptimizationObjective string `protobuf:"bytes,8,opt,name=optimization_objective,json=optimizationObjective,proto3" json:"optimization_objective,omitempty"` + // Optional. The state of periodic tuning. + // + // The period we use is 3 months - to do a + // one-off tune earlier use the `TuneModel` method. Default value + // is `PERIODIC_TUNING_ENABLED`. + PeriodicTuningState Model_PeriodicTuningState `protobuf:"varint,11,opt,name=periodic_tuning_state,json=periodicTuningState,proto3,enum=google.cloud.retail.v2beta.Model_PeriodicTuningState" json:"periodic_tuning_state,omitempty"` + // Output only. The timestamp when the latest successful tune finished. + LastTuneTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=last_tune_time,json=lastTuneTime,proto3" json:"last_tune_time,omitempty"` + // Output only. The tune operation associated with the model. + // + // Can be used to determine if there is an ongoing tune for this + // recommendation. Empty field implies no tune is goig on. + TuningOperation string `protobuf:"bytes,15,opt,name=tuning_operation,json=tuningOperation,proto3" json:"tuning_operation,omitempty"` + // Output only. The state of data requirements for this model: `DATA_OK` and + // `DATA_ERROR`. + // + // Recommendation model cannot be trained if the data is in + // `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even + // if serving state is `ACTIVE`: models were trained successfully before, but + // cannot be refreshed because model no longer has sufficient + // data for training. + DataState Model_DataState `protobuf:"varint,16,opt,name=data_state,json=dataState,proto3,enum=google.cloud.retail.v2beta.Model_DataState" json:"data_state,omitempty"` + // Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering + // by attributes is enabled for the model. + FilteringOption RecommendationsFilteringOption `protobuf:"varint,18,opt,name=filtering_option,json=filteringOption,proto3,enum=google.cloud.retail.v2beta.RecommendationsFilteringOption" json:"filtering_option,omitempty"` + // Output only. The list of valid serving configs associated with the + // PageOptimizationConfig. + ServingConfigLists []*Model_ServingConfigList `protobuf:"bytes,19,rep,name=serving_config_lists,json=servingConfigLists,proto3" json:"serving_config_lists,omitempty"` +} + +func (x *Model) Reset() { + *x = Model{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Model) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Model) ProtoMessage() {} + +func (x *Model) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 Model.ProtoReflect.Descriptor instead. +func (*Model) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_proto_rawDescGZIP(), []int{0} +} + +func (x *Model) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Model) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *Model) GetTrainingState() Model_TrainingState { + if x != nil { + return x.TrainingState + } + return Model_TRAINING_STATE_UNSPECIFIED +} + +func (x *Model) GetServingState() Model_ServingState { + if x != nil { + return x.ServingState + } + return Model_SERVING_STATE_UNSPECIFIED +} + +func (x *Model) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *Model) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *Model) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Model) GetOptimizationObjective() string { + if x != nil { + return x.OptimizationObjective + } + return "" +} + +func (x *Model) GetPeriodicTuningState() Model_PeriodicTuningState { + if x != nil { + return x.PeriodicTuningState + } + return Model_PERIODIC_TUNING_STATE_UNSPECIFIED +} + +func (x *Model) GetLastTuneTime() *timestamppb.Timestamp { + if x != nil { + return x.LastTuneTime + } + return nil +} + +func (x *Model) GetTuningOperation() string { + if x != nil { + return x.TuningOperation + } + return "" +} + +func (x *Model) GetDataState() Model_DataState { + if x != nil { + return x.DataState + } + return Model_DATA_STATE_UNSPECIFIED +} + +func (x *Model) GetFilteringOption() RecommendationsFilteringOption { + if x != nil { + return x.FilteringOption + } + return RecommendationsFilteringOption_RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED +} + +func (x *Model) GetServingConfigLists() []*Model_ServingConfigList { + if x != nil { + return x.ServingConfigLists + } + return nil +} + +// Represents an ordered combination of valid serving configs, which +// can be used for `PAGE_OPTIMIZATION` recommendations. +type Model_ServingConfigList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. A set of valid serving configs that may be used for + // `PAGE_OPTIMIZATION`. + ServingConfigIds []string `protobuf:"bytes,1,rep,name=serving_config_ids,json=servingConfigIds,proto3" json:"serving_config_ids,omitempty"` +} + +func (x *Model_ServingConfigList) Reset() { + *x = Model_ServingConfigList{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Model_ServingConfigList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Model_ServingConfigList) ProtoMessage() {} + +func (x *Model_ServingConfigList) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 Model_ServingConfigList.ProtoReflect.Descriptor instead. +func (*Model_ServingConfigList) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Model_ServingConfigList) GetServingConfigIds() []string { + if x != nil { + return x.ServingConfigIds + } + return nil +} + +var File_google_cloud_retail_v2beta_model_proto protoreflect.FileDescriptor + +var file_google_cloud_retail_v2beta_model_proto_rawDesc = []byte{ + 0x0a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 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, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 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, 0x95, 0x0c, 0x0a, 0x05, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x16, 0x6f, 0x70, 0x74, + 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, + 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x6e, 0x0a, 0x15, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, + 0x63, 0x5f, 0x74, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, + 0x54, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x13, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x54, 0x75, 0x6e, 0x69, 0x6e, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x75, + 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 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, 0x0c, + 0x6c, 0x61, 0x73, 0x74, 0x54, 0x75, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x10, + 0x74, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x74, 0x75, 0x6e, + 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0a, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x6a, 0x0a, + 0x10, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a, 0x14, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4c, 0x69, 0x73, 0x74, 0x73, 0x1a, 0x46, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x73, 0x22, 0x52, 0x0a, + 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, + 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, + 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x55, 0x4e, 0x45, 0x44, 0x10, + 0x03, 0x22, 0x49, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, + 0x0a, 0x08, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x90, 0x01, 0x0a, + 0x13, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x54, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x49, 0x43, + 0x5f, 0x54, 0x55, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, + 0x45, 0x52, 0x49, 0x4f, 0x44, 0x49, 0x43, 0x5f, 0x54, 0x55, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x4c, 0x4c, + 0x5f, 0x54, 0x55, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, + 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x49, 0x43, 0x5f, 0x54, + 0x55, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x22, + 0x44, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x02, 0x3a, 0x6b, 0xea, 0x41, 0x68, 0x0a, 0x1b, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x49, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x7d, 0x42, 0xd3, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, + 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, + 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_retail_v2beta_model_proto_rawDescOnce sync.Once + file_google_cloud_retail_v2beta_model_proto_rawDescData = file_google_cloud_retail_v2beta_model_proto_rawDesc +) + +func file_google_cloud_retail_v2beta_model_proto_rawDescGZIP() []byte { + file_google_cloud_retail_v2beta_model_proto_rawDescOnce.Do(func() { + file_google_cloud_retail_v2beta_model_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_retail_v2beta_model_proto_rawDescData) + }) + return file_google_cloud_retail_v2beta_model_proto_rawDescData +} + +var file_google_cloud_retail_v2beta_model_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_google_cloud_retail_v2beta_model_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_google_cloud_retail_v2beta_model_proto_goTypes = []interface{}{ + (Model_ServingState)(0), // 0: google.cloud.retail.v2beta.Model.ServingState + (Model_TrainingState)(0), // 1: google.cloud.retail.v2beta.Model.TrainingState + (Model_PeriodicTuningState)(0), // 2: google.cloud.retail.v2beta.Model.PeriodicTuningState + (Model_DataState)(0), // 3: google.cloud.retail.v2beta.Model.DataState + (*Model)(nil), // 4: google.cloud.retail.v2beta.Model + (*Model_ServingConfigList)(nil), // 5: google.cloud.retail.v2beta.Model.ServingConfigList + (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp + (RecommendationsFilteringOption)(0), // 7: google.cloud.retail.v2beta.RecommendationsFilteringOption +} +var file_google_cloud_retail_v2beta_model_proto_depIdxs = []int32{ + 1, // 0: google.cloud.retail.v2beta.Model.training_state:type_name -> google.cloud.retail.v2beta.Model.TrainingState + 0, // 1: google.cloud.retail.v2beta.Model.serving_state:type_name -> google.cloud.retail.v2beta.Model.ServingState + 6, // 2: google.cloud.retail.v2beta.Model.create_time:type_name -> google.protobuf.Timestamp + 6, // 3: google.cloud.retail.v2beta.Model.update_time:type_name -> google.protobuf.Timestamp + 2, // 4: google.cloud.retail.v2beta.Model.periodic_tuning_state:type_name -> google.cloud.retail.v2beta.Model.PeriodicTuningState + 6, // 5: google.cloud.retail.v2beta.Model.last_tune_time:type_name -> google.protobuf.Timestamp + 3, // 6: google.cloud.retail.v2beta.Model.data_state:type_name -> google.cloud.retail.v2beta.Model.DataState + 7, // 7: google.cloud.retail.v2beta.Model.filtering_option:type_name -> google.cloud.retail.v2beta.RecommendationsFilteringOption + 5, // 8: google.cloud.retail.v2beta.Model.serving_config_lists:type_name -> google.cloud.retail.v2beta.Model.ServingConfigList + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_google_cloud_retail_v2beta_model_proto_init() } +func file_google_cloud_retail_v2beta_model_proto_init() { + if File_google_cloud_retail_v2beta_model_proto != nil { + return + } + file_google_cloud_retail_v2beta_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_google_cloud_retail_v2beta_model_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Model); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Model_ServingConfigList); 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_cloud_retail_v2beta_model_proto_rawDesc, + NumEnums: 4, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_cloud_retail_v2beta_model_proto_goTypes, + DependencyIndexes: file_google_cloud_retail_v2beta_model_proto_depIdxs, + EnumInfos: file_google_cloud_retail_v2beta_model_proto_enumTypes, + MessageInfos: file_google_cloud_retail_v2beta_model_proto_msgTypes, + }.Build() + File_google_cloud_retail_v2beta_model_proto = out.File + file_google_cloud_retail_v2beta_model_proto_rawDesc = nil + file_google_cloud_retail_v2beta_model_proto_goTypes = nil + file_google_cloud_retail_v2beta_model_proto_depIdxs = nil +} diff --git a/googleapis/cloud/retail/v2beta/model_service.pb.go b/googleapis/cloud/retail/v2beta/model_service.pb.go new file mode 100644 index 000000000..8e77473a5 --- /dev/null +++ b/googleapis/cloud/retail/v2beta/model_service.pb.go @@ -0,0 +1,1380 @@ +// Copyright 2022 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.26.0 +// protoc v3.12.2 +// source: google/cloud/retail/v2beta/model_service.proto + +package retail + +import ( + context "context" + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + longrunning "google.golang.org/genproto/googleapis/longrunning" + 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 for creating a model. +type CreateModelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource under which to create the model. Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The payload of the [Model][google.cloud.retail.v2beta.Model] to + // create. + Model *Model `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` + // Optional. Whether to run a dry run to validate the request (without + // actually creating the model). + DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` +} + +func (x *CreateModelRequest) Reset() { + *x = CreateModelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateModelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateModelRequest) ProtoMessage() {} + +func (x *CreateModelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 CreateModelRequest.ProtoReflect.Descriptor instead. +func (*CreateModelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateModelRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateModelRequest) GetModel() *Model { + if x != nil { + return x.Model + } + return nil +} + +func (x *CreateModelRequest) GetDryRun() bool { + if x != nil { + return x.DryRun + } + return false +} + +// Request for updating an existing model. +type UpdateModelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The body of the updated + // [Model][google.cloud.retail.v2beta.Model]. + Model *Model `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"` + // Optional. Indicates which fields in the provided 'model' to + // update. If not set, by default updates all fields. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` +} + +func (x *UpdateModelRequest) Reset() { + *x = UpdateModelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateModelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateModelRequest) ProtoMessage() {} + +func (x *UpdateModelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 UpdateModelRequest.ProtoReflect.Descriptor instead. +func (*UpdateModelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{1} +} + +func (x *UpdateModelRequest) GetModel() *Model { + if x != nil { + return x.Model + } + return nil +} + +func (x *UpdateModelRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// Request for pausing training of a model. +type PauseModelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the model to pause. + // Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *PauseModelRequest) Reset() { + *x = PauseModelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PauseModelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PauseModelRequest) ProtoMessage() {} + +func (x *PauseModelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 PauseModelRequest.ProtoReflect.Descriptor instead. +func (*PauseModelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{2} +} + +func (x *PauseModelRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request for resuming training of a model. +type ResumeModelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the model to resume. + // Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *ResumeModelRequest) Reset() { + *x = ResumeModelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResumeModelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumeModelRequest) ProtoMessage() {} + +func (x *ResumeModelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 ResumeModelRequest.ProtoReflect.Descriptor instead. +func (*ResumeModelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{3} +} + +func (x *ResumeModelRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request for listing models associated with a resource. +type ListModelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent for which to list models. + // Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. Maximum number of results to return. If unspecified, defaults + // to 50. Max allowed value is 1000. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A page token, received from a previous `ListModels` + // call. Provide this to retrieve the subsequent page. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListModelsRequest) Reset() { + *x = ListModelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListModelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListModelsRequest) ProtoMessage() {} + +func (x *ListModelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 ListModelsRequest.ProtoReflect.Descriptor instead. +func (*ListModelsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{4} +} + +func (x *ListModelsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListModelsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListModelsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// Request for deleting a model. +type DeleteModelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The resource name of the + // [Model][google.cloud.retail.v2beta.Model] to delete. Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteModelRequest) Reset() { + *x = DeleteModelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteModelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteModelRequest) ProtoMessage() {} + +func (x *DeleteModelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 DeleteModelRequest.ProtoReflect.Descriptor instead. +func (*DeleteModelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{5} +} + +func (x *DeleteModelRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Response to a ListModelRequest. +type ListModelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of Models. + Models []*Model `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"` + // Pagination token, if not returned indicates the last page. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListModelsResponse) Reset() { + *x = ListModelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListModelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListModelsResponse) ProtoMessage() {} + +func (x *ListModelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 ListModelsResponse.ProtoReflect.Descriptor instead. +func (*ListModelsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{6} +} + +func (x *ListModelsResponse) GetModels() []*Model { + if x != nil { + return x.Models + } + return nil +} + +func (x *ListModelsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request to manually start a tuning process now (instead of waiting for +// the periodically scheduled tuning to happen). +type TuneModelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The resource name of the model to tune. + // Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *TuneModelRequest) Reset() { + *x = TuneModelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneModelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneModelRequest) ProtoMessage() {} + +func (x *TuneModelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 TuneModelRequest.ProtoReflect.Descriptor instead. +func (*TuneModelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{7} +} + +func (x *TuneModelRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Metadata associated with a create operation. +type CreateModelMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The resource name of the model that this create applies to. + // Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` + Model string `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"` +} + +func (x *CreateModelMetadata) Reset() { + *x = CreateModelMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateModelMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateModelMetadata) ProtoMessage() {} + +func (x *CreateModelMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 CreateModelMetadata.ProtoReflect.Descriptor instead. +func (*CreateModelMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{8} +} + +func (x *CreateModelMetadata) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +// Metadata associated with a tune operation. +type TuneModelMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The resource name of the model that this tune applies to. + // Format: + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` + Model string `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"` +} + +func (x *TuneModelMetadata) Reset() { + *x = TuneModelMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneModelMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneModelMetadata) ProtoMessage() {} + +func (x *TuneModelMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 TuneModelMetadata.ProtoReflect.Descriptor instead. +func (*TuneModelMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{9} +} + +func (x *TuneModelMetadata) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +// Response associated with a tune operation. +type TuneModelResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TuneModelResponse) Reset() { + *x = TuneModelResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_retail_v2beta_model_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneModelResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneModelResponse) ProtoMessage() {} + +func (x *TuneModelResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_retail_v2beta_model_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 TuneModelResponse.ProtoReflect.Descriptor instead. +func (*TuneModelResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP(), []int{10} +} + +var File_google_cloud_retail_v2beta_model_service_proto protoreflect.FileDescriptor + +var file_google_cloud_retail_v2beta_model_service_proto_rawDesc = []byte{ + 0x0a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 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, + 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 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, 0xaf, 0x01, 0x0a, 0x12, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 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, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x1c, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x22, 0x94, 0x01, + 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 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, 0x4c, 0x0a, 0x11, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1d, 0x0a, + 0x1b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x2d, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x98, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 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, 0x0a, + 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 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, 0x22, 0x4d, 0x0a, 0x12, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x23, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1d, 0x0a, 0x1b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x77, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x39, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 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, 0x4b, 0x0a, 0x10, 0x54, 0x75, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1d, 0x0a, 0x1b, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x29, + 0x0a, 0x11, 0x54, 0x75, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x75, 0x6e, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x82, + 0x0c, 0x0a, 0x0c, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x8b, 0x02, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xac, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x39, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, + 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x3a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0xda, 0x41, 0x0c, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0xca, 0x41, 0x52, 0x0a, 0x20, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb1, 0x01, + 0x0a, 0x0a, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x51, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x22, 0x3f, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x70, 0x61, 0x75, 0x73, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0xb4, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, + 0x65, 0x73, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22, 0x40, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x3a, 0x01, + 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 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, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xb7, 0x01, 0x0a, 0x0a, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, + 0x12, 0x39, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0xc4, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x62, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x32, + 0x3f, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0xda, 0x41, 0x11, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x8a, 0x02, 0x0a, 0x09, + 0x54, 0x75, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x54, 0x75, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x22, + 0x3e, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, + 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x75, 0x6e, 0x65, 0x3a, + 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x5c, 0x0a, 0x2c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x54, 0x75, 0x6e, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x54, 0x75, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 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, 0xda, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x11, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, + 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, + 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, + 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, + 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_retail_v2beta_model_service_proto_rawDescOnce sync.Once + file_google_cloud_retail_v2beta_model_service_proto_rawDescData = file_google_cloud_retail_v2beta_model_service_proto_rawDesc +) + +func file_google_cloud_retail_v2beta_model_service_proto_rawDescGZIP() []byte { + file_google_cloud_retail_v2beta_model_service_proto_rawDescOnce.Do(func() { + file_google_cloud_retail_v2beta_model_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_retail_v2beta_model_service_proto_rawDescData) + }) + return file_google_cloud_retail_v2beta_model_service_proto_rawDescData +} + +var file_google_cloud_retail_v2beta_model_service_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_google_cloud_retail_v2beta_model_service_proto_goTypes = []interface{}{ + (*CreateModelRequest)(nil), // 0: google.cloud.retail.v2beta.CreateModelRequest + (*UpdateModelRequest)(nil), // 1: google.cloud.retail.v2beta.UpdateModelRequest + (*PauseModelRequest)(nil), // 2: google.cloud.retail.v2beta.PauseModelRequest + (*ResumeModelRequest)(nil), // 3: google.cloud.retail.v2beta.ResumeModelRequest + (*ListModelsRequest)(nil), // 4: google.cloud.retail.v2beta.ListModelsRequest + (*DeleteModelRequest)(nil), // 5: google.cloud.retail.v2beta.DeleteModelRequest + (*ListModelsResponse)(nil), // 6: google.cloud.retail.v2beta.ListModelsResponse + (*TuneModelRequest)(nil), // 7: google.cloud.retail.v2beta.TuneModelRequest + (*CreateModelMetadata)(nil), // 8: google.cloud.retail.v2beta.CreateModelMetadata + (*TuneModelMetadata)(nil), // 9: google.cloud.retail.v2beta.TuneModelMetadata + (*TuneModelResponse)(nil), // 10: google.cloud.retail.v2beta.TuneModelResponse + (*Model)(nil), // 11: google.cloud.retail.v2beta.Model + (*fieldmaskpb.FieldMask)(nil), // 12: google.protobuf.FieldMask + (*longrunning.Operation)(nil), // 13: google.longrunning.Operation + (*emptypb.Empty)(nil), // 14: google.protobuf.Empty +} +var file_google_cloud_retail_v2beta_model_service_proto_depIdxs = []int32{ + 11, // 0: google.cloud.retail.v2beta.CreateModelRequest.model:type_name -> google.cloud.retail.v2beta.Model + 11, // 1: google.cloud.retail.v2beta.UpdateModelRequest.model:type_name -> google.cloud.retail.v2beta.Model + 12, // 2: google.cloud.retail.v2beta.UpdateModelRequest.update_mask:type_name -> google.protobuf.FieldMask + 11, // 3: google.cloud.retail.v2beta.ListModelsResponse.models:type_name -> google.cloud.retail.v2beta.Model + 0, // 4: google.cloud.retail.v2beta.ModelService.CreateModel:input_type -> google.cloud.retail.v2beta.CreateModelRequest + 2, // 5: google.cloud.retail.v2beta.ModelService.PauseModel:input_type -> google.cloud.retail.v2beta.PauseModelRequest + 3, // 6: google.cloud.retail.v2beta.ModelService.ResumeModel:input_type -> google.cloud.retail.v2beta.ResumeModelRequest + 5, // 7: google.cloud.retail.v2beta.ModelService.DeleteModel:input_type -> google.cloud.retail.v2beta.DeleteModelRequest + 4, // 8: google.cloud.retail.v2beta.ModelService.ListModels:input_type -> google.cloud.retail.v2beta.ListModelsRequest + 1, // 9: google.cloud.retail.v2beta.ModelService.UpdateModel:input_type -> google.cloud.retail.v2beta.UpdateModelRequest + 7, // 10: google.cloud.retail.v2beta.ModelService.TuneModel:input_type -> google.cloud.retail.v2beta.TuneModelRequest + 13, // 11: google.cloud.retail.v2beta.ModelService.CreateModel:output_type -> google.longrunning.Operation + 11, // 12: google.cloud.retail.v2beta.ModelService.PauseModel:output_type -> google.cloud.retail.v2beta.Model + 11, // 13: google.cloud.retail.v2beta.ModelService.ResumeModel:output_type -> google.cloud.retail.v2beta.Model + 14, // 14: google.cloud.retail.v2beta.ModelService.DeleteModel:output_type -> google.protobuf.Empty + 6, // 15: google.cloud.retail.v2beta.ModelService.ListModels:output_type -> google.cloud.retail.v2beta.ListModelsResponse + 11, // 16: google.cloud.retail.v2beta.ModelService.UpdateModel:output_type -> google.cloud.retail.v2beta.Model + 13, // 17: google.cloud.retail.v2beta.ModelService.TuneModel:output_type -> google.longrunning.Operation + 11, // [11:18] is the sub-list for method output_type + 4, // [4:11] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_google_cloud_retail_v2beta_model_service_proto_init() } +func file_google_cloud_retail_v2beta_model_service_proto_init() { + if File_google_cloud_retail_v2beta_model_service_proto != nil { + return + } + file_google_cloud_retail_v2beta_model_proto_init() + if !protoimpl.UnsafeEnabled { + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PauseModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResumeModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListModelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListModelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TuneModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TuneModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_retail_v2beta_model_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TuneModelResponse); 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_cloud_retail_v2beta_model_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_retail_v2beta_model_service_proto_goTypes, + DependencyIndexes: file_google_cloud_retail_v2beta_model_service_proto_depIdxs, + MessageInfos: file_google_cloud_retail_v2beta_model_service_proto_msgTypes, + }.Build() + File_google_cloud_retail_v2beta_model_service_proto = out.File + file_google_cloud_retail_v2beta_model_service_proto_rawDesc = nil + file_google_cloud_retail_v2beta_model_service_proto_goTypes = nil + file_google_cloud_retail_v2beta_model_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 + +// ModelServiceClient is the client API for ModelService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ModelServiceClient interface { + // Creates a new model. + CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) + // Pauses the training of an existing model. + PauseModel(ctx context.Context, in *PauseModelRequest, opts ...grpc.CallOption) (*Model, error) + // Resumes the training of an existing model. + ResumeModel(ctx context.Context, in *ResumeModelRequest, opts ...grpc.CallOption) (*Model, error) + // Deletes an existing model. + DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Lists all the models linked to this event store. + ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) + // Update of model metadata. Only fields that + // currently can be updated are: `filtering_option` and + // `periodic_tuning_state`. + // If other values are provided, this API method ignores them. + UpdateModel(ctx context.Context, in *UpdateModelRequest, opts ...grpc.CallOption) (*Model, error) + // Tunes an existing model. + TuneModel(ctx context.Context, in *TuneModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) +} + +type modelServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewModelServiceClient(cc grpc.ClientConnInterface) ModelServiceClient { + return &modelServiceClient{cc} +} + +func (c *modelServiceClient) CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { + out := new(longrunning.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.ModelService/CreateModel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *modelServiceClient) PauseModel(ctx context.Context, in *PauseModelRequest, opts ...grpc.CallOption) (*Model, error) { + out := new(Model) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.ModelService/PauseModel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *modelServiceClient) ResumeModel(ctx context.Context, in *ResumeModelRequest, opts ...grpc.CallOption) (*Model, error) { + out := new(Model) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.ModelService/ResumeModel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *modelServiceClient) DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.ModelService/DeleteModel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *modelServiceClient) ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) { + out := new(ListModelsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.ModelService/ListModels", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *modelServiceClient) UpdateModel(ctx context.Context, in *UpdateModelRequest, opts ...grpc.CallOption) (*Model, error) { + out := new(Model) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.ModelService/UpdateModel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *modelServiceClient) TuneModel(ctx context.Context, in *TuneModelRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { + out := new(longrunning.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.ModelService/TuneModel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ModelServiceServer is the server API for ModelService service. +type ModelServiceServer interface { + // Creates a new model. + CreateModel(context.Context, *CreateModelRequest) (*longrunning.Operation, error) + // Pauses the training of an existing model. + PauseModel(context.Context, *PauseModelRequest) (*Model, error) + // Resumes the training of an existing model. + ResumeModel(context.Context, *ResumeModelRequest) (*Model, error) + // Deletes an existing model. + DeleteModel(context.Context, *DeleteModelRequest) (*emptypb.Empty, error) + // Lists all the models linked to this event store. + ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error) + // Update of model metadata. Only fields that + // currently can be updated are: `filtering_option` and + // `periodic_tuning_state`. + // If other values are provided, this API method ignores them. + UpdateModel(context.Context, *UpdateModelRequest) (*Model, error) + // Tunes an existing model. + TuneModel(context.Context, *TuneModelRequest) (*longrunning.Operation, error) +} + +// UnimplementedModelServiceServer can be embedded to have forward compatible implementations. +type UnimplementedModelServiceServer struct { +} + +func (*UnimplementedModelServiceServer) CreateModel(context.Context, *CreateModelRequest) (*longrunning.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateModel not implemented") +} +func (*UnimplementedModelServiceServer) PauseModel(context.Context, *PauseModelRequest) (*Model, error) { + return nil, status.Errorf(codes.Unimplemented, "method PauseModel not implemented") +} +func (*UnimplementedModelServiceServer) ResumeModel(context.Context, *ResumeModelRequest) (*Model, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResumeModel not implemented") +} +func (*UnimplementedModelServiceServer) DeleteModel(context.Context, *DeleteModelRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteModel not implemented") +} +func (*UnimplementedModelServiceServer) ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListModels not implemented") +} +func (*UnimplementedModelServiceServer) UpdateModel(context.Context, *UpdateModelRequest) (*Model, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateModel not implemented") +} +func (*UnimplementedModelServiceServer) TuneModel(context.Context, *TuneModelRequest) (*longrunning.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method TuneModel not implemented") +} + +func RegisterModelServiceServer(s *grpc.Server, srv ModelServiceServer) { + s.RegisterService(&_ModelService_serviceDesc, srv) +} + +func _ModelService_CreateModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ModelServiceServer).CreateModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.ModelService/CreateModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ModelServiceServer).CreateModel(ctx, req.(*CreateModelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ModelService_PauseModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PauseModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ModelServiceServer).PauseModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.ModelService/PauseModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ModelServiceServer).PauseModel(ctx, req.(*PauseModelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ModelService_ResumeModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ResumeModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ModelServiceServer).ResumeModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.ModelService/ResumeModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ModelServiceServer).ResumeModel(ctx, req.(*ResumeModelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ModelService_DeleteModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ModelServiceServer).DeleteModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.ModelService/DeleteModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ModelServiceServer).DeleteModel(ctx, req.(*DeleteModelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ModelService_ListModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListModelsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ModelServiceServer).ListModels(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.ModelService/ListModels", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ModelServiceServer).ListModels(ctx, req.(*ListModelsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ModelService_UpdateModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ModelServiceServer).UpdateModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.ModelService/UpdateModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ModelServiceServer).UpdateModel(ctx, req.(*UpdateModelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ModelService_TuneModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TuneModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ModelServiceServer).TuneModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.retail.v2beta.ModelService/TuneModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ModelServiceServer).TuneModel(ctx, req.(*TuneModelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ModelService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.retail.v2beta.ModelService", + HandlerType: (*ModelServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateModel", + Handler: _ModelService_CreateModel_Handler, + }, + { + MethodName: "PauseModel", + Handler: _ModelService_PauseModel_Handler, + }, + { + MethodName: "ResumeModel", + Handler: _ModelService_ResumeModel_Handler, + }, + { + MethodName: "DeleteModel", + Handler: _ModelService_DeleteModel_Handler, + }, + { + MethodName: "ListModels", + Handler: _ModelService_ListModels_Handler, + }, + { + MethodName: "UpdateModel", + Handler: _ModelService_UpdateModel_Handler, + }, + { + MethodName: "TuneModel", + Handler: _ModelService_TuneModel_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/retail/v2beta/model_service.proto", +} diff --git a/googleapis/cloud/retail/v2beta/prediction_service.pb.go b/googleapis/cloud/retail/v2beta/prediction_service.pb.go index de055e7f1..d6aecc4fd 100644 --- a/googleapis/cloud/retail/v2beta/prediction_service.pb.go +++ b/googleapis/cloud/retail/v2beta/prediction_service.pb.go @@ -77,12 +77,14 @@ type PredictRequest struct { // a random unique ID and leave // [UserInfo.user_id][google.cloud.retail.v2beta.UserInfo.user_id] unset. UserEvent *UserEvent `protobuf:"bytes,2,opt,name=user_event,json=userEvent,proto3" json:"user_event,omitempty"` - // Maximum number of results to return per page. Set this property - // to the number of prediction results needed. If zero, the service will - // choose a reasonable default. The maximum allowed value is 100. Values - // above 100 will be coerced to 100. + // Maximum number of results to return. Set this property to the number of + // prediction results needed. If zero, the service will choose a reasonable + // default. The maximum allowed value is 100. Values above 100 will be coerced + // to 100. PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // This field is not used for now; leave it unset. + // This field is not used; leave it unset. + // + // Deprecated: Do not use. PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Filter for restricting prediction results with a length limit of 5,000 // characters. Accepts values for tags and the `filterOutOfStockItems` flag. @@ -228,6 +230,7 @@ func (x *PredictRequest) GetPageSize() int32 { return 0 } +// Deprecated: Do not use. func (x *PredictRequest) GetPageToken() string { if x != nil { return x.PageToken @@ -421,112 +424,114 @@ var file_google_cloud_retail_v2beta_prediction_service_proto_rawDesc = []byte{ 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, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, - 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x04, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0a, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 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, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x4e, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x51, - 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, - 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 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, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbe, 0x03, 0x0a, - 0x0f, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x56, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 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, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xa9, 0x04, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x21, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x4e, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x51, 0x0a, + 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x2c, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 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, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbe, 0x03, 0x0a, 0x0f, + 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x56, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x1a, 0xdf, 0x01, 0x0a, 0x10, 0x50, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x66, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x1a, 0xdf, 0x01, 0x0a, 0x10, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x66, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x53, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 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, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xf1, 0x02, - 0x0a, 0x11, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x90, 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, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 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, 0x72, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xab, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0xa4, 0x01, 0x22, 0x4a, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, 0x61, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x53, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 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, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xf1, 0x02, 0x0a, + 0x11, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x90, 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, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 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, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xab, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa4, + 0x01, 0x22, 0x4a, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 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, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x3a, 0x01, 0x2a, + 0x5a, 0x53, 0x22, 0x4e, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 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, 0x63, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x3a, 0x01, - 0x2a, 0x5a, 0x53, 0x22, 0x4e, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 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, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, - 0x6c, 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, 0xdf, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 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, 0x40, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, - 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 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, 0xdf, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 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, 0x40, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, + 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, + 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, + 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, + 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/googleapis/cloud/retail/v2beta/product.pb.go b/googleapis/cloud/retail/v2beta/product.pb.go index bb871bd8f..1847d8095 100644 --- a/googleapis/cloud/retail/v2beta/product.pb.go +++ b/googleapis/cloud/retail/v2beta/product.pb.go @@ -189,6 +189,7 @@ type Product struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Expiration: + // // *Product_ExpireTime // *Product_Ttl Expiration isProduct_Expiration `protobuf_oneof:"expiration"` @@ -240,7 +241,7 @@ type Product struct { // The [type][google.cloud.retail.v2beta.Product.type] of the members must be // either [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] or // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] otherwise - // and INVALID_ARGUMENT error is thrown. Should not set it for other types. A + // an INVALID_ARGUMENT error is thrown. Should not set it for other types. A // maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is // return. CollectionMemberIds []string `protobuf:"bytes,5,rep,name=collection_member_ids,json=collectionMemberIds,proto3" json:"collection_member_ids,omitempty"` @@ -267,9 +268,8 @@ type Product struct { // belonging to several parallel categories. Strongly recommended using the // full path for better search / recommendation quality. // - // // To represent full path of category, use '>' sign to separate different - // hierarchies. If '>' is part of the category name, please replace it with + // hierarchies. If '>' is part of the category name, replace it with // other character(s). // // For example, if a shoes product belongs to both @@ -277,10 +277,10 @@ type Product struct { // ["Sports & Fitness" -> "Athletic Clothing" -> "Shoes"], it could be // represented as: // - // "categories": [ - // "Shoes & Accessories > Shoes", - // "Sports & Fitness > Athletic Clothing > Shoes" - // ] + // "categories": [ + // "Shoes & Accessories > Shoes", + // "Sports & Fitness > Athletic Clothing > Shoes" + // ] // // Must be set for // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] @@ -358,16 +358,16 @@ type Product struct { // This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT // error is returned: // - // * Max entries count: 200. - // * The key must be a UTF-8 encoded string with a length limit of 128 - // characters. - // * For indexable attribute, the key must match the pattern: - // `[a-zA-Z0-9][a-zA-Z0-9_]*`. For example, `key0LikeThis` or - // `KEY_1_LIKE_THIS`. - // * For text attributes, at most 400 values are allowed. Empty values are not - // allowed. Each value must be a non-empty UTF-8 encoded string with a - // length limit of 256 characters. - // * For number attributes, at most 400 values are allowed. + // - Max entries count: 200. + // - The key must be a UTF-8 encoded string with a length limit of 128 + // characters. + // - For indexable attribute, the key must match the pattern: + // `[a-zA-Z0-9][a-zA-Z0-9_]*`. For example, `key0LikeThis` or + // `KEY_1_LIKE_THIS`. + // - For text attributes, at most 400 values are allowed. Empty values are not + // allowed. Each value must be a non-empty UTF-8 encoded string with a + // length limit of 256 characters. + // - For number attributes, at most 400 values are allowed. Attributes map[string]*CustomAttribute `protobuf:"bytes,12,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Custom tags associated with the product. // @@ -578,6 +578,15 @@ type Product struct { // [ProductService.GetProduct][google.cloud.retail.v2beta.ProductService.GetProduct]. // Do not set this field in API requests. Variants []*Product `protobuf:"bytes,31,rep,name=variants,proto3" json:"variants,omitempty"` + // Output only. A list of local inventories specific to different places. + // + // This is only available for users who have Retail Search enabled, and it can + // be managed by + // [ProductService.AddLocalInventories][google.cloud.retail.v2beta.ProductService.AddLocalInventories] + // and + // [ProductService.RemoveLocalInventories][google.cloud.retail.v2beta.ProductService.RemoveLocalInventories] + // APIs. + LocalInventories []*LocalInventory `protobuf:"bytes,35,rep,name=local_inventories,json=localInventories,proto3" json:"local_inventories,omitempty"` } func (x *Product) Reset() { @@ -850,6 +859,13 @@ func (x *Product) GetVariants() []*Product { return nil } +func (x *Product) GetLocalInventories() []*LocalInventory { + if x != nil { + return x.LocalInventories + } + return nil +} + type isProduct_Expiration interface { isProduct_Expiration() } @@ -928,7 +944,7 @@ var file_google_cloud_retail_v2beta_product_proto_rawDesc = []byte{ 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, - 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb5, 0x10, 0x0a, 0x07, 0x50, + 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x93, 0x11, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 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, @@ -1032,56 +1048,61 @@ var file_google_cloud_retail_v2beta_product_proto_rawDesc = []byte{ 0x61, 0x6e, 0x74, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x1a, 0x6a, - 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x4d, - 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, - 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x03, 0x22, 0x69, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x49, 0x4c, 0x49, - 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x10, - 0x0a, 0x0c, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x54, 0x4f, 0x43, 0x4b, 0x10, 0x02, - 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x45, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x42, 0x41, 0x43, 0x4b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x04, 0x3a, 0x84, 0x01, - 0xea, 0x41, 0x80, 0x01, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x12, 0x5f, 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, 0x63, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x7d, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0xc4, 0x02, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, - 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, - 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, - 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x41, 0x6c, 0x0a, 0x1c, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x4c, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x5c, + 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x65, + 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x6a, 0x0a, 0x0f, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, + 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x02, + 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, + 0x22, 0x69, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, + 0x0a, 0x08, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, + 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x54, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x0c, + 0x0a, 0x08, 0x50, 0x52, 0x45, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x42, 0x41, 0x43, 0x4b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x04, 0x3a, 0x84, 0x01, 0xea, 0x41, + 0x80, 0x01, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x12, 0x5f, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x62, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x7d, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0xc4, 0x02, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, + 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, + 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x41, 0x6c, 0x0a, 0x1c, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x4c, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1114,7 +1135,8 @@ var file_google_cloud_retail_v2beta_product_proto_goTypes = []interface{}{ (*ColorInfo)(nil), // 12: google.cloud.retail.v2beta.ColorInfo (*Promotion)(nil), // 13: google.cloud.retail.v2beta.Promotion (*fieldmaskpb.FieldMask)(nil), // 14: google.protobuf.FieldMask - (*CustomAttribute)(nil), // 15: google.cloud.retail.v2beta.CustomAttribute + (*LocalInventory)(nil), // 15: google.cloud.retail.v2beta.LocalInventory + (*CustomAttribute)(nil), // 16: google.cloud.retail.v2beta.CustomAttribute } var file_google_cloud_retail_v2beta_product_proto_depIdxs = []int32{ 4, // 0: google.cloud.retail.v2beta.Product.expire_time:type_name -> google.protobuf.Timestamp @@ -1134,12 +1156,13 @@ var file_google_cloud_retail_v2beta_product_proto_depIdxs = []int32{ 4, // 14: google.cloud.retail.v2beta.Product.publish_time:type_name -> google.protobuf.Timestamp 14, // 15: google.cloud.retail.v2beta.Product.retrievable_fields:type_name -> google.protobuf.FieldMask 2, // 16: google.cloud.retail.v2beta.Product.variants:type_name -> google.cloud.retail.v2beta.Product - 15, // 17: google.cloud.retail.v2beta.Product.AttributesEntry.value:type_name -> google.cloud.retail.v2beta.CustomAttribute - 18, // [18:18] is the sub-list for method output_type - 18, // [18:18] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name + 15, // 17: google.cloud.retail.v2beta.Product.local_inventories:type_name -> google.cloud.retail.v2beta.LocalInventory + 16, // 18: google.cloud.retail.v2beta.Product.AttributesEntry.value:type_name -> google.cloud.retail.v2beta.CustomAttribute + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_google_cloud_retail_v2beta_product_proto_init() } diff --git a/googleapis/cloud/retail/v2beta/product_service.pb.go b/googleapis/cloud/retail/v2beta/product_service.pb.go index e1a16383b..54f93341a 100644 --- a/googleapis/cloud/retail/v2beta/product_service.pb.go +++ b/googleapis/cloud/retail/v2beta/product_service.pb.go @@ -393,19 +393,24 @@ type ListProductsRequest struct { // * List // [Product.Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] // [Product][google.cloud.retail.v2beta.Product]s sharing the same - // [Product.Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] - // [Product][google.cloud.retail.v2beta.Product]. For example: - // `primary_product_id = "some_product_id"` + // + // [Product.Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] + // [Product][google.cloud.retail.v2beta.Product]. For example: + // `primary_product_id = "some_product_id"` + // // * List [Product][google.cloud.retail.v2beta.Product]s bundled in a // [Product.Type.COLLECTION][google.cloud.retail.v2beta.Product.Type.COLLECTION] // [Product][google.cloud.retail.v2beta.Product]. - // For example: - // `collection_product_id = "some_product_id"` + // + // For example: + // `collection_product_id = "some_product_id"` + // // * List [Product][google.cloud.retail.v2beta.Product]s with a partibular // type. For example: - // `type = "PRIMARY"` - // `type = "VARIANT"` - // `type = "COLLECTION"` + // + // `type = "PRIMARY"` + // `type = "VARIANT"` + // `type = "COLLECTION"` // // If the field is unrecognizable, an INVALID_ARGUMENT error is returned. // @@ -2415,9 +2420,9 @@ type ProductServiceClient interface { // // This process is asynchronous and does not require the // [Product][google.cloud.retail.v2beta.Product] to exist before updating - // fulfillment information. If the request is valid, the update will be - // enqueued and processed downstream. As a consequence, when a response is - // returned, updates are not immediately manifested in the + // fulfillment information. If the request is valid, the update is enqueued + // and processed downstream. As a consequence, when a response is returned, + // updates are not immediately manifested in the // [Product][google.cloud.retail.v2beta.Product] queried by // [ProductService.GetProduct][google.cloud.retail.v2beta.ProductService.GetProduct] // or @@ -2427,10 +2432,10 @@ type ProductServiceClient interface { // [ProductService.CreateProduct][google.cloud.retail.v2beta.ProductService.CreateProduct] // and // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct], - // the specified inventory field value(s) will overwrite any existing value(s) + // the specified inventory field value(s) overwrite any existing value(s) // while ignoring the last update time for this field. Furthermore, the last - // update time for the specified inventory fields will be overwritten to the - // time of the + // update times for the specified inventory fields are overwritten by the + // times of the // [ProductService.CreateProduct][google.cloud.retail.v2beta.ProductService.CreateProduct] // or // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct] @@ -2438,11 +2443,11 @@ type ProductServiceClient interface { // // If no inventory fields are set in // [CreateProductRequest.product][google.cloud.retail.v2beta.CreateProductRequest.product], - // then any pre-existing inventory information for this product will be used. + // then any pre-existing inventory information for this product is used. // // If no inventory fields are set in // [SetInventoryRequest.set_mask][google.cloud.retail.v2beta.SetInventoryRequest.set_mask], - // then any existing inventory information will be preserved. + // then any existing inventory information is preserved. // // Pre-existing inventory information can only be updated with // [ProductService.SetInventory][google.cloud.retail.v2beta.ProductService.SetInventory], @@ -2450,8 +2455,17 @@ type ProductServiceClient interface { // and // [ProductService.RemoveFulfillmentPlaces][google.cloud.retail.v2beta.ProductService.RemoveFulfillmentPlaces]. // + // The returned [Operation][google.longrunning.Operation]s is obsolete after + // one day, and the [GetOperation][google.longrunning.Operations.GetOperation] + // API returns `NOT_FOUND` afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates are not marked as [done][google.longrunning.Operation.done] until + // they are obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. SetInventory(ctx context.Context, in *SetInventoryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // Incrementally adds place IDs to // [Product.fulfillment_info.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids]. @@ -2466,8 +2480,17 @@ type ProductServiceClient interface { // or // [ProductService.ListProducts][google.cloud.retail.v2beta.ProductService.ListProducts]. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. AddFulfillmentPlaces(ctx context.Context, in *AddFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // Incrementally removes place IDs from a // [Product.fulfillment_info.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids]. @@ -2482,8 +2505,17 @@ type ProductServiceClient interface { // or // [ProductService.ListProducts][google.cloud.retail.v2beta.ProductService.ListProducts]. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. RemoveFulfillmentPlaces(ctx context.Context, in *RemoveFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // Updates local inventory information for a // [Product][google.cloud.retail.v2beta.Product] at a list of places, while @@ -2505,8 +2537,17 @@ type ProductServiceClient interface { // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct] // has no effect on local inventories. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. AddLocalInventories(ctx context.Context, in *AddLocalInventoriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // Remove local inventory information for a // [Product][google.cloud.retail.v2beta.Product] at a list of places at a @@ -2526,8 +2567,17 @@ type ProductServiceClient interface { // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct] // has no effect on local inventories. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. RemoveLocalInventories(ctx context.Context, in *RemoveLocalInventoriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) } @@ -2664,9 +2714,9 @@ type ProductServiceServer interface { // // This process is asynchronous and does not require the // [Product][google.cloud.retail.v2beta.Product] to exist before updating - // fulfillment information. If the request is valid, the update will be - // enqueued and processed downstream. As a consequence, when a response is - // returned, updates are not immediately manifested in the + // fulfillment information. If the request is valid, the update is enqueued + // and processed downstream. As a consequence, when a response is returned, + // updates are not immediately manifested in the // [Product][google.cloud.retail.v2beta.Product] queried by // [ProductService.GetProduct][google.cloud.retail.v2beta.ProductService.GetProduct] // or @@ -2676,10 +2726,10 @@ type ProductServiceServer interface { // [ProductService.CreateProduct][google.cloud.retail.v2beta.ProductService.CreateProduct] // and // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct], - // the specified inventory field value(s) will overwrite any existing value(s) + // the specified inventory field value(s) overwrite any existing value(s) // while ignoring the last update time for this field. Furthermore, the last - // update time for the specified inventory fields will be overwritten to the - // time of the + // update times for the specified inventory fields are overwritten by the + // times of the // [ProductService.CreateProduct][google.cloud.retail.v2beta.ProductService.CreateProduct] // or // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct] @@ -2687,11 +2737,11 @@ type ProductServiceServer interface { // // If no inventory fields are set in // [CreateProductRequest.product][google.cloud.retail.v2beta.CreateProductRequest.product], - // then any pre-existing inventory information for this product will be used. + // then any pre-existing inventory information for this product is used. // // If no inventory fields are set in // [SetInventoryRequest.set_mask][google.cloud.retail.v2beta.SetInventoryRequest.set_mask], - // then any existing inventory information will be preserved. + // then any existing inventory information is preserved. // // Pre-existing inventory information can only be updated with // [ProductService.SetInventory][google.cloud.retail.v2beta.ProductService.SetInventory], @@ -2699,8 +2749,17 @@ type ProductServiceServer interface { // and // [ProductService.RemoveFulfillmentPlaces][google.cloud.retail.v2beta.ProductService.RemoveFulfillmentPlaces]. // + // The returned [Operation][google.longrunning.Operation]s is obsolete after + // one day, and the [GetOperation][google.longrunning.Operations.GetOperation] + // API returns `NOT_FOUND` afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates are not marked as [done][google.longrunning.Operation.done] until + // they are obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. SetInventory(context.Context, *SetInventoryRequest) (*longrunning.Operation, error) // Incrementally adds place IDs to // [Product.fulfillment_info.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids]. @@ -2715,8 +2774,17 @@ type ProductServiceServer interface { // or // [ProductService.ListProducts][google.cloud.retail.v2beta.ProductService.ListProducts]. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. AddFulfillmentPlaces(context.Context, *AddFulfillmentPlacesRequest) (*longrunning.Operation, error) // Incrementally removes place IDs from a // [Product.fulfillment_info.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids]. @@ -2731,8 +2799,17 @@ type ProductServiceServer interface { // or // [ProductService.ListProducts][google.cloud.retail.v2beta.ProductService.ListProducts]. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. RemoveFulfillmentPlaces(context.Context, *RemoveFulfillmentPlacesRequest) (*longrunning.Operation, error) // Updates local inventory information for a // [Product][google.cloud.retail.v2beta.Product] at a list of places, while @@ -2754,8 +2831,17 @@ type ProductServiceServer interface { // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct] // has no effect on local inventories. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. AddLocalInventories(context.Context, *AddLocalInventoriesRequest) (*longrunning.Operation, error) // Remove local inventory information for a // [Product][google.cloud.retail.v2beta.Product] at a list of places at a @@ -2775,8 +2861,17 @@ type ProductServiceServer interface { // [ProductService.UpdateProduct][google.cloud.retail.v2beta.ProductService.UpdateProduct] // has no effect on local inventories. // + // The returned [Operation][google.longrunning.Operation]s will be obsolete + // after 1 day, and [GetOperation][google.longrunning.Operations.GetOperation] + // API will return NOT_FOUND afterwards. + // + // If conflicting updates are issued, the + // [Operation][google.longrunning.Operation]s associated with the stale + // updates will not be marked as [done][google.longrunning.Operation.done] + // until being obsolete. + // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. RemoveLocalInventories(context.Context, *RemoveLocalInventoriesRequest) (*longrunning.Operation, error) } diff --git a/googleapis/cloud/retail/v2beta/search_service.pb.go b/googleapis/cloud/retail/v2beta/search_service.pb.go index 43407b133..4a1ff60c2 100644 --- a/googleapis/cloud/retail/v2beta/search_service.pb.go +++ b/googleapis/cloud/retail/v2beta/search_service.pb.go @@ -47,14 +47,20 @@ type SearchRequest_SearchMode int32 const ( // Default value. In this case both product search and faceted search will - // be performed. Both [SearchResponse.SearchResult] and - // [SearchResponse.Facet] will be returned. + // be performed. Both + // [SearchResponse.SearchResult][google.cloud.retail.v2beta.SearchResponse.SearchResult] + // and + // [SearchResponse.Facet][google.cloud.retail.v2beta.SearchResponse.Facet] + // will be returned. SearchRequest_SEARCH_MODE_UNSPECIFIED SearchRequest_SearchMode = 0 // Only product search will be performed. The faceted search will be // disabled. // - // Only [SearchResponse.SearchResult] will be returned. - // [SearchResponse.Facet] will not be returned, even if + // Only + // [SearchResponse.SearchResult][google.cloud.retail.v2beta.SearchResponse.SearchResult] + // will be returned. + // [SearchResponse.Facet][google.cloud.retail.v2beta.SearchResponse.Facet] + // will not be returned, even if // [SearchRequest.facet_specs][google.cloud.retail.v2beta.SearchRequest.facet_specs] // or // [SearchRequest.dynamic_facet_spec][google.cloud.retail.v2beta.SearchRequest.dynamic_facet_spec] @@ -68,7 +74,9 @@ const ( // and // [SearchRequest.dynamic_facet_spec][google.cloud.retail.v2beta.SearchRequest.dynamic_facet_spec] // should be set. Otherwise, an INVALID_ARGUMENT error is returned. Only - // [SearchResponse.Facet] will be returned. [SearchResponse.SearchResult] + // [SearchResponse.Facet][google.cloud.retail.v2beta.SearchResponse.Facet] + // will be returned. + // [SearchResponse.SearchResult][google.cloud.retail.v2beta.SearchResponse.SearchResult] // will not be returned. SearchRequest_FACETED_SEARCH_ONLY SearchRequest_SearchMode = 2 ) @@ -171,7 +179,8 @@ func (SearchRequest_DynamicFacetSpec_Mode) EnumDescriptor() ([]byte, []int) { type SearchRequest_QueryExpansionSpec_Condition int32 const ( - // Unspecified query expansion condition. This defaults to + // Unspecified query expansion condition. In this case, server behavior + // defaults to // [Condition.DISABLED][google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition.DISABLED]. SearchRequest_QueryExpansionSpec_CONDITION_UNSPECIFIED SearchRequest_QueryExpansionSpec_Condition = 0 // Disabled query expansion. Only the exact search query is used, even if @@ -230,7 +239,8 @@ const ( // Default value. In this case, server behavior defaults to // [Mode.AUTO][google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode.AUTO]. SearchRequest_PersonalizationSpec_MODE_UNSPECIFIED SearchRequest_PersonalizationSpec_Mode = 0 - // Let CRS decide whether to use personalization. + // Let CRS decide whether to use personalization based on quality of user + // event data. SearchRequest_PersonalizationSpec_AUTO SearchRequest_PersonalizationSpec_Mode = 1 // Disable personalization. SearchRequest_PersonalizationSpec_DISABLED SearchRequest_PersonalizationSpec_Mode = 2 @@ -477,54 +487,72 @@ type SearchRequest struct { // // Supported keys are: // - // * colorFamilies - // * price - // * originalPrice - // * discount - // * variantId - // * inventory(place_id,price) - // * inventory(place_id,original_price) - // * inventory(place_id,attributes.key), where key is any key in the - // [Product.local_inventories.attributes][google.cloud.retail.v2beta.LocalInventory.attributes] - // map. - // * attributes.key, where key is any key in the - // [Product.attributes][google.cloud.retail.v2beta.Product.attributes] map. - // * pickupInStore.id, where id is any + // - colorFamilies + // - price + // - originalPrice + // - discount + // - variantId + // - inventory(place_id,price) + // - inventory(place_id,original_price) + // - inventory(place_id,attributes.key), where key is any key in the + // [Product.local_inventories.attributes][google.cloud.retail.v2beta.LocalInventory.attributes] + // map. + // - attributes.key, where key is any key in the + // [Product.attributes][google.cloud.retail.v2beta.Product.attributes] map. + // - pickupInStore.id, where id is any + // // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "pickup-in-store". + // + // "pickup-in-store". + // // * shipToStore.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "ship-to-store". + // + // "ship-to-store". + // // * sameDayDelivery.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "same-day-delivery". + // + // "same-day-delivery". + // // * nextDayDelivery.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "next-day-delivery". + // + // "next-day-delivery". + // // * customFulfillment1.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "custom-type-1". + // + // "custom-type-1". + // // * customFulfillment2.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "custom-type-2". + // + // "custom-type-2". + // // * customFulfillment3.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "custom-type-3". + // + // "custom-type-3". + // // * customFulfillment4.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "custom-type-4". + // + // "custom-type-4". + // // * customFulfillment5.id, where id is any // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] - // "custom-type-5". + // + // "custom-type-5". // // If this field is set to an invalid value other than these, an // INVALID_ARGUMENT error is returned. @@ -535,7 +563,7 @@ type SearchRequest struct { // [UserEvent.page_categories][google.cloud.retail.v2beta.UserEvent.page_categories]; // // To represent full path of category, use '>' sign to separate different - // hierarchies. If '>' is part of the category name, please replace it with + // hierarchies. If '>' is part of the category name, replace it with // other character(s). // // Category pages include special pages such as sales or promotions. For @@ -546,20 +574,29 @@ type SearchRequest struct { // request triggers both product search and faceted search. SearchMode SearchRequest_SearchMode `protobuf:"varint,31,opt,name=search_mode,json=searchMode,proto3,enum=google.cloud.retail.v2beta.SearchRequest_SearchMode" json:"search_mode,omitempty"` // The specification for personalization. + // + // Notice that if both + // [ServingConfig.personalization_spec][google.cloud.retail.v2beta.ServingConfig.personalization_spec] + // and + // [SearchRequest.personalization_spec][google.cloud.retail.v2beta.SearchRequest.personalization_spec] + // are set. + // [SearchRequest.personalization_spec][google.cloud.retail.v2beta.SearchRequest.personalization_spec] + // will override + // [ServingConfig.personalization_spec][google.cloud.retail.v2beta.ServingConfig.personalization_spec]. PersonalizationSpec *SearchRequest_PersonalizationSpec `protobuf:"bytes,32,opt,name=personalization_spec,json=personalizationSpec,proto3" json:"personalization_spec,omitempty"` // The labels applied to a resource must meet the following requirements: // - // * Each resource can have multiple labels, up to a maximum of 64. - // * Each label must be a key-value pair. - // * Keys have a minimum length of 1 character and a maximum length of 63 - // characters and cannot be empty. Values can be empty and have a maximum - // length of 63 characters. - // * Keys and values can contain only lowercase letters, numeric characters, - // underscores, and dashes. All characters must use UTF-8 encoding, and - // international characters are allowed. - // * The key portion of a label must be unique. However, you can use the same - // key with multiple resources. - // * Keys must start with a lowercase letter or international character. + // - Each resource can have multiple labels, up to a maximum of 64. + // - Each label must be a key-value pair. + // - Keys have a minimum length of 1 character and a maximum length of 63 + // characters and cannot be empty. Values can be empty and have a maximum + // length of 63 characters. + // - Keys and values can contain only lowercase letters, numeric characters, + // underscores, and dashes. All characters must use UTF-8 encoding, and + // international characters are allowed. + // - The key portion of a label must be unique. However, you can use the same + // key with multiple resources. + // - Keys must start with a lowercase letter or international character. // // See [Google Cloud // Document](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements) @@ -916,7 +953,6 @@ type SearchRequest_FacetSpec struct { Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // List of keys to exclude when faceting. // - // // By default, // [FacetKey.key][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.key] // is not excluded from the filter unless it is listed in this field. @@ -1330,38 +1366,38 @@ type SearchRequest_FacetSpec_FacetKey struct { // is not specified: // // * textual_field = - // * "brands" - // * "categories" - // * "genders" - // * "ageGroups" - // * "availability" - // * "colorFamilies" - // * "colors" - // * "sizes" - // * "materials" - // * "patterns" - // * "conditions" - // * "attributes.key" - // * "pickupInStore" - // * "shipToStore" - // * "sameDayDelivery" - // * "nextDayDelivery" - // * "customFulfillment1" - // * "customFulfillment2" - // * "customFulfillment3" - // * "customFulfillment4" - // * "customFulfillment5" - // * "inventory(place_id,attributes.key)" + // - "brands" + // - "categories" + // - "genders" + // - "ageGroups" + // - "availability" + // - "colorFamilies" + // - "colors" + // - "sizes" + // - "materials" + // - "patterns" + // - "conditions" + // - "attributes.key" + // - "pickupInStore" + // - "shipToStore" + // - "sameDayDelivery" + // - "nextDayDelivery" + // - "customFulfillment1" + // - "customFulfillment2" + // - "customFulfillment3" + // - "customFulfillment4" + // - "customFulfillment5" + // - "inventory(place_id,attributes.key)" // // * numerical_field = - // * "price" - // * "discount" - // * "rating" - // * "ratingCount" - // * "attributes.key" - // * "inventory(place_id,price)" - // * "inventory(place_id,original_price)" - // * "inventory(place_id,attributes.key)" + // - "price" + // - "discount" + // - "rating" + // - "ratingCount" + // - "attributes.key" + // - "inventory(place_id,price)" + // - "inventory(place_id,original_price)" + // - "inventory(place_id,attributes.key)" Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Set only if values should be bucketized into intervals. Must be set // for facets with numerical values. Must not be set for facet with text @@ -1421,7 +1457,8 @@ type SearchRequest_FacetSpec_FacetKey struct { // * "value desc", which means order by // [SearchResponse.Facet.values.value][google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.value] // descending. - // Only applies to textual facets. + // + // Only applies to textual facets. // // If not set, textual values are sorted in [natural // order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical @@ -1570,9 +1607,10 @@ type SearchRequest_BoostSpec_ConditionBoostSpec struct { // // * To boost products with product ID "product_1" or "product_2", and // color - // "Red" or "Blue": - // * (id: ANY("product_1", "product_2")) AND (colorFamilies: - // ANY("Red","Blue")) + // + // "Red" or "Blue": + // * (id: ANY("product_1", "product_2")) AND (colorFamilies: + // ANY("Red","Blue")) Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` // Strength of the condition boost, which should be in [-1, 1]. Negative // boost means demotion. Default is 0.0. @@ -1698,14 +1736,14 @@ type SearchResponse_SearchResult struct { // there are two variants with colors "red" and "blue", the rollup values // are // - // { key: "colorFamilies" - // value { - // list_value { - // values { string_value: "red" } - // values { string_value: "blue" } - // } - // } - // } + // { key: "colorFamilies" + // value { + // list_value { + // values { string_value: "red" } + // values { string_value: "blue" } + // } + // } + // } // // For [FulfillmentInfo][google.cloud.retail.v2beta.FulfillmentInfo], the // rollup values is a double value with type @@ -1713,6 +1751,20 @@ type SearchResponse_SearchResult struct { // `{key: "pickupInStore.store1" value { number_value: 10 }}` means a there // are 10 variants in this product are available in the store "store1". VariantRollupValues map[string]*structpb.Value `protobuf:"bytes,5,rep,name=variant_rollup_values,json=variantRollupValues,proto3" json:"variant_rollup_values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Specifies previous events related to this product for this user based on + // [UserEvent][google.cloud.retail.v2beta.UserEvent] with same + // [SearchRequest.visitor_id][google.cloud.retail.v2beta.SearchRequest.visitor_id] + // or [UserInfo.user_id][google.cloud.retail.v2beta.UserInfo.user_id]. + // + // This is set only when + // [SearchRequest.PersonalizationSpec.mode][google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.mode] + // is + // [SearchRequest.PersonalizationSpec.Mode.AUTO][google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode.AUTO]. + // + // Possible values: + // + // * `purchased`: Indicates that this product has been purchased before. + PersonalLabels []string `protobuf:"bytes,7,rep,name=personal_labels,json=personalLabels,proto3" json:"personal_labels,omitempty"` } func (x *SearchResponse_SearchResult) Reset() { @@ -1782,6 +1834,13 @@ func (x *SearchResponse_SearchResult) GetVariantRollupValues() map[string]*struc return nil } +func (x *SearchResponse_SearchResult) GetPersonalLabels() []string { + if x != nil { + return x.PersonalLabels + } + return nil +} + // A facet result. type SearchResponse_Facet struct { state protoimpl.MessageState @@ -1921,6 +1980,7 @@ type SearchResponse_Facet_FacetValue struct { // A facet value which contains values. // // Types that are assignable to FacetValue: + // // *SearchResponse_Facet_FacetValue_Value // *SearchResponse_Facet_FacetValue_Interval FacetValue isSearchResponse_Facet_FacetValue_FacetValue `protobuf_oneof:"facet_value"` @@ -2250,7 +2310,7 @@ var file_google_cloud_retail_v2beta_search_service_proto_rawDesc = []byte{ 0x13, 0x46, 0x41, 0x43, 0x45, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x65, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x22, 0xd2, 0x0d, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x22, 0xfb, 0x0d, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, @@ -2291,7 +2351,7 @@ var file_google_cloud_retail_v2beta_search_service_proto_rawDesc = []byte{ 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x1a, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, - 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x1a, 0xed, 0x04, 0x0a, 0x0c, 0x53, 0x65, 0x61, + 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x1a, 0x96, 0x05, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, @@ -2318,85 +2378,87 @@ var file_google_cloud_retail_v2beta_search_service_proto_rawDesc = []byte{ 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x1a, 0x64, 0x0a, 0x1a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x18, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 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, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 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, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xdd, 0x02, 0x0a, 0x05, 0x46, 0x61, 0x63, - 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x79, 0x6e, - 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, 0x63, 0x65, 0x74, 0x1a, 0xc7, - 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, - 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x66, 0x61, 0x63, - 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x6b, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xe8, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8b, 0x02, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x72, + 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x64, 0x0a, 0x1a, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x6c, 0x64, 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, 0x30, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 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, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x5e, 0x0a, 0x18, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x6c, + 0x75, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 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, + 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 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, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0xdd, 0x02, 0x0a, 0x05, 0x46, 0x61, 0x63, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0xa2, 0x01, 0x22, 0x49, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 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, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, - 0x2a, 0x5a, 0x52, 0x22, 0x4d, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 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, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, - 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, 0xdb, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x2e, + 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x61, + 0x63, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x46, 0x61, 0x63, 0x65, 0x74, 0x1a, 0xc7, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, + 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x69, 0x6e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x1a, 0x6b, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x61, 0x6e, + 0x64, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2e, + 0x0a, 0x13, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x69, 0x6e, + 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xe8, + 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x8b, 0x02, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x29, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x42, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, - 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, - 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, - 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xa9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa2, 0x01, 0x22, 0x49, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, + 0x2f, 0x2a, 0x2f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x22, 0x4d, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, + 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x1a, 0x49, + 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0xdb, 0x01, 0x0a, 0x1e, 0x63, 0x6f, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x12, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, + 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, + 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, + 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2698,7 +2760,7 @@ type SearchServiceClient interface { // Performs a search. // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) } @@ -2724,7 +2786,7 @@ type SearchServiceServer interface { // Performs a search. // // This feature is only available for users who have Retail Search enabled. - // Please enable Retail Search on Cloud Console before using this feature. + // Enable Retail Search on Cloud Console before using this feature. Search(context.Context, *SearchRequest) (*SearchResponse, error) } diff --git a/googleapis/cloud/retail/v2beta/serving_config.pb.go b/googleapis/cloud/retail/v2beta/serving_config.pb.go index 3c0d1afa9..95ad7de4e 100644 --- a/googleapis/cloud/retail/v2beta/serving_config.pb.go +++ b/googleapis/cloud/retail/v2beta/serving_config.pb.go @@ -36,10 +36,62 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// What type of diversity - data or rule based. +// If none is specified, default to rule based. +type ServingConfig_DiversityType int32 + +const ( + // Default value. + ServingConfig_DIVERSITY_TYPE_UNSPECIFIED ServingConfig_DiversityType = 0 + // Rule based diversity. + ServingConfig_RULE_BASED_DIVERSITY ServingConfig_DiversityType = 2 + // Data driven diversity. + ServingConfig_DATA_DRIVEN_DIVERSITY ServingConfig_DiversityType = 3 +) + +// Enum value maps for ServingConfig_DiversityType. +var ( + ServingConfig_DiversityType_name = map[int32]string{ + 0: "DIVERSITY_TYPE_UNSPECIFIED", + 2: "RULE_BASED_DIVERSITY", + 3: "DATA_DRIVEN_DIVERSITY", + } + ServingConfig_DiversityType_value = map[string]int32{ + "DIVERSITY_TYPE_UNSPECIFIED": 0, + "RULE_BASED_DIVERSITY": 2, + "DATA_DRIVEN_DIVERSITY": 3, + } +) + +func (x ServingConfig_DiversityType) Enum() *ServingConfig_DiversityType { + p := new(ServingConfig_DiversityType) + *p = x + return p +} + +func (x ServingConfig_DiversityType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ServingConfig_DiversityType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_retail_v2beta_serving_config_proto_enumTypes[0].Descriptor() +} + +func (ServingConfig_DiversityType) Type() protoreflect.EnumType { + return &file_google_cloud_retail_v2beta_serving_config_proto_enumTypes[0] +} + +func (x ServingConfig_DiversityType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ServingConfig_DiversityType.Descriptor instead. +func (ServingConfig_DiversityType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_retail_v2beta_serving_config_proto_rawDescGZIP(), []int{0, 0} +} + // Configures metadata that is used to generate serving time results (e.g. // search results or recommendation predictions). -// The ServingConfig is passed in the search and predict request and together -// with the Catalog.default_branch, generates results. type ServingConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -54,7 +106,8 @@ type ServingConfig struct { // This field must be a UTF-8 encoded string with a length limit of 128 // characters. Otherwise, an INVALID_ARGUMENT error is returned. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // The id of the model to use at serving time. + // The id of the model in the same + // [Catalog][google.cloud.retail.v2beta.Catalog] to use at serving time. // Currently only RecommendationModels are supported: // https://cloud.google.com/retail/recommendations-ai/docs/create-models // Can be changed but only to a compatible model (e.g. @@ -70,15 +123,16 @@ type ServingConfig struct { // recommendation probability to be ordered by price, with the // highest-priced items first. This setting could result in a decrease in // click-through and conversion rates. - // Allowed values are: // - // * 'no-price-reranking' - // * 'low-price-raranking' - // * 'medium-price-reranking' - // * 'high-price-reranking' + // Allowed values are: + // + // * `no-price-reranking` + // * `low-price-raranking` + // * `medium-price-reranking` + // * `high-price-reranking` // // If not specified, we choose default based on model type. Default value: - // 'no-price-reranking'. + // `no-price-reranking`. // // Can only be set if // [solution_types][google.cloud.retail.v2beta.ServingConfig.solution_types] @@ -196,38 +250,57 @@ type ServingConfig struct { // [SOLUTION_TYPE_SEARCH][google.cloud.retail.v2main.SolutionType.SOLUTION_TYPE_SEARCH]. IgnoreControlIds []string `protobuf:"bytes,15,rep,name=ignore_control_ids,json=ignoreControlIds,proto3" json:"ignore_control_ids,omitempty"` // How much diversity to use in recommendation model results e.g. - // 'medium-diversity' or 'high-diversity'. Currently supported values: + // `medium-diversity` or `high-diversity`. Currently supported values: // - // * 'no-diversity' - // * 'low-diversity' - // * 'medium-diversity' - // * 'high-diversity' - // * 'auto-diversity' + // * `no-diversity` + // * `low-diversity` + // * `medium-diversity` + // * `high-diversity` + // * `auto-diversity` // // If not specified, we choose default based on recommendation model - // type. Default value: 'no-diversity'. + // type. Default value: `no-diversity`. // // Can only be set if // [solution_types][google.cloud.retail.v2beta.ServingConfig.solution_types] // is // [SOLUTION_TYPE_RECOMMENDATION][google.cloud.retail.v2main.SolutionType.SOLUTION_TYPE_RECOMMENDATION]. DiversityLevel string `protobuf:"bytes,8,opt,name=diversity_level,json=diversityLevel,proto3" json:"diversity_level,omitempty"` - // Whether to add additional category filters on the 'similar-items' model. + // What kind of diversity to use - data driven or rule based. + DiversityType ServingConfig_DiversityType `protobuf:"varint,20,opt,name=diversity_type,json=diversityType,proto3,enum=google.cloud.retail.v2beta.ServingConfig_DiversityType" json:"diversity_type,omitempty"` + // Whether to add additional category filters on the `similar-items` model. // If not specified, we enable it by default. - // Allowed values are: // - // * 'no-category-match': No additional filtering of original results from - // the model and the customer's filters. - // * 'relaxed-category-match': Only keep results with categories that match - // at least one item categories in the PredictRequests's context item. - // * If customer also sends filters in the PredictRequest, then the results - // will satisfy both conditions (user given and category match). + // Allowed values are: + // + // - `no-category-match`: No additional filtering of original results from + // the model and the customer's filters. + // - `relaxed-category-match`: Only keep results with categories that match + // at least one item categories in the PredictRequests's context item. + // - If customer also sends filters in the PredictRequest, then the results + // will satisfy both conditions (user given and category match). // // Can only be set if // [solution_types][google.cloud.retail.v2beta.ServingConfig.solution_types] // is // [SOLUTION_TYPE_RECOMMENDATION][google.cloud.retail.v2main.SolutionType.SOLUTION_TYPE_RECOMMENDATION]. EnableCategoryFilterLevel string `protobuf:"bytes,16,opt,name=enable_category_filter_level,json=enableCategoryFilterLevel,proto3" json:"enable_category_filter_level,omitempty"` + // The specification for personalization spec. + // + // Can only be set if + // [solution_types][google.cloud.retail.v2beta.ServingConfig.solution_types] + // is + // [SOLUTION_TYPE_SEARCH][google.cloud.retail.v2main.SolutionType.SOLUTION_TYPE_SEARCH]. + // + // Notice that if both + // [ServingConfig.personalization_spec][google.cloud.retail.v2beta.ServingConfig.personalization_spec] + // and + // [SearchRequest.personalization_spec][google.cloud.retail.v2beta.SearchRequest.personalization_spec] + // are set. + // [SearchRequest.personalization_spec][google.cloud.retail.v2beta.SearchRequest.personalization_spec] + // will override + // [ServingConfig.personalization_spec][google.cloud.retail.v2beta.ServingConfig.personalization_spec]. + PersonalizationSpec *SearchRequest_PersonalizationSpec `protobuf:"bytes,21,opt,name=personalization_spec,json=personalizationSpec,proto3" json:"personalization_spec,omitempty"` // Required. Immutable. Specifies the solution types that a serving config can // be associated with. Currently we support setting only one type of solution. SolutionTypes []SolutionType `protobuf:"varint,19,rep,packed,name=solution_types,json=solutionTypes,proto3,enum=google.cloud.retail.v2beta.SolutionType" json:"solution_types,omitempty"` @@ -370,6 +443,13 @@ func (x *ServingConfig) GetDiversityLevel() string { return "" } +func (x *ServingConfig) GetDiversityType() ServingConfig_DiversityType { + if x != nil { + return x.DiversityType + } + return ServingConfig_DIVERSITY_TYPE_UNSPECIFIED +} + func (x *ServingConfig) GetEnableCategoryFilterLevel() string { if x != nil { return x.EnableCategoryFilterLevel @@ -377,6 +457,13 @@ func (x *ServingConfig) GetEnableCategoryFilterLevel() string { return "" } +func (x *ServingConfig) GetPersonalizationSpec() *SearchRequest_PersonalizationSpec { + if x != nil { + return x.PersonalizationSpec + } + return nil +} + func (x *ServingConfig) GetSolutionTypes() []SolutionType { if x != nil { return x.SolutionTypes @@ -401,7 +488,7 @@ var file_google_cloud_retail_v2beta_serving_config_proto_rawDesc = []byte{ 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xb0, 0x08, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x0a, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, @@ -450,39 +537,59 @@ var file_google_cloud_retail_v2beta_serving_config_proto_rawDesc = []byte{ 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x5e, 0x0a, 0x0e, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, + 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, + 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x57, 0x0a, 0x0e, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x6c, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, - 0x0d, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x85, - 0x01, 0xea, 0x41, 0x81, 0x01, 0x0a, 0x23, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x42, 0xdb, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x12, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, - 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x70, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, + 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x13, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x0e, 0x73, 0x6f, 0x6c, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, + 0x05, 0x52, 0x0d, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x22, 0x64, 0x0a, 0x0d, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x56, 0x45, 0x52, 0x53, 0x49, 0x54, 0x59, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x44, 0x5f, + 0x44, 0x49, 0x56, 0x45, 0x52, 0x53, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x4e, 0x5f, 0x44, 0x49, 0x56, 0x45, 0x52, + 0x53, 0x49, 0x54, 0x59, 0x10, 0x03, 0x3a, 0x85, 0x01, 0xea, 0x41, 0x81, 0x01, 0x0a, 0x23, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x5a, 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, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x7d, 0x42, 0xdb, + 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x42, 0x12, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, + 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, + 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -497,20 +604,25 @@ func file_google_cloud_retail_v2beta_serving_config_proto_rawDescGZIP() []byte { return file_google_cloud_retail_v2beta_serving_config_proto_rawDescData } +var file_google_cloud_retail_v2beta_serving_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_google_cloud_retail_v2beta_serving_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_google_cloud_retail_v2beta_serving_config_proto_goTypes = []interface{}{ - (*ServingConfig)(nil), // 0: google.cloud.retail.v2beta.ServingConfig - (*SearchRequest_DynamicFacetSpec)(nil), // 1: google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec - (SolutionType)(0), // 2: google.cloud.retail.v2beta.SolutionType + (ServingConfig_DiversityType)(0), // 0: google.cloud.retail.v2beta.ServingConfig.DiversityType + (*ServingConfig)(nil), // 1: google.cloud.retail.v2beta.ServingConfig + (*SearchRequest_DynamicFacetSpec)(nil), // 2: google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec + (*SearchRequest_PersonalizationSpec)(nil), // 3: google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec + (SolutionType)(0), // 4: google.cloud.retail.v2beta.SolutionType } var file_google_cloud_retail_v2beta_serving_config_proto_depIdxs = []int32{ - 1, // 0: google.cloud.retail.v2beta.ServingConfig.dynamic_facet_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec - 2, // 1: google.cloud.retail.v2beta.ServingConfig.solution_types:type_name -> google.cloud.retail.v2beta.SolutionType - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 2, // 0: google.cloud.retail.v2beta.ServingConfig.dynamic_facet_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec + 0, // 1: google.cloud.retail.v2beta.ServingConfig.diversity_type:type_name -> google.cloud.retail.v2beta.ServingConfig.DiversityType + 3, // 2: google.cloud.retail.v2beta.ServingConfig.personalization_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec + 4, // 3: google.cloud.retail.v2beta.ServingConfig.solution_types:type_name -> google.cloud.retail.v2beta.SolutionType + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_google_cloud_retail_v2beta_serving_config_proto_init() } @@ -539,13 +651,14 @@ func file_google_cloud_retail_v2beta_serving_config_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_retail_v2beta_serving_config_proto_rawDesc, - NumEnums: 0, + NumEnums: 1, NumMessages: 1, NumExtensions: 0, NumServices: 0, }, GoTypes: file_google_cloud_retail_v2beta_serving_config_proto_goTypes, DependencyIndexes: file_google_cloud_retail_v2beta_serving_config_proto_depIdxs, + EnumInfos: file_google_cloud_retail_v2beta_serving_config_proto_enumTypes, MessageInfos: file_google_cloud_retail_v2beta_serving_config_proto_msgTypes, }.Build() File_google_cloud_retail_v2beta_serving_config_proto = out.File diff --git a/googleapis/cloud/retail/v2beta/serving_config_service.pb.go b/googleapis/cloud/retail/v2beta/serving_config_service.pb.go index 6a503d27e..eaae77469 100644 --- a/googleapis/cloud/retail/v2beta/serving_config_service.pb.go +++ b/googleapis/cloud/retail/v2beta/serving_config_service.pb.go @@ -185,7 +185,7 @@ type DeleteServingConfigRequest struct { unknownFields protoimpl.UnknownFields // Required. The resource name of the ServingConfig to delete. Format: - // projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id} + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } @@ -235,7 +235,7 @@ type GetServingConfigRequest struct { unknownFields protoimpl.UnknownFields // Required. The resource name of the ServingConfig to get. Format: - // projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id} + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } @@ -285,7 +285,7 @@ type ListServingConfigsRequest struct { unknownFields protoimpl.UnknownFields // Required. The catalog resource name. Format: - // projects/{project_number}/locations/{location_id}/catalogs/{catalog_id} + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. Maximum number of results to return. If unspecified, defaults // to 100. If a value greater than 100 is provided, at most 100 results are @@ -414,7 +414,7 @@ type AddControlRequest struct { unknownFields protoimpl.UnknownFields // Required. The source ServingConfig resource name . Format: - // projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id} + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id}` ServingConfig string `protobuf:"bytes,1,opt,name=serving_config,json=servingConfig,proto3" json:"serving_config,omitempty"` // Required. The id of the control to apply. Assumed to be in the same catalog // as the serving config - if id is not found a NOT_FOUND error is returned. @@ -474,7 +474,7 @@ type RemoveControlRequest struct { unknownFields protoimpl.UnknownFields // Required. The source ServingConfig resource name . Format: - // projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id} + // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/servingConfigs/{serving_config_id}` ServingConfig string `protobuf:"bytes,1,opt,name=serving_config,json=servingConfig,proto3" json:"serving_config,omitempty"` // Required. The id of the control to apply. Assumed to be in the same catalog // as the serving config. diff --git a/googleapis/cloud/retail/v2beta/user_event.pb.go b/googleapis/cloud/retail/v2beta/user_event.pb.go index 7606e1b23..a54a0516f 100644 --- a/googleapis/cloud/retail/v2beta/user_event.pb.go +++ b/googleapis/cloud/retail/v2beta/user_event.pb.go @@ -47,16 +47,16 @@ type UserEvent struct { // Required. User event type. Allowed values are: // - // * `add-to-cart`: Products being added to cart. - // * `category-page-view`: Special pages such as sale or promotion pages - // viewed. - // * `detail-page-view`: Products detail page viewed. - // * `home-page-view`: Homepage viewed. - // * `promotion-offered`: Promotion is offered to a user. - // * `promotion-not-offered`: Promotion is not offered to a user. - // * `purchase-complete`: User finishing a purchase. - // * `search`: Product search. - // * `shopping-cart-page-view`: User viewing a shopping cart. + // - `add-to-cart`: Products being added to cart. + // - `category-page-view`: Special pages such as sale or promotion pages + // viewed. + // - `detail-page-view`: Products detail page viewed. + // - `home-page-view`: Homepage viewed. + // - `promotion-offered`: Promotion is offered to a user. + // - `promotion-not-offered`: Promotion is not offered to a user. + // - `purchase-complete`: User finishing a purchase. + // - `search`: Product search. + // - `shopping-cart-page-view`: User viewing a shopping cart. EventType string `protobuf:"bytes,1,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` // Required. A unique identifier for tracking visitors. // @@ -151,12 +151,12 @@ type UserEvent struct { // This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT // error is returned: // - // * The key must be a UTF-8 encoded string with a length limit of 5,000 - // characters. - // * For text attributes, at most 400 values are allowed. Empty values are not - // allowed. Each value must be a UTF-8 encoded string with a length limit of - // 256 characters. - // * For number attributes, at most 400 values are allowed. + // - The key must be a UTF-8 encoded string with a length limit of 5,000 + // characters. + // - For text attributes, at most 400 values are allowed. Empty values are not + // allowed. Each value must be a UTF-8 encoded string with a length limit of + // 256 characters. + // - For number attributes, at most 400 values are allowed. // // For product recommendations, an example of extra user information is // traffic_channel, which is how a user arrives at the site. Users can arrive @@ -223,7 +223,7 @@ type UserEvent struct { // The categories associated with a category page. // // To represent full path of category, use '>' sign to separate different - // hierarchies. If '>' is part of the category name, please replace it with + // hierarchies. If '>' is part of the category name, replace it with // other character(s). // // Category pages include special pages such as sales or promotions. For diff --git a/googleapis/cloud/retail/v2beta/user_event_service.pb.go b/googleapis/cloud/retail/v2beta/user_event_service.pb.go index cb7b7201e..cb616917f 100644 --- a/googleapis/cloud/retail/v2beta/user_event_service.pb.go +++ b/googleapis/cloud/retail/v2beta/user_event_service.pb.go @@ -44,11 +44,11 @@ const ( // The scope of user events to be rejoined with the latest product catalog. // If the rejoining aims at reducing number of unjoined events, set -// UserEventRejoinScope to UNJOINED_EVENTS. +// `UserEventRejoinScope` to `UNJOINED_EVENTS`. // If the rejoining aims at correcting product catalog information in joined -// events, set UserEventRejoinScope to JOINED_EVENTS. -// If all events needs to be rejoined, set UserEventRejoinScope to -// USER_EVENT_REJOIN_SCOPE_UNSPECIFIED. +// events, set `UserEventRejoinScope` to `JOINED_EVENTS`. +// If all events needs to be rejoined, set `UserEventRejoinScope` to +// `USER_EVENT_REJOIN_SCOPE_UNSPECIFIED`. type RejoinUserEventsRequest_UserEventRejoinScope int32 const ( @@ -255,8 +255,8 @@ type RejoinUserEventsRequest struct { Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // The type of the user event rejoin to define the scope and range of the user // events to be rejoined with the latest product catalog. Defaults to - // USER_EVENT_REJOIN_SCOPE_UNSPECIFIED if this field is not set, or set to an - // invalid integer value. + // `USER_EVENT_REJOIN_SCOPE_UNSPECIFIED` if this field is not set, or set to + // an invalid integer value. UserEventRejoinScope RejoinUserEventsRequest_UserEventRejoinScope `protobuf:"varint,2,opt,name=user_event_rejoin_scope,json=userEventRejoinScope,proto3,enum=google.cloud.retail.v2beta.RejoinUserEventsRequest_UserEventRejoinScope" json:"user_event_rejoin_scope,omitempty"` } @@ -306,7 +306,7 @@ func (x *RejoinUserEventsRequest) GetUserEventRejoinScope() RejoinUserEventsRequ return RejoinUserEventsRequest_USER_EVENT_REJOIN_SCOPE_UNSPECIFIED } -// Response message for RejoinUserEvents method. +// Response message for `RejoinUserEvents` method. type RejoinUserEventsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -355,7 +355,7 @@ func (x *RejoinUserEventsResponse) GetRejoinedUserEventsCount() int64 { return 0 } -// Metadata for RejoinUserEvents method. +// Metadata for `RejoinUserEvents` method. type RejoinUserEventsMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -409,154 +409,155 @@ var file_google_cloud_retail_v2beta_user_event_service_proto_rawDesc = []byte{ 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, 0x68, 0x74, 0x74, 0x70, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7f, 0x0a, 0x15, 0x57, 0x72, 0x69, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0a, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x75, 0x73, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x7e, 0x0a, 0x17, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, - 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x72, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x65, 0x74, 0x73, 0x22, 0xa0, 0x02, 0x0a, 0x17, 0x52, 0x65, 0x6a, 0x6f, 0x69, - 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, - 0x7f, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x70, 0x65, - 0x22, 0x67, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6a, - 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x43, - 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x53, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x22, 0x57, 0x0a, 0x18, 0x52, 0x65, 0x6a, - 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x65, - 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x72, 0x65, 0x6a, 0x6f, 0x69, - 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0xfb, - 0x09, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x22, 0x43, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x0a, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0xac, 0x01, 0x0a, 0x10, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 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, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x47, 0x12, 0x45, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x3a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x96, 0x02, 0x0a, 0x0f, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x32, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x55, + 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, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x70, 0x75, 0x72, 0x67, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x7f, 0x0a, 0x15, 0x57, 0x72, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x7e, 0x0a, 0x17, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, + 0x10, 0x0a, 0x03, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x74, + 0x73, 0x22, 0xa0, 0x02, 0x0a, 0x17, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x7f, 0x0a, 0x17, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0xaf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x22, 0x43, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x70, 0x75, 0x72, 0x67, 0x65, 0x3a, 0x01, 0x2a, - 0xca, 0x41, 0x5e, 0x0a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x50, 0x75, 0x72, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x9b, 0x02, 0x0a, 0x10, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x67, 0x0a, 0x14, 0x55, + 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, + 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x01, 0x12, + 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x53, 0x10, 0x02, 0x22, 0x57, 0x0a, 0x18, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, + 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x55, 0x73, + 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1a, 0x0a, + 0x18, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0xfb, 0x09, 0x0a, 0x10, 0x55, 0x73, + 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc3, + 0x01, 0x0a, 0x0e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x57, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x51, 0x22, 0x43, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x3a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0xac, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 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, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x12, 0x96, 0x02, 0x0a, 0x0f, 0x50, 0x75, 0x72, 0x67, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb2, 0x01, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x48, 0x22, 0x43, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xca, 0x41, 0x60, 0x0a, - 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x74, 0x73, 0x3a, 0x70, 0x75, 0x72, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0xca, 0x41, 0x5e, 0x0a, 0x32, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, + 0x75, 0x72, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x9b, 0x02, 0x0a, + 0x10, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb2, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, + 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x69, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xca, 0x41, 0x60, 0x0a, 0x33, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x70, 0x6f, - 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0xef, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x49, 0x22, 0x44, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x3a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x01, 0x2a, 0xca, 0x41, 0x34, 0x0a, 0x18, 0x52, - 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, - 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0xde, 0x01, 0x0a, - 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, - 0x15, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, - 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, - 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, - 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xef, 0x01, 0x0a, 0x10, 0x52, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x72, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x3a, 0x01, 0x2a, 0xca, 0x41, 0x34, 0x0a, 0x18, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x18, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x49, 0xca, 0x41, + 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0xde, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x15, 0x55, 0x73, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, + 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, + 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -726,18 +727,18 @@ type UserEventServiceClient interface { // synchronous. Events that already exist are skipped. // Use this method for backfilling historical user events. // - // Operation.response is of type ImportResponse. Note that it is + // `Operation.response` is of type `ImportResponse`. Note that it is // possible for a subset of the items to be successfully inserted. - // Operation.metadata is of type ImportMetadata. + // `Operation.metadata` is of type `ImportMetadata`. ImportUserEvents(ctx context.Context, in *ImportUserEventsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) - // Starts a user event rejoin operation with latest product catalog. Events - // will not be annotated with detailed product information if product is - // missing from the catalog at the time the user event is ingested, and these - // events are stored as unjoined events with a limited usage on training and - // serving. This method can be used to start a join operation on specified - // events with latest version of product catalog. It can also be used to - // correct events joined with the wrong product catalog. A rejoin operation - // can take hours or days to complete. + // Starts a user-event rejoin operation with latest product catalog. Events + // are not annotated with detailed product information for products that are + // missing from the catalog when the user event is ingested. These + // events are stored as unjoined events with limited usage on training and + // serving. You can use this method to start a join operation on specified + // events with the latest version of product catalog. You can also use this + // method to correct events joined with the wrong product catalog. A rejoin + // operation can take hours or days to complete. RejoinUserEvents(ctx context.Context, in *RejoinUserEventsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) } @@ -813,18 +814,18 @@ type UserEventServiceServer interface { // synchronous. Events that already exist are skipped. // Use this method for backfilling historical user events. // - // Operation.response is of type ImportResponse. Note that it is + // `Operation.response` is of type `ImportResponse`. Note that it is // possible for a subset of the items to be successfully inserted. - // Operation.metadata is of type ImportMetadata. + // `Operation.metadata` is of type `ImportMetadata`. ImportUserEvents(context.Context, *ImportUserEventsRequest) (*longrunning.Operation, error) - // Starts a user event rejoin operation with latest product catalog. Events - // will not be annotated with detailed product information if product is - // missing from the catalog at the time the user event is ingested, and these - // events are stored as unjoined events with a limited usage on training and - // serving. This method can be used to start a join operation on specified - // events with latest version of product catalog. It can also be used to - // correct events joined with the wrong product catalog. A rejoin operation - // can take hours or days to complete. + // Starts a user-event rejoin operation with latest product catalog. Events + // are not annotated with detailed product information for products that are + // missing from the catalog when the user event is ingested. These + // events are stored as unjoined events with limited usage on training and + // serving. You can use this method to start a join operation on specified + // events with the latest version of product catalog. You can also use this + // method to correct events joined with the wrong product catalog. A rejoin + // operation can take hours or days to complete. RejoinUserEvents(context.Context, *RejoinUserEventsRequest) (*longrunning.Operation, error) } diff --git a/googleapis/cloud/websecurityscanner/v1/crawled_url.pb.go b/googleapis/cloud/websecurityscanner/v1/crawled_url.pb.go index 21192b557..fde72f8b2 100644 --- a/googleapis/cloud/websecurityscanner/v1/crawled_url.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/crawled_url.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/googleapis/cloud/websecurityscanner/v1/finding.pb.go b/googleapis/cloud/websecurityscanner/v1/finding.pb.go index ef4a1a76b..7916449f5 100644 --- a/googleapis/cloud/websecurityscanner/v1/finding.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/finding.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -150,6 +150,8 @@ type Finding struct { VulnerableParameters *VulnerableParameters `protobuf:"bytes,13,opt,name=vulnerable_parameters,json=vulnerableParameters,proto3" json:"vulnerable_parameters,omitempty"` // Output only. An addon containing information reported for an XSS, if any. Xss *Xss `protobuf:"bytes,14,opt,name=xss,proto3" json:"xss,omitempty"` + // Output only. An addon containing information reported for an XXE, if any. + Xxe *Xxe `protobuf:"bytes,18,opt,name=xxe,proto3" json:"xxe,omitempty"` } func (x *Finding) Reset() { @@ -303,6 +305,13 @@ func (x *Finding) GetXss() *Xss { return nil } +func (x *Finding) GetXxe() *Xxe { + if x != nil { + return x.Xxe + } + return nil +} + var File_google_cloud_websecurityscanner_v1_finding_proto protoreflect.FileDescriptor var file_google_cloud_websecurityscanner_v1_finding_proto_rawDesc = []byte{ @@ -318,7 +327,7 @@ var file_google_cloud_websecurityscanner_v1_finding_proto_rawDesc = []byte{ 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, - 0x64, 0x64, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x81, 0x09, 0x0a, 0x07, 0x46, + 0x64, 0x64, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x09, 0x0a, 0x07, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, @@ -377,7 +386,11 @@ var file_google_cloud_websecurityscanner_v1_finding_proto_rawDesc = []byte{ 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x73, 0x73, 0x52, - 0x03, 0x78, 0x73, 0x73, 0x22, 0x51, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, + 0x03, 0x78, 0x73, 0x73, 0x12, 0x3e, 0x0a, 0x03, 0x78, 0x78, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x78, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x03, 0x78, 0x78, 0x65, 0x22, 0x51, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, @@ -433,6 +446,7 @@ var file_google_cloud_websecurityscanner_v1_finding_proto_goTypes = []interface{ (*VulnerableHeaders)(nil), // 5: google.cloud.websecurityscanner.v1.VulnerableHeaders (*VulnerableParameters)(nil), // 6: google.cloud.websecurityscanner.v1.VulnerableParameters (*Xss)(nil), // 7: google.cloud.websecurityscanner.v1.Xss + (*Xxe)(nil), // 8: google.cloud.websecurityscanner.v1.Xxe } var file_google_cloud_websecurityscanner_v1_finding_proto_depIdxs = []int32{ 0, // 0: google.cloud.websecurityscanner.v1.Finding.severity:type_name -> google.cloud.websecurityscanner.v1.Finding.Severity @@ -442,11 +456,12 @@ var file_google_cloud_websecurityscanner_v1_finding_proto_depIdxs = []int32{ 5, // 4: google.cloud.websecurityscanner.v1.Finding.vulnerable_headers:type_name -> google.cloud.websecurityscanner.v1.VulnerableHeaders 6, // 5: google.cloud.websecurityscanner.v1.Finding.vulnerable_parameters:type_name -> google.cloud.websecurityscanner.v1.VulnerableParameters 7, // 6: google.cloud.websecurityscanner.v1.Finding.xss:type_name -> google.cloud.websecurityscanner.v1.Xss - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 8, // 7: google.cloud.websecurityscanner.v1.Finding.xxe:type_name -> google.cloud.websecurityscanner.v1.Xxe + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_google_cloud_websecurityscanner_v1_finding_proto_init() } diff --git a/googleapis/cloud/websecurityscanner/v1/finding_addon.pb.go b/googleapis/cloud/websecurityscanner/v1/finding_addon.pb.go index 5775fb304..831764ecd 100644 --- a/googleapis/cloud/websecurityscanner/v1/finding_addon.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/finding_addon.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -141,6 +141,55 @@ func (Xss_AttackVector) EnumDescriptor() ([]byte, []int) { return file_google_cloud_websecurityscanner_v1_finding_addon_proto_rawDescGZIP(), []int{5, 0} } +// Locations within a request where XML was substituted. +type Xxe_Location int32 + +const ( + // Unknown Location. + Xxe_LOCATION_UNSPECIFIED Xxe_Location = 0 + // The XML payload replaced the complete request body. + Xxe_COMPLETE_REQUEST_BODY Xxe_Location = 1 +) + +// Enum value maps for Xxe_Location. +var ( + Xxe_Location_name = map[int32]string{ + 0: "LOCATION_UNSPECIFIED", + 1: "COMPLETE_REQUEST_BODY", + } + Xxe_Location_value = map[string]int32{ + "LOCATION_UNSPECIFIED": 0, + "COMPLETE_REQUEST_BODY": 1, + } +) + +func (x Xxe_Location) Enum() *Xxe_Location { + p := new(Xxe_Location) + *p = x + return p +} + +func (x Xxe_Location) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Xxe_Location) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_websecurityscanner_v1_finding_addon_proto_enumTypes[1].Descriptor() +} + +func (Xxe_Location) Type() protoreflect.EnumType { + return &file_google_cloud_websecurityscanner_v1_finding_addon_proto_enumTypes[1] +} + +func (x Xxe_Location) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Xxe_Location.Descriptor instead. +func (Xxe_Location) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_websecurityscanner_v1_finding_addon_proto_rawDescGZIP(), []int{6, 0} +} + // ! Information about a vulnerability with an HTML. type Form struct { state protoimpl.MessageState @@ -508,6 +557,65 @@ func (x *Xss) GetStoredXssSeedingUrl() string { return "" } +// Information reported for an XXE. +type Xxe struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The XML string that triggered the XXE vulnerability. Non-payload values + // might be redacted. + PayloadValue string `protobuf:"bytes,1,opt,name=payload_value,json=payloadValue,proto3" json:"payload_value,omitempty"` + // Location within the request where the payload was placed. + PayloadLocation Xxe_Location `protobuf:"varint,2,opt,name=payload_location,json=payloadLocation,proto3,enum=google.cloud.websecurityscanner.v1.Xxe_Location" json:"payload_location,omitempty"` +} + +func (x *Xxe) Reset() { + *x = Xxe{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Xxe) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Xxe) ProtoMessage() {} + +func (x *Xxe) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_websecurityscanner_v1_finding_addon_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 Xxe.ProtoReflect.Descriptor instead. +func (*Xxe) Descriptor() ([]byte, []int) { + return file_google_cloud_websecurityscanner_v1_finding_addon_proto_rawDescGZIP(), []int{6} +} + +func (x *Xxe) GetPayloadValue() string { + if x != nil { + return x.PayloadValue + } + return "" +} + +func (x *Xxe) GetPayloadLocation() Xxe_Location { + if x != nil { + return x.PayloadLocation + } + return Xxe_LOCATION_UNSPECIFIED +} + // Describes a HTTP Header. type VulnerableHeaders_Header struct { state protoimpl.MessageState @@ -523,7 +631,7 @@ type VulnerableHeaders_Header struct { func (x *VulnerableHeaders_Header) Reset() { *x = VulnerableHeaders_Header{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes[6] + mi := &file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -536,7 +644,7 @@ func (x *VulnerableHeaders_Header) String() string { func (*VulnerableHeaders_Header) ProtoMessage() {} func (x *VulnerableHeaders_Header) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes[6] + mi := &file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -646,24 +754,36 @@ var file_google_cloud_websecurityscanner_v1_finding_addon_proto_rawDesc = []byte 0x45, 0x44, 0x5f, 0x58, 0x53, 0x53, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x41, 0x4d, 0x45, 0x5f, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x10, 0x0e, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, - 0x52, 0x4c, 0x10, 0x0f, 0x42, 0x85, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, - 0x11, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, - 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0xaa, 0x02, 0x22, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x57, - 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x4c, 0x10, 0x0f, 0x22, 0xc8, 0x01, 0x0a, 0x03, 0x58, 0x78, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x5b, 0x0a, 0x10, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x58, 0x78, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, + 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x4f, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x42, 0x4f, 0x44, 0x59, 0x10, 0x01, 0x42, + 0x85, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x46, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x54, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, + 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, + 0x76, 0x31, 0x3b, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0xaa, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x22, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, + 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, + 0x3a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -678,27 +798,30 @@ func file_google_cloud_websecurityscanner_v1_finding_addon_proto_rawDescGZIP() [ return file_google_cloud_websecurityscanner_v1_finding_addon_proto_rawDescData } -var file_google_cloud_websecurityscanner_v1_finding_addon_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_google_cloud_websecurityscanner_v1_finding_addon_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_google_cloud_websecurityscanner_v1_finding_addon_proto_goTypes = []interface{}{ (Xss_AttackVector)(0), // 0: google.cloud.websecurityscanner.v1.Xss.AttackVector - (*Form)(nil), // 1: google.cloud.websecurityscanner.v1.Form - (*OutdatedLibrary)(nil), // 2: google.cloud.websecurityscanner.v1.OutdatedLibrary - (*ViolatingResource)(nil), // 3: google.cloud.websecurityscanner.v1.ViolatingResource - (*VulnerableParameters)(nil), // 4: google.cloud.websecurityscanner.v1.VulnerableParameters - (*VulnerableHeaders)(nil), // 5: google.cloud.websecurityscanner.v1.VulnerableHeaders - (*Xss)(nil), // 6: google.cloud.websecurityscanner.v1.Xss - (*VulnerableHeaders_Header)(nil), // 7: google.cloud.websecurityscanner.v1.VulnerableHeaders.Header + (Xxe_Location)(0), // 1: google.cloud.websecurityscanner.v1.Xxe.Location + (*Form)(nil), // 2: google.cloud.websecurityscanner.v1.Form + (*OutdatedLibrary)(nil), // 3: google.cloud.websecurityscanner.v1.OutdatedLibrary + (*ViolatingResource)(nil), // 4: google.cloud.websecurityscanner.v1.ViolatingResource + (*VulnerableParameters)(nil), // 5: google.cloud.websecurityscanner.v1.VulnerableParameters + (*VulnerableHeaders)(nil), // 6: google.cloud.websecurityscanner.v1.VulnerableHeaders + (*Xss)(nil), // 7: google.cloud.websecurityscanner.v1.Xss + (*Xxe)(nil), // 8: google.cloud.websecurityscanner.v1.Xxe + (*VulnerableHeaders_Header)(nil), // 9: google.cloud.websecurityscanner.v1.VulnerableHeaders.Header } var file_google_cloud_websecurityscanner_v1_finding_addon_proto_depIdxs = []int32{ - 7, // 0: google.cloud.websecurityscanner.v1.VulnerableHeaders.headers:type_name -> google.cloud.websecurityscanner.v1.VulnerableHeaders.Header - 7, // 1: google.cloud.websecurityscanner.v1.VulnerableHeaders.missing_headers:type_name -> google.cloud.websecurityscanner.v1.VulnerableHeaders.Header + 9, // 0: google.cloud.websecurityscanner.v1.VulnerableHeaders.headers:type_name -> google.cloud.websecurityscanner.v1.VulnerableHeaders.Header + 9, // 1: google.cloud.websecurityscanner.v1.VulnerableHeaders.missing_headers:type_name -> google.cloud.websecurityscanner.v1.VulnerableHeaders.Header 0, // 2: google.cloud.websecurityscanner.v1.Xss.attack_vector:type_name -> google.cloud.websecurityscanner.v1.Xss.AttackVector - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 1, // 3: google.cloud.websecurityscanner.v1.Xxe.payload_location:type_name -> google.cloud.websecurityscanner.v1.Xxe.Location + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_google_cloud_websecurityscanner_v1_finding_addon_proto_init() } @@ -780,6 +903,18 @@ func file_google_cloud_websecurityscanner_v1_finding_addon_proto_init() { } } file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Xxe); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_websecurityscanner_v1_finding_addon_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VulnerableHeaders_Header); i { case 0: return &v.state @@ -797,8 +932,8 @@ func file_google_cloud_websecurityscanner_v1_finding_addon_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_websecurityscanner_v1_finding_addon_proto_rawDesc, - NumEnums: 1, - NumMessages: 7, + NumEnums: 2, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/googleapis/cloud/websecurityscanner/v1/finding_type_stats.pb.go b/googleapis/cloud/websecurityscanner/v1/finding_type_stats.pb.go index 6b741a709..80167e256 100644 --- a/googleapis/cloud/websecurityscanner/v1/finding_type_stats.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/finding_type_stats.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/googleapis/cloud/websecurityscanner/v1/scan_config.pb.go b/googleapis/cloud/websecurityscanner/v1/scan_config.pb.go index e5d5d2898..61cde5f21 100644 --- a/googleapis/cloud/websecurityscanner/v1/scan_config.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/scan_config.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -243,6 +243,8 @@ type ScanConfig struct { // Whether the scan configuration has enabled static IP address scan feature. // If enabled, the scanner will access applications from static IP addresses. StaticIpScan bool `protobuf:"varint,14,opt,name=static_ip_scan,json=staticIpScan,proto3" json:"static_ip_scan,omitempty"` + // Whether to keep scanning even if most requests return HTTP error codes. + IgnoreHttpStatusErrors bool `protobuf:"varint,15,opt,name=ignore_http_status_errors,json=ignoreHttpStatusErrors,proto3" json:"ignore_http_status_errors,omitempty"` } func (x *ScanConfig) Reset() { @@ -361,6 +363,13 @@ func (x *ScanConfig) GetStaticIpScan() bool { return false } +func (x *ScanConfig) GetIgnoreHttpStatusErrors() bool { + if x != nil { + return x.IgnoreHttpStatusErrors + } + return false +} + // Scan authentication configuration. type ScanConfig_Authentication struct { state protoimpl.MessageState @@ -371,6 +380,7 @@ type ScanConfig_Authentication struct { // Authentication configuration // // Types that are assignable to Authentication: + // // *ScanConfig_Authentication_GoogleAccount_ // *ScanConfig_Authentication_CustomAccount_ // *ScanConfig_Authentication_IapCredential_ @@ -416,6 +426,7 @@ func (m *ScanConfig_Authentication) GetAuthentication() isScanConfig_Authenticat return nil } +// Deprecated: Do not use. func (x *ScanConfig_Authentication) GetGoogleAccount() *ScanConfig_Authentication_GoogleAccount { if x, ok := x.GetAuthentication().(*ScanConfig_Authentication_GoogleAccount_); ok { return x.GoogleAccount @@ -443,6 +454,8 @@ type isScanConfig_Authentication_Authentication interface { type ScanConfig_Authentication_GoogleAccount_ struct { // Authentication using a Google account. + // + // Deprecated: Do not use. GoogleAccount *ScanConfig_Authentication_GoogleAccount `protobuf:"bytes,1,opt,name=google_account,json=googleAccount,proto3,oneof"` } @@ -524,6 +537,8 @@ func (x *ScanConfig_Schedule) GetIntervalDurationDays() int32 { } // Describes authentication configuration that uses a Google account. +// +// Deprecated: Do not use. type ScanConfig_Authentication_GoogleAccount struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -659,6 +674,7 @@ type ScanConfig_Authentication_IapCredential struct { // Identity-Aware-Proxy (IAP) Authentication Configuration // // Types that are assignable to IapCredentials: + // // *ScanConfig_Authentication_IapCredential_IapTestServiceAccountInfo_ IapCredentials isScanConfig_Authentication_IapCredential_IapCredentials `protobuf_oneof:"iap_credentials"` } @@ -785,7 +801,7 @@ var file_google_cloud_websecurityscanner_v1_scan_config_proto_rawDesc = []byte{ 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, 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, 0xf7, 0x0f, 0x0a, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xba, 0x10, 0x0a, 0x0a, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x65, 0x18, @@ -833,104 +849,108 @@ var file_google_cloud_websecurityscanner_v1_scan_config_proto_rawDesc = []byte{ 0x64, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, 0x53, 0x63, 0x61, 0x6e, 0x1a, - 0xe1, 0x06, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x74, 0x0a, 0x0e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x74, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, 0x53, 0x63, 0x61, 0x6e, 0x12, + 0x39, 0x0a, 0x19, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x16, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x48, 0x74, 0x74, 0x70, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0xe9, 0x06, 0x0a, 0x0e, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x78, 0x0a, + 0x0e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x74, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, + 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x74, 0x0a, + 0x0e, 0x69, 0x61, 0x70, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x61, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x61, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x1a, 0x4b, 0x0a, 0x0d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x02, 0x18, 0x01, + 0x1a, 0x64, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, + 0x69, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x1a, 0xab, 0x02, 0x0a, 0x0d, 0x49, 0x61, 0x70, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0xa9, 0x01, 0x0a, 0x1d, 0x69, 0x61, 0x70, + 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x74, - 0x0a, 0x0e, 0x69, 0x61, 0x70, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x61, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x61, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x1a, 0x47, 0x0a, 0x0d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x64, 0x0a, - 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, - 0x55, 0x72, 0x6c, 0x1a, 0xab, 0x02, 0x0a, 0x0d, 0x49, 0x61, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0xa9, 0x01, 0x0a, 0x1d, 0x69, 0x61, 0x70, 0x5f, 0x74, 0x65, - 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x65, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x61, 0x70, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x61, 0x70, 0x54, 0x65, + 0x49, 0x61, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x61, + 0x70, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x19, 0x69, 0x61, 0x70, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x19, 0x69, 0x61, 0x70, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x5b, 0x0a, 0x19, 0x49, 0x61, 0x70, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x1a, 0x5b, 0x0a, 0x19, 0x49, 0x61, 0x70, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3e, - 0x0a, 0x19, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x75, - 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x11, - 0x0a, 0x0f, 0x69, 0x61, 0x70, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x81, 0x01, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 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, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x60, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x47, 0x45, - 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x55, 0x58, - 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x5f, 0x41, 0x4e, 0x44, - 0x52, 0x4f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x41, 0x46, 0x41, 0x52, 0x49, - 0x5f, 0x49, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x3c, 0x0a, 0x09, 0x52, 0x69, 0x73, - 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x07, - 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x22, 0x6d, 0x0a, 0x1d, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x2d, 0x45, 0x58, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, - 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 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, 0x42, 0x83, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x42, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, - 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0xaa, 0x02, 0x22, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x57, - 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x12, 0x3e, 0x0a, 0x19, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x75, 0x64, 0x69, + 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x69, 0x61, 0x70, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x81, 0x01, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 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, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x60, 0x0a, 0x09, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x53, 0x45, 0x52, 0x5f, + 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x5f, 0x4c, 0x49, + 0x4e, 0x55, 0x58, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x5f, + 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x41, 0x46, + 0x41, 0x52, 0x49, 0x5f, 0x49, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x3c, 0x0a, 0x09, + 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x53, + 0x4b, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, + 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x22, 0x6d, 0x0a, 0x1d, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x2d, 0x45, + 0x58, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, + 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, 0x42, 0x83, 0x02, 0x0a, 0x26, 0x63, 0x6f, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, + 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x77, 0x65, 0x62, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0xaa, 0x02, 0x22, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x5c, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/googleapis/cloud/websecurityscanner/v1/scan_config_error.pb.go b/googleapis/cloud/websecurityscanner/v1/scan_config_error.pb.go index ab0f299c1..15a530345 100644 --- a/googleapis/cloud/websecurityscanner/v1/scan_config_error.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/scan_config_error.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/googleapis/cloud/websecurityscanner/v1/scan_run.pb.go b/googleapis/cloud/websecurityscanner/v1/scan_run.pb.go index 735c7cadb..cf483ddd8 100644 --- a/googleapis/cloud/websecurityscanner/v1/scan_run.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/scan_run.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/googleapis/cloud/websecurityscanner/v1/scan_run_error_trace.pb.go b/googleapis/cloud/websecurityscanner/v1/scan_run_error_trace.pb.go index 81a1826f2..0c0877c03 100644 --- a/googleapis/cloud/websecurityscanner/v1/scan_run_error_trace.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/scan_run_error_trace.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -37,7 +37,7 @@ const ( // Output only. // Defines an error reason code. -// Next id: 7 +// Next id: 8 type ScanRunErrorTrace_Code int32 const ( diff --git a/googleapis/cloud/websecurityscanner/v1/scan_run_warning_trace.pb.go b/googleapis/cloud/websecurityscanner/v1/scan_run_warning_trace.pb.go index 7c3c650e6..d8a50fd14 100644 --- a/googleapis/cloud/websecurityscanner/v1/scan_run_warning_trace.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/scan_run_warning_trace.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -56,6 +56,8 @@ const ( ScanRunWarningTrace_TOO_MANY_FUZZ_TASKS ScanRunWarningTrace_Code = 3 // Indicates that a scan is blocked by IAP. ScanRunWarningTrace_BLOCKED_BY_IAP ScanRunWarningTrace_Code = 4 + // Indicates that no seeds is found for a scan + ScanRunWarningTrace_NO_STARTING_URL_FOUND_FOR_MANAGED_SCAN ScanRunWarningTrace_Code = 5 ) // Enum value maps for ScanRunWarningTrace_Code. @@ -66,13 +68,15 @@ var ( 2: "TOO_MANY_CRAWL_RESULTS", 3: "TOO_MANY_FUZZ_TASKS", 4: "BLOCKED_BY_IAP", + 5: "NO_STARTING_URL_FOUND_FOR_MANAGED_SCAN", } ScanRunWarningTrace_Code_value = map[string]int32{ - "CODE_UNSPECIFIED": 0, - "INSUFFICIENT_CRAWL_RESULTS": 1, - "TOO_MANY_CRAWL_RESULTS": 2, - "TOO_MANY_FUZZ_TASKS": 3, - "BLOCKED_BY_IAP": 4, + "CODE_UNSPECIFIED": 0, + "INSUFFICIENT_CRAWL_RESULTS": 1, + "TOO_MANY_CRAWL_RESULTS": 2, + "TOO_MANY_FUZZ_TASKS": 3, + "BLOCKED_BY_IAP": 4, + "NO_STARTING_URL_FOUND_FOR_MANAGED_SCAN": 5, } ) @@ -163,14 +167,14 @@ var file_google_cloud_websecurityscanner_v1_scan_run_warning_trace_proto_rawDesc 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x22, 0xef, 0x01, 0x0a, 0x13, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x22, 0x9b, 0x02, 0x0a, 0x13, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, - 0x85, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, 0x45, + 0xb1, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x41, 0x57, 0x4c, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x01, 0x12, 0x1a, @@ -178,24 +182,27 @@ var file_google_cloud_websecurityscanner_v1_scan_run_warning_trace_proto_rawDesc 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x4f, 0x4f, 0x5f, 0x4d, 0x41, 0x4e, 0x59, 0x5f, 0x46, 0x55, 0x5a, 0x5a, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x53, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x5f, 0x42, - 0x59, 0x5f, 0x49, 0x41, 0x50, 0x10, 0x04, 0x42, 0x8c, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x42, 0x18, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, - 0x31, 0x3b, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0xaa, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, - 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, - 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, + 0x59, 0x5f, 0x49, 0x41, 0x50, 0x10, 0x04, 0x12, 0x2a, 0x0a, 0x26, 0x4e, 0x4f, 0x5f, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x52, 0x4c, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, + 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x5f, 0x53, 0x43, 0x41, + 0x4e, 0x10, 0x05, 0x42, 0x8c, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x18, + 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, + 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x77, 0x65, + 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0xaa, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x57, 0x65, 0x62, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x25, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x57, 0x65, 0x62, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, + 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/googleapis/cloud/websecurityscanner/v1/web_security_scanner.pb.go b/googleapis/cloud/websecurityscanner/v1/web_security_scanner.pb.go index d6bcdcd98..563c4c8ad 100644 --- a/googleapis/cloud/websecurityscanner/v1/web_security_scanner.pb.go +++ b/googleapis/cloud/websecurityscanner/v1/web_security_scanner.pb.go @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -1115,29 +1115,29 @@ var file_google_cloud_websecurityscanner_v1_web_security_scanner_proto_rawDesc = 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 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, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x61, 0x77, 0x6c, 0x65, 0x64, 0x5f, 0x75, 0x72, - 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x75, 0x6e, 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, 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, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, + 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, 0x34, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x72, 0x61, 0x77, 0x6c, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, + 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, + 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x73, + 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x72, + 0x75, 0x6e, 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, 0x82, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x73, diff --git a/googleapis/privacy/dlp/v2/dlp.pb.go b/googleapis/privacy/dlp/v2/dlp.pb.go index f7bd0aee7..39247f10d 100644 --- a/googleapis/privacy/dlp/v2/dlp.pb.go +++ b/googleapis/privacy/dlp/v2/dlp.pb.go @@ -48,6 +48,229 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Enum of possible outcomes of transformations. SUCCESS if transformation and +// storing of transformation was successful, otherwise, reason for not +// transforming. +type TransformationResultStatusType int32 + +const ( + TransformationResultStatusType_STATE_TYPE_UNSPECIFIED TransformationResultStatusType = 0 + // This will be set when a finding could not be transformed (i.e. outside user + // set bucket range). + TransformationResultStatusType_INVALID_TRANSFORM TransformationResultStatusType = 1 + // This will be set when a BigQuery transformation was successful but could + // not be stored back in BigQuery because the transformed row exceeds + // BigQuery's max row size. + TransformationResultStatusType_BIGQUERY_MAX_ROW_SIZE_EXCEEDED TransformationResultStatusType = 2 + // This will be set when there is a finding in the custom metadata of a file, + // but at the write time of the transformed file, this key / value pair is + // unretrievable. + TransformationResultStatusType_METADATA_UNRETRIEVABLE TransformationResultStatusType = 3 + // This will be set when the transformation and storing of it is successful. + TransformationResultStatusType_SUCCESS TransformationResultStatusType = 4 +) + +// Enum value maps for TransformationResultStatusType. +var ( + TransformationResultStatusType_name = map[int32]string{ + 0: "STATE_TYPE_UNSPECIFIED", + 1: "INVALID_TRANSFORM", + 2: "BIGQUERY_MAX_ROW_SIZE_EXCEEDED", + 3: "METADATA_UNRETRIEVABLE", + 4: "SUCCESS", + } + TransformationResultStatusType_value = map[string]int32{ + "STATE_TYPE_UNSPECIFIED": 0, + "INVALID_TRANSFORM": 1, + "BIGQUERY_MAX_ROW_SIZE_EXCEEDED": 2, + "METADATA_UNRETRIEVABLE": 3, + "SUCCESS": 4, + } +) + +func (x TransformationResultStatusType) Enum() *TransformationResultStatusType { + p := new(TransformationResultStatusType) + *p = x + return p +} + +func (x TransformationResultStatusType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransformationResultStatusType) Descriptor() protoreflect.EnumDescriptor { + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[0].Descriptor() +} + +func (TransformationResultStatusType) Type() protoreflect.EnumType { + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[0] +} + +func (x TransformationResultStatusType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransformationResultStatusType.Descriptor instead. +func (TransformationResultStatusType) EnumDescriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{0} +} + +// Describes functionality of a given container in its original format. +type TransformationContainerType int32 + +const ( + TransformationContainerType_TRANSFORM_UNKNOWN_CONTAINER TransformationContainerType = 0 + TransformationContainerType_TRANSFORM_BODY TransformationContainerType = 1 + TransformationContainerType_TRANSFORM_METADATA TransformationContainerType = 2 + TransformationContainerType_TRANSFORM_TABLE TransformationContainerType = 3 +) + +// Enum value maps for TransformationContainerType. +var ( + TransformationContainerType_name = map[int32]string{ + 0: "TRANSFORM_UNKNOWN_CONTAINER", + 1: "TRANSFORM_BODY", + 2: "TRANSFORM_METADATA", + 3: "TRANSFORM_TABLE", + } + TransformationContainerType_value = map[string]int32{ + "TRANSFORM_UNKNOWN_CONTAINER": 0, + "TRANSFORM_BODY": 1, + "TRANSFORM_METADATA": 2, + "TRANSFORM_TABLE": 3, + } +) + +func (x TransformationContainerType) Enum() *TransformationContainerType { + p := new(TransformationContainerType) + *p = x + return p +} + +func (x TransformationContainerType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransformationContainerType) Descriptor() protoreflect.EnumDescriptor { + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[1].Descriptor() +} + +func (TransformationContainerType) Type() protoreflect.EnumType { + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[1] +} + +func (x TransformationContainerType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransformationContainerType.Descriptor instead. +func (TransformationContainerType) EnumDescriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{1} +} + +// An enum of rules that can be used to transform a value. Can be a +// record suppression, or one of the transformation rules specified under +// `PrimitiveTransformation`. +type TransformationType int32 + +const ( + // Unused + TransformationType_TRANSFORMATION_TYPE_UNSPECIFIED TransformationType = 0 + // Record suppression + TransformationType_RECORD_SUPPRESSION TransformationType = 1 + // Replace value + TransformationType_REPLACE_VALUE TransformationType = 2 + // Replace value using a dictionary. + TransformationType_REPLACE_DICTIONARY TransformationType = 15 + // Redact + TransformationType_REDACT TransformationType = 3 + // Character mask + TransformationType_CHARACTER_MASK TransformationType = 4 + // FFX-FPE + TransformationType_CRYPTO_REPLACE_FFX_FPE TransformationType = 5 + // Fixed size bucketing + TransformationType_FIXED_SIZE_BUCKETING TransformationType = 6 + // Bucketing + TransformationType_BUCKETING TransformationType = 7 + // Replace with info type + TransformationType_REPLACE_WITH_INFO_TYPE TransformationType = 8 + // Time part + TransformationType_TIME_PART TransformationType = 9 + // Crypto hash + TransformationType_CRYPTO_HASH TransformationType = 10 + // Date shift + TransformationType_DATE_SHIFT TransformationType = 12 + // Deterministic crypto + TransformationType_CRYPTO_DETERMINISTIC_CONFIG TransformationType = 13 + // Redact image + TransformationType_REDACT_IMAGE TransformationType = 14 +) + +// Enum value maps for TransformationType. +var ( + TransformationType_name = map[int32]string{ + 0: "TRANSFORMATION_TYPE_UNSPECIFIED", + 1: "RECORD_SUPPRESSION", + 2: "REPLACE_VALUE", + 15: "REPLACE_DICTIONARY", + 3: "REDACT", + 4: "CHARACTER_MASK", + 5: "CRYPTO_REPLACE_FFX_FPE", + 6: "FIXED_SIZE_BUCKETING", + 7: "BUCKETING", + 8: "REPLACE_WITH_INFO_TYPE", + 9: "TIME_PART", + 10: "CRYPTO_HASH", + 12: "DATE_SHIFT", + 13: "CRYPTO_DETERMINISTIC_CONFIG", + 14: "REDACT_IMAGE", + } + TransformationType_value = map[string]int32{ + "TRANSFORMATION_TYPE_UNSPECIFIED": 0, + "RECORD_SUPPRESSION": 1, + "REPLACE_VALUE": 2, + "REPLACE_DICTIONARY": 15, + "REDACT": 3, + "CHARACTER_MASK": 4, + "CRYPTO_REPLACE_FFX_FPE": 5, + "FIXED_SIZE_BUCKETING": 6, + "BUCKETING": 7, + "REPLACE_WITH_INFO_TYPE": 8, + "TIME_PART": 9, + "CRYPTO_HASH": 10, + "DATE_SHIFT": 12, + "CRYPTO_DETERMINISTIC_CONFIG": 13, + "REDACT_IMAGE": 14, + } +) + +func (x TransformationType) Enum() *TransformationType { + p := new(TransformationType) + *p = x + return p +} + +func (x TransformationType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransformationType) Descriptor() protoreflect.EnumDescriptor { + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[2].Descriptor() +} + +func (TransformationType) Type() protoreflect.EnumType { + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[2] +} + +func (x TransformationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransformationType.Descriptor instead. +func (TransformationType) EnumDescriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{2} +} + // Operators available for comparing the value of fields. type RelationalOperator int32 @@ -105,11 +328,11 @@ func (x RelationalOperator) String() string { } func (RelationalOperator) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[0].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[3].Descriptor() } func (RelationalOperator) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[0] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[3] } func (x RelationalOperator) Number() protoreflect.EnumNumber { @@ -118,7 +341,7 @@ func (x RelationalOperator) Number() protoreflect.EnumNumber { // Deprecated: Use RelationalOperator.Descriptor instead. func (RelationalOperator) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{3} } // Type of the match which can be applied to different ways of matching, like @@ -176,11 +399,11 @@ func (x MatchingType) String() string { } func (MatchingType) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[1].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[4].Descriptor() } func (MatchingType) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[1] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[4] } func (x MatchingType) Number() protoreflect.EnumNumber { @@ -189,7 +412,7 @@ func (x MatchingType) Number() protoreflect.EnumNumber { // Deprecated: Use MatchingType.Descriptor instead. func (MatchingType) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{1} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{4} } // Deprecated and unused. @@ -229,11 +452,11 @@ func (x ContentOption) String() string { } func (ContentOption) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[2].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[5].Descriptor() } func (ContentOption) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[2] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[5] } func (x ContentOption) Number() protoreflect.EnumNumber { @@ -242,7 +465,7 @@ func (x ContentOption) Number() protoreflect.EnumNumber { // Deprecated: Use ContentOption.Descriptor instead. func (ContentOption) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{2} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{5} } // Type of metadata containing the finding. @@ -278,11 +501,11 @@ func (x MetadataType) String() string { } func (MetadataType) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[3].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[6].Descriptor() } func (MetadataType) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[3] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[6] } func (x MetadataType) Number() protoreflect.EnumNumber { @@ -291,7 +514,7 @@ func (x MetadataType) Number() protoreflect.EnumNumber { // Deprecated: Use MetadataType.Descriptor instead. func (MetadataType) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{3} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{6} } // Parts of the APIs which use certain infoTypes. @@ -331,11 +554,11 @@ func (x InfoTypeSupportedBy) String() string { } func (InfoTypeSupportedBy) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[4].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[7].Descriptor() } func (InfoTypeSupportedBy) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[4] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[7] } func (x InfoTypeSupportedBy) Number() protoreflect.EnumNumber { @@ -344,7 +567,7 @@ func (x InfoTypeSupportedBy) Number() protoreflect.EnumNumber { // Deprecated: Use InfoTypeSupportedBy.Descriptor instead. func (InfoTypeSupportedBy) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{4} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{7} } // An enum to represent the various types of DLP jobs. @@ -384,11 +607,11 @@ func (x DlpJobType) String() string { } func (DlpJobType) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[5].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[8].Descriptor() } func (DlpJobType) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[5] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[8] } func (x DlpJobType) Number() protoreflect.EnumNumber { @@ -397,7 +620,7 @@ func (x DlpJobType) Number() protoreflect.EnumNumber { // Deprecated: Use DlpJobType.Descriptor instead. func (DlpJobType) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{5} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{8} } // State of a StoredInfoType version. @@ -448,11 +671,11 @@ func (x StoredInfoTypeState) String() string { } func (StoredInfoTypeState) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[6].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[9].Descriptor() } func (StoredInfoTypeState) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[6] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[9] } func (x StoredInfoTypeState) Number() protoreflect.EnumNumber { @@ -461,7 +684,7 @@ func (x StoredInfoTypeState) Number() protoreflect.EnumNumber { // Deprecated: Use StoredInfoTypeState.Descriptor instead. func (StoredInfoTypeState) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{6} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{9} } // How broadly a resource has been shared. New items may be added over time. @@ -502,11 +725,11 @@ func (x ResourceVisibility) String() string { } func (ResourceVisibility) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[7].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[10].Descriptor() } func (ResourceVisibility) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[7] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[10] } func (x ResourceVisibility) Number() protoreflect.EnumNumber { @@ -515,7 +738,7 @@ func (x ResourceVisibility) Number() protoreflect.EnumNumber { // Deprecated: Use ResourceVisibility.Descriptor instead. func (ResourceVisibility) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{7} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{10} } // How a resource is encrypted. @@ -555,11 +778,11 @@ func (x EncryptionStatus) String() string { } func (EncryptionStatus) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[8].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[11].Descriptor() } func (EncryptionStatus) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[8] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[11] } func (x EncryptionStatus) Number() protoreflect.EnumNumber { @@ -568,7 +791,7 @@ func (x EncryptionStatus) Number() protoreflect.EnumNumber { // Deprecated: Use EncryptionStatus.Descriptor instead. func (EncryptionStatus) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{8} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{11} } // The type of data being sent for inspection. To learn more, see @@ -654,11 +877,11 @@ func (x ByteContentItem_BytesType) String() string { } func (ByteContentItem_BytesType) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[9].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[12].Descriptor() } func (ByteContentItem_BytesType) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[9] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[12] } func (x ByteContentItem_BytesType) Number() protoreflect.EnumNumber { @@ -680,7 +903,7 @@ const ( // Basic schema including only `info_type`, `quote`, `certainty`, and // `timestamp`. OutputStorageConfig_BASIC_COLUMNS OutputStorageConfig_OutputSchema = 1 - // Schema tailored to findings from scanning Google Cloud Storage. + // Schema tailored to findings from scanning Cloud Storage. OutputStorageConfig_GCS_COLUMNS OutputStorageConfig_OutputSchema = 2 // Schema tailored to findings from scanning Google Datastore. OutputStorageConfig_DATASTORE_COLUMNS OutputStorageConfig_OutputSchema = 3 @@ -721,11 +944,11 @@ func (x OutputStorageConfig_OutputSchema) String() string { } func (OutputStorageConfig_OutputSchema) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[10].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[13].Descriptor() } func (OutputStorageConfig_OutputSchema) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[10] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[13] } func (x OutputStorageConfig_OutputSchema) Number() protoreflect.EnumNumber { @@ -928,11 +1151,11 @@ func (x InfoTypeCategory_LocationCategory) String() string { } func (InfoTypeCategory_LocationCategory) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[11].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[14].Descriptor() } func (InfoTypeCategory_LocationCategory) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[11] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[14] } func (x InfoTypeCategory_LocationCategory) Number() protoreflect.EnumNumber { @@ -986,11 +1209,11 @@ func (x InfoTypeCategory_IndustryCategory) String() string { } func (InfoTypeCategory_IndustryCategory) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[12].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[15].Descriptor() } func (InfoTypeCategory_IndustryCategory) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[12] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[15] } func (x InfoTypeCategory_IndustryCategory) Number() protoreflect.EnumNumber { @@ -1064,11 +1287,11 @@ func (x InfoTypeCategory_TypeCategory) String() string { } func (InfoTypeCategory_TypeCategory) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[13].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[16].Descriptor() } func (InfoTypeCategory_TypeCategory) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[13] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[16] } func (x InfoTypeCategory_TypeCategory) Number() protoreflect.EnumNumber { @@ -1133,11 +1356,11 @@ func (x TimePartConfig_TimePart) String() string { } func (TimePartConfig_TimePart) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[14].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[17].Descriptor() } func (TimePartConfig_TimePart) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[14] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[17] } func (x TimePartConfig_TimePart) Number() protoreflect.EnumNumber { @@ -1146,10 +1369,10 @@ func (x TimePartConfig_TimePart) Number() protoreflect.EnumNumber { // Deprecated: Use TimePartConfig_TimePart.Descriptor instead. func (TimePartConfig_TimePart) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{50, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{52, 0} } -// Convenience enum for indication common characters to not transform. +// Convenience enum for indicating common characters to not transform. type CharsToIgnore_CommonCharsToIgnore int32 const ( @@ -1198,11 +1421,11 @@ func (x CharsToIgnore_CommonCharsToIgnore) String() string { } func (CharsToIgnore_CommonCharsToIgnore) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[15].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[18].Descriptor() } func (CharsToIgnore_CommonCharsToIgnore) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[15] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[18] } func (x CharsToIgnore_CommonCharsToIgnore) Number() protoreflect.EnumNumber { @@ -1211,12 +1434,12 @@ func (x CharsToIgnore_CommonCharsToIgnore) Number() protoreflect.EnumNumber { // Deprecated: Use CharsToIgnore_CommonCharsToIgnore.Descriptor instead. func (CharsToIgnore_CommonCharsToIgnore) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{57, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{59, 0} } // These are commonly used subsets of the alphabet that the FFX mode // natively supports. In the algorithm, the alphabet is selected using -// the "radix". Therefore each corresponds to particular radix. +// the "radix". Therefore each corresponds to a particular radix. type CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet int32 const ( @@ -1261,11 +1484,11 @@ func (x CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) String() string { } func (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[16].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[19].Descriptor() } func (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[16] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[19] } func (x CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) Number() protoreflect.EnumNumber { @@ -1274,7 +1497,7 @@ func (x CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) Number() protoreflect // Deprecated: Use CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet.Descriptor instead. func (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{61, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{63, 0} } // Logical operators for conditional checks. @@ -1310,11 +1533,11 @@ func (x RecordCondition_Expressions_LogicalOperator) String() string { } func (RecordCondition_Expressions_LogicalOperator) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[17].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[20].Descriptor() } func (RecordCondition_Expressions_LogicalOperator) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[17] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[20] } func (x RecordCondition_Expressions_LogicalOperator) Number() protoreflect.EnumNumber { @@ -1323,7 +1546,7 @@ func (x RecordCondition_Expressions_LogicalOperator) Number() protoreflect.EnumN // Deprecated: Use RecordCondition_Expressions_LogicalOperator.Descriptor instead. func (RecordCondition_Expressions_LogicalOperator) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{71, 2, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73, 2, 0} } // Possible outcomes of transformations. @@ -1363,11 +1586,11 @@ func (x TransformationSummary_TransformationResultCode) String() string { } func (TransformationSummary_TransformationResultCode) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[18].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[21].Descriptor() } func (TransformationSummary_TransformationResultCode) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[18] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[21] } func (x TransformationSummary_TransformationResultCode) Number() protoreflect.EnumNumber { @@ -1376,7 +1599,7 @@ func (x TransformationSummary_TransformationResultCode) Number() protoreflect.En // Deprecated: Use TransformationSummary_TransformationResultCode.Descriptor instead. func (TransformationSummary_TransformationResultCode) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{75, 0} } // Whether the trigger is currently active. If PAUSED or CANCELLED, no jobs @@ -1423,11 +1646,11 @@ func (x JobTrigger_Status) String() string { } func (JobTrigger_Status) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[19].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[22].Descriptor() } func (JobTrigger_Status) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[19] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[22] } func (x JobTrigger_Status) Number() protoreflect.EnumNumber { @@ -1436,7 +1659,7 @@ func (x JobTrigger_Status) Number() protoreflect.EnumNumber { // Deprecated: Use JobTrigger_Status.Descriptor instead. func (JobTrigger_Status) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{79, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{87, 0} } // Types of event that can trigger an action. @@ -1490,11 +1713,11 @@ func (x DataProfileAction_EventType) String() string { } func (DataProfileAction_EventType) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[20].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[23].Descriptor() } func (DataProfileAction_EventType) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[20] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[23] } func (x DataProfileAction_EventType) Number() protoreflect.EnumNumber { @@ -1503,7 +1726,7 @@ func (x DataProfileAction_EventType) Number() protoreflect.EnumNumber { // Deprecated: Use DataProfileAction_EventType.Descriptor instead. func (DataProfileAction_EventType) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{96, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{105, 0} } // The levels of detail that can be included in the Pub/Sub message. @@ -1543,11 +1766,11 @@ func (x DataProfileAction_PubSubNotification_DetailLevel) String() string { } func (DataProfileAction_PubSubNotification_DetailLevel) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[21].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[24].Descriptor() } func (DataProfileAction_PubSubNotification_DetailLevel) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[21] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[24] } func (x DataProfileAction_PubSubNotification_DetailLevel) Number() protoreflect.EnumNumber { @@ -1556,7 +1779,7 @@ func (x DataProfileAction_PubSubNotification_DetailLevel) Number() protoreflect. // Deprecated: Use DataProfileAction_PubSubNotification_DetailLevel.Descriptor instead. func (DataProfileAction_PubSubNotification_DetailLevel) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{96, 1, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{105, 1, 0} } // Possible states of a job. New items may be added. @@ -1572,13 +1795,13 @@ const ( DlpJob_RUNNING DlpJob_JobState = 2 // The job is no longer running. DlpJob_DONE DlpJob_JobState = 3 - // The job was canceled before it could complete. + // The job was canceled before it could be completed. DlpJob_CANCELED DlpJob_JobState = 4 // The job had an error and did not complete. DlpJob_FAILED DlpJob_JobState = 5 // The job is currently accepting findings via hybridInspect. // A hybrid job in ACTIVE state may continue to have findings added to it - // through calling of hybridInspect. After the job has finished no more + // through the calling of hybridInspect. After the job has finished no more // calls to hybridInspect may be made. ACTIVE jobs can transition to DONE. DlpJob_ACTIVE DlpJob_JobState = 6 ) @@ -1616,11 +1839,11 @@ func (x DlpJob_JobState) String() string { } func (DlpJob_JobState) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[22].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[25].Descriptor() } func (DlpJob_JobState) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[22] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[25] } func (x DlpJob_JobState) Number() protoreflect.EnumNumber { @@ -1629,68 +1852,7 @@ func (x DlpJob_JobState) Number() protoreflect.EnumNumber { // Deprecated: Use DlpJob_JobState.Descriptor instead. func (DlpJob_JobState) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{99, 0} -} - -// Various score levels for resources. -type SensitivityScore_SensitivityScoreLevel int32 - -const ( - // Unused. - SensitivityScore_SENSITIVITY_SCORE_UNSPECIFIED SensitivityScore_SensitivityScoreLevel = 0 - // No sensitive information detected. Limited access. - SensitivityScore_SENSITIVITY_LOW SensitivityScore_SensitivityScoreLevel = 10 - // Medium risk - PII, potentially sensitive data, or fields with free-text - // data that are at higher risk of having intermittent sensitive data. - // Consider limiting access. - SensitivityScore_SENSITIVITY_MODERATE SensitivityScore_SensitivityScoreLevel = 20 - // High risk – SPII may be present. Exfiltration of data may lead to user - // data loss. Re-identification of users may be possible. Consider limiting - // usage and or removing SPII. - SensitivityScore_SENSITIVITY_HIGH SensitivityScore_SensitivityScoreLevel = 30 -) - -// Enum value maps for SensitivityScore_SensitivityScoreLevel. -var ( - SensitivityScore_SensitivityScoreLevel_name = map[int32]string{ - 0: "SENSITIVITY_SCORE_UNSPECIFIED", - 10: "SENSITIVITY_LOW", - 20: "SENSITIVITY_MODERATE", - 30: "SENSITIVITY_HIGH", - } - SensitivityScore_SensitivityScoreLevel_value = map[string]int32{ - "SENSITIVITY_SCORE_UNSPECIFIED": 0, - "SENSITIVITY_LOW": 10, - "SENSITIVITY_MODERATE": 20, - "SENSITIVITY_HIGH": 30, - } -) - -func (x SensitivityScore_SensitivityScoreLevel) Enum() *SensitivityScore_SensitivityScoreLevel { - p := new(SensitivityScore_SensitivityScoreLevel) - *p = x - return p -} - -func (x SensitivityScore_SensitivityScoreLevel) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SensitivityScore_SensitivityScoreLevel) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[23].Descriptor() -} - -func (SensitivityScore_SensitivityScoreLevel) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[23] -} - -func (x SensitivityScore_SensitivityScoreLevel) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SensitivityScore_SensitivityScoreLevel.Descriptor instead. -func (SensitivityScore_SensitivityScoreLevel) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{129, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{108, 0} } // Various score levels for resources. @@ -1704,8 +1866,8 @@ const ( // data found. DataRiskLevel_RISK_LOW DataRiskLevel_DataRiskLevelScore = 10 // Medium risk - Sensitive data may be present but additional access or fine - // grain access restrictions appears to be present. Consider limiting - // access even further or transforming data to mask. + // grain access restrictions appear to be present. Consider limiting + // access even further or transform data to mask. DataRiskLevel_RISK_MODERATE DataRiskLevel_DataRiskLevelScore = 20 // High risk – SPII may be present. Access controls may include public // ACLs. Exfiltration of data may lead to user data loss. Re-identification @@ -1740,11 +1902,11 @@ func (x DataRiskLevel_DataRiskLevelScore) String() string { } func (DataRiskLevel_DataRiskLevelScore) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[24].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[26].Descriptor() } func (DataRiskLevel_DataRiskLevelScore) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[24] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[26] } func (x DataRiskLevel_DataRiskLevelScore) Number() protoreflect.EnumNumber { @@ -1753,7 +1915,7 @@ func (x DataRiskLevel_DataRiskLevelScore) Number() protoreflect.EnumNumber { // Deprecated: Use DataRiskLevel_DataRiskLevelScore.Descriptor instead. func (DataRiskLevel_DataRiskLevelScore) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{130, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{138, 0} } // Possible states of a profile. New items may be added. @@ -1796,11 +1958,11 @@ func (x TableDataProfile_State) String() string { } func (TableDataProfile_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[25].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[27].Descriptor() } func (TableDataProfile_State) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[25] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[27] } func (x TableDataProfile_State) Number() protoreflect.EnumNumber { @@ -1809,7 +1971,7 @@ func (x TableDataProfile_State) Number() protoreflect.EnumNumber { // Deprecated: Use TableDataProfile_State.Descriptor instead. func (TableDataProfile_State) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{132, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{140, 0} } // Various score levels for resources. @@ -1849,11 +2011,11 @@ func (x DataProfilePubSubCondition_ProfileScoreBucket) String() string { } func (DataProfilePubSubCondition_ProfileScoreBucket) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[26].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[28].Descriptor() } func (DataProfilePubSubCondition_ProfileScoreBucket) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[26] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[28] } func (x DataProfilePubSubCondition_ProfileScoreBucket) Number() protoreflect.EnumNumber { @@ -1862,7 +2024,7 @@ func (x DataProfilePubSubCondition_ProfileScoreBucket) Number() protoreflect.Enu // Deprecated: Use DataProfilePubSubCondition_ProfileScoreBucket.Descriptor instead. func (DataProfilePubSubCondition_ProfileScoreBucket) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{136, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{144, 0} } // Logical operators for conditional checks. @@ -1902,11 +2064,11 @@ func (x DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator) Stri } func (DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_dlp_proto_enumTypes[27].Descriptor() + return file_google_privacy_dlp_v2_dlp_proto_enumTypes[29].Descriptor() } func (DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[27] + return &file_google_privacy_dlp_v2_dlp_proto_enumTypes[29] } func (x DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator) Number() protoreflect.EnumNumber { @@ -1915,10 +2077,10 @@ func (x DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator) Numb // Deprecated: Use DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator.Descriptor instead. func (DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{136, 1, 0} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{144, 1, 0} } -// List of exclude infoTypes. +// List of excluded infoTypes. type ExcludeInfoTypes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1984,6 +2146,7 @@ type ExclusionRule struct { // Exclusion rule types. // // Types that are assignable to Type: + // // *ExclusionRule_Dictionary // *ExclusionRule_Regex // *ExclusionRule_ExcludeInfoTypes @@ -2094,6 +2257,7 @@ type InspectionRule struct { // Inspection rule types. // // Types that are assignable to Type: + // // *InspectionRule_HotwordRule // *InspectionRule_ExclusionRule Type isInspectionRule_Type `protobuf_oneof:"type"` @@ -2255,6 +2419,12 @@ type InspectConfig struct { MinLikelihood Likelihood `protobuf:"varint,2,opt,name=min_likelihood,json=minLikelihood,proto3,enum=google.privacy.dlp.v2.Likelihood" json:"min_likelihood,omitempty"` // Configuration to control the number of findings returned. // This is not used for data profiling. + // + // When redacting sensitive data from images, finding limits don't apply. They + // can cause unexpected or inconsistent results, where only some data is + // redacted. Don't include finding limits in + // [RedactImage][google.privacy.dlp.v2.DlpService.RedactImage] + // requests. Otherwise, Cloud DLP returns an error. Limits *InspectConfig_FindingLimits `protobuf:"bytes,3,opt,name=limits,proto3" json:"limits,omitempty"` // When true, a contextual quote from the data that triggered a finding is // included in the response; see [Finding.quote][google.privacy.dlp.v2.Finding.quote]. @@ -2429,6 +2599,7 @@ type ContentItem struct { // Data of the item either in the byte array or UTF-8 string form, or table. // // Types that are assignable to DataItem: + // // *ContentItem_Value // *ContentItem_Table // *ContentItem_ByteItem @@ -2922,23 +3093,24 @@ type ContentLocation struct { // * Datastore namespace: {namespace} // // Nested names could be absent if the embedded object has no string - // identifier (for an example an image contained within a document). + // identifier (for example, an image contained within a document). ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` // Type of the container within the file with location of the finding. // // Types that are assignable to Location: + // // *ContentLocation_RecordLocation // *ContentLocation_ImageLocation // *ContentLocation_DocumentLocation // *ContentLocation_MetadataLocation Location isContentLocation_Location `protobuf_oneof:"location"` - // Findings container modification timestamp, if applicable. - // For Google Cloud Storage contains last file modification timestamp. - // For BigQuery table contains last_modified_time property. - // For Datastore - not populated. + // Finding container modification timestamp, if applicable. For Cloud Storage, + // this field contains the last file modification timestamp. For a BigQuery + // table, this field contains the last_modified_time property. For Datastore, + // this field isn't populated. ContainerTimestamp *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=container_timestamp,json=containerTimestamp,proto3" json:"container_timestamp,omitempty"` - // Findings container version, if available - // ("generation" for Google Cloud Storage). + // Finding container version, if available + // ("generation" for Cloud Storage). ContainerVersion string `protobuf:"bytes,7,opt,name=container_version,json=containerVersion,proto3" json:"container_version,omitempty"` } @@ -3074,6 +3246,7 @@ type MetadataLocation struct { // latitude, author, caption. // // Types that are assignable to Label: + // // *MetadataLocation_StorageLabel Label isMetadataLocation_Label `protobuf_oneof:"label"` } @@ -3368,7 +3541,7 @@ type Container struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Container type, for example BigQuery or Google Cloud Storage. + // Container type, for example BigQuery or Cloud Storage. Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Project where the finding was found. // Can be different from the project that owns the finding. @@ -3376,29 +3549,31 @@ type Container struct { // A string representation of the full container name. // Examples: // - BigQuery: 'Project:DataSetId.TableId' - // - Google Cloud Storage: 'gs://Bucket/folders/filename.txt' + // - Cloud Storage: 'gs://Bucket/folders/filename.txt' FullPath string `protobuf:"bytes,3,opt,name=full_path,json=fullPath,proto3" json:"full_path,omitempty"` // The root of the container. // Examples: - // - For BigQuery table `project_id:dataset_id.table_id`, the root is - // `dataset_id` - // - For Google Cloud Storage file `gs://bucket/folder/filename.txt`, the root - // is `gs://bucket` + // + // - For BigQuery table `project_id:dataset_id.table_id`, the root is + // `dataset_id` + // - For Cloud Storage file `gs://bucket/folder/filename.txt`, the root + // is `gs://bucket` RootPath string `protobuf:"bytes,4,opt,name=root_path,json=rootPath,proto3" json:"root_path,omitempty"` // The rest of the path after the root. // Examples: - // - For BigQuery table `project_id:dataset_id.table_id`, the relative path is - // `table_id` - // - Google Cloud Storage file `gs://bucket/folder/filename.txt`, the relative - // path is `folder/filename.txt` + // + // - For BigQuery table `project_id:dataset_id.table_id`, the relative path is + // `table_id` + // - For Cloud Storage file `gs://bucket/folder/filename.txt`, the relative + // path is `folder/filename.txt` RelativePath string `protobuf:"bytes,5,opt,name=relative_path,json=relativePath,proto3" json:"relative_path,omitempty"` - // Findings container modification timestamp, if applicable. - // For Google Cloud Storage contains last file modification timestamp. - // For BigQuery table contains last_modified_time property. - // For Datastore - not populated. + // Findings container modification timestamp, if applicable. For Cloud + // Storage, this field contains the last file modification timestamp. For a + // BigQuery table, this field contains the last_modified_time property. For + // Datastore, this field isn't populated. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // Findings container version, if available - // ("generation" for Google Cloud Storage). + // ("generation" for Cloud Storage). Version string `protobuf:"bytes,7,opt,name=version,proto3" json:"version,omitempty"` } @@ -3679,16 +3854,16 @@ type RedactImageRequest struct { // processing // location](https://cloud.google.com/dlp/docs/specifying-location): // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID // // The following example `parent` string specifies a parent project with the // identifier `example-project`, and specifies the `europe-west3` location // for processing data: // - // parent=projects/example-project/locations/europe-west3 + // parent=projects/example-project/locations/europe-west3 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Deprecated. This field has no effect. LocationId string `protobuf:"bytes,8,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` @@ -3913,7 +4088,7 @@ func (x *RedactImageResponse) GetInspectResult() *InspectResult { return nil } -// Request to de-identify a list of items. +// Request to de-identify a ContentItem. type DeidentifyContentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3925,16 +4100,16 @@ type DeidentifyContentRequest struct { // processing // location](https://cloud.google.com/dlp/docs/specifying-location): // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID // // The following example `parent` string specifies a parent project with the // identifier `example-project`, and specifies the `europe-west3` location // for processing data: // - // parent=projects/example-project/locations/europe-west3 + // parent=projects/example-project/locations/europe-west3 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Configuration for the de-identification of the content item. // Items specified here will override the template referenced by the @@ -4113,16 +4288,16 @@ type ReidentifyContentRequest struct { // processing // location](https://cloud.google.com/dlp/docs/specifying-location): // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID // // The following example `parent` string specifies a parent project with the // identifier `example-project`, and specifies the `europe-west3` location // for processing data: // - // parent=projects/example-project/locations/europe-west3 + // parent=projects/example-project/locations/europe-west3 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Configuration for the re-identification of the content item. // This field shares the same proto message type that is used for @@ -4132,8 +4307,8 @@ type ReidentifyContentRequest struct { // reverse. This requires that only reversible transformations // be provided here. The reversible transformations are: // - // - `CryptoDeterministicConfig` - // - `CryptoReplaceFfxFpeConfig` + // - `CryptoDeterministicConfig` + // - `CryptoReplaceFfxFpeConfig` ReidentifyConfig *DeidentifyConfig `protobuf:"bytes,2,opt,name=reidentify_config,json=reidentifyConfig,proto3" json:"reidentify_config,omitempty"` // Configuration for the inspector. InspectConfig *InspectConfig `protobuf:"bytes,3,opt,name=inspect_config,json=inspectConfig,proto3" json:"inspect_config,omitempty"` @@ -4238,7 +4413,7 @@ func (x *ReidentifyContentRequest) GetLocationId() string { return "" } -// Results of re-identifying a item. +// Results of re-identifying an item. type ReidentifyContentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4308,16 +4483,16 @@ type InspectContentRequest struct { // processing // location](https://cloud.google.com/dlp/docs/specifying-location): // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID // // The following example `parent` string specifies a parent project with the // identifier `example-project`, and specifies the `europe-west3` location // for processing data: // - // parent=projects/example-project/locations/europe-west3 + // parent=projects/example-project/locations/europe-west3 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Configuration for the inspector. What specified here will override // the template referenced by the inspect_template_name argument. @@ -4459,6 +4634,7 @@ type OutputStorageConfig struct { // Output storage types. // // Types that are assignable to Type: + // // *OutputStorageConfig_Table Type isOutputStorageConfig_Type `protobuf_oneof:"type"` // Schema used for writing the findings for Inspect jobs. This field is only @@ -4535,8 +4711,8 @@ type OutputStorageConfig_Table struct { // Store findings in an existing table or a new table in an existing // dataset. If table_id is not set a new one will be generated // for you with the following format: - // dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific timezone will be used for - // generating the date details. + // dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific time zone will be used + // for generating the date details. // // For Inspect, each column in an existing output table must have the same // name, type, and mode of a field in the `Finding` object. @@ -4754,6 +4930,8 @@ type InfoTypeDescription struct { // Description of the infotype. Translated when language is provided in the // request. Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // A list of available versions for the infotype. + Versions []*VersionDescription `protobuf:"bytes,9,rep,name=versions,proto3" json:"versions,omitempty"` // The category of the infoType. Categories []*InfoTypeCategory `protobuf:"bytes,10,rep,name=categories,proto3" json:"categories,omitempty"` } @@ -4818,6 +4996,13 @@ func (x *InfoTypeDescription) GetDescription() string { return "" } +func (x *InfoTypeDescription) GetVersions() []*VersionDescription { + if x != nil { + return x.Versions + } + return nil +} + func (x *InfoTypeDescription) GetCategories() []*InfoTypeCategory { if x != nil { return x.Categories @@ -4833,6 +5018,7 @@ type InfoTypeCategory struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Category: + // // *InfoTypeCategory_LocationCategory_ // *InfoTypeCategory_IndustryCategory_ // *InfoTypeCategory_TypeCategory_ @@ -4925,7 +5111,65 @@ func (*InfoTypeCategory_IndustryCategory_) isInfoTypeCategory_Category() {} func (*InfoTypeCategory_TypeCategory_) isInfoTypeCategory_Category() {} -// Request for the list of infoTypes. +// Details about each available version for an infotype. +type VersionDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the version + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description of the version. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *VersionDescription) Reset() { + *x = VersionDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VersionDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VersionDescription) ProtoMessage() {} + +func (x *VersionDescription) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VersionDescription.ProtoReflect.Descriptor instead. +func (*VersionDescription) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{36} +} + +func (x *VersionDescription) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *VersionDescription) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +// Request for the list of infoTypes. type ListInfoTypesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4935,7 +5179,7 @@ type ListInfoTypesRequest struct { // // The format of this value is as follows: // - // locations/LOCATION_ID + // locations/LOCATION_ID Parent string `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"` // BCP-47 language code for localized infoType friendly // names. If omitted, or if localized strings are not available, @@ -4951,7 +5195,7 @@ type ListInfoTypesRequest struct { func (x *ListInfoTypesRequest) Reset() { *x = ListInfoTypesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[36] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4964,7 +5208,7 @@ func (x *ListInfoTypesRequest) String() string { func (*ListInfoTypesRequest) ProtoMessage() {} func (x *ListInfoTypesRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[36] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4977,7 +5221,7 @@ func (x *ListInfoTypesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInfoTypesRequest.ProtoReflect.Descriptor instead. func (*ListInfoTypesRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{36} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{37} } func (x *ListInfoTypesRequest) GetParent() string { @@ -5021,7 +5265,7 @@ type ListInfoTypesResponse struct { func (x *ListInfoTypesResponse) Reset() { *x = ListInfoTypesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[37] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5034,7 +5278,7 @@ func (x *ListInfoTypesResponse) String() string { func (*ListInfoTypesResponse) ProtoMessage() {} func (x *ListInfoTypesResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[37] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5047,7 +5291,7 @@ func (x *ListInfoTypesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInfoTypesResponse.ProtoReflect.Descriptor instead. func (*ListInfoTypesResponse) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{37} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{38} } func (x *ListInfoTypesResponse) GetInfoTypes() []*InfoTypeDescription { @@ -5076,7 +5320,7 @@ type RiskAnalysisJobConfig struct { func (x *RiskAnalysisJobConfig) Reset() { *x = RiskAnalysisJobConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[38] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5089,7 +5333,7 @@ func (x *RiskAnalysisJobConfig) String() string { func (*RiskAnalysisJobConfig) ProtoMessage() {} func (x *RiskAnalysisJobConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[38] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5102,7 +5346,7 @@ func (x *RiskAnalysisJobConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RiskAnalysisJobConfig.ProtoReflect.Descriptor instead. func (*RiskAnalysisJobConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{38} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{39} } func (x *RiskAnalysisJobConfig) GetPrivacyMetric() *PrivacyMetric { @@ -5139,6 +5383,7 @@ type QuasiId struct { // value. [required] // // Types that are assignable to Tag: + // // *QuasiId_InfoType // *QuasiId_CustomTag // *QuasiId_Inferred @@ -5148,7 +5393,7 @@ type QuasiId struct { func (x *QuasiId) Reset() { *x = QuasiId{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[39] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5161,7 +5406,7 @@ func (x *QuasiId) String() string { func (*QuasiId) ProtoMessage() {} func (x *QuasiId) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[39] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5174,7 +5419,7 @@ func (x *QuasiId) ProtoReflect() protoreflect.Message { // Deprecated: Use QuasiId.ProtoReflect.Descriptor instead. func (*QuasiId) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{39} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{40} } func (x *QuasiId) GetField() *FieldId { @@ -5268,7 +5513,7 @@ type StatisticalTable struct { func (x *StatisticalTable) Reset() { *x = StatisticalTable{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[40] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5281,7 +5526,7 @@ func (x *StatisticalTable) String() string { func (*StatisticalTable) ProtoMessage() {} func (x *StatisticalTable) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[40] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5294,7 +5539,7 @@ func (x *StatisticalTable) ProtoReflect() protoreflect.Message { // Deprecated: Use StatisticalTable.ProtoReflect.Descriptor instead. func (*StatisticalTable) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{40} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41} } func (x *StatisticalTable) GetTable() *BigQueryTable { @@ -5327,6 +5572,7 @@ type PrivacyMetric struct { // Types of analysis. // // Types that are assignable to Type: + // // *PrivacyMetric_NumericalStatsConfig_ // *PrivacyMetric_CategoricalStatsConfig_ // *PrivacyMetric_KAnonymityConfig_ @@ -5339,7 +5585,7 @@ type PrivacyMetric struct { func (x *PrivacyMetric) Reset() { *x = PrivacyMetric{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[41] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5352,7 +5598,7 @@ func (x *PrivacyMetric) String() string { func (*PrivacyMetric) ProtoMessage() {} func (x *PrivacyMetric) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[41] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5365,7 +5611,7 @@ func (x *PrivacyMetric) ProtoReflect() protoreflect.Message { // Deprecated: Use PrivacyMetric.ProtoReflect.Descriptor instead. func (*PrivacyMetric) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42} } func (m *PrivacyMetric) GetType() isPrivacyMetric_Type { @@ -5476,6 +5722,7 @@ type AnalyzeDataSourceRiskDetails struct { // Values associated with this metric. // // Types that are assignable to Result: + // // *AnalyzeDataSourceRiskDetails_NumericalStatsResult_ // *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_ // *AnalyzeDataSourceRiskDetails_KAnonymityResult_ @@ -5490,7 +5737,7 @@ type AnalyzeDataSourceRiskDetails struct { func (x *AnalyzeDataSourceRiskDetails) Reset() { *x = AnalyzeDataSourceRiskDetails{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[42] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5503,7 +5750,7 @@ func (x *AnalyzeDataSourceRiskDetails) String() string { func (*AnalyzeDataSourceRiskDetails) ProtoMessage() {} func (x *AnalyzeDataSourceRiskDetails) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[42] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5516,7 +5763,7 @@ func (x *AnalyzeDataSourceRiskDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use AnalyzeDataSourceRiskDetails.ProtoReflect.Descriptor instead. func (*AnalyzeDataSourceRiskDetails) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43} } func (x *AnalyzeDataSourceRiskDetails) GetRequestedPrivacyMetric() *PrivacyMetric { @@ -5652,7 +5899,7 @@ type ValueFrequency struct { func (x *ValueFrequency) Reset() { *x = ValueFrequency{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[43] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5665,7 +5912,7 @@ func (x *ValueFrequency) String() string { func (*ValueFrequency) ProtoMessage() {} func (x *ValueFrequency) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[43] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5678,7 +5925,7 @@ func (x *ValueFrequency) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueFrequency.ProtoReflect.Descriptor instead. func (*ValueFrequency) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{44} } func (x *ValueFrequency) GetValue() *Value { @@ -5709,6 +5956,7 @@ type Value struct { // Value types // // Types that are assignable to Type: + // // *Value_IntegerValue // *Value_FloatValue // *Value_StringValue @@ -5723,7 +5971,7 @@ type Value struct { func (x *Value) Reset() { *x = Value{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[44] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5736,7 +5984,7 @@ func (x *Value) String() string { func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[44] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5749,7 +5997,7 @@ func (x *Value) ProtoReflect() protoreflect.Message { // Deprecated: Use Value.ProtoReflect.Descriptor instead. func (*Value) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{44} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{45} } func (m *Value) GetType() isValue_Type { @@ -5884,6 +6132,7 @@ type QuoteInfo struct { // Object representation of the quote. // // Types that are assignable to ParsedQuote: + // // *QuoteInfo_DateTime ParsedQuote isQuoteInfo_ParsedQuote `protobuf_oneof:"parsed_quote"` } @@ -5891,7 +6140,7 @@ type QuoteInfo struct { func (x *QuoteInfo) Reset() { *x = QuoteInfo{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[45] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5904,7 +6153,7 @@ func (x *QuoteInfo) String() string { func (*QuoteInfo) ProtoMessage() {} func (x *QuoteInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[45] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5917,7 +6166,7 @@ func (x *QuoteInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use QuoteInfo.ProtoReflect.Descriptor instead. func (*QuoteInfo) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{45} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{46} } func (m *QuoteInfo) GetParsedQuote() isQuoteInfo_ParsedQuote { @@ -5966,7 +6215,7 @@ type DateTime struct { func (x *DateTime) Reset() { *x = DateTime{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[46] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5979,7 +6228,7 @@ func (x *DateTime) String() string { func (*DateTime) ProtoMessage() {} func (x *DateTime) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[46] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5992,7 +6241,7 @@ func (x *DateTime) ProtoReflect() protoreflect.Message { // Deprecated: Use DateTime.ProtoReflect.Descriptor instead. func (*DateTime) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{46} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{47} } func (x *DateTime) GetDate() *date.Date { @@ -6030,8 +6279,10 @@ type DeidentifyConfig struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Transformation: + // // *DeidentifyConfig_InfoTypeTransformations // *DeidentifyConfig_RecordTransformations + // *DeidentifyConfig_ImageTransformations Transformation isDeidentifyConfig_Transformation `protobuf_oneof:"transformation"` // Mode for handling transformation errors. If left unspecified, the default // mode is `TransformationErrorHandling.ThrowError`. @@ -6041,7 +6292,7 @@ type DeidentifyConfig struct { func (x *DeidentifyConfig) Reset() { *x = DeidentifyConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[47] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6054,7 +6305,7 @@ func (x *DeidentifyConfig) String() string { func (*DeidentifyConfig) ProtoMessage() {} func (x *DeidentifyConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[47] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6067,7 +6318,7 @@ func (x *DeidentifyConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use DeidentifyConfig.ProtoReflect.Descriptor instead. func (*DeidentifyConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{47} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{48} } func (m *DeidentifyConfig) GetTransformation() isDeidentifyConfig_Transformation { @@ -6091,6 +6342,13 @@ func (x *DeidentifyConfig) GetRecordTransformations() *RecordTransformations { return nil } +func (x *DeidentifyConfig) GetImageTransformations() *ImageTransformations { + if x, ok := x.GetTransformation().(*DeidentifyConfig_ImageTransformations); ok { + return x.ImageTransformations + } + return nil +} + func (x *DeidentifyConfig) GetTransformationErrorHandling() *TransformationErrorHandling { if x != nil { return x.TransformationErrorHandling @@ -6115,10 +6373,65 @@ type DeidentifyConfig_RecordTransformations struct { RecordTransformations *RecordTransformations `protobuf:"bytes,2,opt,name=record_transformations,json=recordTransformations,proto3,oneof"` } +type DeidentifyConfig_ImageTransformations struct { + // Treat the dataset as an image and redact. + ImageTransformations *ImageTransformations `protobuf:"bytes,4,opt,name=image_transformations,json=imageTransformations,proto3,oneof"` +} + func (*DeidentifyConfig_InfoTypeTransformations) isDeidentifyConfig_Transformation() {} func (*DeidentifyConfig_RecordTransformations) isDeidentifyConfig_Transformation() {} +func (*DeidentifyConfig_ImageTransformations) isDeidentifyConfig_Transformation() {} + +// A type of transformation that is applied over images. +type ImageTransformations struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transforms []*ImageTransformations_ImageTransformation `protobuf:"bytes,2,rep,name=transforms,proto3" json:"transforms,omitempty"` +} + +func (x *ImageTransformations) Reset() { + *x = ImageTransformations{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageTransformations) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageTransformations) ProtoMessage() {} + +func (x *ImageTransformations) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[49] + 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 ImageTransformations.ProtoReflect.Descriptor instead. +func (*ImageTransformations) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{49} +} + +func (x *ImageTransformations) GetTransforms() []*ImageTransformations_ImageTransformation { + if x != nil { + return x.Transforms + } + return nil +} + // How to handle transformation errors during de-identification. A // transformation error occurs when the requested transformation is incompatible // with the data. For example, trying to de-identify an IP address using a @@ -6135,6 +6448,7 @@ type TransformationErrorHandling struct { // How transformation errors should be handled. // // Types that are assignable to Mode: + // // *TransformationErrorHandling_ThrowError_ // *TransformationErrorHandling_LeaveUntransformed_ Mode isTransformationErrorHandling_Mode `protobuf_oneof:"mode"` @@ -6143,7 +6457,7 @@ type TransformationErrorHandling struct { func (x *TransformationErrorHandling) Reset() { *x = TransformationErrorHandling{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[48] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6156,7 +6470,7 @@ func (x *TransformationErrorHandling) String() string { func (*TransformationErrorHandling) ProtoMessage() {} func (x *TransformationErrorHandling) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[48] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6169,7 +6483,7 @@ func (x *TransformationErrorHandling) ProtoReflect() protoreflect.Message { // Deprecated: Use TransformationErrorHandling.ProtoReflect.Descriptor instead. func (*TransformationErrorHandling) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{48} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{50} } func (m *TransformationErrorHandling) GetMode() isTransformationErrorHandling_Mode { @@ -6218,6 +6532,7 @@ type PrimitiveTransformation struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Transformation: + // // *PrimitiveTransformation_ReplaceConfig // *PrimitiveTransformation_RedactConfig // *PrimitiveTransformation_CharacterMaskConfig @@ -6236,7 +6551,7 @@ type PrimitiveTransformation struct { func (x *PrimitiveTransformation) Reset() { *x = PrimitiveTransformation{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[49] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6249,7 +6564,7 @@ func (x *PrimitiveTransformation) String() string { func (*PrimitiveTransformation) ProtoMessage() {} func (x *PrimitiveTransformation) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[49] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6262,7 +6577,7 @@ func (x *PrimitiveTransformation) ProtoReflect() protoreflect.Message { // Deprecated: Use PrimitiveTransformation.ProtoReflect.Descriptor instead. func (*PrimitiveTransformation) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{49} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{51} } func (m *PrimitiveTransformation) GetTransformation() isPrimitiveTransformation_Transformation { @@ -6461,7 +6776,7 @@ type TimePartConfig struct { func (x *TimePartConfig) Reset() { *x = TimePartConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[50] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6474,7 +6789,7 @@ func (x *TimePartConfig) String() string { func (*TimePartConfig) ProtoMessage() {} func (x *TimePartConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[50] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6487,7 +6802,7 @@ func (x *TimePartConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use TimePartConfig.ProtoReflect.Descriptor instead. func (*TimePartConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{50} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{52} } func (x *TimePartConfig) GetPartToExtract() TimePartConfig_TimePart { @@ -6516,7 +6831,7 @@ type CryptoHashConfig struct { func (x *CryptoHashConfig) Reset() { *x = CryptoHashConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[51] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6529,7 +6844,7 @@ func (x *CryptoHashConfig) String() string { func (*CryptoHashConfig) ProtoMessage() {} func (x *CryptoHashConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[51] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6542,7 +6857,7 @@ func (x *CryptoHashConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoHashConfig.ProtoReflect.Descriptor instead. func (*CryptoHashConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{51} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{53} } func (x *CryptoHashConfig) GetCryptoKey() *CryptoKey { @@ -6614,14 +6929,14 @@ type CryptoDeterministicConfig struct { // plaintext would be used as is for encryption. // // Note that case (1) is expected when an `InfoTypeTransformation` is - // applied to both structured and non-structured `ContentItem`s. + // applied to both structured and unstructured `ContentItem`s. Context *FieldId `protobuf:"bytes,3,opt,name=context,proto3" json:"context,omitempty"` } func (x *CryptoDeterministicConfig) Reset() { *x = CryptoDeterministicConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[52] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6634,7 +6949,7 @@ func (x *CryptoDeterministicConfig) String() string { func (*CryptoDeterministicConfig) ProtoMessage() {} func (x *CryptoDeterministicConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[52] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6647,7 +6962,7 @@ func (x *CryptoDeterministicConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoDeterministicConfig.ProtoReflect.Descriptor instead. func (*CryptoDeterministicConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{52} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{54} } func (x *CryptoDeterministicConfig) GetCryptoKey() *CryptoKey { @@ -6684,7 +6999,7 @@ type ReplaceValueConfig struct { func (x *ReplaceValueConfig) Reset() { *x = ReplaceValueConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[53] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6697,7 +7012,7 @@ func (x *ReplaceValueConfig) String() string { func (*ReplaceValueConfig) ProtoMessage() {} func (x *ReplaceValueConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[53] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6710,7 +7025,7 @@ func (x *ReplaceValueConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplaceValueConfig.ProtoReflect.Descriptor instead. func (*ReplaceValueConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{53} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{55} } func (x *ReplaceValueConfig) GetNewValue() *Value { @@ -6727,6 +7042,7 @@ type ReplaceDictionaryConfig struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *ReplaceDictionaryConfig_WordList Type isReplaceDictionaryConfig_Type `protobuf_oneof:"type"` } @@ -6734,7 +7050,7 @@ type ReplaceDictionaryConfig struct { func (x *ReplaceDictionaryConfig) Reset() { *x = ReplaceDictionaryConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[54] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6747,7 +7063,7 @@ func (x *ReplaceDictionaryConfig) String() string { func (*ReplaceDictionaryConfig) ProtoMessage() {} func (x *ReplaceDictionaryConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[54] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6760,7 +7076,7 @@ func (x *ReplaceDictionaryConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplaceDictionaryConfig.ProtoReflect.Descriptor instead. func (*ReplaceDictionaryConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{54} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{56} } func (m *ReplaceDictionaryConfig) GetType() isReplaceDictionaryConfig_Type { @@ -6800,7 +7116,7 @@ type ReplaceWithInfoTypeConfig struct { func (x *ReplaceWithInfoTypeConfig) Reset() { *x = ReplaceWithInfoTypeConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[55] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6813,7 +7129,7 @@ func (x *ReplaceWithInfoTypeConfig) String() string { func (*ReplaceWithInfoTypeConfig) ProtoMessage() {} func (x *ReplaceWithInfoTypeConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[55] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6826,7 +7142,7 @@ func (x *ReplaceWithInfoTypeConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplaceWithInfoTypeConfig.ProtoReflect.Descriptor instead. func (*ReplaceWithInfoTypeConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{55} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{57} } // Redact a given value. For example, if used with an `InfoTypeTransformation` @@ -6841,7 +7157,7 @@ type RedactConfig struct { func (x *RedactConfig) Reset() { *x = RedactConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[56] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6854,7 +7170,7 @@ func (x *RedactConfig) String() string { func (*RedactConfig) ProtoMessage() {} func (x *RedactConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[56] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6867,7 +7183,7 @@ func (x *RedactConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RedactConfig.ProtoReflect.Descriptor instead. func (*RedactConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{56} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{58} } // Characters to skip when doing deidentification of a value. These will be left @@ -6878,6 +7194,7 @@ type CharsToIgnore struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Characters: + // // *CharsToIgnore_CharactersToSkip // *CharsToIgnore_CommonCharactersToIgnore Characters isCharsToIgnore_Characters `protobuf_oneof:"characters"` @@ -6886,7 +7203,7 @@ type CharsToIgnore struct { func (x *CharsToIgnore) Reset() { *x = CharsToIgnore{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[57] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6899,7 +7216,7 @@ func (x *CharsToIgnore) String() string { func (*CharsToIgnore) ProtoMessage() {} func (x *CharsToIgnore) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[57] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6912,7 +7229,7 @@ func (x *CharsToIgnore) ProtoReflect() protoreflect.Message { // Deprecated: Use CharsToIgnore.ProtoReflect.Descriptor instead. func (*CharsToIgnore) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{57} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{59} } func (m *CharsToIgnore) GetCharacters() isCharsToIgnore_Characters { @@ -6973,6 +7290,21 @@ type CharacterMaskConfig struct { MaskingCharacter string `protobuf:"bytes,1,opt,name=masking_character,json=maskingCharacter,proto3" json:"masking_character,omitempty"` // Number of characters to mask. If not set, all matching chars will be // masked. Skipped characters do not count towards this tally. + // + // If `number_to_mask` is negative, this denotes inverse masking. Cloud DLP + // masks all but a number of characters. + // For example, suppose you have the following values: + // + // - `masking_character` is `*` + // - `number_to_mask` is `-4` + // - `reverse_order` is `false` + // - `CharsToIgnore` includes `-` + // - Input string is `1234-5678-9012-3456` + // + // The resulting de-identified string is + // `****-****-****-3456`. Cloud DLP masks all but the last four characters. + // If `reverse_order` is `true`, all but the first four characters are masked + // as `1234-****-****-****`. NumberToMask int32 `protobuf:"varint,2,opt,name=number_to_mask,json=numberToMask,proto3" json:"number_to_mask,omitempty"` // Mask characters in reverse order. For example, if `masking_character` is // `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the @@ -6990,7 +7322,7 @@ type CharacterMaskConfig struct { func (x *CharacterMaskConfig) Reset() { *x = CharacterMaskConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[58] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7003,7 +7335,7 @@ func (x *CharacterMaskConfig) String() string { func (*CharacterMaskConfig) ProtoMessage() {} func (x *CharacterMaskConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[58] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7016,7 +7348,7 @@ func (x *CharacterMaskConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CharacterMaskConfig.ProtoReflect.Descriptor instead. func (*CharacterMaskConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{58} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{60} } func (x *CharacterMaskConfig) GetMaskingCharacter() string { @@ -7086,7 +7418,7 @@ type FixedSizeBucketingConfig struct { func (x *FixedSizeBucketingConfig) Reset() { *x = FixedSizeBucketingConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[59] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7099,7 +7431,7 @@ func (x *FixedSizeBucketingConfig) String() string { func (*FixedSizeBucketingConfig) ProtoMessage() {} func (x *FixedSizeBucketingConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[59] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7112,7 +7444,7 @@ func (x *FixedSizeBucketingConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use FixedSizeBucketingConfig.ProtoReflect.Descriptor instead. func (*FixedSizeBucketingConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{59} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{61} } func (x *FixedSizeBucketingConfig) GetLowerBound() *Value { @@ -7157,7 +7489,7 @@ type BucketingConfig struct { func (x *BucketingConfig) Reset() { *x = BucketingConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[60] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7170,7 +7502,7 @@ func (x *BucketingConfig) String() string { func (*BucketingConfig) ProtoMessage() {} func (x *BucketingConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[60] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7183,7 +7515,7 @@ func (x *BucketingConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use BucketingConfig.ProtoReflect.Descriptor instead. func (*BucketingConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{60} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{62} } func (x *BucketingConfig) GetBuckets() []*BucketingConfig_Bucket { @@ -7225,7 +7557,7 @@ type CryptoReplaceFfxFpeConfig struct { // a default tweak will be used. // // Note that case (1) is expected when an `InfoTypeTransformation` is - // applied to both structured and non-structured `ContentItem`s. + // applied to both structured and unstructured `ContentItem`s. // Currently, the referenced field may be of value type integer or string. // // The tweak is constructed as a sequence of bytes in big endian byte order @@ -7237,6 +7569,7 @@ type CryptoReplaceFfxFpeConfig struct { // Choose an alphabet which the data being transformed will be made up of. // // Types that are assignable to Alphabet: + // // *CryptoReplaceFfxFpeConfig_CommonAlphabet // *CryptoReplaceFfxFpeConfig_CustomAlphabet // *CryptoReplaceFfxFpeConfig_Radix @@ -7272,7 +7605,7 @@ type CryptoReplaceFfxFpeConfig struct { func (x *CryptoReplaceFfxFpeConfig) Reset() { *x = CryptoReplaceFfxFpeConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[61] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7285,7 +7618,7 @@ func (x *CryptoReplaceFfxFpeConfig) String() string { func (*CryptoReplaceFfxFpeConfig) ProtoMessage() {} func (x *CryptoReplaceFfxFpeConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[61] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7298,7 +7631,7 @@ func (x *CryptoReplaceFfxFpeConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoReplaceFfxFpeConfig.ProtoReflect.Descriptor instead. func (*CryptoReplaceFfxFpeConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{61} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{63} } func (x *CryptoReplaceFfxFpeConfig) GetCryptoKey() *CryptoKey { @@ -7398,6 +7731,7 @@ type CryptoKey struct { // Sources of crypto keys. // // Types that are assignable to Source: + // // *CryptoKey_Transient // *CryptoKey_Unwrapped // *CryptoKey_KmsWrapped @@ -7407,7 +7741,7 @@ type CryptoKey struct { func (x *CryptoKey) Reset() { *x = CryptoKey{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[62] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7420,7 +7754,7 @@ func (x *CryptoKey) String() string { func (*CryptoKey) ProtoMessage() {} func (x *CryptoKey) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[62] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7433,7 +7767,7 @@ func (x *CryptoKey) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoKey.ProtoReflect.Descriptor instead. func (*CryptoKey) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{62} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{64} } func (m *CryptoKey) GetSource() isCryptoKey_Source { @@ -7508,7 +7842,7 @@ type TransientCryptoKey struct { func (x *TransientCryptoKey) Reset() { *x = TransientCryptoKey{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[63] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7521,7 +7855,7 @@ func (x *TransientCryptoKey) String() string { func (*TransientCryptoKey) ProtoMessage() {} func (x *TransientCryptoKey) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[63] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7534,7 +7868,7 @@ func (x *TransientCryptoKey) ProtoReflect() protoreflect.Message { // Deprecated: Use TransientCryptoKey.ProtoReflect.Descriptor instead. func (*TransientCryptoKey) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{63} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{65} } func (x *TransientCryptoKey) GetName() string { @@ -7558,7 +7892,7 @@ type UnwrappedCryptoKey struct { func (x *UnwrappedCryptoKey) Reset() { *x = UnwrappedCryptoKey{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[64] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7571,7 +7905,7 @@ func (x *UnwrappedCryptoKey) String() string { func (*UnwrappedCryptoKey) ProtoMessage() {} func (x *UnwrappedCryptoKey) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[64] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7584,7 +7918,7 @@ func (x *UnwrappedCryptoKey) ProtoReflect() protoreflect.Message { // Deprecated: Use UnwrappedCryptoKey.ProtoReflect.Descriptor instead. func (*UnwrappedCryptoKey) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{64} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{66} } func (x *UnwrappedCryptoKey) GetKey() []byte { @@ -7619,7 +7953,7 @@ type KmsWrappedCryptoKey struct { func (x *KmsWrappedCryptoKey) Reset() { *x = KmsWrappedCryptoKey{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[65] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7632,7 +7966,7 @@ func (x *KmsWrappedCryptoKey) String() string { func (*KmsWrappedCryptoKey) ProtoMessage() {} func (x *KmsWrappedCryptoKey) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[65] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7645,7 +7979,7 @@ func (x *KmsWrappedCryptoKey) ProtoReflect() protoreflect.Message { // Deprecated: Use KmsWrappedCryptoKey.ProtoReflect.Descriptor instead. func (*KmsWrappedCryptoKey) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{65} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{67} } func (x *KmsWrappedCryptoKey) GetWrappedKey() []byte { @@ -7686,6 +8020,7 @@ type DateShiftConfig struct { // set, must also set context. Can only be applied to table items. // // Types that are assignable to Method: + // // *DateShiftConfig_CryptoKey Method isDateShiftConfig_Method `protobuf_oneof:"method"` } @@ -7693,7 +8028,7 @@ type DateShiftConfig struct { func (x *DateShiftConfig) Reset() { *x = DateShiftConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[66] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7706,7 +8041,7 @@ func (x *DateShiftConfig) String() string { func (*DateShiftConfig) ProtoMessage() {} func (x *DateShiftConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[66] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7719,7 +8054,7 @@ func (x *DateShiftConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use DateShiftConfig.ProtoReflect.Descriptor instead. func (*DateShiftConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{66} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{68} } func (x *DateShiftConfig) GetUpperBoundDays() int32 { @@ -7787,7 +8122,7 @@ type InfoTypeTransformations struct { func (x *InfoTypeTransformations) Reset() { *x = InfoTypeTransformations{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[67] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7800,7 +8135,7 @@ func (x *InfoTypeTransformations) String() string { func (*InfoTypeTransformations) ProtoMessage() {} func (x *InfoTypeTransformations) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[67] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7813,7 +8148,7 @@ func (x *InfoTypeTransformations) ProtoReflect() protoreflect.Message { // Deprecated: Use InfoTypeTransformations.ProtoReflect.Descriptor instead. func (*InfoTypeTransformations) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{67} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{69} } func (x *InfoTypeTransformations) GetTransformations() []*InfoTypeTransformations_InfoTypeTransformation { @@ -7847,6 +8182,7 @@ type FieldTransformation struct { // Transformation to apply. [required] // // Types that are assignable to Transformation: + // // *FieldTransformation_PrimitiveTransformation // *FieldTransformation_InfoTypeTransformations Transformation isFieldTransformation_Transformation `protobuf_oneof:"transformation"` @@ -7855,7 +8191,7 @@ type FieldTransformation struct { func (x *FieldTransformation) Reset() { *x = FieldTransformation{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[68] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7868,7 +8204,7 @@ func (x *FieldTransformation) String() string { func (*FieldTransformation) ProtoMessage() {} func (x *FieldTransformation) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[68] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7881,7 +8217,7 @@ func (x *FieldTransformation) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldTransformation.ProtoReflect.Descriptor instead. func (*FieldTransformation) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{68} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{70} } func (x *FieldTransformation) GetFields() []*FieldId { @@ -7955,7 +8291,7 @@ type RecordTransformations struct { func (x *RecordTransformations) Reset() { *x = RecordTransformations{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[69] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7968,7 +8304,7 @@ func (x *RecordTransformations) String() string { func (*RecordTransformations) ProtoMessage() {} func (x *RecordTransformations) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[69] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7981,7 +8317,7 @@ func (x *RecordTransformations) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordTransformations.ProtoReflect.Descriptor instead. func (*RecordTransformations) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{69} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{71} } func (x *RecordTransformations) GetFieldTransformations() []*FieldTransformation { @@ -8013,7 +8349,7 @@ type RecordSuppression struct { func (x *RecordSuppression) Reset() { *x = RecordSuppression{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[70] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8026,7 +8362,7 @@ func (x *RecordSuppression) String() string { func (*RecordSuppression) ProtoMessage() {} func (x *RecordSuppression) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[70] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8039,7 +8375,7 @@ func (x *RecordSuppression) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordSuppression.ProtoReflect.Descriptor instead. func (*RecordSuppression) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{70} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{72} } func (x *RecordSuppression) GetCondition() *RecordCondition { @@ -8063,7 +8399,7 @@ type RecordCondition struct { func (x *RecordCondition) Reset() { *x = RecordCondition{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[71] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8076,7 +8412,7 @@ func (x *RecordCondition) String() string { func (*RecordCondition) ProtoMessage() {} func (x *RecordCondition) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[71] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8089,7 +8425,7 @@ func (x *RecordCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordCondition.ProtoReflect.Descriptor instead. func (*RecordCondition) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{71} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73} } func (x *RecordCondition) GetExpressions() *RecordCondition_Expressions { @@ -8114,7 +8450,7 @@ type TransformationOverview struct { func (x *TransformationOverview) Reset() { *x = TransformationOverview{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[72] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8127,7 +8463,7 @@ func (x *TransformationOverview) String() string { func (*TransformationOverview) ProtoMessage() {} func (x *TransformationOverview) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[72] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8140,7 +8476,7 @@ func (x *TransformationOverview) ProtoReflect() protoreflect.Message { // Deprecated: Use TransformationOverview.ProtoReflect.Descriptor instead. func (*TransformationOverview) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{72} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{74} } func (x *TransformationOverview) GetTransformedBytes() int64 { @@ -8186,7 +8522,7 @@ type TransformationSummary struct { func (x *TransformationSummary) Reset() { *x = TransformationSummary{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[73] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8199,7 +8535,7 @@ func (x *TransformationSummary) String() string { func (*TransformationSummary) ProtoMessage() {} func (x *TransformationSummary) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[73] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8212,7 +8548,7 @@ func (x *TransformationSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use TransformationSummary.ProtoReflect.Descriptor instead. func (*TransformationSummary) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73} + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{75} } func (x *TransformationSummary) GetInfoType() *InfoType { @@ -8264,34 +8600,52 @@ func (x *TransformationSummary) GetTransformedBytes() int64 { return 0 } -// Schedule for inspect job triggers. -type Schedule struct { +// A flattened description of a `PrimitiveTransformation` or +// `RecordSuppression`. +type TransformationDescription struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Option: - // *Schedule_RecurrencePeriodDuration - Option isSchedule_Option `protobuf_oneof:"option"` -} - -func (x *Schedule) Reset() { - *x = Schedule{} + // The transformation type. + Type TransformationType `protobuf:"varint,1,opt,name=type,proto3,enum=google.privacy.dlp.v2.TransformationType" json:"type,omitempty"` + // A description of the transformation. This is empty for a + // RECORD_SUPPRESSION, or is the output of calling toString() on the + // `PrimitiveTransformation` protocol buffer message for any other type of + // transformation. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // A human-readable string representation of the `RecordCondition` + // corresponding to this transformation. Set if a `RecordCondition` was used + // to determine whether or not to apply this transformation. + // + // Examples: + // - (age_field > 85) + // - (age_field <= 18) + // - (zip_field exists) + // - (zip_field == 01234) && (city_field != "Springville") + // - (zip_field == 01234) && (age_field <= 18) && (city_field exists) + Condition string `protobuf:"bytes,3,opt,name=condition,proto3" json:"condition,omitempty"` + // Set if the transformation was limited to a specific `InfoType`. + InfoType *InfoType `protobuf:"bytes,4,opt,name=info_type,json=infoType,proto3" json:"info_type,omitempty"` +} + +func (x *TransformationDescription) Reset() { + *x = TransformationDescription{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[74] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Schedule) String() string { +func (x *TransformationDescription) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Schedule) ProtoMessage() {} +func (*TransformationDescription) ProtoMessage() {} -func (x *Schedule) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[74] +func (x *TransformationDescription) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8302,127 +8656,88 @@ func (x *Schedule) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Schedule.ProtoReflect.Descriptor instead. -func (*Schedule) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{74} +// Deprecated: Use TransformationDescription.ProtoReflect.Descriptor instead. +func (*TransformationDescription) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{76} } -func (m *Schedule) GetOption() isSchedule_Option { - if m != nil { - return m.Option +func (x *TransformationDescription) GetType() TransformationType { + if x != nil { + return x.Type } - return nil + return TransformationType_TRANSFORMATION_TYPE_UNSPECIFIED } -func (x *Schedule) GetRecurrencePeriodDuration() *durationpb.Duration { - if x, ok := x.GetOption().(*Schedule_RecurrencePeriodDuration); ok { - return x.RecurrencePeriodDuration +func (x *TransformationDescription) GetDescription() string { + if x != nil { + return x.Description } - return nil -} - -type isSchedule_Option interface { - isSchedule_Option() -} - -type Schedule_RecurrencePeriodDuration struct { - // With this option a job is started a regular periodic basis. For - // example: every day (86400 seconds). - // - // A scheduled start time will be skipped if the previous - // execution has not ended when its scheduled time occurs. - // - // This value must be set to a time duration greater than or equal - // to 1 day and can be no longer than 60 days. - RecurrencePeriodDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=recurrence_period_duration,json=recurrencePeriodDuration,proto3,oneof"` -} - -func (*Schedule_RecurrencePeriodDuration) isSchedule_Option() {} - -// Job trigger option for hybrid jobs. Jobs must be manually created -// and finished. -type Manual struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + return "" } -func (x *Manual) Reset() { - *x = Manual{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *TransformationDescription) GetCondition() string { + if x != nil { + return x.Condition } + return "" } -func (x *Manual) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Manual) ProtoMessage() {} - -func (x *Manual) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *TransformationDescription) GetInfoType() *InfoType { + if x != nil { + return x.InfoType } - return mi.MessageOf(x) -} - -// Deprecated: Use Manual.ProtoReflect.Descriptor instead. -func (*Manual) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{75} + return nil } -// The inspectTemplate contains a configuration (set of types of sensitive data -// to be detected) to be used anywhere you otherwise would normally specify -// InspectConfig. See https://cloud.google.com/dlp/docs/concepts-templates -// to learn more. -type InspectTemplate struct { +// Details about a single transformation. This object contains a description of +// the transformation, information about whether the transformation was +// successfully applied, and the precise location where the transformation +// occurred. These details are stored in a user-specified BigQuery table. +type TransformationDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Output only. The template name. - // - // The template will have one of the following formats: - // `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR - // `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`; - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Display name (max 256 chars). - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Short description (max 256 chars). - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Output only. The creation timestamp of an inspectTemplate. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. The last update timestamp of an inspectTemplate. - UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // The core content of the template. Configuration of the scanning process. - InspectConfig *InspectConfig `protobuf:"bytes,6,opt,name=inspect_config,json=inspectConfig,proto3" json:"inspect_config,omitempty"` -} - -func (x *InspectTemplate) Reset() { - *x = InspectTemplate{} + // The name of the job that completed the transformation. + ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + // The top level name of the container where the transformation is located + // (this will be the source file name or table name). + ContainerName string `protobuf:"bytes,2,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` + // Description of transformation. This would only contain more than one + // element if there were multiple matching transformations and which one to + // apply was ambiguous. Not set for states that contain no transformation, + // currently only state that contains no transformation is + // TransformationResultStateType.METADATA_UNRETRIEVABLE. + Transformation []*TransformationDescription `protobuf:"bytes,3,rep,name=transformation,proto3" json:"transformation,omitempty"` + // Status of the transformation, if transformation was not successful, this + // will specify what caused it to fail, otherwise it will show that the + // transformation was successful. + StatusDetails *TransformationResultStatus `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"` + // The number of bytes that were transformed. If transformation was + // unsuccessful or did not take place because there was no content to + // transform, this will be zero. + TransformedBytes int64 `protobuf:"varint,5,opt,name=transformed_bytes,json=transformedBytes,proto3" json:"transformed_bytes,omitempty"` + // The precise location of the transformed content in the original container. + TransformationLocation *TransformationLocation `protobuf:"bytes,6,opt,name=transformation_location,json=transformationLocation,proto3" json:"transformation_location,omitempty"` +} + +func (x *TransformationDetails) Reset() { + *x = TransformationDetails{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[76] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InspectTemplate) String() string { +func (x *TransformationDetails) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InspectTemplate) ProtoMessage() {} +func (*TransformationDetails) ProtoMessage() {} -func (x *InspectTemplate) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[76] +func (x *TransformationDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8433,95 +8748,86 @@ func (x *InspectTemplate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InspectTemplate.ProtoReflect.Descriptor instead. -func (*InspectTemplate) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{76} +// Deprecated: Use TransformationDetails.ProtoReflect.Descriptor instead. +func (*TransformationDetails) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{77} } -func (x *InspectTemplate) GetName() string { +func (x *TransformationDetails) GetResourceName() string { if x != nil { - return x.Name + return x.ResourceName } return "" } -func (x *InspectTemplate) GetDisplayName() string { +func (x *TransformationDetails) GetContainerName() string { if x != nil { - return x.DisplayName + return x.ContainerName } return "" } -func (x *InspectTemplate) GetDescription() string { +func (x *TransformationDetails) GetTransformation() []*TransformationDescription { if x != nil { - return x.Description + return x.Transformation } - return "" + return nil } -func (x *InspectTemplate) GetCreateTime() *timestamppb.Timestamp { +func (x *TransformationDetails) GetStatusDetails() *TransformationResultStatus { if x != nil { - return x.CreateTime + return x.StatusDetails } return nil } -func (x *InspectTemplate) GetUpdateTime() *timestamppb.Timestamp { +func (x *TransformationDetails) GetTransformedBytes() int64 { if x != nil { - return x.UpdateTime + return x.TransformedBytes } - return nil + return 0 } -func (x *InspectTemplate) GetInspectConfig() *InspectConfig { +func (x *TransformationDetails) GetTransformationLocation() *TransformationLocation { if x != nil { - return x.InspectConfig + return x.TransformationLocation } return nil } -// DeidentifyTemplates contains instructions on how to de-identify content. -// See https://cloud.google.com/dlp/docs/concepts-templates to learn more. -type DeidentifyTemplate struct { +// Specifies the location of a transformation. +type TransformationLocation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Output only. The template name. + // Types that are assignable to LocationType: // - // The template will have one of the following formats: - // `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR - // `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Display name (max 256 chars). - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Short description (max 256 chars). - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Output only. The creation timestamp of an inspectTemplate. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. The last update timestamp of an inspectTemplate. - UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // The core content of the template. - DeidentifyConfig *DeidentifyConfig `protobuf:"bytes,6,opt,name=deidentify_config,json=deidentifyConfig,proto3" json:"deidentify_config,omitempty"` + // *TransformationLocation_FindingId + // *TransformationLocation_RecordTransformation + LocationType isTransformationLocation_LocationType `protobuf_oneof:"location_type"` + // Information about the functionality of the container where this finding + // occurred, if available. + ContainerType TransformationContainerType `protobuf:"varint,3,opt,name=container_type,json=containerType,proto3,enum=google.privacy.dlp.v2.TransformationContainerType" json:"container_type,omitempty"` } -func (x *DeidentifyTemplate) Reset() { - *x = DeidentifyTemplate{} +func (x *TransformationLocation) Reset() { + *x = TransformationLocation{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[77] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeidentifyTemplate) String() string { +func (x *TransformationLocation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeidentifyTemplate) ProtoMessage() {} +func (*TransformationLocation) ProtoMessage() {} -func (x *DeidentifyTemplate) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[77] +func (x *TransformationLocation) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8532,83 +8838,91 @@ func (x *DeidentifyTemplate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeidentifyTemplate.ProtoReflect.Descriptor instead. -func (*DeidentifyTemplate) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{77} +// Deprecated: Use TransformationLocation.ProtoReflect.Descriptor instead. +func (*TransformationLocation) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{78} } -func (x *DeidentifyTemplate) GetName() string { - if x != nil { - return x.Name +func (m *TransformationLocation) GetLocationType() isTransformationLocation_LocationType { + if m != nil { + return m.LocationType } - return "" + return nil } -func (x *DeidentifyTemplate) GetDisplayName() string { - if x != nil { - return x.DisplayName +func (x *TransformationLocation) GetFindingId() string { + if x, ok := x.GetLocationType().(*TransformationLocation_FindingId); ok { + return x.FindingId } return "" } -func (x *DeidentifyTemplate) GetDescription() string { - if x != nil { - return x.Description +func (x *TransformationLocation) GetRecordTransformation() *RecordTransformation { + if x, ok := x.GetLocationType().(*TransformationLocation_RecordTransformation); ok { + return x.RecordTransformation } - return "" + return nil } -func (x *DeidentifyTemplate) GetCreateTime() *timestamppb.Timestamp { +func (x *TransformationLocation) GetContainerType() TransformationContainerType { if x != nil { - return x.CreateTime + return x.ContainerType } - return nil + return TransformationContainerType_TRANSFORM_UNKNOWN_CONTAINER } -func (x *DeidentifyTemplate) GetUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.UpdateTime - } - return nil +type isTransformationLocation_LocationType interface { + isTransformationLocation_LocationType() } -func (x *DeidentifyTemplate) GetDeidentifyConfig() *DeidentifyConfig { - if x != nil { - return x.DeidentifyConfig - } - return nil +type TransformationLocation_FindingId struct { + // For infotype transformations, link to the corresponding findings ID so + // that location information does not need to be duplicated. Each findings + // ID correlates to an entry in the findings output table, this table only + // gets created when users specify to save findings (add the save findings + // action to the request). + FindingId string `protobuf:"bytes,1,opt,name=finding_id,json=findingId,proto3,oneof"` } -// Details information about an error encountered during job execution or -// the results of an unsuccessful activation of the JobTrigger. -type Error struct { +type TransformationLocation_RecordTransformation struct { + // For record transformations, provide a field and container information. + RecordTransformation *RecordTransformation `protobuf:"bytes,2,opt,name=record_transformation,json=recordTransformation,proto3,oneof"` +} + +func (*TransformationLocation_FindingId) isTransformationLocation_LocationType() {} + +func (*TransformationLocation_RecordTransformation) isTransformationLocation_LocationType() {} + +type RecordTransformation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Detailed error codes and messages. - Details *status.Status `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` - // The times the error occurred. - Timestamps []*timestamppb.Timestamp `protobuf:"bytes,2,rep,name=timestamps,proto3" json:"timestamps,omitempty"` + // For record transformations, provide a field. + FieldId *FieldId `protobuf:"bytes,1,opt,name=field_id,json=fieldId,proto3" json:"field_id,omitempty"` + // Findings container modification timestamp, if applicable. + ContainerTimestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=container_timestamp,json=containerTimestamp,proto3" json:"container_timestamp,omitempty"` + // Container version, if available ("generation" for Cloud Storage). + ContainerVersion string `protobuf:"bytes,3,opt,name=container_version,json=containerVersion,proto3" json:"container_version,omitempty"` } -func (x *Error) Reset() { - *x = Error{} +func (x *RecordTransformation) Reset() { + *x = RecordTransformation{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[78] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Error) String() string { +func (x *RecordTransformation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Error) ProtoMessage() {} +func (*RecordTransformation) ProtoMessage() {} -func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[78] +func (x *RecordTransformation) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8619,81 +8933,61 @@ func (x *Error) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Error.ProtoReflect.Descriptor instead. -func (*Error) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{78} +// Deprecated: Use RecordTransformation.ProtoReflect.Descriptor instead. +func (*RecordTransformation) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{79} } -func (x *Error) GetDetails() *status.Status { +func (x *RecordTransformation) GetFieldId() *FieldId { if x != nil { - return x.Details + return x.FieldId } return nil } -func (x *Error) GetTimestamps() []*timestamppb.Timestamp { +func (x *RecordTransformation) GetContainerTimestamp() *timestamppb.Timestamp { if x != nil { - return x.Timestamps + return x.ContainerTimestamp } return nil } -// Contains a configuration to make dlp api calls on a repeating basis. -// See https://cloud.google.com/dlp/docs/concepts-job-triggers to learn more. -type JobTrigger struct { +func (x *RecordTransformation) GetContainerVersion() string { + if x != nil { + return x.ContainerVersion + } + return "" +} + +type TransformationResultStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Unique resource name for the triggeredJob, assigned by the service when the - // triggeredJob is created, for example - // `projects/dlp-test-project/jobTriggers/53234423`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Display name (max 100 chars) - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // User provided description (max 256 chars) - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // The configuration details for the specific type of job to run. - // - // Types that are assignable to Job: - // *JobTrigger_InspectJob - Job isJobTrigger_Job `protobuf_oneof:"job"` - // A list of triggers which will be OR'ed together. Only one in the list - // needs to trigger for a job to be started. The list may contain only - // a single Schedule trigger and must have at least one object. - Triggers []*JobTrigger_Trigger `protobuf:"bytes,5,rep,name=triggers,proto3" json:"triggers,omitempty"` - // Output only. A stream of errors encountered when the trigger was activated. Repeated - // errors may result in the JobTrigger automatically being paused. - // Will return the last 100 errors. Whenever the JobTrigger is modified - // this list will be cleared. - Errors []*Error `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors,omitempty"` - // Output only. The creation timestamp of a triggeredJob. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. The last update timestamp of a triggeredJob. - UpdateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // Output only. The timestamp of the last time this trigger executed. - LastRunTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_run_time,json=lastRunTime,proto3" json:"last_run_time,omitempty"` - // Required. A status for this trigger. - Status JobTrigger_Status `protobuf:"varint,10,opt,name=status,proto3,enum=google.privacy.dlp.v2.JobTrigger_Status" json:"status,omitempty"` + // Transformation result status type, this will be either SUCCESS, or it will + // be the reason for why the transformation was not completely successful. + ResultStatusType TransformationResultStatusType `protobuf:"varint,1,opt,name=result_status_type,json=resultStatusType,proto3,enum=google.privacy.dlp.v2.TransformationResultStatusType" json:"result_status_type,omitempty"` + // Detailed error codes and messages + Details *status.Status `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` } -func (x *JobTrigger) Reset() { - *x = JobTrigger{} +func (x *TransformationResultStatus) Reset() { + *x = TransformationResultStatus{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[79] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *JobTrigger) String() string { +func (x *TransformationResultStatus) String() string { return protoimpl.X.MessageStringOf(x) } -func (*JobTrigger) ProtoMessage() {} +func (*TransformationResultStatus) ProtoMessage() {} -func (x *JobTrigger) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[79] +func (x *TransformationResultStatus) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8704,133 +8998,130 @@ func (x *JobTrigger) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use JobTrigger.ProtoReflect.Descriptor instead. -func (*JobTrigger) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{79} +// Deprecated: Use TransformationResultStatus.ProtoReflect.Descriptor instead. +func (*TransformationResultStatus) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80} } -func (x *JobTrigger) GetName() string { +func (x *TransformationResultStatus) GetResultStatusType() TransformationResultStatusType { if x != nil { - return x.Name + return x.ResultStatusType } - return "" + return TransformationResultStatusType_STATE_TYPE_UNSPECIFIED } -func (x *JobTrigger) GetDisplayName() string { +func (x *TransformationResultStatus) GetDetails() *status.Status { if x != nil { - return x.DisplayName + return x.Details } - return "" + return nil } -func (x *JobTrigger) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} +// Config for storing transformation details. +type TransformationDetailsStorageConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *JobTrigger) GetJob() isJobTrigger_Job { - if m != nil { - return m.Job - } - return nil + // Location to store the transformation summary. + // + // Types that are assignable to Type: + // + // *TransformationDetailsStorageConfig_Table + Type isTransformationDetailsStorageConfig_Type `protobuf_oneof:"type"` } -func (x *JobTrigger) GetInspectJob() *InspectJobConfig { - if x, ok := x.GetJob().(*JobTrigger_InspectJob); ok { - return x.InspectJob +func (x *TransformationDetailsStorageConfig) Reset() { + *x = TransformationDetailsStorageConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *JobTrigger) GetTriggers() []*JobTrigger_Trigger { - if x != nil { - return x.Triggers - } - return nil +func (x *TransformationDetailsStorageConfig) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *JobTrigger) GetErrors() []*Error { - if x != nil { - return x.Errors - } - return nil -} +func (*TransformationDetailsStorageConfig) ProtoMessage() {} -func (x *JobTrigger) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime +func (x *TransformationDetailsStorageConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[81] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *JobTrigger) GetUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.UpdateTime - } - return nil +// Deprecated: Use TransformationDetailsStorageConfig.ProtoReflect.Descriptor instead. +func (*TransformationDetailsStorageConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{81} } -func (x *JobTrigger) GetLastRunTime() *timestamppb.Timestamp { - if x != nil { - return x.LastRunTime +func (m *TransformationDetailsStorageConfig) GetType() isTransformationDetailsStorageConfig_Type { + if m != nil { + return m.Type } return nil } -func (x *JobTrigger) GetStatus() JobTrigger_Status { - if x != nil { - return x.Status +func (x *TransformationDetailsStorageConfig) GetTable() *BigQueryTable { + if x, ok := x.GetType().(*TransformationDetailsStorageConfig_Table); ok { + return x.Table } - return JobTrigger_STATUS_UNSPECIFIED + return nil } -type isJobTrigger_Job interface { - isJobTrigger_Job() +type isTransformationDetailsStorageConfig_Type interface { + isTransformationDetailsStorageConfig_Type() } -type JobTrigger_InspectJob struct { - // For inspect jobs, a snapshot of the configuration. - InspectJob *InspectJobConfig `protobuf:"bytes,4,opt,name=inspect_job,json=inspectJob,proto3,oneof"` +type TransformationDetailsStorageConfig_Table struct { + // The BigQuery table in which to store the output. This may be an existing + // table or in a new table in an existing dataset. + // If table_id is not set a new one will be generated for you with the + // following format: + // dlp_googleapis_transformation_details_yyyy_mm_dd_[dlp_job_id]. Pacific + // time zone will be used for generating the date details. + Table *BigQueryTable `protobuf:"bytes,1,opt,name=table,proto3,oneof"` } -func (*JobTrigger_InspectJob) isJobTrigger_Job() {} +func (*TransformationDetailsStorageConfig_Table) isTransformationDetailsStorageConfig_Type() {} -// A task to execute on the completion of a job. -// See https://cloud.google.com/dlp/docs/concepts-actions to learn more. -type Action struct { +// Schedule for inspect job triggers. +type Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Action: - // *Action_SaveFindings_ - // *Action_PubSub - // *Action_PublishSummaryToCscc_ - // *Action_PublishFindingsToCloudDataCatalog_ - // *Action_JobNotificationEmails_ - // *Action_PublishToStackdriver_ - Action isAction_Action `protobuf_oneof:"action"` + // Types that are assignable to Option: + // + // *Schedule_RecurrencePeriodDuration + Option isSchedule_Option `protobuf_oneof:"option"` } -func (x *Action) Reset() { - *x = Action{} +func (x *Schedule) Reset() { + *x = Schedule{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[80] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Action) String() string { +func (x *Schedule) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action) ProtoMessage() {} +func (*Schedule) ProtoMessage() {} -func (x *Action) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[80] +func (x *Schedule) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8841,162 +9132,127 @@ func (x *Action) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action.ProtoReflect.Descriptor instead. -func (*Action) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80} +// Deprecated: Use Schedule.ProtoReflect.Descriptor instead. +func (*Schedule) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{82} } -func (m *Action) GetAction() isAction_Action { +func (m *Schedule) GetOption() isSchedule_Option { if m != nil { - return m.Action - } - return nil -} - -func (x *Action) GetSaveFindings() *Action_SaveFindings { - if x, ok := x.GetAction().(*Action_SaveFindings_); ok { - return x.SaveFindings + return m.Option } return nil } -func (x *Action) GetPubSub() *Action_PublishToPubSub { - if x, ok := x.GetAction().(*Action_PubSub); ok { - return x.PubSub +func (x *Schedule) GetRecurrencePeriodDuration() *durationpb.Duration { + if x, ok := x.GetOption().(*Schedule_RecurrencePeriodDuration); ok { + return x.RecurrencePeriodDuration } return nil } -func (x *Action) GetPublishSummaryToCscc() *Action_PublishSummaryToCscc { - if x, ok := x.GetAction().(*Action_PublishSummaryToCscc_); ok { - return x.PublishSummaryToCscc - } - return nil +type isSchedule_Option interface { + isSchedule_Option() } -func (x *Action) GetPublishFindingsToCloudDataCatalog() *Action_PublishFindingsToCloudDataCatalog { - if x, ok := x.GetAction().(*Action_PublishFindingsToCloudDataCatalog_); ok { - return x.PublishFindingsToCloudDataCatalog - } - return nil -} - -func (x *Action) GetJobNotificationEmails() *Action_JobNotificationEmails { - if x, ok := x.GetAction().(*Action_JobNotificationEmails_); ok { - return x.JobNotificationEmails - } - return nil -} - -func (x *Action) GetPublishToStackdriver() *Action_PublishToStackdriver { - if x, ok := x.GetAction().(*Action_PublishToStackdriver_); ok { - return x.PublishToStackdriver - } - return nil +type Schedule_RecurrencePeriodDuration struct { + // With this option a job is started on a regular periodic basis. For + // example: every day (86400 seconds). + // + // A scheduled start time will be skipped if the previous + // execution has not ended when its scheduled time occurs. + // + // This value must be set to a time duration greater than or equal + // to 1 day and can be no longer than 60 days. + RecurrencePeriodDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=recurrence_period_duration,json=recurrencePeriodDuration,proto3,oneof"` } -type isAction_Action interface { - isAction_Action() -} +func (*Schedule_RecurrencePeriodDuration) isSchedule_Option() {} -type Action_SaveFindings_ struct { - // Save resulting findings in a provided location. - SaveFindings *Action_SaveFindings `protobuf:"bytes,1,opt,name=save_findings,json=saveFindings,proto3,oneof"` +// Job trigger option for hybrid jobs. Jobs must be manually created +// and finished. +type Manual struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -type Action_PubSub struct { - // Publish a notification to a pubsub topic. - PubSub *Action_PublishToPubSub `protobuf:"bytes,2,opt,name=pub_sub,json=pubSub,proto3,oneof"` +func (x *Manual) Reset() { + *x = Manual{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -type Action_PublishSummaryToCscc_ struct { - // Publish summary to Cloud Security Command Center (Alpha). - PublishSummaryToCscc *Action_PublishSummaryToCscc `protobuf:"bytes,3,opt,name=publish_summary_to_cscc,json=publishSummaryToCscc,proto3,oneof"` +func (x *Manual) String() string { + return protoimpl.X.MessageStringOf(x) } -type Action_PublishFindingsToCloudDataCatalog_ struct { - // Publish findings to Cloud Datahub. - PublishFindingsToCloudDataCatalog *Action_PublishFindingsToCloudDataCatalog `protobuf:"bytes,5,opt,name=publish_findings_to_cloud_data_catalog,json=publishFindingsToCloudDataCatalog,proto3,oneof"` -} +func (*Manual) ProtoMessage() {} -type Action_JobNotificationEmails_ struct { - // Enable email notification for project owners and editors on job's - // completion/failure. - JobNotificationEmails *Action_JobNotificationEmails `protobuf:"bytes,8,opt,name=job_notification_emails,json=jobNotificationEmails,proto3,oneof"` +func (x *Manual) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[83] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type Action_PublishToStackdriver_ struct { - // Enable Stackdriver metric dlp.googleapis.com/finding_count. - PublishToStackdriver *Action_PublishToStackdriver `protobuf:"bytes,9,opt,name=publish_to_stackdriver,json=publishToStackdriver,proto3,oneof"` +// Deprecated: Use Manual.ProtoReflect.Descriptor instead. +func (*Manual) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{83} } -func (*Action_SaveFindings_) isAction_Action() {} - -func (*Action_PubSub) isAction_Action() {} - -func (*Action_PublishSummaryToCscc_) isAction_Action() {} - -func (*Action_PublishFindingsToCloudDataCatalog_) isAction_Action() {} - -func (*Action_JobNotificationEmails_) isAction_Action() {} - -func (*Action_PublishToStackdriver_) isAction_Action() {} - -// Request message for CreateInspectTemplate. -type CreateInspectTemplateRequest struct { +// The inspectTemplate contains a configuration (set of types of sensitive data +// to be detected) to be used anywhere you otherwise would normally specify +// InspectConfig. See https://cloud.google.com/dlp/docs/concepts-templates +// to learn more. +type InspectTemplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Parent resource name. - // - // The format of this value varies depending on the scope of the request - // (project or organization) and whether you have [specified a processing - // location](https://cloud.google.com/dlp/docs/specifying-location): - // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // + Organizations scope, location specified:
- // `organizations/`ORG_ID`/locations/`LOCATION_ID - // + Organizations scope, no location specified (defaults to global):
- // `organizations/`ORG_ID - // - // The following example `parent` string specifies a parent project with the - // identifier `example-project`, and specifies the `europe-west3` location - // for processing data: + // Output only. The template name. // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. The InspectTemplate to create. - InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate,proto3" json:"inspect_template,omitempty"` - // The template id can contain uppercase and lowercase letters, - // numbers, and hyphens; that is, it must match the regular - // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 - // characters. Can be empty to allow the system to generate one. - TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + // The template will have one of the following formats: + // `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR + // `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`; + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Display name (max 256 chars). + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Short description (max 256 chars). + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The creation timestamp of an inspectTemplate. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The last update timestamp of an inspectTemplate. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // The core content of the template. Configuration of the scanning process. + InspectConfig *InspectConfig `protobuf:"bytes,6,opt,name=inspect_config,json=inspectConfig,proto3" json:"inspect_config,omitempty"` } -func (x *CreateInspectTemplateRequest) Reset() { - *x = CreateInspectTemplateRequest{} +func (x *InspectTemplate) Reset() { + *x = InspectTemplate{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[81] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateInspectTemplateRequest) String() string { +func (x *InspectTemplate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateInspectTemplateRequest) ProtoMessage() {} +func (*InspectTemplate) ProtoMessage() {} -func (x *CreateInspectTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[81] +func (x *InspectTemplate) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9007,72 +9263,95 @@ func (x *CreateInspectTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateInspectTemplateRequest.ProtoReflect.Descriptor instead. -func (*CreateInspectTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{81} +// Deprecated: Use InspectTemplate.ProtoReflect.Descriptor instead. +func (*InspectTemplate) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{84} } -func (x *CreateInspectTemplateRequest) GetParent() string { +func (x *InspectTemplate) GetName() string { if x != nil { - return x.Parent + return x.Name } return "" } -func (x *CreateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { +func (x *InspectTemplate) GetDisplayName() string { if x != nil { - return x.InspectTemplate + return x.DisplayName } - return nil + return "" } -func (x *CreateInspectTemplateRequest) GetTemplateId() string { +func (x *InspectTemplate) GetDescription() string { if x != nil { - return x.TemplateId + return x.Description } return "" } -func (x *CreateInspectTemplateRequest) GetLocationId() string { +func (x *InspectTemplate) GetCreateTime() *timestamppb.Timestamp { if x != nil { - return x.LocationId + return x.CreateTime } - return "" + return nil } -// Request message for UpdateInspectTemplate. -type UpdateInspectTemplateRequest struct { +func (x *InspectTemplate) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *InspectTemplate) GetInspectConfig() *InspectConfig { + if x != nil { + return x.InspectConfig + } + return nil +} + +// DeidentifyTemplates contains instructions on how to de-identify content. +// See https://cloud.google.com/dlp/docs/concepts-templates to learn more. +type DeidentifyTemplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of organization and inspectTemplate to be updated, for - // example `organizations/433245324/inspectTemplates/432452342` or - // projects/project-id/inspectTemplates/432452342. + // Output only. The template name. + // + // The template will have one of the following formats: + // `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR + // `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // New InspectTemplate value. - InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate,proto3" json:"inspect_template,omitempty"` - // Mask to control which fields get updated. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + // Display name (max 256 chars). + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Short description (max 256 chars). + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The creation timestamp of an inspectTemplate. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The last update timestamp of an inspectTemplate. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // The core content of the template. + DeidentifyConfig *DeidentifyConfig `protobuf:"bytes,6,opt,name=deidentify_config,json=deidentifyConfig,proto3" json:"deidentify_config,omitempty"` } -func (x *UpdateInspectTemplateRequest) Reset() { - *x = UpdateInspectTemplateRequest{} +func (x *DeidentifyTemplate) Reset() { + *x = DeidentifyTemplate{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[82] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateInspectTemplateRequest) String() string { +func (x *DeidentifyTemplate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateInspectTemplateRequest) ProtoMessage() {} +func (*DeidentifyTemplate) ProtoMessage() {} -func (x *UpdateInspectTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[82] +func (x *DeidentifyTemplate) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9083,61 +9362,83 @@ func (x *UpdateInspectTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateInspectTemplateRequest.ProtoReflect.Descriptor instead. -func (*UpdateInspectTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{82} +// Deprecated: Use DeidentifyTemplate.ProtoReflect.Descriptor instead. +func (*DeidentifyTemplate) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{85} } -func (x *UpdateInspectTemplateRequest) GetName() string { +func (x *DeidentifyTemplate) GetName() string { if x != nil { return x.Name } return "" } -func (x *UpdateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { +func (x *DeidentifyTemplate) GetDisplayName() string { if x != nil { - return x.InspectTemplate + return x.DisplayName } - return nil + return "" } -func (x *UpdateInspectTemplateRequest) GetUpdateMask() *fieldmaskpb.FieldMask { +func (x *DeidentifyTemplate) GetDescription() string { if x != nil { - return x.UpdateMask + return x.Description + } + return "" +} + +func (x *DeidentifyTemplate) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime } return nil } -// Request message for GetInspectTemplate. -type GetInspectTemplateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *DeidentifyTemplate) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *DeidentifyTemplate) GetDeidentifyConfig() *DeidentifyConfig { + if x != nil { + return x.DeidentifyConfig + } + return nil +} + +// Details information about an error encountered during job execution or +// the results of an unsuccessful activation of the JobTrigger. +type Error struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the organization and inspectTemplate to be read, for - // example `organizations/433245324/inspectTemplates/432452342` or - // projects/project-id/inspectTemplates/432452342. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Detailed error codes and messages. + Details *status.Status `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + // The times the error occurred. + Timestamps []*timestamppb.Timestamp `protobuf:"bytes,2,rep,name=timestamps,proto3" json:"timestamps,omitempty"` } -func (x *GetInspectTemplateRequest) Reset() { - *x = GetInspectTemplateRequest{} +func (x *Error) Reset() { + *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[83] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetInspectTemplateRequest) String() string { +func (x *Error) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetInspectTemplateRequest) ProtoMessage() {} +func (*Error) ProtoMessage() {} -func (x *GetInspectTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[83] +func (x *Error) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9148,86 +9449,82 @@ func (x *GetInspectTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetInspectTemplateRequest.ProtoReflect.Descriptor instead. -func (*GetInspectTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{83} +// Deprecated: Use Error.ProtoReflect.Descriptor instead. +func (*Error) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{86} } -func (x *GetInspectTemplateRequest) GetName() string { +func (x *Error) GetDetails() *status.Status { if x != nil { - return x.Name + return x.Details } - return "" + return nil } -// Request message for ListInspectTemplates. -type ListInspectTemplatesRequest struct { +func (x *Error) GetTimestamps() []*timestamppb.Timestamp { + if x != nil { + return x.Timestamps + } + return nil +} + +// Contains a configuration to make dlp api calls on a repeating basis. +// See https://cloud.google.com/dlp/docs/concepts-job-triggers to learn more. +type JobTrigger struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Parent resource name. - // - // The format of this value varies depending on the scope of the request - // (project or organization) and whether you have [specified a processing - // location](https://cloud.google.com/dlp/docs/specifying-location): - // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // + Organizations scope, location specified:
- // `organizations/`ORG_ID`/locations/`LOCATION_ID - // + Organizations scope, no location specified (defaults to global):
- // `organizations/`ORG_ID - // - // The following example `parent` string specifies a parent project with the - // identifier `example-project`, and specifies the `europe-west3` location - // for processing data: - // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Page token to continue retrieval. Comes from previous call - // to `ListInspectTemplates`. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Size of the page, can be limited by server. If zero server returns - // a page of max size 100. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Comma separated list of fields to order by, - // followed by `asc` or `desc` postfix. This list is case-insensitive, - // default sorting order is ascending, redundant space characters are - // insignificant. - // - // Example: `name asc,update_time, create_time desc` + // Unique resource name for the triggeredJob, assigned by the service when the + // triggeredJob is created, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Display name (max 100 chars) + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // User provided description (max 256 chars) + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // The configuration details for the specific type of job to run. // - // Supported fields are: + // Types that are assignable to Job: // - // - `create_time`: corresponds to time the template was created. - // - `update_time`: corresponds to time the template was last updated. - // - `name`: corresponds to template's name. - // - `display_name`: corresponds to template's display name. - OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + // *JobTrigger_InspectJob + Job isJobTrigger_Job `protobuf_oneof:"job"` + // A list of triggers which will be OR'ed together. Only one in the list + // needs to trigger for a job to be started. The list may contain only + // a single Schedule trigger and must have at least one object. + Triggers []*JobTrigger_Trigger `protobuf:"bytes,5,rep,name=triggers,proto3" json:"triggers,omitempty"` + // Output only. A stream of errors encountered when the trigger was activated. Repeated + // errors may result in the JobTrigger automatically being paused. + // Will return the last 100 errors. Whenever the JobTrigger is modified + // this list will be cleared. + Errors []*Error `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors,omitempty"` + // Output only. The creation timestamp of a triggeredJob. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The last update timestamp of a triggeredJob. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Output only. The timestamp of the last time this trigger executed. + LastRunTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_run_time,json=lastRunTime,proto3" json:"last_run_time,omitempty"` + // Required. A status for this trigger. + Status JobTrigger_Status `protobuf:"varint,10,opt,name=status,proto3,enum=google.privacy.dlp.v2.JobTrigger_Status" json:"status,omitempty"` } -func (x *ListInspectTemplatesRequest) Reset() { - *x = ListInspectTemplatesRequest{} +func (x *JobTrigger) Reset() { + *x = JobTrigger{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[84] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListInspectTemplatesRequest) String() string { +func (x *JobTrigger) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListInspectTemplatesRequest) ProtoMessage() {} +func (*JobTrigger) ProtoMessage() {} -func (x *ListInspectTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[84] +func (x *JobTrigger) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9238,76 +9535,135 @@ func (x *ListInspectTemplatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListInspectTemplatesRequest.ProtoReflect.Descriptor instead. -func (*ListInspectTemplatesRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{84} +// Deprecated: Use JobTrigger.ProtoReflect.Descriptor instead. +func (*JobTrigger) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{87} } -func (x *ListInspectTemplatesRequest) GetParent() string { +func (x *JobTrigger) GetName() string { if x != nil { - return x.Parent + return x.Name } return "" } -func (x *ListInspectTemplatesRequest) GetPageToken() string { +func (x *JobTrigger) GetDisplayName() string { if x != nil { - return x.PageToken + return x.DisplayName } return "" } -func (x *ListInspectTemplatesRequest) GetPageSize() int32 { +func (x *JobTrigger) GetDescription() string { if x != nil { - return x.PageSize + return x.Description } - return 0 + return "" } -func (x *ListInspectTemplatesRequest) GetOrderBy() string { +func (m *JobTrigger) GetJob() isJobTrigger_Job { + if m != nil { + return m.Job + } + return nil +} + +func (x *JobTrigger) GetInspectJob() *InspectJobConfig { + if x, ok := x.GetJob().(*JobTrigger_InspectJob); ok { + return x.InspectJob + } + return nil +} + +func (x *JobTrigger) GetTriggers() []*JobTrigger_Trigger { if x != nil { - return x.OrderBy + return x.Triggers } - return "" + return nil } -func (x *ListInspectTemplatesRequest) GetLocationId() string { +func (x *JobTrigger) GetErrors() []*Error { if x != nil { - return x.LocationId + return x.Errors } - return "" + return nil } -// Response message for ListInspectTemplates. -type ListInspectTemplatesResponse struct { +func (x *JobTrigger) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *JobTrigger) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *JobTrigger) GetLastRunTime() *timestamppb.Timestamp { + if x != nil { + return x.LastRunTime + } + return nil +} + +func (x *JobTrigger) GetStatus() JobTrigger_Status { + if x != nil { + return x.Status + } + return JobTrigger_STATUS_UNSPECIFIED +} + +type isJobTrigger_Job interface { + isJobTrigger_Job() +} + +type JobTrigger_InspectJob struct { + // For inspect jobs, a snapshot of the configuration. + InspectJob *InspectJobConfig `protobuf:"bytes,4,opt,name=inspect_job,json=inspectJob,proto3,oneof"` +} + +func (*JobTrigger_InspectJob) isJobTrigger_Job() {} + +// A task to execute on the completion of a job. +// See https://cloud.google.com/dlp/docs/concepts-actions to learn more. +type Action struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of inspectTemplates, up to page_size in ListInspectTemplatesRequest. - InspectTemplates []*InspectTemplate `protobuf:"bytes,1,rep,name=inspect_templates,json=inspectTemplates,proto3" json:"inspect_templates,omitempty"` - // If the next page is available then the next page token to be used - // in following ListInspectTemplates request. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Types that are assignable to Action: + // + // *Action_SaveFindings_ + // *Action_PubSub + // *Action_PublishSummaryToCscc_ + // *Action_PublishFindingsToCloudDataCatalog_ + // *Action_Deidentify_ + // *Action_JobNotificationEmails_ + // *Action_PublishToStackdriver_ + Action isAction_Action `protobuf_oneof:"action"` } -func (x *ListInspectTemplatesResponse) Reset() { - *x = ListInspectTemplatesResponse{} +func (x *Action) Reset() { + *x = Action{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[85] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListInspectTemplatesResponse) String() string { +func (x *Action) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListInspectTemplatesResponse) ProtoMessage() {} +func (*Action) ProtoMessage() {} -func (x *ListInspectTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[85] +func (x *Action) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9318,54 +9674,168 @@ func (x *ListInspectTemplatesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListInspectTemplatesResponse.ProtoReflect.Descriptor instead. -func (*ListInspectTemplatesResponse) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{85} +// Deprecated: Use Action.ProtoReflect.Descriptor instead. +func (*Action) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88} } -func (x *ListInspectTemplatesResponse) GetInspectTemplates() []*InspectTemplate { - if x != nil { - return x.InspectTemplates +func (m *Action) GetAction() isAction_Action { + if m != nil { + return m.Action } return nil } -func (x *ListInspectTemplatesResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken +func (x *Action) GetSaveFindings() *Action_SaveFindings { + if x, ok := x.GetAction().(*Action_SaveFindings_); ok { + return x.SaveFindings } - return "" + return nil } -// Request message for DeleteInspectTemplate. -type DeleteInspectTemplateRequest struct { +func (x *Action) GetPubSub() *Action_PublishToPubSub { + if x, ok := x.GetAction().(*Action_PubSub); ok { + return x.PubSub + } + return nil +} + +func (x *Action) GetPublishSummaryToCscc() *Action_PublishSummaryToCscc { + if x, ok := x.GetAction().(*Action_PublishSummaryToCscc_); ok { + return x.PublishSummaryToCscc + } + return nil +} + +func (x *Action) GetPublishFindingsToCloudDataCatalog() *Action_PublishFindingsToCloudDataCatalog { + if x, ok := x.GetAction().(*Action_PublishFindingsToCloudDataCatalog_); ok { + return x.PublishFindingsToCloudDataCatalog + } + return nil +} + +func (x *Action) GetDeidentify() *Action_Deidentify { + if x, ok := x.GetAction().(*Action_Deidentify_); ok { + return x.Deidentify + } + return nil +} + +func (x *Action) GetJobNotificationEmails() *Action_JobNotificationEmails { + if x, ok := x.GetAction().(*Action_JobNotificationEmails_); ok { + return x.JobNotificationEmails + } + return nil +} + +func (x *Action) GetPublishToStackdriver() *Action_PublishToStackdriver { + if x, ok := x.GetAction().(*Action_PublishToStackdriver_); ok { + return x.PublishToStackdriver + } + return nil +} + +type isAction_Action interface { + isAction_Action() +} + +type Action_SaveFindings_ struct { + // Save resulting findings in a provided location. + SaveFindings *Action_SaveFindings `protobuf:"bytes,1,opt,name=save_findings,json=saveFindings,proto3,oneof"` +} + +type Action_PubSub struct { + // Publish a notification to a Pub/Sub topic. + PubSub *Action_PublishToPubSub `protobuf:"bytes,2,opt,name=pub_sub,json=pubSub,proto3,oneof"` +} + +type Action_PublishSummaryToCscc_ struct { + // Publish summary to Cloud Security Command Center (Alpha). + PublishSummaryToCscc *Action_PublishSummaryToCscc `protobuf:"bytes,3,opt,name=publish_summary_to_cscc,json=publishSummaryToCscc,proto3,oneof"` +} + +type Action_PublishFindingsToCloudDataCatalog_ struct { + // Publish findings to Cloud Datahub. + PublishFindingsToCloudDataCatalog *Action_PublishFindingsToCloudDataCatalog `protobuf:"bytes,5,opt,name=publish_findings_to_cloud_data_catalog,json=publishFindingsToCloudDataCatalog,proto3,oneof"` +} + +type Action_Deidentify_ struct { + // Create a de-identified copy of the input data. + Deidentify *Action_Deidentify `protobuf:"bytes,7,opt,name=deidentify,proto3,oneof"` +} + +type Action_JobNotificationEmails_ struct { + // Enable email notification for project owners and editors on job's + // completion/failure. + JobNotificationEmails *Action_JobNotificationEmails `protobuf:"bytes,8,opt,name=job_notification_emails,json=jobNotificationEmails,proto3,oneof"` +} + +type Action_PublishToStackdriver_ struct { + // Enable Stackdriver metric dlp.googleapis.com/finding_count. + PublishToStackdriver *Action_PublishToStackdriver `protobuf:"bytes,9,opt,name=publish_to_stackdriver,json=publishToStackdriver,proto3,oneof"` +} + +func (*Action_SaveFindings_) isAction_Action() {} + +func (*Action_PubSub) isAction_Action() {} + +func (*Action_PublishSummaryToCscc_) isAction_Action() {} + +func (*Action_PublishFindingsToCloudDataCatalog_) isAction_Action() {} + +func (*Action_Deidentify_) isAction_Action() {} + +func (*Action_JobNotificationEmails_) isAction_Action() {} + +func (*Action_PublishToStackdriver_) isAction_Action() {} + +// User specified templates and configs for how to deidentify structured, +// unstructures, and image files. User must provide either a unstructured +// deidentify template or at least one redact image config. +type TransformationConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the organization and inspectTemplate to be deleted, for - // example `organizations/433245324/inspectTemplates/432452342` or - // projects/project-id/inspectTemplates/432452342. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *DeleteInspectTemplateRequest) Reset() { - *x = DeleteInspectTemplateRequest{} + // De-identify template. + // If this template is specified, it will serve as the default de-identify + // template. This template cannot contain `record_transformations` since it + // can be used for unstructured content such as free-form text files. If this + // template is not set, a default `ReplaceWithInfoTypeConfig` will be used to + // de-identify unstructured content. + DeidentifyTemplate string `protobuf:"bytes,1,opt,name=deidentify_template,json=deidentifyTemplate,proto3" json:"deidentify_template,omitempty"` + // Structured de-identify template. + // If this template is specified, it will serve as the de-identify template + // for structured content such as delimited files and tables. If this template + // is not set but the `deidentify_template` is set, then `deidentify_template` + // will also apply to the structured content. If neither template is set, a + // default `ReplaceWithInfoTypeConfig` will be used to de-identify structured + // content. + StructuredDeidentifyTemplate string `protobuf:"bytes,2,opt,name=structured_deidentify_template,json=structuredDeidentifyTemplate,proto3" json:"structured_deidentify_template,omitempty"` + // Image redact template. + // If this template is specified, it will serve as the de-identify template + // for images. If this template is not set, all findings in the image will be + // redacted with a black box. + ImageRedactTemplate string `protobuf:"bytes,4,opt,name=image_redact_template,json=imageRedactTemplate,proto3" json:"image_redact_template,omitempty"` +} + +func (x *TransformationConfig) Reset() { + *x = TransformationConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[86] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteInspectTemplateRequest) String() string { +func (x *TransformationConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteInspectTemplateRequest) ProtoMessage() {} +func (*TransformationConfig) ProtoMessage() {} -func (x *DeleteInspectTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[86] +func (x *TransformationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9376,69 +9846,87 @@ func (x *DeleteInspectTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteInspectTemplateRequest.ProtoReflect.Descriptor instead. -func (*DeleteInspectTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{86} +// Deprecated: Use TransformationConfig.ProtoReflect.Descriptor instead. +func (*TransformationConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{89} } -func (x *DeleteInspectTemplateRequest) GetName() string { +func (x *TransformationConfig) GetDeidentifyTemplate() string { if x != nil { - return x.Name + return x.DeidentifyTemplate } return "" } -// Request message for CreateJobTrigger. -type CreateJobTriggerRequest struct { +func (x *TransformationConfig) GetStructuredDeidentifyTemplate() string { + if x != nil { + return x.StructuredDeidentifyTemplate + } + return "" +} + +func (x *TransformationConfig) GetImageRedactTemplate() string { + if x != nil { + return x.ImageRedactTemplate + } + return "" +} + +// Request message for CreateInspectTemplate. +type CreateInspectTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Parent resource name. // - // The format of this value varies depending on whether you have [specified a - // processing + // The format of this value varies depending on the scope of the request + // (project or organization) and whether you have [specified a processing // location](https://cloud.google.com/dlp/docs/specifying-location): // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // - Organizations scope, location specified:
+ // `organizations/`ORG_ID`/locations/`LOCATION_ID + // - Organizations scope, no location specified (defaults to global):
+ // `organizations/`ORG_ID // // The following example `parent` string specifies a parent project with the // identifier `example-project`, and specifies the `europe-west3` location // for processing data: // - // parent=projects/example-project/locations/europe-west3 + // parent=projects/example-project/locations/europe-west3 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. The JobTrigger to create. - JobTrigger *JobTrigger `protobuf:"bytes,2,opt,name=job_trigger,json=jobTrigger,proto3" json:"job_trigger,omitempty"` - // The trigger id can contain uppercase and lowercase letters, + // Required. The InspectTemplate to create. + InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate,proto3" json:"inspect_template,omitempty"` + // The template id can contain uppercase and lowercase letters, // numbers, and hyphens; that is, it must match the regular // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 // characters. Can be empty to allow the system to generate one. - TriggerId string `protobuf:"bytes,3,opt,name=trigger_id,json=triggerId,proto3" json:"trigger_id,omitempty"` + TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` // Deprecated. This field has no effect. LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *CreateJobTriggerRequest) Reset() { - *x = CreateJobTriggerRequest{} +func (x *CreateInspectTemplateRequest) Reset() { + *x = CreateInspectTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[87] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateJobTriggerRequest) String() string { +func (x *CreateInspectTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateJobTriggerRequest) ProtoMessage() {} +func (*CreateInspectTemplateRequest) ProtoMessage() {} -func (x *CreateJobTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[87] +func (x *CreateInspectTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9449,67 +9937,72 @@ func (x *CreateJobTriggerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateJobTriggerRequest.ProtoReflect.Descriptor instead. -func (*CreateJobTriggerRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{87} +// Deprecated: Use CreateInspectTemplateRequest.ProtoReflect.Descriptor instead. +func (*CreateInspectTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{90} } -func (x *CreateJobTriggerRequest) GetParent() string { +func (x *CreateInspectTemplateRequest) GetParent() string { if x != nil { return x.Parent } return "" } -func (x *CreateJobTriggerRequest) GetJobTrigger() *JobTrigger { +func (x *CreateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { if x != nil { - return x.JobTrigger + return x.InspectTemplate } return nil } -func (x *CreateJobTriggerRequest) GetTriggerId() string { +func (x *CreateInspectTemplateRequest) GetTemplateId() string { if x != nil { - return x.TriggerId + return x.TemplateId } return "" } -func (x *CreateJobTriggerRequest) GetLocationId() string { +func (x *CreateInspectTemplateRequest) GetLocationId() string { if x != nil { return x.LocationId } return "" } -// Request message for ActivateJobTrigger. -type ActivateJobTriggerRequest struct { +// Request message for UpdateInspectTemplate. +type UpdateInspectTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the trigger to activate, for example - // `projects/dlp-test-project/jobTriggers/53234423`. + // Required. Resource name of organization and inspectTemplate to be updated, for + // example `organizations/433245324/inspectTemplates/432452342` or + // projects/project-id/inspectTemplates/432452342. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // New InspectTemplate value. + InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate,proto3" json:"inspect_template,omitempty"` + // Mask to control which fields get updated. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *ActivateJobTriggerRequest) Reset() { - *x = ActivateJobTriggerRequest{} +func (x *UpdateInspectTemplateRequest) Reset() { + *x = UpdateInspectTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[88] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActivateJobTriggerRequest) String() string { +func (x *UpdateInspectTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActivateJobTriggerRequest) ProtoMessage() {} +func (*UpdateInspectTemplateRequest) ProtoMessage() {} -func (x *ActivateJobTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[88] +func (x *UpdateInspectTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9520,50 +10013,61 @@ func (x *ActivateJobTriggerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActivateJobTriggerRequest.ProtoReflect.Descriptor instead. -func (*ActivateJobTriggerRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88} +// Deprecated: Use UpdateInspectTemplateRequest.ProtoReflect.Descriptor instead. +func (*UpdateInspectTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{91} } -func (x *ActivateJobTriggerRequest) GetName() string { +func (x *UpdateInspectTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } -// Request message for UpdateJobTrigger. -type UpdateJobTriggerRequest struct { +func (x *UpdateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { + if x != nil { + return x.InspectTemplate + } + return nil +} + +func (x *UpdateInspectTemplateRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// Request message for GetInspectTemplate. +type GetInspectTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the project and the triggeredJob, for example - // `projects/dlp-test-project/jobTriggers/53234423`. + // Required. Resource name of the organization and inspectTemplate to be read, for + // example `organizations/433245324/inspectTemplates/432452342` or + // projects/project-id/inspectTemplates/432452342. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // New JobTrigger value. - JobTrigger *JobTrigger `protobuf:"bytes,2,opt,name=job_trigger,json=jobTrigger,proto3" json:"job_trigger,omitempty"` - // Mask to control which fields get updated. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *UpdateJobTriggerRequest) Reset() { - *x = UpdateJobTriggerRequest{} +func (x *GetInspectTemplateRequest) Reset() { + *x = GetInspectTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[89] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateJobTriggerRequest) String() string { +func (x *GetInspectTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateJobTriggerRequest) ProtoMessage() {} +func (*GetInspectTemplateRequest) ProtoMessage() {} -func (x *UpdateJobTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[89] +func (x *GetInspectTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9574,60 +10078,224 @@ func (x *UpdateJobTriggerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateJobTriggerRequest.ProtoReflect.Descriptor instead. -func (*UpdateJobTriggerRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{89} +// Deprecated: Use GetInspectTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetInspectTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{92} } -func (x *UpdateJobTriggerRequest) GetName() string { +func (x *GetInspectTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *UpdateJobTriggerRequest) GetJobTrigger() *JobTrigger { +// Request message for ListInspectTemplates. +type ListInspectTemplatesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Parent resource name. + // + // The format of this value varies depending on the scope of the request + // (project or organization) and whether you have [specified a processing + // location](https://cloud.google.com/dlp/docs/specifying-location): + // + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // - Organizations scope, location specified:
+ // `organizations/`ORG_ID`/locations/`LOCATION_ID + // - Organizations scope, no location specified (defaults to global):
+ // `organizations/`ORG_ID + // + // The following example `parent` string specifies a parent project with the + // identifier `example-project`, and specifies the `europe-west3` location + // for processing data: + // + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Page token to continue retrieval. Comes from previous call + // to `ListInspectTemplates`. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Size of the page, can be limited by the server. If zero server returns + // a page of max size 100. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Comma separated list of fields to order by, + // followed by `asc` or `desc` postfix. This list is case-insensitive, + // default sorting order is ascending, redundant space characters are + // insignificant. + // + // Example: `name asc,update_time, create_time desc` + // + // Supported fields are: + // + // - `create_time`: corresponds to the time the template was created. + // - `update_time`: corresponds to the time the template was last updated. + // - `name`: corresponds to the template's name. + // - `display_name`: corresponds to the template's display name. + OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` +} + +func (x *ListInspectTemplatesRequest) Reset() { + *x = ListInspectTemplatesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListInspectTemplatesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListInspectTemplatesRequest) ProtoMessage() {} + +func (x *ListInspectTemplatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[93] + 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 ListInspectTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListInspectTemplatesRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{93} +} + +func (x *ListInspectTemplatesRequest) GetParent() string { if x != nil { - return x.JobTrigger + return x.Parent } - return nil + return "" } -func (x *UpdateJobTriggerRequest) GetUpdateMask() *fieldmaskpb.FieldMask { +func (x *ListInspectTemplatesRequest) GetPageToken() string { if x != nil { - return x.UpdateMask + return x.PageToken + } + return "" +} + +func (x *ListInspectTemplatesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListInspectTemplatesRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +func (x *ListInspectTemplatesRequest) GetLocationId() string { + if x != nil { + return x.LocationId + } + return "" +} + +// Response message for ListInspectTemplates. +type ListInspectTemplatesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of inspectTemplates, up to page_size in ListInspectTemplatesRequest. + InspectTemplates []*InspectTemplate `protobuf:"bytes,1,rep,name=inspect_templates,json=inspectTemplates,proto3" json:"inspect_templates,omitempty"` + // If the next page is available then the next page token to be used + // in following ListInspectTemplates request. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListInspectTemplatesResponse) Reset() { + *x = ListInspectTemplatesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListInspectTemplatesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListInspectTemplatesResponse) ProtoMessage() {} + +func (x *ListInspectTemplatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[94] + 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 ListInspectTemplatesResponse.ProtoReflect.Descriptor instead. +func (*ListInspectTemplatesResponse) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{94} +} + +func (x *ListInspectTemplatesResponse) GetInspectTemplates() []*InspectTemplate { + if x != nil { + return x.InspectTemplates } return nil } -// Request message for GetJobTrigger. -type GetJobTriggerRequest struct { +func (x *ListInspectTemplatesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request message for DeleteInspectTemplate. +type DeleteInspectTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the project and the triggeredJob, for example - // `projects/dlp-test-project/jobTriggers/53234423`. + // Required. Resource name of the organization and inspectTemplate to be deleted, for + // example `organizations/433245324/inspectTemplates/432452342` or + // projects/project-id/inspectTemplates/432452342. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetJobTriggerRequest) Reset() { - *x = GetJobTriggerRequest{} +func (x *DeleteInspectTemplateRequest) Reset() { + *x = DeleteInspectTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[90] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetJobTriggerRequest) String() string { +func (x *DeleteInspectTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetJobTriggerRequest) ProtoMessage() {} +func (*DeleteInspectTemplateRequest) ProtoMessage() {} -func (x *GetJobTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[90] +func (x *DeleteInspectTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9638,22 +10306,20 @@ func (x *GetJobTriggerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetJobTriggerRequest.ProtoReflect.Descriptor instead. -func (*GetJobTriggerRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{90} +// Deprecated: Use DeleteInspectTemplateRequest.ProtoReflect.Descriptor instead. +func (*DeleteInspectTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{95} } -func (x *GetJobTriggerRequest) GetName() string { +func (x *DeleteInspectTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } -// Request message for CreateDlpJobRequest. Used to initiate long running -// jobs such as calculating risk metrics or inspecting Google Cloud -// Storage. -type CreateDlpJobRequest struct { +// Request message for CreateJobTrigger. +type CreateJobTriggerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -9664,49 +10330,45 @@ type CreateDlpJobRequest struct { // processing // location](https://cloud.google.com/dlp/docs/specifying-location): // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID // // The following example `parent` string specifies a parent project with the // identifier `example-project`, and specifies the `europe-west3` location // for processing data: // - // parent=projects/example-project/locations/europe-west3 + // parent=projects/example-project/locations/europe-west3 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The configuration details for the specific type of job to run. - // - // Types that are assignable to Job: - // *CreateDlpJobRequest_InspectJob - // *CreateDlpJobRequest_RiskJob - Job isCreateDlpJobRequest_Job `protobuf_oneof:"job"` - // The job id can contain uppercase and lowercase letters, + // Required. The JobTrigger to create. + JobTrigger *JobTrigger `protobuf:"bytes,2,opt,name=job_trigger,json=jobTrigger,proto3" json:"job_trigger,omitempty"` + // The trigger id can contain uppercase and lowercase letters, // numbers, and hyphens; that is, it must match the regular // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 // characters. Can be empty to allow the system to generate one. - JobId string `protobuf:"bytes,4,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + TriggerId string `protobuf:"bytes,3,opt,name=trigger_id,json=triggerId,proto3" json:"trigger_id,omitempty"` // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *CreateDlpJobRequest) Reset() { - *x = CreateDlpJobRequest{} +func (x *CreateJobTriggerRequest) Reset() { + *x = CreateJobTriggerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[91] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateDlpJobRequest) String() string { +func (x *CreateJobTriggerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateDlpJobRequest) ProtoMessage() {} +func (*CreateJobTriggerRequest) ProtoMessage() {} -func (x *CreateDlpJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[91] +func (x *CreateJobTriggerRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9717,165 +10379,67 @@ func (x *CreateDlpJobRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateDlpJobRequest.ProtoReflect.Descriptor instead. -func (*CreateDlpJobRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{91} +// Deprecated: Use CreateJobTriggerRequest.ProtoReflect.Descriptor instead. +func (*CreateJobTriggerRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{96} } -func (x *CreateDlpJobRequest) GetParent() string { +func (x *CreateJobTriggerRequest) GetParent() string { if x != nil { return x.Parent } return "" } -func (m *CreateDlpJobRequest) GetJob() isCreateDlpJobRequest_Job { - if m != nil { - return m.Job +func (x *CreateJobTriggerRequest) GetJobTrigger() *JobTrigger { + if x != nil { + return x.JobTrigger } return nil } -func (x *CreateDlpJobRequest) GetInspectJob() *InspectJobConfig { - if x, ok := x.GetJob().(*CreateDlpJobRequest_InspectJob); ok { - return x.InspectJob - } - return nil -} - -func (x *CreateDlpJobRequest) GetRiskJob() *RiskAnalysisJobConfig { - if x, ok := x.GetJob().(*CreateDlpJobRequest_RiskJob); ok { - return x.RiskJob - } - return nil -} - -func (x *CreateDlpJobRequest) GetJobId() string { +func (x *CreateJobTriggerRequest) GetTriggerId() string { if x != nil { - return x.JobId + return x.TriggerId } return "" } -func (x *CreateDlpJobRequest) GetLocationId() string { +func (x *CreateJobTriggerRequest) GetLocationId() string { if x != nil { return x.LocationId } return "" } -type isCreateDlpJobRequest_Job interface { - isCreateDlpJobRequest_Job() -} - -type CreateDlpJobRequest_InspectJob struct { - // An inspection job scans a storage repository for InfoTypes. - InspectJob *InspectJobConfig `protobuf:"bytes,2,opt,name=inspect_job,json=inspectJob,proto3,oneof"` -} - -type CreateDlpJobRequest_RiskJob struct { - // A risk analysis job calculates re-identification risk metrics for a - // BigQuery table. - RiskJob *RiskAnalysisJobConfig `protobuf:"bytes,3,opt,name=risk_job,json=riskJob,proto3,oneof"` -} - -func (*CreateDlpJobRequest_InspectJob) isCreateDlpJobRequest_Job() {} - -func (*CreateDlpJobRequest_RiskJob) isCreateDlpJobRequest_Job() {} - -// Request message for ListJobTriggers. -type ListJobTriggersRequest struct { +// Request message for ActivateJobTrigger. +type ActivateJobTriggerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Parent resource name. - // - // The format of this value varies depending on whether you have [specified a - // processing - // location](https://cloud.google.com/dlp/docs/specifying-location): - // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // - // The following example `parent` string specifies a parent project with the - // identifier `example-project`, and specifies the `europe-west3` location - // for processing data: - // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Page token to continue retrieval. Comes from previous call - // to ListJobTriggers. `order_by` field must not - // change for subsequent calls. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Size of the page, can be limited by a server. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Comma separated list of triggeredJob fields to order by, - // followed by `asc` or `desc` postfix. This list is case-insensitive, - // default sorting order is ascending, redundant space characters are - // insignificant. - // - // Example: `name asc,update_time, create_time desc` - // - // Supported fields are: - // - // - `create_time`: corresponds to time the JobTrigger was created. - // - `update_time`: corresponds to time the JobTrigger was last updated. - // - `last_run_time`: corresponds to the last time the JobTrigger ran. - // - `name`: corresponds to JobTrigger's name. - // - `display_name`: corresponds to JobTrigger's display name. - // - `status`: corresponds to JobTrigger's status. - OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Allows filtering. - // - // Supported syntax: - // - // * Filter expressions are made up of one or more restrictions. - // * Restrictions can be combined by `AND` or `OR` logical operators. A - // sequence of restrictions implicitly uses `AND`. - // * A restriction has the form of `{field} {operator} {value}`. - // * Supported fields/values for inspect triggers: - // - `status` - HEALTHY|PAUSED|CANCELLED - // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY - // - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by - // quotation marks. Nanoseconds are ignored. - // - 'error_count' - Number of errors that have occurred while running. - // * The operator must be `=` or `!=` for status and inspected_storage. - // - // Examples: - // - // * inspected_storage = cloud_storage AND status = HEALTHY - // * inspected_storage = cloud_storage OR inspected_storage = bigquery - // * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY) - // * last_run_time > \"2017-12-12T00:00:00+00:00\" - // - // The length of this field should be no more than 500 characters. - Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` - // The type of jobs. Will use `DlpJobType.INSPECT` if not set. - Type DlpJobType `protobuf:"varint,6,opt,name=type,proto3,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,7,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + // Required. Resource name of the trigger to activate, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListJobTriggersRequest) Reset() { - *x = ListJobTriggersRequest{} +func (x *ActivateJobTriggerRequest) Reset() { + *x = ActivateJobTriggerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[92] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListJobTriggersRequest) String() string { +func (x *ActivateJobTriggerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListJobTriggersRequest) ProtoMessage() {} +func (*ActivateJobTriggerRequest) ProtoMessage() {} -func (x *ListJobTriggersRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[92] +func (x *ActivateJobTriggerRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9886,90 +10450,50 @@ func (x *ListJobTriggersRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListJobTriggersRequest.ProtoReflect.Descriptor instead. -func (*ListJobTriggersRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{92} -} - -func (x *ListJobTriggersRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *ListJobTriggersRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -func (x *ListJobTriggersRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListJobTriggersRequest) GetOrderBy() string { - if x != nil { - return x.OrderBy - } - return "" -} - -func (x *ListJobTriggersRequest) GetFilter() string { - if x != nil { - return x.Filter - } - return "" -} - -func (x *ListJobTriggersRequest) GetType() DlpJobType { - if x != nil { - return x.Type - } - return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED +// Deprecated: Use ActivateJobTriggerRequest.ProtoReflect.Descriptor instead. +func (*ActivateJobTriggerRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{97} } -func (x *ListJobTriggersRequest) GetLocationId() string { +func (x *ActivateJobTriggerRequest) GetName() string { if x != nil { - return x.LocationId + return x.Name } return "" } -// Response message for ListJobTriggers. -type ListJobTriggersResponse struct { +// Request message for UpdateJobTrigger. +type UpdateJobTriggerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of triggeredJobs, up to page_size in ListJobTriggersRequest. - JobTriggers []*JobTrigger `protobuf:"bytes,1,rep,name=job_triggers,json=jobTriggers,proto3" json:"job_triggers,omitempty"` - // If the next page is available then the next page token to be used - // in following ListJobTriggers request. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Required. Resource name of the project and the triggeredJob, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // New JobTrigger value. + JobTrigger *JobTrigger `protobuf:"bytes,2,opt,name=job_trigger,json=jobTrigger,proto3" json:"job_trigger,omitempty"` + // Mask to control which fields get updated. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *ListJobTriggersResponse) Reset() { - *x = ListJobTriggersResponse{} +func (x *UpdateJobTriggerRequest) Reset() { + *x = UpdateJobTriggerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[93] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListJobTriggersResponse) String() string { +func (x *UpdateJobTriggerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListJobTriggersResponse) ProtoMessage() {} +func (*UpdateJobTriggerRequest) ProtoMessage() {} -func (x *ListJobTriggersResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[93] +func (x *UpdateJobTriggerRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9980,27 +10504,34 @@ func (x *ListJobTriggersResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListJobTriggersResponse.ProtoReflect.Descriptor instead. -func (*ListJobTriggersResponse) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{93} +// Deprecated: Use UpdateJobTriggerRequest.ProtoReflect.Descriptor instead. +func (*UpdateJobTriggerRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{98} } -func (x *ListJobTriggersResponse) GetJobTriggers() []*JobTrigger { +func (x *UpdateJobTriggerRequest) GetName() string { if x != nil { - return x.JobTriggers + return x.Name + } + return "" +} + +func (x *UpdateJobTriggerRequest) GetJobTrigger() *JobTrigger { + if x != nil { + return x.JobTrigger } return nil } -func (x *ListJobTriggersResponse) GetNextPageToken() string { +func (x *UpdateJobTriggerRequest) GetUpdateMask() *fieldmaskpb.FieldMask { if x != nil { - return x.NextPageToken + return x.UpdateMask } - return "" + return nil } -// Request message for DeleteJobTrigger. -type DeleteJobTriggerRequest struct { +// Request message for GetJobTrigger. +type GetJobTriggerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -10010,23 +10541,23 @@ type DeleteJobTriggerRequest struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteJobTriggerRequest) Reset() { - *x = DeleteJobTriggerRequest{} +func (x *GetJobTriggerRequest) Reset() { + *x = GetJobTriggerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[94] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteJobTriggerRequest) String() string { +func (x *GetJobTriggerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteJobTriggerRequest) ProtoMessage() {} +func (*GetJobTriggerRequest) ProtoMessage() {} -func (x *DeleteJobTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[94] +func (x *GetJobTriggerRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10037,53 +10568,76 @@ func (x *DeleteJobTriggerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteJobTriggerRequest.ProtoReflect.Descriptor instead. -func (*DeleteJobTriggerRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{94} +// Deprecated: Use GetJobTriggerRequest.ProtoReflect.Descriptor instead. +func (*GetJobTriggerRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{99} } -func (x *DeleteJobTriggerRequest) GetName() string { +func (x *GetJobTriggerRequest) GetName() string { if x != nil { return x.Name } return "" } -// Controls what and how to inspect for findings. -type InspectJobConfig struct { +// Request message for CreateDlpJobRequest. Used to initiate long running +// jobs such as calculating risk metrics or inspecting Google Cloud +// Storage. +type CreateDlpJobRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The data to scan. - StorageConfig *StorageConfig `protobuf:"bytes,1,opt,name=storage_config,json=storageConfig,proto3" json:"storage_config,omitempty"` - // How and what to scan for. - InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig,proto3" json:"inspect_config,omitempty"` - // If provided, will be used as the default for all values in InspectConfig. - // `inspect_config` will be merged into the values persisted as part of the - // template. - InspectTemplateName string `protobuf:"bytes,3,opt,name=inspect_template_name,json=inspectTemplateName,proto3" json:"inspect_template_name,omitempty"` - // Actions to execute at the completion of the job. - Actions []*Action `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"` + // Required. Parent resource name. + // + // The format of this value varies depending on whether you have [specified a + // processing + // location](https://cloud.google.com/dlp/docs/specifying-location): + // + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // + // The following example `parent` string specifies a parent project with the + // identifier `example-project`, and specifies the `europe-west3` location + // for processing data: + // + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // The configuration details for the specific type of job to run. + // + // Types that are assignable to Job: + // + // *CreateDlpJobRequest_InspectJob + // *CreateDlpJobRequest_RiskJob + Job isCreateDlpJobRequest_Job `protobuf_oneof:"job"` + // The job id can contain uppercase and lowercase letters, + // numbers, and hyphens; that is, it must match the regular + // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 + // characters. Can be empty to allow the system to generate one. + JobId string `protobuf:"bytes,4,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *InspectJobConfig) Reset() { - *x = InspectJobConfig{} +func (x *CreateDlpJobRequest) Reset() { + *x = CreateDlpJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[95] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InspectJobConfig) String() string { +func (x *CreateDlpJobRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InspectJobConfig) ProtoMessage() {} +func (*CreateDlpJobRequest) ProtoMessage() {} -func (x *InspectJobConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[95] +func (x *CreateDlpJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10094,68 +10648,166 @@ func (x *InspectJobConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InspectJobConfig.ProtoReflect.Descriptor instead. -func (*InspectJobConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{95} +// Deprecated: Use CreateDlpJobRequest.ProtoReflect.Descriptor instead. +func (*CreateDlpJobRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{100} } -func (x *InspectJobConfig) GetStorageConfig() *StorageConfig { +func (x *CreateDlpJobRequest) GetParent() string { if x != nil { - return x.StorageConfig + return x.Parent + } + return "" +} + +func (m *CreateDlpJobRequest) GetJob() isCreateDlpJobRequest_Job { + if m != nil { + return m.Job } return nil } -func (x *InspectJobConfig) GetInspectConfig() *InspectConfig { - if x != nil { - return x.InspectConfig +func (x *CreateDlpJobRequest) GetInspectJob() *InspectJobConfig { + if x, ok := x.GetJob().(*CreateDlpJobRequest_InspectJob); ok { + return x.InspectJob } return nil } -func (x *InspectJobConfig) GetInspectTemplateName() string { +func (x *CreateDlpJobRequest) GetRiskJob() *RiskAnalysisJobConfig { + if x, ok := x.GetJob().(*CreateDlpJobRequest_RiskJob); ok { + return x.RiskJob + } + return nil +} + +func (x *CreateDlpJobRequest) GetJobId() string { if x != nil { - return x.InspectTemplateName + return x.JobId } return "" } -func (x *InspectJobConfig) GetActions() []*Action { +func (x *CreateDlpJobRequest) GetLocationId() string { if x != nil { - return x.Actions + return x.LocationId } - return nil + return "" } -// A task to execute when a data profile has been generated. -type DataProfileAction struct { +type isCreateDlpJobRequest_Job interface { + isCreateDlpJobRequest_Job() +} + +type CreateDlpJobRequest_InspectJob struct { + // An inspection job scans a storage repository for InfoTypes. + InspectJob *InspectJobConfig `protobuf:"bytes,2,opt,name=inspect_job,json=inspectJob,proto3,oneof"` +} + +type CreateDlpJobRequest_RiskJob struct { + // A risk analysis job calculates re-identification risk metrics for a + // BigQuery table. + RiskJob *RiskAnalysisJobConfig `protobuf:"bytes,3,opt,name=risk_job,json=riskJob,proto3,oneof"` +} + +func (*CreateDlpJobRequest_InspectJob) isCreateDlpJobRequest_Job() {} + +func (*CreateDlpJobRequest_RiskJob) isCreateDlpJobRequest_Job() {} + +// Request message for ListJobTriggers. +type ListJobTriggersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Action: - // *DataProfileAction_ExportData - // *DataProfileAction_PubSubNotification_ - Action isDataProfileAction_Action `protobuf_oneof:"action"` + // Required. Parent resource name. + // + // The format of this value varies depending on whether you have [specified a + // processing + // location](https://cloud.google.com/dlp/docs/specifying-location): + // + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // + // The following example `parent` string specifies a parent project with the + // identifier `example-project`, and specifies the `europe-west3` location + // for processing data: + // + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Page token to continue retrieval. Comes from previous call + // to ListJobTriggers. `order_by` field must not + // change for subsequent calls. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Size of the page, can be limited by a server. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Comma separated list of triggeredJob fields to order by, + // followed by `asc` or `desc` postfix. This list is case-insensitive, + // default sorting order is ascending, redundant space characters are + // insignificant. + // + // Example: `name asc,update_time, create_time desc` + // + // Supported fields are: + // + // - `create_time`: corresponds to the time the JobTrigger was created. + // - `update_time`: corresponds to the time the JobTrigger was last updated. + // - `last_run_time`: corresponds to the last time the JobTrigger ran. + // - `name`: corresponds to the JobTrigger's name. + // - `display_name`: corresponds to the JobTrigger's display name. + // - `status`: corresponds to JobTrigger's status. + OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // Allows filtering. + // + // Supported syntax: + // + // * Filter expressions are made up of one or more restrictions. + // * Restrictions can be combined by `AND` or `OR` logical operators. A + // sequence of restrictions implicitly uses `AND`. + // * A restriction has the form of `{field} {operator} {value}`. + // * Supported fields/values for inspect triggers: + // - `status` - HEALTHY|PAUSED|CANCELLED + // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY + // - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by + // quotation marks. Nanoseconds are ignored. + // - 'error_count' - Number of errors that have occurred while running. + // + // * The operator must be `=` or `!=` for status and inspected_storage. + // + // Examples: + // + // * inspected_storage = cloud_storage AND status = HEALTHY + // * inspected_storage = cloud_storage OR inspected_storage = bigquery + // * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY) + // * last_run_time > \"2017-12-12T00:00:00+00:00\" + // + // The length of this field should be no more than 500 characters. + Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` + // The type of jobs. Will use `DlpJobType.INSPECT` if not set. + Type DlpJobType `protobuf:"varint,6,opt,name=type,proto3,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,7,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *DataProfileAction) Reset() { - *x = DataProfileAction{} +func (x *ListJobTriggersRequest) Reset() { + *x = ListJobTriggersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[96] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataProfileAction) String() string { +func (x *ListJobTriggersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfileAction) ProtoMessage() {} +func (*ListJobTriggersRequest) ProtoMessage() {} -func (x *DataProfileAction) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[96] +func (x *ListJobTriggersRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10166,106 +10818,90 @@ func (x *DataProfileAction) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DataProfileAction.ProtoReflect.Descriptor instead. -func (*DataProfileAction) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{96} +// Deprecated: Use ListJobTriggersRequest.ProtoReflect.Descriptor instead. +func (*ListJobTriggersRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{101} } -func (m *DataProfileAction) GetAction() isDataProfileAction_Action { - if m != nil { - return m.Action +func (x *ListJobTriggersRequest) GetParent() string { + if x != nil { + return x.Parent } - return nil + return "" } -func (x *DataProfileAction) GetExportData() *DataProfileAction_Export { - if x, ok := x.GetAction().(*DataProfileAction_ExportData); ok { - return x.ExportData +func (x *ListJobTriggersRequest) GetPageToken() string { + if x != nil { + return x.PageToken } - return nil + return "" } -func (x *DataProfileAction) GetPubSubNotification() *DataProfileAction_PubSubNotification { - if x, ok := x.GetAction().(*DataProfileAction_PubSubNotification_); ok { - return x.PubSubNotification +func (x *ListJobTriggersRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } - return nil + return 0 } -type isDataProfileAction_Action interface { - isDataProfileAction_Action() +func (x *ListJobTriggersRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" } -type DataProfileAction_ExportData struct { - // Export data profiles into a provided location. - ExportData *DataProfileAction_Export `protobuf:"bytes,1,opt,name=export_data,json=exportData,proto3,oneof"` +func (x *ListJobTriggersRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" } -type DataProfileAction_PubSubNotification_ struct { - // Publish a message into the Pub/Sub topic. - PubSubNotification *DataProfileAction_PubSubNotification `protobuf:"bytes,2,opt,name=pub_sub_notification,json=pubSubNotification,proto3,oneof"` +func (x *ListJobTriggersRequest) GetType() DlpJobType { + if x != nil { + return x.Type + } + return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED } -func (*DataProfileAction_ExportData) isDataProfileAction_Action() {} - -func (*DataProfileAction_PubSubNotification_) isDataProfileAction_Action() {} +func (x *ListJobTriggersRequest) GetLocationId() string { + if x != nil { + return x.LocationId + } + return "" +} -// Configuration for setting up a job to scan resources for profile generation. -// Only one data profile configuration may exist per organization, folder, -// or project. -// -// The generated data profiles are retained according to the -// [data retention policy] -// (https://cloud.google.com/dlp/docs/data-profiles#retention). -type DataProfileJobConfig struct { +// Response message for ListJobTriggers. +type ListJobTriggersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The data to scan. - Location *DataProfileLocation `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` - // The project that will run the scan. The DLP service - // account that exists within this project must have access to all resources - // that are profiled, and the Cloud DLP API must be enabled. - ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - // Detection logic for profile generation. - // - // Not all template features are used by profiles. FindingLimits, - // include_quote and exclude_info_types have no impact on - // data profiling. - // - // Multiple templates may be provided if there is data in multiple regions. - // At most one template must be specified per-region (including "global"). - // Each region is scanned using the applicable template. If no region-specific - // template is specified, but a "global" template is specified, it will be - // copied to that region and used instead. If no global or region-specific - // template is provided for a region with data, that region's data will not be - // scanned. - // - // For more information, see - // https://cloud.google.com/dlp/docs/data-profiles#data_residency. - InspectTemplates []string `protobuf:"bytes,7,rep,name=inspect_templates,json=inspectTemplates,proto3" json:"inspect_templates,omitempty"` - // Actions to execute at the completion of the job. - DataProfileActions []*DataProfileAction `protobuf:"bytes,6,rep,name=data_profile_actions,json=dataProfileActions,proto3" json:"data_profile_actions,omitempty"` + // List of triggeredJobs, up to page_size in ListJobTriggersRequest. + JobTriggers []*JobTrigger `protobuf:"bytes,1,rep,name=job_triggers,json=jobTriggers,proto3" json:"job_triggers,omitempty"` + // If the next page is available then the next page token to be used + // in following ListJobTriggers request. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *DataProfileJobConfig) Reset() { - *x = DataProfileJobConfig{} +func (x *ListJobTriggersResponse) Reset() { + *x = ListJobTriggersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[97] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataProfileJobConfig) String() string { +func (x *ListJobTriggersResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfileJobConfig) ProtoMessage() {} +func (*ListJobTriggersResponse) ProtoMessage() {} -func (x *DataProfileJobConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[97] +func (x *ListJobTriggersResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10276,70 +10912,53 @@ func (x *DataProfileJobConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DataProfileJobConfig.ProtoReflect.Descriptor instead. -func (*DataProfileJobConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{97} +// Deprecated: Use ListJobTriggersResponse.ProtoReflect.Descriptor instead. +func (*ListJobTriggersResponse) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{102} } -func (x *DataProfileJobConfig) GetLocation() *DataProfileLocation { +func (x *ListJobTriggersResponse) GetJobTriggers() []*JobTrigger { if x != nil { - return x.Location + return x.JobTriggers } return nil } -func (x *DataProfileJobConfig) GetProjectId() string { +func (x *ListJobTriggersResponse) GetNextPageToken() string { if x != nil { - return x.ProjectId + return x.NextPageToken } return "" } -func (x *DataProfileJobConfig) GetInspectTemplates() []string { - if x != nil { - return x.InspectTemplates - } - return nil -} - -func (x *DataProfileJobConfig) GetDataProfileActions() []*DataProfileAction { - if x != nil { - return x.DataProfileActions - } - return nil -} - -// The data that will be profiled. -type DataProfileLocation struct { +// Request message for DeleteJobTrigger. +type DeleteJobTriggerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The location to be scanned. - // - // Types that are assignable to Location: - // *DataProfileLocation_OrganizationId - // *DataProfileLocation_FolderId - Location isDataProfileLocation_Location `protobuf_oneof:"location"` + // Required. Resource name of the project and the triggeredJob, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DataProfileLocation) Reset() { - *x = DataProfileLocation{} +func (x *DeleteJobTriggerRequest) Reset() { + *x = DeleteJobTriggerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[98] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataProfileLocation) String() string { +func (x *DeleteJobTriggerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfileLocation) ProtoMessage() {} +func (*DeleteJobTriggerRequest) ProtoMessage() {} -func (x *DataProfileLocation) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[98] +func (x *DeleteJobTriggerRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10350,96 +10969,53 @@ func (x *DataProfileLocation) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DataProfileLocation.ProtoReflect.Descriptor instead. -func (*DataProfileLocation) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{98} -} - -func (m *DataProfileLocation) GetLocation() isDataProfileLocation_Location { - if m != nil { - return m.Location - } - return nil -} - -func (x *DataProfileLocation) GetOrganizationId() int64 { - if x, ok := x.GetLocation().(*DataProfileLocation_OrganizationId); ok { - return x.OrganizationId - } - return 0 +// Deprecated: Use DeleteJobTriggerRequest.ProtoReflect.Descriptor instead. +func (*DeleteJobTriggerRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{103} } -func (x *DataProfileLocation) GetFolderId() int64 { - if x, ok := x.GetLocation().(*DataProfileLocation_FolderId); ok { - return x.FolderId +func (x *DeleteJobTriggerRequest) GetName() string { + if x != nil { + return x.Name } - return 0 -} - -type isDataProfileLocation_Location interface { - isDataProfileLocation_Location() -} - -type DataProfileLocation_OrganizationId struct { - // The ID of an organization to scan. - OrganizationId int64 `protobuf:"varint,1,opt,name=organization_id,json=organizationId,proto3,oneof"` -} - -type DataProfileLocation_FolderId struct { - // The ID of the Folder within an organization to scan. - FolderId int64 `protobuf:"varint,2,opt,name=folder_id,json=folderId,proto3,oneof"` + return "" } -func (*DataProfileLocation_OrganizationId) isDataProfileLocation_Location() {} - -func (*DataProfileLocation_FolderId) isDataProfileLocation_Location() {} - -// Combines all of the information about a DLP job. -type DlpJob struct { +// Controls what and how to inspect for findings. +type InspectJobConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The server-assigned name. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The type of job. - Type DlpJobType `protobuf:"varint,2,opt,name=type,proto3,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` - // State of a job. - State DlpJob_JobState `protobuf:"varint,3,opt,name=state,proto3,enum=google.privacy.dlp.v2.DlpJob_JobState" json:"state,omitempty"` - // Types that are assignable to Details: - // *DlpJob_RiskDetails - // *DlpJob_InspectDetails - Details isDlpJob_Details `protobuf_oneof:"details"` - // Time when the job was created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Time when the job started. - StartTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - // Time when the job finished. - EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - // If created by a job trigger, the resource name of the trigger that - // instantiated the job. - JobTriggerName string `protobuf:"bytes,10,opt,name=job_trigger_name,json=jobTriggerName,proto3" json:"job_trigger_name,omitempty"` - // A stream of errors encountered running the job. - Errors []*Error `protobuf:"bytes,11,rep,name=errors,proto3" json:"errors,omitempty"` + // The data to scan. + StorageConfig *StorageConfig `protobuf:"bytes,1,opt,name=storage_config,json=storageConfig,proto3" json:"storage_config,omitempty"` + // How and what to scan for. + InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig,proto3" json:"inspect_config,omitempty"` + // If provided, will be used as the default for all values in InspectConfig. + // `inspect_config` will be merged into the values persisted as part of the + // template. + InspectTemplateName string `protobuf:"bytes,3,opt,name=inspect_template_name,json=inspectTemplateName,proto3" json:"inspect_template_name,omitempty"` + // Actions to execute at the completion of the job. + Actions []*Action `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"` } -func (x *DlpJob) Reset() { - *x = DlpJob{} +func (x *InspectJobConfig) Reset() { + *x = InspectJobConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[99] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DlpJob) String() string { +func (x *InspectJobConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DlpJob) ProtoMessage() {} +func (*InspectJobConfig) ProtoMessage() {} -func (x *DlpJob) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[99] +func (x *InspectJobConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10450,133 +11026,179 @@ func (x *DlpJob) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DlpJob.ProtoReflect.Descriptor instead. -func (*DlpJob) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{99} +// Deprecated: Use InspectJobConfig.ProtoReflect.Descriptor instead. +func (*InspectJobConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{104} } -func (x *DlpJob) GetName() string { +func (x *InspectJobConfig) GetStorageConfig() *StorageConfig { if x != nil { - return x.Name + return x.StorageConfig } - return "" + return nil } -func (x *DlpJob) GetType() DlpJobType { +func (x *InspectJobConfig) GetInspectConfig() *InspectConfig { if x != nil { - return x.Type + return x.InspectConfig } - return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED + return nil } -func (x *DlpJob) GetState() DlpJob_JobState { +func (x *InspectJobConfig) GetInspectTemplateName() string { if x != nil { - return x.State + return x.InspectTemplateName } - return DlpJob_JOB_STATE_UNSPECIFIED + return "" } -func (m *DlpJob) GetDetails() isDlpJob_Details { - if m != nil { - return m.Details +func (x *InspectJobConfig) GetActions() []*Action { + if x != nil { + return x.Actions } return nil } -func (x *DlpJob) GetRiskDetails() *AnalyzeDataSourceRiskDetails { - if x, ok := x.GetDetails().(*DlpJob_RiskDetails); ok { - return x.RiskDetails - } - return nil +// A task to execute when a data profile has been generated. +type DataProfileAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Action: + // + // *DataProfileAction_ExportData + // *DataProfileAction_PubSubNotification_ + Action isDataProfileAction_Action `protobuf_oneof:"action"` } -func (x *DlpJob) GetInspectDetails() *InspectDataSourceDetails { - if x, ok := x.GetDetails().(*DlpJob_InspectDetails); ok { - return x.InspectDetails +func (x *DataProfileAction) Reset() { + *x = DataProfileAction{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *DlpJob) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil +func (x *DataProfileAction) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *DlpJob) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime +func (*DataProfileAction) ProtoMessage() {} + +func (x *DataProfileAction) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *DlpJob) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime +// Deprecated: Use DataProfileAction.ProtoReflect.Descriptor instead. +func (*DataProfileAction) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{105} +} + +func (m *DataProfileAction) GetAction() isDataProfileAction_Action { + if m != nil { + return m.Action } return nil } -func (x *DlpJob) GetJobTriggerName() string { - if x != nil { - return x.JobTriggerName +func (x *DataProfileAction) GetExportData() *DataProfileAction_Export { + if x, ok := x.GetAction().(*DataProfileAction_ExportData); ok { + return x.ExportData } - return "" + return nil } -func (x *DlpJob) GetErrors() []*Error { - if x != nil { - return x.Errors +func (x *DataProfileAction) GetPubSubNotification() *DataProfileAction_PubSubNotification { + if x, ok := x.GetAction().(*DataProfileAction_PubSubNotification_); ok { + return x.PubSubNotification } return nil } -type isDlpJob_Details interface { - isDlpJob_Details() +type isDataProfileAction_Action interface { + isDataProfileAction_Action() } -type DlpJob_RiskDetails struct { - // Results from analyzing risk of a data source. - RiskDetails *AnalyzeDataSourceRiskDetails `protobuf:"bytes,4,opt,name=risk_details,json=riskDetails,proto3,oneof"` +type DataProfileAction_ExportData struct { + // Export data profiles into a provided location. + ExportData *DataProfileAction_Export `protobuf:"bytes,1,opt,name=export_data,json=exportData,proto3,oneof"` } -type DlpJob_InspectDetails struct { - // Results from inspecting a data source. - InspectDetails *InspectDataSourceDetails `protobuf:"bytes,5,opt,name=inspect_details,json=inspectDetails,proto3,oneof"` +type DataProfileAction_PubSubNotification_ struct { + // Publish a message into the Pub/Sub topic. + PubSubNotification *DataProfileAction_PubSubNotification `protobuf:"bytes,2,opt,name=pub_sub_notification,json=pubSubNotification,proto3,oneof"` } -func (*DlpJob_RiskDetails) isDlpJob_Details() {} +func (*DataProfileAction_ExportData) isDataProfileAction_Action() {} -func (*DlpJob_InspectDetails) isDlpJob_Details() {} +func (*DataProfileAction_PubSubNotification_) isDataProfileAction_Action() {} -// The request message for [DlpJobs.GetDlpJob][]. -type GetDlpJobRequest struct { +// Configuration for setting up a job to scan resources for profile generation. +// Only one data profile configuration may exist per organization, folder, +// or project. +// +// The generated data profiles are retained according to the +// [data retention policy] +// (https://cloud.google.com/dlp/docs/data-profiles#retention). +type DataProfileJobConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of the DlpJob resource. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The data to scan. + Location *DataProfileLocation `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` + // The project that will run the scan. The DLP service + // account that exists within this project must have access to all resources + // that are profiled, and the Cloud DLP API must be enabled. + ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Detection logic for profile generation. + // + // Not all template features are used by profiles. FindingLimits, + // include_quote and exclude_info_types have no impact on + // data profiling. + // + // Multiple templates may be provided if there is data in multiple regions. + // At most one template must be specified per-region (including "global"). + // Each region is scanned using the applicable template. If no region-specific + // template is specified, but a "global" template is specified, it will be + // copied to that region and used instead. If no global or region-specific + // template is provided for a region with data, that region's data will not be + // scanned. + // + // For more information, see + // https://cloud.google.com/dlp/docs/data-profiles#data_residency. + InspectTemplates []string `protobuf:"bytes,7,rep,name=inspect_templates,json=inspectTemplates,proto3" json:"inspect_templates,omitempty"` + // Actions to execute at the completion of the job. + DataProfileActions []*DataProfileAction `protobuf:"bytes,6,rep,name=data_profile_actions,json=dataProfileActions,proto3" json:"data_profile_actions,omitempty"` } -func (x *GetDlpJobRequest) Reset() { - *x = GetDlpJobRequest{} +func (x *DataProfileJobConfig) Reset() { + *x = DataProfileJobConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[100] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetDlpJobRequest) String() string { +func (x *DataProfileJobConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetDlpJobRequest) ProtoMessage() {} +func (*DataProfileJobConfig) ProtoMessage() {} -func (x *GetDlpJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[100] +func (x *DataProfileJobConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10587,111 +11209,71 @@ func (x *GetDlpJobRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetDlpJobRequest.ProtoReflect.Descriptor instead. -func (*GetDlpJobRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{100} +// Deprecated: Use DataProfileJobConfig.ProtoReflect.Descriptor instead. +func (*DataProfileJobConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{106} } -func (x *GetDlpJobRequest) GetName() string { +func (x *DataProfileJobConfig) GetLocation() *DataProfileLocation { if x != nil { - return x.Name + return x.Location + } + return nil +} + +func (x *DataProfileJobConfig) GetProjectId() string { + if x != nil { + return x.ProjectId } return "" } -// The request message for listing DLP jobs. -type ListDlpJobsRequest struct { +func (x *DataProfileJobConfig) GetInspectTemplates() []string { + if x != nil { + return x.InspectTemplates + } + return nil +} + +func (x *DataProfileJobConfig) GetDataProfileActions() []*DataProfileAction { + if x != nil { + return x.DataProfileActions + } + return nil +} + +// The data that will be profiled. +type DataProfileLocation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Parent resource name. - // - // The format of this value varies depending on whether you have [specified a - // processing - // location](https://cloud.google.com/dlp/docs/specifying-location): - // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // - // The following example `parent` string specifies a parent project with the - // identifier `example-project`, and specifies the `europe-west3` location - // for processing data: - // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"` - // Allows filtering. - // - // Supported syntax: - // - // * Filter expressions are made up of one or more restrictions. - // * Restrictions can be combined by `AND` or `OR` logical operators. A - // sequence of restrictions implicitly uses `AND`. - // * A restriction has the form of `{field} {operator} {value}`. - // * Supported fields/values for inspect jobs: - // - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED - // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY - // - `trigger_name` - The resource name of the trigger that created job. - // - 'end_time` - Corresponds to time the job finished. - // - 'start_time` - Corresponds to time the job finished. - // * Supported fields for risk analysis jobs: - // - `state` - RUNNING|CANCELED|FINISHED|FAILED - // - 'end_time` - Corresponds to time the job finished. - // - 'start_time` - Corresponds to time the job finished. - // * The operator must be `=` or `!=`. - // - // Examples: - // - // * inspected_storage = cloud_storage AND state = done - // * inspected_storage = cloud_storage OR inspected_storage = bigquery - // * inspected_storage = cloud_storage AND (state = done OR state = canceled) - // * end_time > \"2017-12-12T00:00:00+00:00\" - // - // The length of this field should be no more than 500 characters. - Filter string `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` - // The standard list page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // The standard list page token. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // The type of job. Defaults to `DlpJobType.INSPECT` - Type DlpJobType `protobuf:"varint,5,opt,name=type,proto3,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` - // Comma separated list of fields to order by, - // followed by `asc` or `desc` postfix. This list is case-insensitive, - // default sorting order is ascending, redundant space characters are - // insignificant. - // - // Example: `name asc, end_time asc, create_time desc` + // The location to be scanned. // - // Supported fields are: + // Types that are assignable to Location: // - // - `create_time`: corresponds to time the job was created. - // - `end_time`: corresponds to time the job ended. - // - `name`: corresponds to job's name. - // - `state`: corresponds to `state` - OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,7,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + // *DataProfileLocation_OrganizationId + // *DataProfileLocation_FolderId + Location isDataProfileLocation_Location `protobuf_oneof:"location"` } -func (x *ListDlpJobsRequest) Reset() { - *x = ListDlpJobsRequest{} +func (x *DataProfileLocation) Reset() { + *x = DataProfileLocation{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[101] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListDlpJobsRequest) String() string { +func (x *DataProfileLocation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDlpJobsRequest) ProtoMessage() {} +func (*DataProfileLocation) ProtoMessage() {} -func (x *ListDlpJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[101] +func (x *DataProfileLocation) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10702,89 +11284,97 @@ func (x *ListDlpJobsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDlpJobsRequest.ProtoReflect.Descriptor instead. -func (*ListDlpJobsRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{101} +// Deprecated: Use DataProfileLocation.ProtoReflect.Descriptor instead. +func (*DataProfileLocation) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{107} } -func (x *ListDlpJobsRequest) GetParent() string { - if x != nil { - return x.Parent +func (m *DataProfileLocation) GetLocation() isDataProfileLocation_Location { + if m != nil { + return m.Location } - return "" + return nil } -func (x *ListDlpJobsRequest) GetFilter() string { - if x != nil { - return x.Filter +func (x *DataProfileLocation) GetOrganizationId() int64 { + if x, ok := x.GetLocation().(*DataProfileLocation_OrganizationId); ok { + return x.OrganizationId } - return "" + return 0 } -func (x *ListDlpJobsRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize +func (x *DataProfileLocation) GetFolderId() int64 { + if x, ok := x.GetLocation().(*DataProfileLocation_FolderId); ok { + return x.FolderId } return 0 } -func (x *ListDlpJobsRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" +type isDataProfileLocation_Location interface { + isDataProfileLocation_Location() } -func (x *ListDlpJobsRequest) GetType() DlpJobType { - if x != nil { - return x.Type - } - return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED +type DataProfileLocation_OrganizationId struct { + // The ID of an organization to scan. + OrganizationId int64 `protobuf:"varint,1,opt,name=organization_id,json=organizationId,proto3,oneof"` } -func (x *ListDlpJobsRequest) GetOrderBy() string { - if x != nil { - return x.OrderBy - } - return "" +type DataProfileLocation_FolderId struct { + // The ID of the Folder within an organization to scan. + FolderId int64 `protobuf:"varint,2,opt,name=folder_id,json=folderId,proto3,oneof"` } -func (x *ListDlpJobsRequest) GetLocationId() string { - if x != nil { - return x.LocationId - } - return "" -} +func (*DataProfileLocation_OrganizationId) isDataProfileLocation_Location() {} -// The response message for listing DLP jobs. -type ListDlpJobsResponse struct { +func (*DataProfileLocation_FolderId) isDataProfileLocation_Location() {} + +// Combines all of the information about a DLP job. +type DlpJob struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A list of DlpJobs that matches the specified filter in the request. - Jobs []*DlpJob `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` - // The standard List next-page token. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // The server-assigned name. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The type of job. + Type DlpJobType `protobuf:"varint,2,opt,name=type,proto3,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` + // State of a job. + State DlpJob_JobState `protobuf:"varint,3,opt,name=state,proto3,enum=google.privacy.dlp.v2.DlpJob_JobState" json:"state,omitempty"` + // Types that are assignable to Details: + // + // *DlpJob_RiskDetails + // *DlpJob_InspectDetails + Details isDlpJob_Details `protobuf_oneof:"details"` + // Time when the job was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Time when the job started. + StartTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // Time when the job finished. + EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // If created by a job trigger, the resource name of the trigger that + // instantiated the job. + JobTriggerName string `protobuf:"bytes,10,opt,name=job_trigger_name,json=jobTriggerName,proto3" json:"job_trigger_name,omitempty"` + // A stream of errors encountered running the job. + Errors []*Error `protobuf:"bytes,11,rep,name=errors,proto3" json:"errors,omitempty"` } -func (x *ListDlpJobsResponse) Reset() { - *x = ListDlpJobsResponse{} +func (x *DlpJob) Reset() { + *x = DlpJob{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[102] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListDlpJobsResponse) String() string { +func (x *DlpJob) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDlpJobsResponse) ProtoMessage() {} +func (*DlpJob) ProtoMessage() {} -func (x *ListDlpJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[102] +func (x *DlpJob) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10795,150 +11385,133 @@ func (x *ListDlpJobsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDlpJobsResponse.ProtoReflect.Descriptor instead. -func (*ListDlpJobsResponse) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{102} +// Deprecated: Use DlpJob.ProtoReflect.Descriptor instead. +func (*DlpJob) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{108} } -func (x *ListDlpJobsResponse) GetJobs() []*DlpJob { +func (x *DlpJob) GetName() string { if x != nil { - return x.Jobs + return x.Name } - return nil + return "" } -func (x *ListDlpJobsResponse) GetNextPageToken() string { +func (x *DlpJob) GetType() DlpJobType { if x != nil { - return x.NextPageToken + return x.Type } - return "" + return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED } -// The request message for canceling a DLP job. -type CancelDlpJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The name of the DlpJob resource to be cancelled. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +func (x *DlpJob) GetState() DlpJob_JobState { + if x != nil { + return x.State + } + return DlpJob_JOB_STATE_UNSPECIFIED } -func (x *CancelDlpJobRequest) Reset() { - *x = CancelDlpJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[103] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *DlpJob) GetDetails() isDlpJob_Details { + if m != nil { + return m.Details } + return nil } -func (x *CancelDlpJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *DlpJob) GetRiskDetails() *AnalyzeDataSourceRiskDetails { + if x, ok := x.GetDetails().(*DlpJob_RiskDetails); ok { + return x.RiskDetails + } + return nil } -func (*CancelDlpJobRequest) ProtoMessage() {} - -func (x *CancelDlpJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[103] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *DlpJob) GetInspectDetails() *InspectDataSourceDetails { + if x, ok := x.GetDetails().(*DlpJob_InspectDetails); ok { + return x.InspectDetails } - return mi.MessageOf(x) + return nil } -// Deprecated: Use CancelDlpJobRequest.ProtoReflect.Descriptor instead. -func (*CancelDlpJobRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{103} +func (x *DlpJob) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil } -func (x *CancelDlpJobRequest) GetName() string { +func (x *DlpJob) GetStartTime() *timestamppb.Timestamp { if x != nil { - return x.Name + return x.StartTime } - return "" + return nil } -// The request message for finishing a DLP hybrid job. -type FinishDlpJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The name of the DlpJob resource to be cancelled. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +func (x *DlpJob) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil } -func (x *FinishDlpJobRequest) Reset() { - *x = FinishDlpJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *DlpJob) GetJobTriggerName() string { + if x != nil { + return x.JobTriggerName } + return "" } -func (x *FinishDlpJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *DlpJob) GetErrors() []*Error { + if x != nil { + return x.Errors + } + return nil } -func (*FinishDlpJobRequest) ProtoMessage() {} - -func (x *FinishDlpJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[104] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +type isDlpJob_Details interface { + isDlpJob_Details() } -// Deprecated: Use FinishDlpJobRequest.ProtoReflect.Descriptor instead. -func (*FinishDlpJobRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{104} +type DlpJob_RiskDetails struct { + // Results from analyzing risk of a data source. + RiskDetails *AnalyzeDataSourceRiskDetails `protobuf:"bytes,4,opt,name=risk_details,json=riskDetails,proto3,oneof"` } -func (x *FinishDlpJobRequest) GetName() string { - if x != nil { - return x.Name - } - return "" +type DlpJob_InspectDetails struct { + // Results from inspecting a data source. + InspectDetails *InspectDataSourceDetails `protobuf:"bytes,5,opt,name=inspect_details,json=inspectDetails,proto3,oneof"` } -// The request message for deleting a DLP job. -type DeleteDlpJobRequest struct { +func (*DlpJob_RiskDetails) isDlpJob_Details() {} + +func (*DlpJob_InspectDetails) isDlpJob_Details() {} + +// The request message for [DlpJobs.GetDlpJob][]. +type GetDlpJobRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of the DlpJob resource to be deleted. + // Required. The name of the DlpJob resource. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteDlpJobRequest) Reset() { - *x = DeleteDlpJobRequest{} +func (x *GetDlpJobRequest) Reset() { + *x = GetDlpJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[105] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteDlpJobRequest) String() string { +func (x *GetDlpJobRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteDlpJobRequest) ProtoMessage() {} +func (*GetDlpJobRequest) ProtoMessage() {} -func (x *DeleteDlpJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[105] +func (x *GetDlpJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10949,73 +11522,113 @@ func (x *DeleteDlpJobRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteDlpJobRequest.ProtoReflect.Descriptor instead. -func (*DeleteDlpJobRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{105} +// Deprecated: Use GetDlpJobRequest.ProtoReflect.Descriptor instead. +func (*GetDlpJobRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{109} } -func (x *DeleteDlpJobRequest) GetName() string { +func (x *GetDlpJobRequest) GetName() string { if x != nil { return x.Name } return "" } -// Request message for CreateDeidentifyTemplate. -type CreateDeidentifyTemplateRequest struct { +// The request message for listing DLP jobs. +type ListDlpJobsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Parent resource name. // - // The format of this value varies depending on the scope of the request - // (project or organization) and whether you have [specified a processing + // The format of this value varies depending on whether you have [specified a + // processing // location](https://cloud.google.com/dlp/docs/specifying-location): // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // + Organizations scope, location specified:
- // `organizations/`ORG_ID`/locations/`LOCATION_ID - // + Organizations scope, no location specified (defaults to global):
- // `organizations/`ORG_ID + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID // // The following example `parent` string specifies a parent project with the // identifier `example-project`, and specifies the `europe-west3` location // for processing data: // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. The DeidentifyTemplate to create. - DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate,proto3" json:"deidentify_template,omitempty"` - // The template id can contain uppercase and lowercase letters, - // numbers, and hyphens; that is, it must match the regular - // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 - // characters. Can be empty to allow the system to generate one. - TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` -} - -func (x *CreateDeidentifyTemplateRequest) Reset() { - *x = CreateDeidentifyTemplateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[106] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateDeidentifyTemplateRequest) String() string { + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"` + // Allows filtering. + // + // Supported syntax: + // + // * Filter expressions are made up of one or more restrictions. + // * Restrictions can be combined by `AND` or `OR` logical operators. A + // sequence of restrictions implicitly uses `AND`. + // * A restriction has the form of `{field} {operator} {value}`. + // * Supported fields/values for inspect jobs: + // - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED + // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY + // - `trigger_name` - The name of the trigger that created the job. + // - 'end_time` - Corresponds to the time the job finished. + // - 'start_time` - Corresponds to the time the job finished. + // + // * Supported fields for risk analysis jobs: + // - `state` - RUNNING|CANCELED|FINISHED|FAILED + // - 'end_time` - Corresponds to the time the job finished. + // - 'start_time` - Corresponds to the time the job finished. + // + // * The operator must be `=` or `!=`. + // + // Examples: + // + // * inspected_storage = cloud_storage AND state = done + // * inspected_storage = cloud_storage OR inspected_storage = bigquery + // * inspected_storage = cloud_storage AND (state = done OR state = canceled) + // * end_time > \"2017-12-12T00:00:00+00:00\" + // + // The length of this field should be no more than 500 characters. + Filter string `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + // The standard list page size. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // The standard list page token. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // The type of job. Defaults to `DlpJobType.INSPECT` + Type DlpJobType `protobuf:"varint,5,opt,name=type,proto3,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` + // Comma separated list of fields to order by, + // followed by `asc` or `desc` postfix. This list is case-insensitive, + // default sorting order is ascending, redundant space characters are + // insignificant. + // + // Example: `name asc, end_time asc, create_time desc` + // + // Supported fields are: + // + // - `create_time`: corresponds to the time the job was created. + // - `end_time`: corresponds to the time the job ended. + // - `name`: corresponds to the job's name. + // - `state`: corresponds to `state` + OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,7,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` +} + +func (x *ListDlpJobsRequest) Reset() { + *x = ListDlpJobsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListDlpJobsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateDeidentifyTemplateRequest) ProtoMessage() {} +func (*ListDlpJobsRequest) ProtoMessage() {} -func (x *CreateDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[106] +func (x *ListDlpJobsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11026,72 +11639,89 @@ func (x *CreateDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. -func (*CreateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{106} +// Deprecated: Use ListDlpJobsRequest.ProtoReflect.Descriptor instead. +func (*ListDlpJobsRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{110} } -func (x *CreateDeidentifyTemplateRequest) GetParent() string { +func (x *ListDlpJobsRequest) GetParent() string { if x != nil { return x.Parent } return "" } -func (x *CreateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { +func (x *ListDlpJobsRequest) GetFilter() string { if x != nil { - return x.DeidentifyTemplate + return x.Filter } - return nil + return "" } -func (x *CreateDeidentifyTemplateRequest) GetTemplateId() string { +func (x *ListDlpJobsRequest) GetPageSize() int32 { if x != nil { - return x.TemplateId + return x.PageSize + } + return 0 +} + +func (x *ListDlpJobsRequest) GetPageToken() string { + if x != nil { + return x.PageToken } return "" } -func (x *CreateDeidentifyTemplateRequest) GetLocationId() string { +func (x *ListDlpJobsRequest) GetType() DlpJobType { + if x != nil { + return x.Type + } + return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED +} + +func (x *ListDlpJobsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +func (x *ListDlpJobsRequest) GetLocationId() string { if x != nil { return x.LocationId } return "" } -// Request message for UpdateDeidentifyTemplate. -type UpdateDeidentifyTemplateRequest struct { +// The response message for listing DLP jobs. +type ListDlpJobsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of organization and deidentify template to be updated, for - // example `organizations/433245324/deidentifyTemplates/432452342` or - // projects/project-id/deidentifyTemplates/432452342. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // New DeidentifyTemplate value. - DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate,proto3" json:"deidentify_template,omitempty"` - // Mask to control which fields get updated. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + // A list of DlpJobs that matches the specified filter in the request. + Jobs []*DlpJob `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` + // The standard List next-page token. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *UpdateDeidentifyTemplateRequest) Reset() { - *x = UpdateDeidentifyTemplateRequest{} +func (x *ListDlpJobsResponse) Reset() { + *x = ListDlpJobsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[107] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateDeidentifyTemplateRequest) String() string { +func (x *ListDlpJobsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateDeidentifyTemplateRequest) ProtoMessage() {} +func (*ListDlpJobsResponse) ProtoMessage() {} -func (x *UpdateDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[107] +func (x *ListDlpJobsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11102,61 +11732,52 @@ func (x *UpdateDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. -func (*UpdateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{107} -} - -func (x *UpdateDeidentifyTemplateRequest) GetName() string { - if x != nil { - return x.Name - } - return "" +// Deprecated: Use ListDlpJobsResponse.ProtoReflect.Descriptor instead. +func (*ListDlpJobsResponse) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{111} } -func (x *UpdateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { +func (x *ListDlpJobsResponse) GetJobs() []*DlpJob { if x != nil { - return x.DeidentifyTemplate + return x.Jobs } return nil } -func (x *UpdateDeidentifyTemplateRequest) GetUpdateMask() *fieldmaskpb.FieldMask { +func (x *ListDlpJobsResponse) GetNextPageToken() string { if x != nil { - return x.UpdateMask + return x.NextPageToken } - return nil + return "" } -// Request message for GetDeidentifyTemplate. -type GetDeidentifyTemplateRequest struct { +// The request message for canceling a DLP job. +type CancelDlpJobRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the organization and deidentify template to be read, for - // example `organizations/433245324/deidentifyTemplates/432452342` or - // projects/project-id/deidentifyTemplates/432452342. + // Required. The name of the DlpJob resource to be cancelled. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetDeidentifyTemplateRequest) Reset() { - *x = GetDeidentifyTemplateRequest{} +func (x *CancelDlpJobRequest) Reset() { + *x = CancelDlpJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[108] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetDeidentifyTemplateRequest) String() string { +func (x *CancelDlpJobRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetDeidentifyTemplateRequest) ProtoMessage() {} +func (*CancelDlpJobRequest) ProtoMessage() {} -func (x *GetDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[108] +func (x *CancelDlpJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11167,86 +11788,45 @@ func (x *GetDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. -func (*GetDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{108} +// Deprecated: Use CancelDlpJobRequest.ProtoReflect.Descriptor instead. +func (*CancelDlpJobRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{112} } -func (x *GetDeidentifyTemplateRequest) GetName() string { +func (x *CancelDlpJobRequest) GetName() string { if x != nil { return x.Name } return "" } -// Request message for ListDeidentifyTemplates. -type ListDeidentifyTemplatesRequest struct { +// The request message for finishing a DLP hybrid job. +type FinishDlpJobRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Parent resource name. - // - // The format of this value varies depending on the scope of the request - // (project or organization) and whether you have [specified a processing - // location](https://cloud.google.com/dlp/docs/specifying-location): - // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // + Organizations scope, location specified:
- // `organizations/`ORG_ID`/locations/`LOCATION_ID - // + Organizations scope, no location specified (defaults to global):
- // `organizations/`ORG_ID - // - // The following example `parent` string specifies a parent project with the - // identifier `example-project`, and specifies the `europe-west3` location - // for processing data: - // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Page token to continue retrieval. Comes from previous call - // to `ListDeidentifyTemplates`. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Size of the page, can be limited by server. If zero server returns - // a page of max size 100. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Comma separated list of fields to order by, - // followed by `asc` or `desc` postfix. This list is case-insensitive, - // default sorting order is ascending, redundant space characters are - // insignificant. - // - // Example: `name asc,update_time, create_time desc` - // - // Supported fields are: - // - // - `create_time`: corresponds to time the template was created. - // - `update_time`: corresponds to time the template was last updated. - // - `name`: corresponds to template's name. - // - `display_name`: corresponds to template's display name. - OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + // Required. The name of the DlpJob resource to be cancelled. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListDeidentifyTemplatesRequest) Reset() { - *x = ListDeidentifyTemplatesRequest{} +func (x *FinishDlpJobRequest) Reset() { + *x = FinishDlpJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[109] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListDeidentifyTemplatesRequest) String() string { +func (x *FinishDlpJobRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDeidentifyTemplatesRequest) ProtoMessage() {} +func (*FinishDlpJobRequest) ProtoMessage() {} -func (x *ListDeidentifyTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[109] +func (x *FinishDlpJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11257,77 +11837,45 @@ func (x *ListDeidentifyTemplatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDeidentifyTemplatesRequest.ProtoReflect.Descriptor instead. -func (*ListDeidentifyTemplatesRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{109} +// Deprecated: Use FinishDlpJobRequest.ProtoReflect.Descriptor instead. +func (*FinishDlpJobRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{113} } -func (x *ListDeidentifyTemplatesRequest) GetParent() string { +func (x *FinishDlpJobRequest) GetName() string { if x != nil { - return x.Parent + return x.Name } return "" } -func (x *ListDeidentifyTemplatesRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} +// The request message for deleting a DLP job. +type DeleteDlpJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ListDeidentifyTemplatesRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListDeidentifyTemplatesRequest) GetOrderBy() string { - if x != nil { - return x.OrderBy - } - return "" -} - -func (x *ListDeidentifyTemplatesRequest) GetLocationId() string { - if x != nil { - return x.LocationId - } - return "" -} - -// Response message for ListDeidentifyTemplates. -type ListDeidentifyTemplatesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of deidentify templates, up to page_size in - // ListDeidentifyTemplatesRequest. - DeidentifyTemplates []*DeidentifyTemplate `protobuf:"bytes,1,rep,name=deidentify_templates,json=deidentifyTemplates,proto3" json:"deidentify_templates,omitempty"` - // If the next page is available then the next page token to be used - // in following ListDeidentifyTemplates request. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Required. The name of the DlpJob resource to be deleted. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListDeidentifyTemplatesResponse) Reset() { - *x = ListDeidentifyTemplatesResponse{} +func (x *DeleteDlpJobRequest) Reset() { + *x = DeleteDlpJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[110] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListDeidentifyTemplatesResponse) String() string { +func (x *DeleteDlpJobRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDeidentifyTemplatesResponse) ProtoMessage() {} +func (*DeleteDlpJobRequest) ProtoMessage() {} -func (x *ListDeidentifyTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[110] +func (x *DeleteDlpJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11338,54 +11886,73 @@ func (x *ListDeidentifyTemplatesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDeidentifyTemplatesResponse.ProtoReflect.Descriptor instead. -func (*ListDeidentifyTemplatesResponse) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{110} -} - -func (x *ListDeidentifyTemplatesResponse) GetDeidentifyTemplates() []*DeidentifyTemplate { - if x != nil { - return x.DeidentifyTemplates - } - return nil +// Deprecated: Use DeleteDlpJobRequest.ProtoReflect.Descriptor instead. +func (*DeleteDlpJobRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{114} } -func (x *ListDeidentifyTemplatesResponse) GetNextPageToken() string { +func (x *DeleteDlpJobRequest) GetName() string { if x != nil { - return x.NextPageToken + return x.Name } return "" } -// Request message for DeleteDeidentifyTemplate. -type DeleteDeidentifyTemplateRequest struct { +// Request message for CreateDeidentifyTemplate. +type CreateDeidentifyTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the organization and deidentify template to be deleted, - // for example `organizations/433245324/deidentifyTemplates/432452342` or - // projects/project-id/deidentifyTemplates/432452342. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. Parent resource name. + // + // The format of this value varies depending on the scope of the request + // (project or organization) and whether you have [specified a processing + // location](https://cloud.google.com/dlp/docs/specifying-location): + // + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // - Organizations scope, location specified:
+ // `organizations/`ORG_ID`/locations/`LOCATION_ID + // - Organizations scope, no location specified (defaults to global):
+ // `organizations/`ORG_ID + // + // The following example `parent` string specifies a parent project with the + // identifier `example-project`, and specifies the `europe-west3` location + // for processing data: + // + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The DeidentifyTemplate to create. + DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate,proto3" json:"deidentify_template,omitempty"` + // The template id can contain uppercase and lowercase letters, + // numbers, and hyphens; that is, it must match the regular + // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 + // characters. Can be empty to allow the system to generate one. + TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *DeleteDeidentifyTemplateRequest) Reset() { - *x = DeleteDeidentifyTemplateRequest{} +func (x *CreateDeidentifyTemplateRequest) Reset() { + *x = CreateDeidentifyTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[111] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteDeidentifyTemplateRequest) String() string { +func (x *CreateDeidentifyTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteDeidentifyTemplateRequest) ProtoMessage() {} +func (*CreateDeidentifyTemplateRequest) ProtoMessage() {} -func (x *DeleteDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[111] +func (x *CreateDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11396,57 +11963,72 @@ func (x *DeleteDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. -func (*DeleteDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{111} +// Deprecated: Use CreateDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. +func (*CreateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{115} } -func (x *DeleteDeidentifyTemplateRequest) GetName() string { +func (x *CreateDeidentifyTemplateRequest) GetParent() string { if x != nil { - return x.Name + return x.Parent } return "" } -// Configuration for a custom dictionary created from a data source of any size -// up to the maximum size defined in the -// [limits](https://cloud.google.com/dlp/limits) page. The artifacts of -// dictionary creation are stored in the specified Google Cloud Storage -// location. Consider using `CustomInfoType.Dictionary` for smaller dictionaries -// that satisfy the size requirements. -type LargeCustomDictionaryConfig struct { +func (x *CreateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { + if x != nil { + return x.DeidentifyTemplate + } + return nil +} + +func (x *CreateDeidentifyTemplateRequest) GetTemplateId() string { + if x != nil { + return x.TemplateId + } + return "" +} + +func (x *CreateDeidentifyTemplateRequest) GetLocationId() string { + if x != nil { + return x.LocationId + } + return "" +} + +// Request message for UpdateDeidentifyTemplate. +type UpdateDeidentifyTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Location to store dictionary artifacts in Google Cloud Storage. These files - // will only be accessible by project owners and the DLP API. If any of these - // artifacts are modified, the dictionary is considered invalid and can no - // longer be used. - OutputPath *CloudStoragePath `protobuf:"bytes,1,opt,name=output_path,json=outputPath,proto3" json:"output_path,omitempty"` - // Types that are assignable to Source: - // *LargeCustomDictionaryConfig_CloudStorageFileSet - // *LargeCustomDictionaryConfig_BigQueryField - Source isLargeCustomDictionaryConfig_Source `protobuf_oneof:"source"` + // Required. Resource name of organization and deidentify template to be updated, for + // example `organizations/433245324/deidentifyTemplates/432452342` or + // projects/project-id/deidentifyTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // New DeidentifyTemplate value. + DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate,proto3" json:"deidentify_template,omitempty"` + // Mask to control which fields get updated. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *LargeCustomDictionaryConfig) Reset() { - *x = LargeCustomDictionaryConfig{} +func (x *UpdateDeidentifyTemplateRequest) Reset() { + *x = UpdateDeidentifyTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[112] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LargeCustomDictionaryConfig) String() string { +func (x *UpdateDeidentifyTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LargeCustomDictionaryConfig) ProtoMessage() {} +func (*UpdateDeidentifyTemplateRequest) ProtoMessage() {} -func (x *LargeCustomDictionaryConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[112] +func (x *UpdateDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11457,84 +12039,61 @@ func (x *LargeCustomDictionaryConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LargeCustomDictionaryConfig.ProtoReflect.Descriptor instead. -func (*LargeCustomDictionaryConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{112} +// Deprecated: Use UpdateDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. +func (*UpdateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{116} } -func (x *LargeCustomDictionaryConfig) GetOutputPath() *CloudStoragePath { +func (x *UpdateDeidentifyTemplateRequest) GetName() string { if x != nil { - return x.OutputPath - } - return nil -} - -func (m *LargeCustomDictionaryConfig) GetSource() isLargeCustomDictionaryConfig_Source { - if m != nil { - return m.Source + return x.Name } - return nil + return "" } -func (x *LargeCustomDictionaryConfig) GetCloudStorageFileSet() *CloudStorageFileSet { - if x, ok := x.GetSource().(*LargeCustomDictionaryConfig_CloudStorageFileSet); ok { - return x.CloudStorageFileSet +func (x *UpdateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { + if x != nil { + return x.DeidentifyTemplate } return nil } -func (x *LargeCustomDictionaryConfig) GetBigQueryField() *BigQueryField { - if x, ok := x.GetSource().(*LargeCustomDictionaryConfig_BigQueryField); ok { - return x.BigQueryField +func (x *UpdateDeidentifyTemplateRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask } return nil } -type isLargeCustomDictionaryConfig_Source interface { - isLargeCustomDictionaryConfig_Source() -} - -type LargeCustomDictionaryConfig_CloudStorageFileSet struct { - // Set of files containing newline-delimited lists of dictionary phrases. - CloudStorageFileSet *CloudStorageFileSet `protobuf:"bytes,2,opt,name=cloud_storage_file_set,json=cloudStorageFileSet,proto3,oneof"` -} - -type LargeCustomDictionaryConfig_BigQueryField struct { - // Field in a BigQuery table where each cell represents a dictionary phrase. - BigQueryField *BigQueryField `protobuf:"bytes,3,opt,name=big_query_field,json=bigQueryField,proto3,oneof"` -} - -func (*LargeCustomDictionaryConfig_CloudStorageFileSet) isLargeCustomDictionaryConfig_Source() {} - -func (*LargeCustomDictionaryConfig_BigQueryField) isLargeCustomDictionaryConfig_Source() {} - -// Summary statistics of a custom dictionary. -type LargeCustomDictionaryStats struct { +// Request message for GetDeidentifyTemplate. +type GetDeidentifyTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Approximate number of distinct phrases in the dictionary. - ApproxNumPhrases int64 `protobuf:"varint,1,opt,name=approx_num_phrases,json=approxNumPhrases,proto3" json:"approx_num_phrases,omitempty"` + // Required. Resource name of the organization and deidentify template to be read, for + // example `organizations/433245324/deidentifyTemplates/432452342` or + // projects/project-id/deidentifyTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *LargeCustomDictionaryStats) Reset() { - *x = LargeCustomDictionaryStats{} +func (x *GetDeidentifyTemplateRequest) Reset() { + *x = GetDeidentifyTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[113] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LargeCustomDictionaryStats) String() string { +func (x *GetDeidentifyTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LargeCustomDictionaryStats) ProtoMessage() {} +func (*GetDeidentifyTemplateRequest) ProtoMessage() {} -func (x *LargeCustomDictionaryStats) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[113] +func (x *GetDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11545,56 +12104,86 @@ func (x *LargeCustomDictionaryStats) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LargeCustomDictionaryStats.ProtoReflect.Descriptor instead. -func (*LargeCustomDictionaryStats) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{113} -} - -func (x *LargeCustomDictionaryStats) GetApproxNumPhrases() int64 { +// Deprecated: Use GetDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{117} +} + +func (x *GetDeidentifyTemplateRequest) GetName() string { if x != nil { - return x.ApproxNumPhrases + return x.Name } - return 0 + return "" } -// Configuration for stored infoTypes. All fields and subfield are provided -// by the user. For more information, see -// https://cloud.google.com/dlp/docs/creating-custom-infotypes. -type StoredInfoTypeConfig struct { +// Request message for ListDeidentifyTemplates. +type ListDeidentifyTemplatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Display name of the StoredInfoType (max 256 characters). - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Description of the StoredInfoType (max 256 characters). - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // Stored infotype types. + // Required. Parent resource name. // - // Types that are assignable to Type: - // *StoredInfoTypeConfig_LargeCustomDictionary - // *StoredInfoTypeConfig_Dictionary - // *StoredInfoTypeConfig_Regex - Type isStoredInfoTypeConfig_Type `protobuf_oneof:"type"` + // The format of this value varies depending on the scope of the request + // (project or organization) and whether you have [specified a processing + // location](https://cloud.google.com/dlp/docs/specifying-location): + // + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // - Organizations scope, location specified:
+ // `organizations/`ORG_ID`/locations/`LOCATION_ID + // - Organizations scope, no location specified (defaults to global):
+ // `organizations/`ORG_ID + // + // The following example `parent` string specifies a parent project with the + // identifier `example-project`, and specifies the `europe-west3` location + // for processing data: + // + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Page token to continue retrieval. Comes from previous call + // to `ListDeidentifyTemplates`. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Size of the page, can be limited by the server. If zero server returns + // a page of max size 100. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Comma separated list of fields to order by, + // followed by `asc` or `desc` postfix. This list is case-insensitive, + // default sorting order is ascending, redundant space characters are + // insignificant. + // + // Example: `name asc,update_time, create_time desc` + // + // Supported fields are: + // + // - `create_time`: corresponds to the time the template was created. + // - `update_time`: corresponds to the time the template was last updated. + // - `name`: corresponds to the template's name. + // - `display_name`: corresponds to the template's display name. + OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *StoredInfoTypeConfig) Reset() { - *x = StoredInfoTypeConfig{} +func (x *ListDeidentifyTemplatesRequest) Reset() { + *x = ListDeidentifyTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[114] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StoredInfoTypeConfig) String() string { +func (x *ListDeidentifyTemplatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StoredInfoTypeConfig) ProtoMessage() {} +func (*ListDeidentifyTemplatesRequest) ProtoMessage() {} -func (x *StoredInfoTypeConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[114] +func (x *ListDeidentifyTemplatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11605,108 +12194,77 @@ func (x *StoredInfoTypeConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StoredInfoTypeConfig.ProtoReflect.Descriptor instead. -func (*StoredInfoTypeConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{114} +// Deprecated: Use ListDeidentifyTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListDeidentifyTemplatesRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{118} } -func (x *StoredInfoTypeConfig) GetDisplayName() string { +func (x *ListDeidentifyTemplatesRequest) GetParent() string { if x != nil { - return x.DisplayName + return x.Parent } return "" } -func (x *StoredInfoTypeConfig) GetDescription() string { +func (x *ListDeidentifyTemplatesRequest) GetPageToken() string { if x != nil { - return x.Description + return x.PageToken } return "" } -func (m *StoredInfoTypeConfig) GetType() isStoredInfoTypeConfig_Type { - if m != nil { - return m.Type - } - return nil -} - -func (x *StoredInfoTypeConfig) GetLargeCustomDictionary() *LargeCustomDictionaryConfig { - if x, ok := x.GetType().(*StoredInfoTypeConfig_LargeCustomDictionary); ok { - return x.LargeCustomDictionary +func (x *ListDeidentifyTemplatesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } - return nil + return 0 } -func (x *StoredInfoTypeConfig) GetDictionary() *CustomInfoType_Dictionary { - if x, ok := x.GetType().(*StoredInfoTypeConfig_Dictionary); ok { - return x.Dictionary +func (x *ListDeidentifyTemplatesRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy } - return nil + return "" } -func (x *StoredInfoTypeConfig) GetRegex() *CustomInfoType_Regex { - if x, ok := x.GetType().(*StoredInfoTypeConfig_Regex); ok { - return x.Regex +func (x *ListDeidentifyTemplatesRequest) GetLocationId() string { + if x != nil { + return x.LocationId } - return nil -} - -type isStoredInfoTypeConfig_Type interface { - isStoredInfoTypeConfig_Type() -} - -type StoredInfoTypeConfig_LargeCustomDictionary struct { - // StoredInfoType where findings are defined by a dictionary of phrases. - LargeCustomDictionary *LargeCustomDictionaryConfig `protobuf:"bytes,3,opt,name=large_custom_dictionary,json=largeCustomDictionary,proto3,oneof"` -} - -type StoredInfoTypeConfig_Dictionary struct { - // Store dictionary-based CustomInfoType. - Dictionary *CustomInfoType_Dictionary `protobuf:"bytes,4,opt,name=dictionary,proto3,oneof"` -} - -type StoredInfoTypeConfig_Regex struct { - // Store regular expression-based StoredInfoType. - Regex *CustomInfoType_Regex `protobuf:"bytes,5,opt,name=regex,proto3,oneof"` + return "" } -func (*StoredInfoTypeConfig_LargeCustomDictionary) isStoredInfoTypeConfig_Type() {} - -func (*StoredInfoTypeConfig_Dictionary) isStoredInfoTypeConfig_Type() {} - -func (*StoredInfoTypeConfig_Regex) isStoredInfoTypeConfig_Type() {} - -// Statistics for a StoredInfoType. -type StoredInfoTypeStats struct { +// Response message for ListDeidentifyTemplates. +type ListDeidentifyTemplatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Stat types - // - // Types that are assignable to Type: - // *StoredInfoTypeStats_LargeCustomDictionary - Type isStoredInfoTypeStats_Type `protobuf_oneof:"type"` + // List of deidentify templates, up to page_size in + // ListDeidentifyTemplatesRequest. + DeidentifyTemplates []*DeidentifyTemplate `protobuf:"bytes,1,rep,name=deidentify_templates,json=deidentifyTemplates,proto3" json:"deidentify_templates,omitempty"` + // If the next page is available then the next page token to be used + // in following ListDeidentifyTemplates request. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *StoredInfoTypeStats) Reset() { - *x = StoredInfoTypeStats{} +func (x *ListDeidentifyTemplatesResponse) Reset() { + *x = ListDeidentifyTemplatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[115] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StoredInfoTypeStats) String() string { +func (x *ListDeidentifyTemplatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StoredInfoTypeStats) ProtoMessage() {} +func (*ListDeidentifyTemplatesResponse) ProtoMessage() {} -func (x *StoredInfoTypeStats) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[115] +func (x *ListDeidentifyTemplatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11717,86 +12275,54 @@ func (x *StoredInfoTypeStats) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StoredInfoTypeStats.ProtoReflect.Descriptor instead. -func (*StoredInfoTypeStats) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{115} +// Deprecated: Use ListDeidentifyTemplatesResponse.ProtoReflect.Descriptor instead. +func (*ListDeidentifyTemplatesResponse) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{119} } -func (m *StoredInfoTypeStats) GetType() isStoredInfoTypeStats_Type { - if m != nil { - return m.Type +func (x *ListDeidentifyTemplatesResponse) GetDeidentifyTemplates() []*DeidentifyTemplate { + if x != nil { + return x.DeidentifyTemplates } return nil } -func (x *StoredInfoTypeStats) GetLargeCustomDictionary() *LargeCustomDictionaryStats { - if x, ok := x.GetType().(*StoredInfoTypeStats_LargeCustomDictionary); ok { - return x.LargeCustomDictionary +func (x *ListDeidentifyTemplatesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } - return nil -} - -type isStoredInfoTypeStats_Type interface { - isStoredInfoTypeStats_Type() -} - -type StoredInfoTypeStats_LargeCustomDictionary struct { - // StoredInfoType where findings are defined by a dictionary of phrases. - LargeCustomDictionary *LargeCustomDictionaryStats `protobuf:"bytes,1,opt,name=large_custom_dictionary,json=largeCustomDictionary,proto3,oneof"` + return "" } -func (*StoredInfoTypeStats_LargeCustomDictionary) isStoredInfoTypeStats_Type() {} - -// Version of a StoredInfoType, including the configuration used to build it, -// create timestamp, and current state. -type StoredInfoTypeVersion struct { +// Request message for DeleteDeidentifyTemplate. +type DeleteDeidentifyTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // StoredInfoType configuration. - Config *StoredInfoTypeConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - // Create timestamp of the version. Read-only, determined by the system - // when the version is created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Stored info type version state. Read-only, updated by the system - // during dictionary creation. - State StoredInfoTypeState `protobuf:"varint,3,opt,name=state,proto3,enum=google.privacy.dlp.v2.StoredInfoTypeState" json:"state,omitempty"` - // Errors that occurred when creating this storedInfoType version, or - // anomalies detected in the storedInfoType data that render it unusable. Only - // the five most recent errors will be displayed, with the most recent error - // appearing first. - // - // For example, some of the data for stored custom dictionaries is put in - // the user's Google Cloud Storage bucket, and if this data is modified or - // deleted by the user or another system, the dictionary becomes invalid. - // - // If any errors occur, fix the problem indicated by the error message and - // use the UpdateStoredInfoType API method to create another version of the - // storedInfoType to continue using it, reusing the same `config` if it was - // not the source of the error. - Errors []*Error `protobuf:"bytes,4,rep,name=errors,proto3" json:"errors,omitempty"` - // Statistics about this storedInfoType version. - Stats *StoredInfoTypeStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"` + // Required. Resource name of the organization and deidentify template to be deleted, + // for example `organizations/433245324/deidentifyTemplates/432452342` or + // projects/project-id/deidentifyTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *StoredInfoTypeVersion) Reset() { - *x = StoredInfoTypeVersion{} +func (x *DeleteDeidentifyTemplateRequest) Reset() { + *x = DeleteDeidentifyTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[116] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StoredInfoTypeVersion) String() string { +func (x *DeleteDeidentifyTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StoredInfoTypeVersion) ProtoMessage() {} +func (*DeleteDeidentifyTemplateRequest) ProtoMessage() {} -func (x *StoredInfoTypeVersion) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[116] +func (x *DeleteDeidentifyTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11807,79 +12333,58 @@ func (x *StoredInfoTypeVersion) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StoredInfoTypeVersion.ProtoReflect.Descriptor instead. -func (*StoredInfoTypeVersion) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{116} +// Deprecated: Use DeleteDeidentifyTemplateRequest.ProtoReflect.Descriptor instead. +func (*DeleteDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{120} } -func (x *StoredInfoTypeVersion) GetConfig() *StoredInfoTypeConfig { +func (x *DeleteDeidentifyTemplateRequest) GetName() string { if x != nil { - return x.Config + return x.Name } - return nil -} - -func (x *StoredInfoTypeVersion) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil -} - -func (x *StoredInfoTypeVersion) GetState() StoredInfoTypeState { - if x != nil { - return x.State - } - return StoredInfoTypeState_STORED_INFO_TYPE_STATE_UNSPECIFIED -} - -func (x *StoredInfoTypeVersion) GetErrors() []*Error { - if x != nil { - return x.Errors - } - return nil -} - -func (x *StoredInfoTypeVersion) GetStats() *StoredInfoTypeStats { - if x != nil { - return x.Stats - } - return nil + return "" } -// StoredInfoType resource message that contains information about the current -// version and any pending updates. -type StoredInfoType struct { +// Configuration for a custom dictionary created from a data source of any size +// up to the maximum size defined in the +// [limits](https://cloud.google.com/dlp/limits) page. The artifacts of +// dictionary creation are stored in the specified Cloud Storage +// location. Consider using `CustomInfoType.Dictionary` for smaller dictionaries +// that satisfy the size requirements. +type LargeCustomDictionaryConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Resource name. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Current version of the stored info type. - CurrentVersion *StoredInfoTypeVersion `protobuf:"bytes,2,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty"` - // Pending versions of the stored info type. Empty if no versions are - // pending. - PendingVersions []*StoredInfoTypeVersion `protobuf:"bytes,3,rep,name=pending_versions,json=pendingVersions,proto3" json:"pending_versions,omitempty"` + // Location to store dictionary artifacts in Cloud Storage. These files + // will only be accessible by project owners and the DLP API. If any of these + // artifacts are modified, the dictionary is considered invalid and can no + // longer be used. + OutputPath *CloudStoragePath `protobuf:"bytes,1,opt,name=output_path,json=outputPath,proto3" json:"output_path,omitempty"` + // Types that are assignable to Source: + // + // *LargeCustomDictionaryConfig_CloudStorageFileSet + // *LargeCustomDictionaryConfig_BigQueryField + Source isLargeCustomDictionaryConfig_Source `protobuf_oneof:"source"` } -func (x *StoredInfoType) Reset() { - *x = StoredInfoType{} +func (x *LargeCustomDictionaryConfig) Reset() { + *x = LargeCustomDictionaryConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[117] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StoredInfoType) String() string { +func (x *LargeCustomDictionaryConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StoredInfoType) ProtoMessage() {} +func (*LargeCustomDictionaryConfig) ProtoMessage() {} -func (x *StoredInfoType) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[117] +func (x *LargeCustomDictionaryConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11890,87 +12395,84 @@ func (x *StoredInfoType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StoredInfoType.ProtoReflect.Descriptor instead. -func (*StoredInfoType) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{117} +// Deprecated: Use LargeCustomDictionaryConfig.ProtoReflect.Descriptor instead. +func (*LargeCustomDictionaryConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{121} } -func (x *StoredInfoType) GetName() string { +func (x *LargeCustomDictionaryConfig) GetOutputPath() *CloudStoragePath { if x != nil { - return x.Name + return x.OutputPath } - return "" + return nil } -func (x *StoredInfoType) GetCurrentVersion() *StoredInfoTypeVersion { - if x != nil { - return x.CurrentVersion +func (m *LargeCustomDictionaryConfig) GetSource() isLargeCustomDictionaryConfig_Source { + if m != nil { + return m.Source } return nil } -func (x *StoredInfoType) GetPendingVersions() []*StoredInfoTypeVersion { - if x != nil { - return x.PendingVersions +func (x *LargeCustomDictionaryConfig) GetCloudStorageFileSet() *CloudStorageFileSet { + if x, ok := x.GetSource().(*LargeCustomDictionaryConfig_CloudStorageFileSet); ok { + return x.CloudStorageFileSet } return nil } -// Request message for CreateStoredInfoType. -type CreateStoredInfoTypeRequest struct { +func (x *LargeCustomDictionaryConfig) GetBigQueryField() *BigQueryField { + if x, ok := x.GetSource().(*LargeCustomDictionaryConfig_BigQueryField); ok { + return x.BigQueryField + } + return nil +} + +type isLargeCustomDictionaryConfig_Source interface { + isLargeCustomDictionaryConfig_Source() +} + +type LargeCustomDictionaryConfig_CloudStorageFileSet struct { + // Set of files containing newline-delimited lists of dictionary phrases. + CloudStorageFileSet *CloudStorageFileSet `protobuf:"bytes,2,opt,name=cloud_storage_file_set,json=cloudStorageFileSet,proto3,oneof"` +} + +type LargeCustomDictionaryConfig_BigQueryField struct { + // Field in a BigQuery table where each cell represents a dictionary phrase. + BigQueryField *BigQueryField `protobuf:"bytes,3,opt,name=big_query_field,json=bigQueryField,proto3,oneof"` +} + +func (*LargeCustomDictionaryConfig_CloudStorageFileSet) isLargeCustomDictionaryConfig_Source() {} + +func (*LargeCustomDictionaryConfig_BigQueryField) isLargeCustomDictionaryConfig_Source() {} + +// Summary statistics of a custom dictionary. +type LargeCustomDictionaryStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Parent resource name. - // - // The format of this value varies depending on the scope of the request - // (project or organization) and whether you have [specified a processing - // location](https://cloud.google.com/dlp/docs/specifying-location): - // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // + Organizations scope, location specified:
- // `organizations/`ORG_ID`/locations/`LOCATION_ID - // + Organizations scope, no location specified (defaults to global):
- // `organizations/`ORG_ID - // - // The following example `parent` string specifies a parent project with the - // identifier `example-project`, and specifies the `europe-west3` location - // for processing data: - // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. Configuration of the storedInfoType to create. - Config *StoredInfoTypeConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - // The storedInfoType ID can contain uppercase and lowercase letters, - // numbers, and hyphens; that is, it must match the regular - // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 - // characters. Can be empty to allow the system to generate one. - StoredInfoTypeId string `protobuf:"bytes,3,opt,name=stored_info_type_id,json=storedInfoTypeId,proto3" json:"stored_info_type_id,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + // Approximate number of distinct phrases in the dictionary. + ApproxNumPhrases int64 `protobuf:"varint,1,opt,name=approx_num_phrases,json=approxNumPhrases,proto3" json:"approx_num_phrases,omitempty"` } -func (x *CreateStoredInfoTypeRequest) Reset() { - *x = CreateStoredInfoTypeRequest{} +func (x *LargeCustomDictionaryStats) Reset() { + *x = LargeCustomDictionaryStats{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[118] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateStoredInfoTypeRequest) String() string { +func (x *LargeCustomDictionaryStats) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateStoredInfoTypeRequest) ProtoMessage() {} +func (*LargeCustomDictionaryStats) ProtoMessage() {} -func (x *CreateStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[118] +func (x *LargeCustomDictionaryStats) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11981,74 +12483,57 @@ func (x *CreateStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateStoredInfoTypeRequest.ProtoReflect.Descriptor instead. -func (*CreateStoredInfoTypeRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{118} -} - -func (x *CreateStoredInfoTypeRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *CreateStoredInfoTypeRequest) GetConfig() *StoredInfoTypeConfig { - if x != nil { - return x.Config - } - return nil -} - -func (x *CreateStoredInfoTypeRequest) GetStoredInfoTypeId() string { - if x != nil { - return x.StoredInfoTypeId - } - return "" +// Deprecated: Use LargeCustomDictionaryStats.ProtoReflect.Descriptor instead. +func (*LargeCustomDictionaryStats) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{122} } -func (x *CreateStoredInfoTypeRequest) GetLocationId() string { +func (x *LargeCustomDictionaryStats) GetApproxNumPhrases() int64 { if x != nil { - return x.LocationId + return x.ApproxNumPhrases } - return "" + return 0 } -// Request message for UpdateStoredInfoType. -type UpdateStoredInfoTypeRequest struct { +// Configuration for stored infoTypes. All fields and subfield are provided +// by the user. For more information, see +// https://cloud.google.com/dlp/docs/creating-custom-infotypes. +type StoredInfoTypeConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of organization and storedInfoType to be updated, for - // example `organizations/433245324/storedInfoTypes/432452342` or - // projects/project-id/storedInfoTypes/432452342. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Updated configuration for the storedInfoType. If not provided, a new - // version of the storedInfoType will be created with the existing - // configuration. - Config *StoredInfoTypeConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - // Mask to control which fields get updated. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + // Display name of the StoredInfoType (max 256 characters). + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Description of the StoredInfoType (max 256 characters). + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // Stored infotype types. + // + // Types that are assignable to Type: + // + // *StoredInfoTypeConfig_LargeCustomDictionary + // *StoredInfoTypeConfig_Dictionary + // *StoredInfoTypeConfig_Regex + Type isStoredInfoTypeConfig_Type `protobuf_oneof:"type"` } -func (x *UpdateStoredInfoTypeRequest) Reset() { - *x = UpdateStoredInfoTypeRequest{} +func (x *StoredInfoTypeConfig) Reset() { + *x = StoredInfoTypeConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[119] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateStoredInfoTypeRequest) String() string { +func (x *StoredInfoTypeConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateStoredInfoTypeRequest) ProtoMessage() {} +func (*StoredInfoTypeConfig) ProtoMessage() {} -func (x *UpdateStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[119] +func (x *StoredInfoTypeConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12059,61 +12544,109 @@ func (x *UpdateStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateStoredInfoTypeRequest.ProtoReflect.Descriptor instead. -func (*UpdateStoredInfoTypeRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{119} +// Deprecated: Use StoredInfoTypeConfig.ProtoReflect.Descriptor instead. +func (*StoredInfoTypeConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{123} } -func (x *UpdateStoredInfoTypeRequest) GetName() string { +func (x *StoredInfoTypeConfig) GetDisplayName() string { if x != nil { - return x.Name + return x.DisplayName } return "" } -func (x *UpdateStoredInfoTypeRequest) GetConfig() *StoredInfoTypeConfig { +func (x *StoredInfoTypeConfig) GetDescription() string { if x != nil { - return x.Config + return x.Description } - return nil + return "" } -func (x *UpdateStoredInfoTypeRequest) GetUpdateMask() *fieldmaskpb.FieldMask { - if x != nil { - return x.UpdateMask +func (m *StoredInfoTypeConfig) GetType() isStoredInfoTypeConfig_Type { + if m != nil { + return m.Type } return nil } -// Request message for GetStoredInfoType. -type GetStoredInfoTypeRequest struct { +func (x *StoredInfoTypeConfig) GetLargeCustomDictionary() *LargeCustomDictionaryConfig { + if x, ok := x.GetType().(*StoredInfoTypeConfig_LargeCustomDictionary); ok { + return x.LargeCustomDictionary + } + return nil +} + +func (x *StoredInfoTypeConfig) GetDictionary() *CustomInfoType_Dictionary { + if x, ok := x.GetType().(*StoredInfoTypeConfig_Dictionary); ok { + return x.Dictionary + } + return nil +} + +func (x *StoredInfoTypeConfig) GetRegex() *CustomInfoType_Regex { + if x, ok := x.GetType().(*StoredInfoTypeConfig_Regex); ok { + return x.Regex + } + return nil +} + +type isStoredInfoTypeConfig_Type interface { + isStoredInfoTypeConfig_Type() +} + +type StoredInfoTypeConfig_LargeCustomDictionary struct { + // StoredInfoType where findings are defined by a dictionary of phrases. + LargeCustomDictionary *LargeCustomDictionaryConfig `protobuf:"bytes,3,opt,name=large_custom_dictionary,json=largeCustomDictionary,proto3,oneof"` +} + +type StoredInfoTypeConfig_Dictionary struct { + // Store dictionary-based CustomInfoType. + Dictionary *CustomInfoType_Dictionary `protobuf:"bytes,4,opt,name=dictionary,proto3,oneof"` +} + +type StoredInfoTypeConfig_Regex struct { + // Store regular expression-based StoredInfoType. + Regex *CustomInfoType_Regex `protobuf:"bytes,5,opt,name=regex,proto3,oneof"` +} + +func (*StoredInfoTypeConfig_LargeCustomDictionary) isStoredInfoTypeConfig_Type() {} + +func (*StoredInfoTypeConfig_Dictionary) isStoredInfoTypeConfig_Type() {} + +func (*StoredInfoTypeConfig_Regex) isStoredInfoTypeConfig_Type() {} + +// Statistics for a StoredInfoType. +type StoredInfoTypeStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the organization and storedInfoType to be read, for - // example `organizations/433245324/storedInfoTypes/432452342` or - // projects/project-id/storedInfoTypes/432452342. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Stat types + // + // Types that are assignable to Type: + // + // *StoredInfoTypeStats_LargeCustomDictionary + Type isStoredInfoTypeStats_Type `protobuf_oneof:"type"` } -func (x *GetStoredInfoTypeRequest) Reset() { - *x = GetStoredInfoTypeRequest{} +func (x *StoredInfoTypeStats) Reset() { + *x = StoredInfoTypeStats{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[120] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetStoredInfoTypeRequest) String() string { +func (x *StoredInfoTypeStats) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetStoredInfoTypeRequest) ProtoMessage() {} +func (*StoredInfoTypeStats) ProtoMessage() {} -func (x *GetStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[120] +func (x *StoredInfoTypeStats) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12124,87 +12657,86 @@ func (x *GetStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetStoredInfoTypeRequest.ProtoReflect.Descriptor instead. -func (*GetStoredInfoTypeRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{120} +// Deprecated: Use StoredInfoTypeStats.ProtoReflect.Descriptor instead. +func (*StoredInfoTypeStats) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{124} } -func (x *GetStoredInfoTypeRequest) GetName() string { - if x != nil { - return x.Name +func (m *StoredInfoTypeStats) GetType() isStoredInfoTypeStats_Type { + if m != nil { + return m.Type } - return "" + return nil } -// Request message for ListStoredInfoTypes. -type ListStoredInfoTypesRequest struct { +func (x *StoredInfoTypeStats) GetLargeCustomDictionary() *LargeCustomDictionaryStats { + if x, ok := x.GetType().(*StoredInfoTypeStats_LargeCustomDictionary); ok { + return x.LargeCustomDictionary + } + return nil +} + +type isStoredInfoTypeStats_Type interface { + isStoredInfoTypeStats_Type() +} + +type StoredInfoTypeStats_LargeCustomDictionary struct { + // StoredInfoType where findings are defined by a dictionary of phrases. + LargeCustomDictionary *LargeCustomDictionaryStats `protobuf:"bytes,1,opt,name=large_custom_dictionary,json=largeCustomDictionary,proto3,oneof"` +} + +func (*StoredInfoTypeStats_LargeCustomDictionary) isStoredInfoTypeStats_Type() {} + +// Version of a StoredInfoType, including the configuration used to build it, +// create timestamp, and current state. +type StoredInfoTypeVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Parent resource name. - // - // The format of this value varies depending on the scope of the request - // (project or organization) and whether you have [specified a processing - // location](https://cloud.google.com/dlp/docs/specifying-location): - // - // + Projects scope, location specified:
- // `projects/`PROJECT_ID`/locations/`LOCATION_ID - // + Projects scope, no location specified (defaults to global):
- // `projects/`PROJECT_ID - // + Organizations scope, location specified:
- // `organizations/`ORG_ID`/locations/`LOCATION_ID - // + Organizations scope, no location specified (defaults to global):
- // `organizations/`ORG_ID - // - // The following example `parent` string specifies a parent project with the - // identifier `example-project`, and specifies the `europe-west3` location - // for processing data: - // - // parent=projects/example-project/locations/europe-west3 - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Page token to continue retrieval. Comes from previous call - // to `ListStoredInfoTypes`. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Size of the page, can be limited by server. If zero server returns - // a page of max size 100. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Comma separated list of fields to order by, - // followed by `asc` or `desc` postfix. This list is case-insensitive, - // default sorting order is ascending, redundant space characters are - // insignificant. - // - // Example: `name asc, display_name, create_time desc` + // StoredInfoType configuration. + Config *StoredInfoTypeConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + // Create timestamp of the version. Read-only, determined by the system + // when the version is created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Stored info type version state. Read-only, updated by the system + // during dictionary creation. + State StoredInfoTypeState `protobuf:"varint,3,opt,name=state,proto3,enum=google.privacy.dlp.v2.StoredInfoTypeState" json:"state,omitempty"` + // Errors that occurred when creating this storedInfoType version, or + // anomalies detected in the storedInfoType data that render it unusable. Only + // the five most recent errors will be displayed, with the most recent error + // appearing first. // - // Supported fields are: + // For example, some of the data for stored custom dictionaries is put in + // the user's Cloud Storage bucket, and if this data is modified or + // deleted by the user or another system, the dictionary becomes invalid. // - // - `create_time`: corresponds to time the most recent version of the - // resource was created. - // - `state`: corresponds to the state of the resource. - // - `name`: corresponds to resource name. - // - `display_name`: corresponds to info type's display name. - OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Deprecated. This field has no effect. - LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` + // If any errors occur, fix the problem indicated by the error message and + // use the UpdateStoredInfoType API method to create another version of the + // storedInfoType to continue using it, reusing the same `config` if it was + // not the source of the error. + Errors []*Error `protobuf:"bytes,4,rep,name=errors,proto3" json:"errors,omitempty"` + // Statistics about this storedInfoType version. + Stats *StoredInfoTypeStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"` } -func (x *ListStoredInfoTypesRequest) Reset() { - *x = ListStoredInfoTypesRequest{} +func (x *StoredInfoTypeVersion) Reset() { + *x = StoredInfoTypeVersion{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[121] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListStoredInfoTypesRequest) String() string { +func (x *StoredInfoTypeVersion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListStoredInfoTypesRequest) ProtoMessage() {} +func (*StoredInfoTypeVersion) ProtoMessage() {} -func (x *ListStoredInfoTypesRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[121] +func (x *StoredInfoTypeVersion) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12215,76 +12747,79 @@ func (x *ListStoredInfoTypesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListStoredInfoTypesRequest.ProtoReflect.Descriptor instead. -func (*ListStoredInfoTypesRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{121} +// Deprecated: Use StoredInfoTypeVersion.ProtoReflect.Descriptor instead. +func (*StoredInfoTypeVersion) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{125} } -func (x *ListStoredInfoTypesRequest) GetParent() string { +func (x *StoredInfoTypeVersion) GetConfig() *StoredInfoTypeConfig { if x != nil { - return x.Parent + return x.Config } - return "" + return nil } -func (x *ListStoredInfoTypesRequest) GetPageToken() string { +func (x *StoredInfoTypeVersion) GetCreateTime() *timestamppb.Timestamp { if x != nil { - return x.PageToken + return x.CreateTime } - return "" + return nil } -func (x *ListStoredInfoTypesRequest) GetPageSize() int32 { +func (x *StoredInfoTypeVersion) GetState() StoredInfoTypeState { if x != nil { - return x.PageSize + return x.State } - return 0 + return StoredInfoTypeState_STORED_INFO_TYPE_STATE_UNSPECIFIED } -func (x *ListStoredInfoTypesRequest) GetOrderBy() string { +func (x *StoredInfoTypeVersion) GetErrors() []*Error { if x != nil { - return x.OrderBy + return x.Errors } - return "" + return nil } -func (x *ListStoredInfoTypesRequest) GetLocationId() string { +func (x *StoredInfoTypeVersion) GetStats() *StoredInfoTypeStats { if x != nil { - return x.LocationId + return x.Stats } - return "" + return nil } -// Response message for ListStoredInfoTypes. -type ListStoredInfoTypesResponse struct { +// StoredInfoType resource message that contains information about the current +// version and any pending updates. +type StoredInfoType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of storedInfoTypes, up to page_size in ListStoredInfoTypesRequest. - StoredInfoTypes []*StoredInfoType `protobuf:"bytes,1,rep,name=stored_info_types,json=storedInfoTypes,proto3" json:"stored_info_types,omitempty"` - // If the next page is available then the next page token to be used - // in following ListStoredInfoTypes request. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Resource name. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Current version of the stored info type. + CurrentVersion *StoredInfoTypeVersion `protobuf:"bytes,2,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty"` + // Pending versions of the stored info type. Empty if no versions are + // pending. + PendingVersions []*StoredInfoTypeVersion `protobuf:"bytes,3,rep,name=pending_versions,json=pendingVersions,proto3" json:"pending_versions,omitempty"` } -func (x *ListStoredInfoTypesResponse) Reset() { - *x = ListStoredInfoTypesResponse{} +func (x *StoredInfoType) Reset() { + *x = StoredInfoType{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[122] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListStoredInfoTypesResponse) String() string { +func (x *StoredInfoType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListStoredInfoTypesResponse) ProtoMessage() {} +func (*StoredInfoType) ProtoMessage() {} -func (x *ListStoredInfoTypesResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[122] +func (x *StoredInfoType) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12295,54 +12830,87 @@ func (x *ListStoredInfoTypesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListStoredInfoTypesResponse.ProtoReflect.Descriptor instead. -func (*ListStoredInfoTypesResponse) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{122} +// Deprecated: Use StoredInfoType.ProtoReflect.Descriptor instead. +func (*StoredInfoType) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{126} } -func (x *ListStoredInfoTypesResponse) GetStoredInfoTypes() []*StoredInfoType { +func (x *StoredInfoType) GetName() string { if x != nil { - return x.StoredInfoTypes + return x.Name } - return nil + return "" } -func (x *ListStoredInfoTypesResponse) GetNextPageToken() string { +func (x *StoredInfoType) GetCurrentVersion() *StoredInfoTypeVersion { if x != nil { - return x.NextPageToken + return x.CurrentVersion } - return "" + return nil } -// Request message for DeleteStoredInfoType. -type DeleteStoredInfoTypeRequest struct { +func (x *StoredInfoType) GetPendingVersions() []*StoredInfoTypeVersion { + if x != nil { + return x.PendingVersions + } + return nil +} + +// Request message for CreateStoredInfoType. +type CreateStoredInfoTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the organization and storedInfoType to be deleted, for - // example `organizations/433245324/storedInfoTypes/432452342` or - // projects/project-id/storedInfoTypes/432452342. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. Parent resource name. + // + // The format of this value varies depending on the scope of the request + // (project or organization) and whether you have [specified a processing + // location](https://cloud.google.com/dlp/docs/specifying-location): + // + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // - Organizations scope, location specified:
+ // `organizations/`ORG_ID`/locations/`LOCATION_ID + // - Organizations scope, no location specified (defaults to global):
+ // `organizations/`ORG_ID + // + // The following example `parent` string specifies a parent project with the + // identifier `example-project`, and specifies the `europe-west3` location + // for processing data: + // + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. Configuration of the storedInfoType to create. + Config *StoredInfoTypeConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + // The storedInfoType ID can contain uppercase and lowercase letters, + // numbers, and hyphens; that is, it must match the regular + // expression: `[a-zA-Z\d-_]+`. The maximum length is 100 + // characters. Can be empty to allow the system to generate one. + StoredInfoTypeId string `protobuf:"bytes,3,opt,name=stored_info_type_id,json=storedInfoTypeId,proto3" json:"stored_info_type_id,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *DeleteStoredInfoTypeRequest) Reset() { - *x = DeleteStoredInfoTypeRequest{} +func (x *CreateStoredInfoTypeRequest) Reset() { + *x = CreateStoredInfoTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[123] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteStoredInfoTypeRequest) String() string { +func (x *CreateStoredInfoTypeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteStoredInfoTypeRequest) ProtoMessage() {} +func (*CreateStoredInfoTypeRequest) ProtoMessage() {} -func (x *DeleteStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[123] +func (x *CreateStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12353,48 +12921,74 @@ func (x *DeleteStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteStoredInfoTypeRequest.ProtoReflect.Descriptor instead. -func (*DeleteStoredInfoTypeRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{123} +// Deprecated: Use CreateStoredInfoTypeRequest.ProtoReflect.Descriptor instead. +func (*CreateStoredInfoTypeRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{127} } -func (x *DeleteStoredInfoTypeRequest) GetName() string { +func (x *CreateStoredInfoTypeRequest) GetParent() string { if x != nil { - return x.Name + return x.Parent } return "" } -// Request to search for potentially sensitive info in a custom location. -type HybridInspectJobTriggerRequest struct { +func (x *CreateStoredInfoTypeRequest) GetConfig() *StoredInfoTypeConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *CreateStoredInfoTypeRequest) GetStoredInfoTypeId() string { + if x != nil { + return x.StoredInfoTypeId + } + return "" +} + +func (x *CreateStoredInfoTypeRequest) GetLocationId() string { + if x != nil { + return x.LocationId + } + return "" +} + +// Request message for UpdateStoredInfoType. +type UpdateStoredInfoTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the trigger to execute a hybrid inspect on, for example - // `projects/dlp-test-project/jobTriggers/53234423`. + // Required. Resource name of organization and storedInfoType to be updated, for + // example `organizations/433245324/storedInfoTypes/432452342` or + // projects/project-id/storedInfoTypes/432452342. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The item to inspect. - HybridItem *HybridContentItem `protobuf:"bytes,3,opt,name=hybrid_item,json=hybridItem,proto3" json:"hybrid_item,omitempty"` + // Updated configuration for the storedInfoType. If not provided, a new + // version of the storedInfoType will be created with the existing + // configuration. + Config *StoredInfoTypeConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + // Mask to control which fields get updated. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *HybridInspectJobTriggerRequest) Reset() { - *x = HybridInspectJobTriggerRequest{} +func (x *UpdateStoredInfoTypeRequest) Reset() { + *x = UpdateStoredInfoTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[124] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *HybridInspectJobTriggerRequest) String() string { +func (x *UpdateStoredInfoTypeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HybridInspectJobTriggerRequest) ProtoMessage() {} +func (*UpdateStoredInfoTypeRequest) ProtoMessage() {} -func (x *HybridInspectJobTriggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[124] +func (x *UpdateStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12405,55 +12999,61 @@ func (x *HybridInspectJobTriggerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HybridInspectJobTriggerRequest.ProtoReflect.Descriptor instead. -func (*HybridInspectJobTriggerRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{124} +// Deprecated: Use UpdateStoredInfoTypeRequest.ProtoReflect.Descriptor instead. +func (*UpdateStoredInfoTypeRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{128} } -func (x *HybridInspectJobTriggerRequest) GetName() string { +func (x *UpdateStoredInfoTypeRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *HybridInspectJobTriggerRequest) GetHybridItem() *HybridContentItem { +func (x *UpdateStoredInfoTypeRequest) GetConfig() *StoredInfoTypeConfig { if x != nil { - return x.HybridItem + return x.Config } return nil } -// Request to search for potentially sensitive info in a custom location. -type HybridInspectDlpJobRequest struct { +func (x *UpdateStoredInfoTypeRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// Request message for GetStoredInfoType. +type GetStoredInfoTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Resource name of the job to execute a hybrid inspect on, for example - // `projects/dlp-test-project/dlpJob/53234423`. + // Required. Resource name of the organization and storedInfoType to be read, for + // example `organizations/433245324/storedInfoTypes/432452342` or + // projects/project-id/storedInfoTypes/432452342. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The item to inspect. - HybridItem *HybridContentItem `protobuf:"bytes,3,opt,name=hybrid_item,json=hybridItem,proto3" json:"hybrid_item,omitempty"` } -func (x *HybridInspectDlpJobRequest) Reset() { - *x = HybridInspectDlpJobRequest{} +func (x *GetStoredInfoTypeRequest) Reset() { + *x = GetStoredInfoTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[125] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *HybridInspectDlpJobRequest) String() string { +func (x *GetStoredInfoTypeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HybridInspectDlpJobRequest) ProtoMessage() {} +func (*GetStoredInfoTypeRequest) ProtoMessage() {} -func (x *HybridInspectDlpJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[125] +func (x *GetStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12464,55 +13064,83 @@ func (x *HybridInspectDlpJobRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HybridInspectDlpJobRequest.ProtoReflect.Descriptor instead. -func (*HybridInspectDlpJobRequest) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{125} +// Deprecated: Use GetStoredInfoTypeRequest.ProtoReflect.Descriptor instead. +func (*GetStoredInfoTypeRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{129} } -func (x *HybridInspectDlpJobRequest) GetName() string { +func (x *GetStoredInfoTypeRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *HybridInspectDlpJobRequest) GetHybridItem() *HybridContentItem { - if x != nil { - return x.HybridItem - } - return nil -} - -// An individual hybrid item to inspect. Will be stored temporarily during -// processing. -type HybridContentItem struct { +// Request message for ListStoredInfoTypes. +type ListStoredInfoTypesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The item to inspect. - Item *ContentItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - // Supplementary information that will be added to each finding. - FindingDetails *HybridFindingDetails `protobuf:"bytes,2,opt,name=finding_details,json=findingDetails,proto3" json:"finding_details,omitempty"` + // Required. Parent resource name. + // + // The format of this value varies depending on the scope of the request + // (project or organization) and whether you have [specified a processing + // location](https://cloud.google.com/dlp/docs/specifying-location): + // + // - Projects scope, location specified:
+ // `projects/`PROJECT_ID`/locations/`LOCATION_ID + // - Projects scope, no location specified (defaults to global):
+ // `projects/`PROJECT_ID + // + // The following example `parent` string specifies a parent project with the + // identifier `example-project`, and specifies the `europe-west3` location + // for processing data: + // + // parent=projects/example-project/locations/europe-west3 + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Page token to continue retrieval. Comes from previous call + // to `ListStoredInfoTypes`. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Size of the page, can be limited by the server. If zero server returns + // a page of max size 100. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Comma separated list of fields to order by, + // followed by `asc` or `desc` postfix. This list is case-insensitive, + // default sorting order is ascending, redundant space characters are + // insignificant. + // + // Example: `name asc, display_name, create_time desc` + // + // Supported fields are: + // + // - `create_time`: corresponds to the time the most recent version of the + // resource was created. + // - `state`: corresponds to the state of the resource. + // - `name`: corresponds to resource name. + // - `display_name`: corresponds to info type's display name. + OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // Deprecated. This field has no effect. + LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId,proto3" json:"location_id,omitempty"` } -func (x *HybridContentItem) Reset() { - *x = HybridContentItem{} +func (x *ListStoredInfoTypesRequest) Reset() { + *x = ListStoredInfoTypesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[126] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *HybridContentItem) String() string { +func (x *ListStoredInfoTypesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HybridContentItem) ProtoMessage() {} +func (*ListStoredInfoTypesRequest) ProtoMessage() {} -func (x *HybridContentItem) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[126] +func (x *ListStoredInfoTypesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12523,158 +13151,76 @@ func (x *HybridContentItem) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HybridContentItem.ProtoReflect.Descriptor instead. -func (*HybridContentItem) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{126} +// Deprecated: Use ListStoredInfoTypesRequest.ProtoReflect.Descriptor instead. +func (*ListStoredInfoTypesRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{130} } -func (x *HybridContentItem) GetItem() *ContentItem { +func (x *ListStoredInfoTypesRequest) GetParent() string { if x != nil { - return x.Item + return x.Parent } - return nil + return "" } -func (x *HybridContentItem) GetFindingDetails() *HybridFindingDetails { +func (x *ListStoredInfoTypesRequest) GetPageToken() string { if x != nil { - return x.FindingDetails + return x.PageToken } - return nil + return "" } -// Populate to associate additional data with each finding. -type HybridFindingDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Details about the container where the content being inspected is from. - ContainerDetails *Container `protobuf:"bytes,1,opt,name=container_details,json=containerDetails,proto3" json:"container_details,omitempty"` - // Offset in bytes of the line, from the beginning of the file, where the - // finding is located. Populate if the item being scanned is only part of a - // bigger item, such as a shard of a file and you want to track the absolute - // position of the finding. - FileOffset int64 `protobuf:"varint,2,opt,name=file_offset,json=fileOffset,proto3" json:"file_offset,omitempty"` - // Offset of the row for tables. Populate if the row(s) being scanned are - // part of a bigger dataset and you want to keep track of their absolute - // position. - RowOffset int64 `protobuf:"varint,3,opt,name=row_offset,json=rowOffset,proto3" json:"row_offset,omitempty"` - // If the container is a table, additional information to make findings - // meaningful such as the columns that are primary keys. If not known ahead - // of time, can also be set within each inspect hybrid call and the two - // will be merged. Note that identifying_fields will only be stored to - // BigQuery, and only if the BigQuery action has been included. - TableOptions *TableOptions `protobuf:"bytes,4,opt,name=table_options,json=tableOptions,proto3" json:"table_options,omitempty"` - // Labels to represent user provided metadata about the data being inspected. - // If configured by the job, some key values may be required. - // The labels associated with `Finding`'s produced by hybrid - // inspection. - // - // Label keys must be between 1 and 63 characters long and must conform - // to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. - // - // Label values must be between 0 and 63 characters long and must conform - // to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. - // - // No more than 10 labels can be associated with a given finding. - // - // Examples: - // * `"environment" : "production"` - // * `"pipeline" : "etl"` - Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *HybridFindingDetails) Reset() { - *x = HybridFindingDetails{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[127] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HybridFindingDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HybridFindingDetails) ProtoMessage() {} - -func (x *HybridFindingDetails) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[127] - 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 HybridFindingDetails.ProtoReflect.Descriptor instead. -func (*HybridFindingDetails) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{127} -} - -func (x *HybridFindingDetails) GetContainerDetails() *Container { - if x != nil { - return x.ContainerDetails - } - return nil -} - -func (x *HybridFindingDetails) GetFileOffset() int64 { - if x != nil { - return x.FileOffset - } - return 0 -} - -func (x *HybridFindingDetails) GetRowOffset() int64 { +func (x *ListStoredInfoTypesRequest) GetPageSize() int32 { if x != nil { - return x.RowOffset + return x.PageSize } return 0 } -func (x *HybridFindingDetails) GetTableOptions() *TableOptions { +func (x *ListStoredInfoTypesRequest) GetOrderBy() string { if x != nil { - return x.TableOptions + return x.OrderBy } - return nil + return "" } -func (x *HybridFindingDetails) GetLabels() map[string]string { +func (x *ListStoredInfoTypesRequest) GetLocationId() string { if x != nil { - return x.Labels + return x.LocationId } - return nil + return "" } -// Quota exceeded errors will be thrown once quota has been met. -type HybridInspectResponse struct { +// Response message for ListStoredInfoTypes. +type ListStoredInfoTypesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // List of storedInfoTypes, up to page_size in ListStoredInfoTypesRequest. + StoredInfoTypes []*StoredInfoType `protobuf:"bytes,1,rep,name=stored_info_types,json=storedInfoTypes,proto3" json:"stored_info_types,omitempty"` + // If the next page is available then the next page token to be used + // in following ListStoredInfoTypes request. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *HybridInspectResponse) Reset() { - *x = HybridInspectResponse{} +func (x *ListStoredInfoTypesResponse) Reset() { + *x = ListStoredInfoTypesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[128] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *HybridInspectResponse) String() string { +func (x *ListStoredInfoTypesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HybridInspectResponse) ProtoMessage() {} +func (*ListStoredInfoTypesResponse) ProtoMessage() {} -func (x *HybridInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[128] +func (x *ListStoredInfoTypesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12685,39 +13231,54 @@ func (x *HybridInspectResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HybridInspectResponse.ProtoReflect.Descriptor instead. -func (*HybridInspectResponse) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{128} +// Deprecated: Use ListStoredInfoTypesResponse.ProtoReflect.Descriptor instead. +func (*ListStoredInfoTypesResponse) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{131} } -// Score is a summary of all elements in the data profile. -// A higher number means more sensitive. -type SensitivityScore struct { +func (x *ListStoredInfoTypesResponse) GetStoredInfoTypes() []*StoredInfoType { + if x != nil { + return x.StoredInfoTypes + } + return nil +} + +func (x *ListStoredInfoTypesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request message for DeleteStoredInfoType. +type DeleteStoredInfoTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The score applied to the resource. - Score SensitivityScore_SensitivityScoreLevel `protobuf:"varint,1,opt,name=score,proto3,enum=google.privacy.dlp.v2.SensitivityScore_SensitivityScoreLevel" json:"score,omitempty"` + // Required. Resource name of the organization and storedInfoType to be deleted, for + // example `organizations/433245324/storedInfoTypes/432452342` or + // projects/project-id/storedInfoTypes/432452342. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *SensitivityScore) Reset() { - *x = SensitivityScore{} +func (x *DeleteStoredInfoTypeRequest) Reset() { + *x = DeleteStoredInfoTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[129] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SensitivityScore) String() string { +func (x *DeleteStoredInfoTypeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SensitivityScore) ProtoMessage() {} +func (*DeleteStoredInfoTypeRequest) ProtoMessage() {} -func (x *SensitivityScore) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[129] +func (x *DeleteStoredInfoTypeRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12728,46 +13289,48 @@ func (x *SensitivityScore) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SensitivityScore.ProtoReflect.Descriptor instead. -func (*SensitivityScore) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{129} +// Deprecated: Use DeleteStoredInfoTypeRequest.ProtoReflect.Descriptor instead. +func (*DeleteStoredInfoTypeRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{132} } -func (x *SensitivityScore) GetScore() SensitivityScore_SensitivityScoreLevel { +func (x *DeleteStoredInfoTypeRequest) GetName() string { if x != nil { - return x.Score + return x.Name } - return SensitivityScore_SENSITIVITY_SCORE_UNSPECIFIED + return "" } -// Score is a summary of all elements in the data profile. -// A higher number means more risky. -type DataRiskLevel struct { +// Request to search for potentially sensitive info in a custom location. +type HybridInspectJobTriggerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The score applied to the resource. - Score DataRiskLevel_DataRiskLevelScore `protobuf:"varint,1,opt,name=score,proto3,enum=google.privacy.dlp.v2.DataRiskLevel_DataRiskLevelScore" json:"score,omitempty"` + // Required. Resource name of the trigger to execute a hybrid inspect on, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The item to inspect. + HybridItem *HybridContentItem `protobuf:"bytes,3,opt,name=hybrid_item,json=hybridItem,proto3" json:"hybrid_item,omitempty"` } -func (x *DataRiskLevel) Reset() { - *x = DataRiskLevel{} +func (x *HybridInspectJobTriggerRequest) Reset() { + *x = HybridInspectJobTriggerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[130] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataRiskLevel) String() string { +func (x *HybridInspectJobTriggerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataRiskLevel) ProtoMessage() {} +func (*HybridInspectJobTriggerRequest) ProtoMessage() {} -func (x *DataRiskLevel) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[130] +func (x *HybridInspectJobTriggerRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12778,48 +13341,55 @@ func (x *DataRiskLevel) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DataRiskLevel.ProtoReflect.Descriptor instead. -func (*DataRiskLevel) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{130} +// Deprecated: Use HybridInspectJobTriggerRequest.ProtoReflect.Descriptor instead. +func (*HybridInspectJobTriggerRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{133} } -func (x *DataRiskLevel) GetScore() DataRiskLevel_DataRiskLevelScore { +func (x *HybridInspectJobTriggerRequest) GetName() string { if x != nil { - return x.Score + return x.Name } - return DataRiskLevel_RISK_SCORE_UNSPECIFIED + return "" } -// Snapshot of the configurations used to generate the profile. -type DataProfileConfigSnapshot struct { +func (x *HybridInspectJobTriggerRequest) GetHybridItem() *HybridContentItem { + if x != nil { + return x.HybridItem + } + return nil +} + +// Request to search for potentially sensitive info in a custom location. +type HybridInspectDlpJobRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A copy of the inspection config used to generate this profile. This - // is a copy of the inspect_template specified in `DataProfileJobConfig`. - InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig,proto3" json:"inspect_config,omitempty"` - // A copy of the configuration used to generate this profile. - DataProfileJob *DataProfileJobConfig `protobuf:"bytes,3,opt,name=data_profile_job,json=dataProfileJob,proto3" json:"data_profile_job,omitempty"` + // Required. Resource name of the job to execute a hybrid inspect on, for example + // `projects/dlp-test-project/dlpJob/53234423`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The item to inspect. + HybridItem *HybridContentItem `protobuf:"bytes,3,opt,name=hybrid_item,json=hybridItem,proto3" json:"hybrid_item,omitempty"` } -func (x *DataProfileConfigSnapshot) Reset() { - *x = DataProfileConfigSnapshot{} +func (x *HybridInspectDlpJobRequest) Reset() { + *x = HybridInspectDlpJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[131] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataProfileConfigSnapshot) String() string { +func (x *HybridInspectDlpJobRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfileConfigSnapshot) ProtoMessage() {} +func (*HybridInspectDlpJobRequest) ProtoMessage() {} -func (x *DataProfileConfigSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[131] +func (x *HybridInspectDlpJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12830,104 +13400,55 @@ func (x *DataProfileConfigSnapshot) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DataProfileConfigSnapshot.ProtoReflect.Descriptor instead. -func (*DataProfileConfigSnapshot) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{131} +// Deprecated: Use HybridInspectDlpJobRequest.ProtoReflect.Descriptor instead. +func (*HybridInspectDlpJobRequest) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{134} } -func (x *DataProfileConfigSnapshot) GetInspectConfig() *InspectConfig { +func (x *HybridInspectDlpJobRequest) GetName() string { if x != nil { - return x.InspectConfig + return x.Name } - return nil + return "" } -func (x *DataProfileConfigSnapshot) GetDataProfileJob() *DataProfileJobConfig { +func (x *HybridInspectDlpJobRequest) GetHybridItem() *HybridContentItem { if x != nil { - return x.DataProfileJob + return x.HybridItem } return nil } -// The profile for a scanned table. -type TableDataProfile struct { +// An individual hybrid item to inspect. Will be stored temporarily during +// processing. +type HybridContentItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the profile. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The resource name to the project data profile for this table. - ProjectDataProfile string `protobuf:"bytes,2,opt,name=project_data_profile,json=projectDataProfile,proto3" json:"project_data_profile,omitempty"` - // The GCP project ID that owns the BigQuery dataset. - DatasetProjectId string `protobuf:"bytes,24,opt,name=dataset_project_id,json=datasetProjectId,proto3" json:"dataset_project_id,omitempty"` - // The BigQuery location where the dataset's data is stored. - // See https://cloud.google.com/bigquery/docs/locations for supported - // locations. - DatasetLocation string `protobuf:"bytes,29,opt,name=dataset_location,json=datasetLocation,proto3" json:"dataset_location,omitempty"` - // The BigQuery dataset ID. - DatasetId string `protobuf:"bytes,25,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"` - // The BigQuery table ID. - TableId string `protobuf:"bytes,26,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` - // The resource name of the table. - // https://cloud.google.com/apis/design/resource_names#full_resource_name - FullResource string `protobuf:"bytes,3,opt,name=full_resource,json=fullResource,proto3" json:"full_resource,omitempty"` - // Success or error status from the most recent profile generation attempt. - // May be empty if the profile is still being generated. - ProfileStatus *ProfileStatus `protobuf:"bytes,21,opt,name=profile_status,json=profileStatus,proto3" json:"profile_status,omitempty"` - // State of a profile. - State TableDataProfile_State `protobuf:"varint,22,opt,name=state,proto3,enum=google.privacy.dlp.v2.TableDataProfile_State" json:"state,omitempty"` - // The sensitivity score of this table. - SensitivityScore *SensitivityScore `protobuf:"bytes,5,opt,name=sensitivity_score,json=sensitivityScore,proto3" json:"sensitivity_score,omitempty"` - // The data risk level of this table. - DataRiskLevel *DataRiskLevel `protobuf:"bytes,6,opt,name=data_risk_level,json=dataRiskLevel,proto3" json:"data_risk_level,omitempty"` - // The infoTypes predicted from this table's data. - PredictedInfoTypes []*InfoTypeSummary `protobuf:"bytes,27,rep,name=predicted_info_types,json=predictedInfoTypes,proto3" json:"predicted_info_types,omitempty"` - // Other infoTypes found in this table's data. - OtherInfoTypes []*OtherInfoTypeSummary `protobuf:"bytes,28,rep,name=other_info_types,json=otherInfoTypes,proto3" json:"other_info_types,omitempty"` - // The snapshot of the configurations used to generate the profile. - ConfigSnapshot *DataProfileConfigSnapshot `protobuf:"bytes,7,opt,name=config_snapshot,json=configSnapshot,proto3" json:"config_snapshot,omitempty"` - // The time when this table was last modified - LastModifiedTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_modified_time,json=lastModifiedTime,proto3" json:"last_modified_time,omitempty"` - // Optional. The time when this table expires. - ExpirationTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` - // The number of columns profiled in the table. - ScannedColumnCount int64 `protobuf:"varint,10,opt,name=scanned_column_count,json=scannedColumnCount,proto3" json:"scanned_column_count,omitempty"` - // The number of columns skipped in the table because of an error. - FailedColumnCount int64 `protobuf:"varint,11,opt,name=failed_column_count,json=failedColumnCount,proto3" json:"failed_column_count,omitempty"` - // The size of the table when the profile was generated. - TableSizeBytes int64 `protobuf:"varint,12,opt,name=table_size_bytes,json=tableSizeBytes,proto3" json:"table_size_bytes,omitempty"` - // Number of rows in the table when the profile was generated. - RowCount int64 `protobuf:"varint,13,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` - // How the table is encrypted. - EncryptionStatus EncryptionStatus `protobuf:"varint,14,opt,name=encryption_status,json=encryptionStatus,proto3,enum=google.privacy.dlp.v2.EncryptionStatus" json:"encryption_status,omitempty"` - // How broadly a resource has been shared. - ResourceVisibility ResourceVisibility `protobuf:"varint,15,opt,name=resource_visibility,json=resourceVisibility,proto3,enum=google.privacy.dlp.v2.ResourceVisibility" json:"resource_visibility,omitempty"` - // The last time the profile was generated. - ProfileLastGenerated *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=profile_last_generated,json=profileLastGenerated,proto3" json:"profile_last_generated,omitempty"` - // The labels applied to the resource at the time the profile was generated. - ResourceLabels map[string]string `protobuf:"bytes,17,rep,name=resource_labels,json=resourceLabels,proto3" json:"resource_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The time at which the table was created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,23,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // The item to inspect. + Item *ContentItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + // Supplementary information that will be added to each finding. + FindingDetails *HybridFindingDetails `protobuf:"bytes,2,opt,name=finding_details,json=findingDetails,proto3" json:"finding_details,omitempty"` } -func (x *TableDataProfile) Reset() { - *x = TableDataProfile{} +func (x *HybridContentItem) Reset() { + *x = HybridContentItem{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[132] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TableDataProfile) String() string { +func (x *HybridContentItem) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TableDataProfile) ProtoMessage() {} +func (*HybridContentItem) ProtoMessage() {} -func (x *TableDataProfile) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[132] +func (x *HybridContentItem) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12938,214 +13459,201 @@ func (x *TableDataProfile) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TableDataProfile.ProtoReflect.Descriptor instead. -func (*TableDataProfile) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{132} +// Deprecated: Use HybridContentItem.ProtoReflect.Descriptor instead. +func (*HybridContentItem) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{135} } -func (x *TableDataProfile) GetName() string { +func (x *HybridContentItem) GetItem() *ContentItem { if x != nil { - return x.Name + return x.Item } - return "" + return nil } -func (x *TableDataProfile) GetProjectDataProfile() string { +func (x *HybridContentItem) GetFindingDetails() *HybridFindingDetails { if x != nil { - return x.ProjectDataProfile + return x.FindingDetails } - return "" + return nil } -func (x *TableDataProfile) GetDatasetProjectId() string { - if x != nil { - return x.DatasetProjectId - } - return "" -} +// Populate to associate additional data with each finding. +type HybridFindingDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *TableDataProfile) GetDatasetLocation() string { - if x != nil { - return x.DatasetLocation - } - return "" + // Details about the container where the content being inspected is from. + ContainerDetails *Container `protobuf:"bytes,1,opt,name=container_details,json=containerDetails,proto3" json:"container_details,omitempty"` + // Offset in bytes of the line, from the beginning of the file, where the + // finding is located. Populate if the item being scanned is only part of a + // bigger item, such as a shard of a file and you want to track the absolute + // position of the finding. + FileOffset int64 `protobuf:"varint,2,opt,name=file_offset,json=fileOffset,proto3" json:"file_offset,omitempty"` + // Offset of the row for tables. Populate if the row(s) being scanned are + // part of a bigger dataset and you want to keep track of their absolute + // position. + RowOffset int64 `protobuf:"varint,3,opt,name=row_offset,json=rowOffset,proto3" json:"row_offset,omitempty"` + // If the container is a table, additional information to make findings + // meaningful such as the columns that are primary keys. If not known ahead + // of time, can also be set within each inspect hybrid call and the two + // will be merged. Note that identifying_fields will only be stored to + // BigQuery, and only if the BigQuery action has been included. + TableOptions *TableOptions `protobuf:"bytes,4,opt,name=table_options,json=tableOptions,proto3" json:"table_options,omitempty"` + // Labels to represent user provided metadata about the data being inspected. + // If configured by the job, some key values may be required. + // The labels associated with `Finding`'s produced by hybrid + // inspection. + // + // Label keys must be between 1 and 63 characters long and must conform + // to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. + // + // Label values must be between 0 and 63 characters long and must conform + // to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. + // + // No more than 10 labels can be associated with a given finding. + // + // Examples: + // * `"environment" : "production"` + // * `"pipeline" : "etl"` + Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *TableDataProfile) GetDatasetId() string { - if x != nil { - return x.DatasetId +func (x *HybridFindingDetails) Reset() { + *x = HybridFindingDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *TableDataProfile) GetTableId() string { - if x != nil { - return x.TableId - } - return "" +func (x *HybridFindingDetails) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *TableDataProfile) GetFullResource() string { - if x != nil { - return x.FullResource - } - return "" -} +func (*HybridFindingDetails) ProtoMessage() {} -func (x *TableDataProfile) GetProfileStatus() *ProfileStatus { - if x != nil { - return x.ProfileStatus +func (x *HybridFindingDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[136] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *TableDataProfile) GetState() TableDataProfile_State { - if x != nil { - return x.State - } - return TableDataProfile_STATE_UNSPECIFIED +// Deprecated: Use HybridFindingDetails.ProtoReflect.Descriptor instead. +func (*HybridFindingDetails) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{136} } -func (x *TableDataProfile) GetSensitivityScore() *SensitivityScore { +func (x *HybridFindingDetails) GetContainerDetails() *Container { if x != nil { - return x.SensitivityScore + return x.ContainerDetails } return nil } -func (x *TableDataProfile) GetDataRiskLevel() *DataRiskLevel { +func (x *HybridFindingDetails) GetFileOffset() int64 { if x != nil { - return x.DataRiskLevel + return x.FileOffset } - return nil + return 0 } -func (x *TableDataProfile) GetPredictedInfoTypes() []*InfoTypeSummary { +func (x *HybridFindingDetails) GetRowOffset() int64 { if x != nil { - return x.PredictedInfoTypes + return x.RowOffset } - return nil + return 0 } -func (x *TableDataProfile) GetOtherInfoTypes() []*OtherInfoTypeSummary { +func (x *HybridFindingDetails) GetTableOptions() *TableOptions { if x != nil { - return x.OtherInfoTypes + return x.TableOptions } return nil } -func (x *TableDataProfile) GetConfigSnapshot() *DataProfileConfigSnapshot { +func (x *HybridFindingDetails) GetLabels() map[string]string { if x != nil { - return x.ConfigSnapshot + return x.Labels } return nil } -func (x *TableDataProfile) GetLastModifiedTime() *timestamppb.Timestamp { - if x != nil { - return x.LastModifiedTime - } - return nil +// Quota exceeded errors will be thrown once quota has been met. +type HybridInspectResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *TableDataProfile) GetExpirationTime() *timestamppb.Timestamp { - if x != nil { - return x.ExpirationTime +func (x *HybridInspectResponse) Reset() { + *x = HybridInspectResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *TableDataProfile) GetScannedColumnCount() int64 { - if x != nil { - return x.ScannedColumnCount - } - return 0 +func (x *HybridInspectResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *TableDataProfile) GetFailedColumnCount() int64 { - if x != nil { - return x.FailedColumnCount +func (*HybridInspectResponse) ProtoMessage() {} + +func (x *HybridInspectResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[137] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *TableDataProfile) GetTableSizeBytes() int64 { - if x != nil { - return x.TableSizeBytes - } - return 0 -} - -func (x *TableDataProfile) GetRowCount() int64 { - if x != nil { - return x.RowCount - } - return 0 -} - -func (x *TableDataProfile) GetEncryptionStatus() EncryptionStatus { - if x != nil { - return x.EncryptionStatus - } - return EncryptionStatus_ENCRYPTION_STATUS_UNSPECIFIED -} - -func (x *TableDataProfile) GetResourceVisibility() ResourceVisibility { - if x != nil { - return x.ResourceVisibility - } - return ResourceVisibility_RESOURCE_VISIBILITY_UNSPECIFIED -} - -func (x *TableDataProfile) GetProfileLastGenerated() *timestamppb.Timestamp { - if x != nil { - return x.ProfileLastGenerated - } - return nil -} - -func (x *TableDataProfile) GetResourceLabels() map[string]string { - if x != nil { - return x.ResourceLabels - } - return nil -} - -func (x *TableDataProfile) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil +// Deprecated: Use HybridInspectResponse.ProtoReflect.Descriptor instead. +func (*HybridInspectResponse) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{137} } -type ProfileStatus struct { +// Score is a summary of all elements in the data profile. +// A higher number means more risk. +type DataRiskLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Profiling status code and optional message - Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - // Time when the profile generation status was updated - Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // The score applied to the resource. + Score DataRiskLevel_DataRiskLevelScore `protobuf:"varint,1,opt,name=score,proto3,enum=google.privacy.dlp.v2.DataRiskLevel_DataRiskLevelScore" json:"score,omitempty"` } -func (x *ProfileStatus) Reset() { - *x = ProfileStatus{} +func (x *DataRiskLevel) Reset() { + *x = DataRiskLevel{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[133] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProfileStatus) String() string { +func (x *DataRiskLevel) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProfileStatus) ProtoMessage() {} +func (*DataRiskLevel) ProtoMessage() {} -func (x *ProfileStatus) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[133] +func (x *DataRiskLevel) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13156,52 +13664,48 @@ func (x *ProfileStatus) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProfileStatus.ProtoReflect.Descriptor instead. -func (*ProfileStatus) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{133} -} - -func (x *ProfileStatus) GetStatus() *status.Status { - if x != nil { - return x.Status - } - return nil +// Deprecated: Use DataRiskLevel.ProtoReflect.Descriptor instead. +func (*DataRiskLevel) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{138} } -func (x *ProfileStatus) GetTimestamp() *timestamppb.Timestamp { +func (x *DataRiskLevel) GetScore() DataRiskLevel_DataRiskLevelScore { if x != nil { - return x.Timestamp + return x.Score } - return nil + return DataRiskLevel_RISK_SCORE_UNSPECIFIED } -// The infoType details for this column. -type InfoTypeSummary struct { +// Snapshot of the configurations used to generate the profile. +type DataProfileConfigSnapshot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The infoType. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3" json:"info_type,omitempty"` + // A copy of the inspection config used to generate this profile. This + // is a copy of the inspect_template specified in `DataProfileJobConfig`. + InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig,proto3" json:"inspect_config,omitempty"` + // A copy of the configuration used to generate this profile. + DataProfileJob *DataProfileJobConfig `protobuf:"bytes,3,opt,name=data_profile_job,json=dataProfileJob,proto3" json:"data_profile_job,omitempty"` } -func (x *InfoTypeSummary) Reset() { - *x = InfoTypeSummary{} +func (x *DataProfileConfigSnapshot) Reset() { + *x = DataProfileConfigSnapshot{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[134] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InfoTypeSummary) String() string { +func (x *DataProfileConfigSnapshot) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InfoTypeSummary) ProtoMessage() {} +func (*DataProfileConfigSnapshot) ProtoMessage() {} -func (x *InfoTypeSummary) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[134] +func (x *DataProfileConfigSnapshot) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13212,45 +13716,104 @@ func (x *InfoTypeSummary) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InfoTypeSummary.ProtoReflect.Descriptor instead. -func (*InfoTypeSummary) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{134} +// Deprecated: Use DataProfileConfigSnapshot.ProtoReflect.Descriptor instead. +func (*DataProfileConfigSnapshot) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{139} } -func (x *InfoTypeSummary) GetInfoType() *InfoType { +func (x *DataProfileConfigSnapshot) GetInspectConfig() *InspectConfig { if x != nil { - return x.InfoType + return x.InspectConfig } return nil } -// Infotype details for other infoTypes found within a column. -type OtherInfoTypeSummary struct { +func (x *DataProfileConfigSnapshot) GetDataProfileJob() *DataProfileJobConfig { + if x != nil { + return x.DataProfileJob + } + return nil +} + +// The profile for a scanned table. +type TableDataProfile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The other infoType. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3" json:"info_type,omitempty"` + // The name of the profile. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The resource name to the project data profile for this table. + ProjectDataProfile string `protobuf:"bytes,2,opt,name=project_data_profile,json=projectDataProfile,proto3" json:"project_data_profile,omitempty"` + // The GCP project ID that owns the BigQuery dataset. + DatasetProjectId string `protobuf:"bytes,24,opt,name=dataset_project_id,json=datasetProjectId,proto3" json:"dataset_project_id,omitempty"` + // The BigQuery location where the dataset's data is stored. + // See https://cloud.google.com/bigquery/docs/locations for supported + // locations. + DatasetLocation string `protobuf:"bytes,29,opt,name=dataset_location,json=datasetLocation,proto3" json:"dataset_location,omitempty"` + // The BigQuery dataset ID. + DatasetId string `protobuf:"bytes,25,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"` + // The BigQuery table ID. + TableId string `protobuf:"bytes,26,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` + // The resource name of the table. + // https://cloud.google.com/apis/design/resource_names#full_resource_name + FullResource string `protobuf:"bytes,3,opt,name=full_resource,json=fullResource,proto3" json:"full_resource,omitempty"` + // Success or error status from the most recent profile generation attempt. + // May be empty if the profile is still being generated. + ProfileStatus *ProfileStatus `protobuf:"bytes,21,opt,name=profile_status,json=profileStatus,proto3" json:"profile_status,omitempty"` + // State of a profile. + State TableDataProfile_State `protobuf:"varint,22,opt,name=state,proto3,enum=google.privacy.dlp.v2.TableDataProfile_State" json:"state,omitempty"` + // The sensitivity score of this table. + SensitivityScore *SensitivityScore `protobuf:"bytes,5,opt,name=sensitivity_score,json=sensitivityScore,proto3" json:"sensitivity_score,omitempty"` + // The data risk level of this table. + DataRiskLevel *DataRiskLevel `protobuf:"bytes,6,opt,name=data_risk_level,json=dataRiskLevel,proto3" json:"data_risk_level,omitempty"` + // The infoTypes predicted from this table's data. + PredictedInfoTypes []*InfoTypeSummary `protobuf:"bytes,27,rep,name=predicted_info_types,json=predictedInfoTypes,proto3" json:"predicted_info_types,omitempty"` + // Other infoTypes found in this table's data. + OtherInfoTypes []*OtherInfoTypeSummary `protobuf:"bytes,28,rep,name=other_info_types,json=otherInfoTypes,proto3" json:"other_info_types,omitempty"` + // The snapshot of the configurations used to generate the profile. + ConfigSnapshot *DataProfileConfigSnapshot `protobuf:"bytes,7,opt,name=config_snapshot,json=configSnapshot,proto3" json:"config_snapshot,omitempty"` + // The time when this table was last modified + LastModifiedTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_modified_time,json=lastModifiedTime,proto3" json:"last_modified_time,omitempty"` + // Optional. The time when this table expires. + ExpirationTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` + // The number of columns profiled in the table. + ScannedColumnCount int64 `protobuf:"varint,10,opt,name=scanned_column_count,json=scannedColumnCount,proto3" json:"scanned_column_count,omitempty"` + // The number of columns skipped in the table because of an error. + FailedColumnCount int64 `protobuf:"varint,11,opt,name=failed_column_count,json=failedColumnCount,proto3" json:"failed_column_count,omitempty"` + // The size of the table when the profile was generated. + TableSizeBytes int64 `protobuf:"varint,12,opt,name=table_size_bytes,json=tableSizeBytes,proto3" json:"table_size_bytes,omitempty"` + // Number of rows in the table when the profile was generated. + RowCount int64 `protobuf:"varint,13,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` + // How the table is encrypted. + EncryptionStatus EncryptionStatus `protobuf:"varint,14,opt,name=encryption_status,json=encryptionStatus,proto3,enum=google.privacy.dlp.v2.EncryptionStatus" json:"encryption_status,omitempty"` + // How broadly a resource has been shared. + ResourceVisibility ResourceVisibility `protobuf:"varint,15,opt,name=resource_visibility,json=resourceVisibility,proto3,enum=google.privacy.dlp.v2.ResourceVisibility" json:"resource_visibility,omitempty"` + // The last time the profile was generated. + ProfileLastGenerated *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=profile_last_generated,json=profileLastGenerated,proto3" json:"profile_last_generated,omitempty"` + // The labels applied to the resource at the time the profile was generated. + ResourceLabels map[string]string `protobuf:"bytes,17,rep,name=resource_labels,json=resourceLabels,proto3" json:"resource_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // The time at which the table was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,23,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` } -func (x *OtherInfoTypeSummary) Reset() { - *x = OtherInfoTypeSummary{} +func (x *TableDataProfile) Reset() { + *x = TableDataProfile{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[135] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OtherInfoTypeSummary) String() string { +func (x *TableDataProfile) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OtherInfoTypeSummary) ProtoMessage() {} +func (*TableDataProfile) ProtoMessage() {} -func (x *OtherInfoTypeSummary) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[135] +func (x *TableDataProfile) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13261,236 +13824,214 @@ func (x *OtherInfoTypeSummary) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OtherInfoTypeSummary.ProtoReflect.Descriptor instead. -func (*OtherInfoTypeSummary) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{135} +// Deprecated: Use TableDataProfile.ProtoReflect.Descriptor instead. +func (*TableDataProfile) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{140} } -func (x *OtherInfoTypeSummary) GetInfoType() *InfoType { +func (x *TableDataProfile) GetName() string { if x != nil { - return x.InfoType + return x.Name } - return nil + return "" } -// A condition for determining whether a PubSub should be triggered. -type DataProfilePubSubCondition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // An expression. - Expressions *DataProfilePubSubCondition_PubSubExpressions `protobuf:"bytes,1,opt,name=expressions,proto3" json:"expressions,omitempty"` +func (x *TableDataProfile) GetProjectDataProfile() string { + if x != nil { + return x.ProjectDataProfile + } + return "" } -func (x *DataProfilePubSubCondition) Reset() { - *x = DataProfilePubSubCondition{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[136] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *TableDataProfile) GetDatasetProjectId() string { + if x != nil { + return x.DatasetProjectId } + return "" } -func (x *DataProfilePubSubCondition) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *TableDataProfile) GetDatasetLocation() string { + if x != nil { + return x.DatasetLocation + } + return "" } -func (*DataProfilePubSubCondition) ProtoMessage() {} +func (x *TableDataProfile) GetDatasetId() string { + if x != nil { + return x.DatasetId + } + return "" +} -func (x *DataProfilePubSubCondition) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[136] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *TableDataProfile) GetTableId() string { + if x != nil { + return x.TableId } - return mi.MessageOf(x) + return "" } -// Deprecated: Use DataProfilePubSubCondition.ProtoReflect.Descriptor instead. -func (*DataProfilePubSubCondition) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{136} +func (x *TableDataProfile) GetFullResource() string { + if x != nil { + return x.FullResource + } + return "" } -func (x *DataProfilePubSubCondition) GetExpressions() *DataProfilePubSubCondition_PubSubExpressions { +func (x *TableDataProfile) GetProfileStatus() *ProfileStatus { if x != nil { - return x.Expressions + return x.ProfileStatus } return nil } -// The message that will be published to a Pub/Sub topic. -// To receive a message of protocol buffer schema type, convert the message data -// to an object of this proto class. -// https://cloud.google.com/pubsub/docs/samples/pubsub-subscribe-proto-messages -type DataProfilePubSubMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // If `DetailLevel` is `TABLE_PROFILE` this will be fully populated. - // Otherwise, if `DetailLevel` is `RESOURCE_NAME`, then only `name` and - // `full_resource` will be populated. - Profile *TableDataProfile `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"` - // The event that caused the Pub/Sub message to be sent. - Event DataProfileAction_EventType `protobuf:"varint,2,opt,name=event,proto3,enum=google.privacy.dlp.v2.DataProfileAction_EventType" json:"event,omitempty"` +func (x *TableDataProfile) GetState() TableDataProfile_State { + if x != nil { + return x.State + } + return TableDataProfile_STATE_UNSPECIFIED } -func (x *DataProfilePubSubMessage) Reset() { - *x = DataProfilePubSubMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[137] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *TableDataProfile) GetSensitivityScore() *SensitivityScore { + if x != nil { + return x.SensitivityScore } + return nil } -func (x *DataProfilePubSubMessage) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *TableDataProfile) GetDataRiskLevel() *DataRiskLevel { + if x != nil { + return x.DataRiskLevel + } + return nil } -func (*DataProfilePubSubMessage) ProtoMessage() {} - -func (x *DataProfilePubSubMessage) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[137] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *TableDataProfile) GetPredictedInfoTypes() []*InfoTypeSummary { + if x != nil { + return x.PredictedInfoTypes } - return mi.MessageOf(x) + return nil } -// Deprecated: Use DataProfilePubSubMessage.ProtoReflect.Descriptor instead. -func (*DataProfilePubSubMessage) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{137} +func (x *TableDataProfile) GetOtherInfoTypes() []*OtherInfoTypeSummary { + if x != nil { + return x.OtherInfoTypes + } + return nil } -func (x *DataProfilePubSubMessage) GetProfile() *TableDataProfile { +func (x *TableDataProfile) GetConfigSnapshot() *DataProfileConfigSnapshot { if x != nil { - return x.Profile + return x.ConfigSnapshot } return nil } -func (x *DataProfilePubSubMessage) GetEvent() DataProfileAction_EventType { +func (x *TableDataProfile) GetLastModifiedTime() *timestamppb.Timestamp { if x != nil { - return x.Event + return x.LastModifiedTime } - return DataProfileAction_EVENT_TYPE_UNSPECIFIED + return nil } -// Configuration to control the number of findings returned for inspection. -// This is not used for de-identification or data profiling. -type InspectConfig_FindingLimits struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *TableDataProfile) GetExpirationTime() *timestamppb.Timestamp { + if x != nil { + return x.ExpirationTime + } + return nil +} - // Max number of findings that will be returned for each item scanned. - // When set within `InspectJobConfig`, - // the maximum returned is 2000 regardless if this is set higher. - // When set within `InspectContentRequest`, this field is ignored. - MaxFindingsPerItem int32 `protobuf:"varint,1,opt,name=max_findings_per_item,json=maxFindingsPerItem,proto3" json:"max_findings_per_item,omitempty"` - // Max number of findings that will be returned per request/job. - // When set within `InspectContentRequest`, the maximum returned is 2000 - // regardless if this is set higher. - MaxFindingsPerRequest int32 `protobuf:"varint,2,opt,name=max_findings_per_request,json=maxFindingsPerRequest,proto3" json:"max_findings_per_request,omitempty"` - // Configuration of findings limit given for specified infoTypes. - MaxFindingsPerInfoType []*InspectConfig_FindingLimits_InfoTypeLimit `protobuf:"bytes,3,rep,name=max_findings_per_info_type,json=maxFindingsPerInfoType,proto3" json:"max_findings_per_info_type,omitempty"` +func (x *TableDataProfile) GetScannedColumnCount() int64 { + if x != nil { + return x.ScannedColumnCount + } + return 0 } -func (x *InspectConfig_FindingLimits) Reset() { - *x = InspectConfig_FindingLimits{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[138] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *TableDataProfile) GetFailedColumnCount() int64 { + if x != nil { + return x.FailedColumnCount } + return 0 } -func (x *InspectConfig_FindingLimits) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *TableDataProfile) GetTableSizeBytes() int64 { + if x != nil { + return x.TableSizeBytes + } + return 0 } -func (*InspectConfig_FindingLimits) ProtoMessage() {} +func (x *TableDataProfile) GetRowCount() int64 { + if x != nil { + return x.RowCount + } + return 0 +} -func (x *InspectConfig_FindingLimits) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[138] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *TableDataProfile) GetEncryptionStatus() EncryptionStatus { + if x != nil { + return x.EncryptionStatus } - return mi.MessageOf(x) + return EncryptionStatus_ENCRYPTION_STATUS_UNSPECIFIED } -// Deprecated: Use InspectConfig_FindingLimits.ProtoReflect.Descriptor instead. -func (*InspectConfig_FindingLimits) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{4, 0} +func (x *TableDataProfile) GetResourceVisibility() ResourceVisibility { + if x != nil { + return x.ResourceVisibility + } + return ResourceVisibility_RESOURCE_VISIBILITY_UNSPECIFIED } -func (x *InspectConfig_FindingLimits) GetMaxFindingsPerItem() int32 { +func (x *TableDataProfile) GetProfileLastGenerated() *timestamppb.Timestamp { if x != nil { - return x.MaxFindingsPerItem + return x.ProfileLastGenerated } - return 0 + return nil } -func (x *InspectConfig_FindingLimits) GetMaxFindingsPerRequest() int32 { +func (x *TableDataProfile) GetResourceLabels() map[string]string { if x != nil { - return x.MaxFindingsPerRequest + return x.ResourceLabels } - return 0 + return nil } -func (x *InspectConfig_FindingLimits) GetMaxFindingsPerInfoType() []*InspectConfig_FindingLimits_InfoTypeLimit { +func (x *TableDataProfile) GetCreateTime() *timestamppb.Timestamp { if x != nil { - return x.MaxFindingsPerInfoType + return x.CreateTime } return nil } -// Max findings configuration per infoType, per content item or long -// running DlpJob. -type InspectConfig_FindingLimits_InfoTypeLimit struct { +type ProfileStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Type of information the findings limit applies to. Only one limit per - // info_type should be provided. If InfoTypeLimit does not have an - // info_type, the DLP API applies the limit against all info_types that - // are found but not specified in another InfoTypeLimit. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3" json:"info_type,omitempty"` - // Max findings limit for the given infoType. - MaxFindings int32 `protobuf:"varint,2,opt,name=max_findings,json=maxFindings,proto3" json:"max_findings,omitempty"` + // Profiling status code and optional message + Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // Time when the profile generation status was updated + Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (x *InspectConfig_FindingLimits_InfoTypeLimit) Reset() { - *x = InspectConfig_FindingLimits_InfoTypeLimit{} +func (x *ProfileStatus) Reset() { + *x = ProfileStatus{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[139] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InspectConfig_FindingLimits_InfoTypeLimit) String() string { +func (x *ProfileStatus) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InspectConfig_FindingLimits_InfoTypeLimit) ProtoMessage() {} +func (*ProfileStatus) ProtoMessage() {} -func (x *InspectConfig_FindingLimits_InfoTypeLimit) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[139] +func (x *ProfileStatus) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13501,52 +14042,55 @@ func (x *InspectConfig_FindingLimits_InfoTypeLimit) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use InspectConfig_FindingLimits_InfoTypeLimit.ProtoReflect.Descriptor instead. -func (*InspectConfig_FindingLimits_InfoTypeLimit) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{4, 0, 0} +// Deprecated: Use ProfileStatus.ProtoReflect.Descriptor instead. +func (*ProfileStatus) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{141} } -func (x *InspectConfig_FindingLimits_InfoTypeLimit) GetInfoType() *InfoType { +func (x *ProfileStatus) GetStatus() *status.Status { if x != nil { - return x.InfoType + return x.Status } return nil } -func (x *InspectConfig_FindingLimits_InfoTypeLimit) GetMaxFindings() int32 { +func (x *ProfileStatus) GetTimestamp() *timestamppb.Timestamp { if x != nil { - return x.MaxFindings + return x.Timestamp } - return 0 + return nil } -// Values of the row. -type Table_Row struct { +// The infoType details for this column. +type InfoTypeSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Individual cells. - Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + // The infoType. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3" json:"info_type,omitempty"` + // Approximate percentage of non-null rows that contained data detected by + // this infotype. + EstimatedPrevalence int32 `protobuf:"varint,2,opt,name=estimated_prevalence,json=estimatedPrevalence,proto3" json:"estimated_prevalence,omitempty"` } -func (x *Table_Row) Reset() { - *x = Table_Row{} +func (x *InfoTypeSummary) Reset() { + *x = InfoTypeSummary{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[140] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Table_Row) String() string { +func (x *InfoTypeSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Table_Row) ProtoMessage() {} +func (*InfoTypeSummary) ProtoMessage() {} -func (x *Table_Row) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[140] +func (x *InfoTypeSummary) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13557,52 +14101,55 @@ func (x *Table_Row) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Table_Row.ProtoReflect.Descriptor instead. -func (*Table_Row) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{7, 0} +// Deprecated: Use InfoTypeSummary.ProtoReflect.Descriptor instead. +func (*InfoTypeSummary) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{142} } -func (x *Table_Row) GetValues() []*Value { +func (x *InfoTypeSummary) GetInfoType() *InfoType { if x != nil { - return x.Values + return x.InfoType } return nil } -// Configuration for determining how redaction of images should occur. -type RedactImageRequest_ImageRedactionConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *InfoTypeSummary) GetEstimatedPrevalence() int32 { + if x != nil { + return x.EstimatedPrevalence + } + return 0 +} - // Type of information to redact from images. - // - // Types that are assignable to Target: - // *RedactImageRequest_ImageRedactionConfig_InfoType - // *RedactImageRequest_ImageRedactionConfig_RedactAllText - Target isRedactImageRequest_ImageRedactionConfig_Target `protobuf_oneof:"target"` - // The color to use when redacting content from an image. If not specified, - // the default is black. - RedactionColor *Color `protobuf:"bytes,3,opt,name=redaction_color,json=redactionColor,proto3" json:"redaction_color,omitempty"` +// Infotype details for other infoTypes found within a column. +type OtherInfoTypeSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The other infoType. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3" json:"info_type,omitempty"` + // Approximate percentage of non-null rows that contained data detected by + // this infotype. + EstimatedPrevalence int32 `protobuf:"varint,2,opt,name=estimated_prevalence,json=estimatedPrevalence,proto3" json:"estimated_prevalence,omitempty"` } -func (x *RedactImageRequest_ImageRedactionConfig) Reset() { - *x = RedactImageRequest_ImageRedactionConfig{} +func (x *OtherInfoTypeSummary) Reset() { + *x = OtherInfoTypeSummary{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[142] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RedactImageRequest_ImageRedactionConfig) String() string { +func (x *OtherInfoTypeSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RedactImageRequest_ImageRedactionConfig) ProtoMessage() {} +func (*OtherInfoTypeSummary) ProtoMessage() {} -func (x *RedactImageRequest_ImageRedactionConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[142] +func (x *OtherInfoTypeSummary) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13613,93 +14160,107 @@ func (x *RedactImageRequest_ImageRedactionConfig) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use RedactImageRequest_ImageRedactionConfig.ProtoReflect.Descriptor instead. -func (*RedactImageRequest_ImageRedactionConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{21, 0} +// Deprecated: Use OtherInfoTypeSummary.ProtoReflect.Descriptor instead. +func (*OtherInfoTypeSummary) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{143} } -func (m *RedactImageRequest_ImageRedactionConfig) GetTarget() isRedactImageRequest_ImageRedactionConfig_Target { - if m != nil { - return m.Target +func (x *OtherInfoTypeSummary) GetInfoType() *InfoType { + if x != nil { + return x.InfoType } return nil } -func (x *RedactImageRequest_ImageRedactionConfig) GetInfoType() *InfoType { - if x, ok := x.GetTarget().(*RedactImageRequest_ImageRedactionConfig_InfoType); ok { - return x.InfoType +func (x *OtherInfoTypeSummary) GetEstimatedPrevalence() int32 { + if x != nil { + return x.EstimatedPrevalence } - return nil + return 0 } -func (x *RedactImageRequest_ImageRedactionConfig) GetRedactAllText() bool { - if x, ok := x.GetTarget().(*RedactImageRequest_ImageRedactionConfig_RedactAllText); ok { - return x.RedactAllText - } - return false +// A condition for determining whether a Pub/Sub should be triggered. +type DataProfilePubSubCondition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // An expression. + Expressions *DataProfilePubSubCondition_PubSubExpressions `protobuf:"bytes,1,opt,name=expressions,proto3" json:"expressions,omitempty"` } -func (x *RedactImageRequest_ImageRedactionConfig) GetRedactionColor() *Color { - if x != nil { - return x.RedactionColor +func (x *DataProfilePubSubCondition) Reset() { + *x = DataProfilePubSubCondition{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type isRedactImageRequest_ImageRedactionConfig_Target interface { - isRedactImageRequest_ImageRedactionConfig_Target() +func (x *DataProfilePubSubCondition) String() string { + return protoimpl.X.MessageStringOf(x) } -type RedactImageRequest_ImageRedactionConfig_InfoType struct { - // Only one per info_type should be provided per request. If not - // specified, and redact_all_text is false, the DLP API will redact all - // text that it matches against all info_types that are found, but not - // specified in another ImageRedactionConfig. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3,oneof"` -} +func (*DataProfilePubSubCondition) ProtoMessage() {} -type RedactImageRequest_ImageRedactionConfig_RedactAllText struct { - // If true, all text found in the image, regardless whether it matches an - // info_type, is redacted. Only one should be provided. - RedactAllText bool `protobuf:"varint,2,opt,name=redact_all_text,json=redactAllText,proto3,oneof"` +func (x *DataProfilePubSubCondition) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[144] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*RedactImageRequest_ImageRedactionConfig_InfoType) isRedactImageRequest_ImageRedactionConfig_Target() { +// Deprecated: Use DataProfilePubSubCondition.ProtoReflect.Descriptor instead. +func (*DataProfilePubSubCondition) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{144} } -func (*RedactImageRequest_ImageRedactionConfig_RedactAllText) isRedactImageRequest_ImageRedactionConfig_Target() { +func (x *DataProfilePubSubCondition) GetExpressions() *DataProfilePubSubCondition_PubSubExpressions { + if x != nil { + return x.Expressions + } + return nil } -// Snapshot of the inspection configuration. -type InspectDataSourceDetails_RequestedOptions struct { +// Pub/Sub topic message for a DataProfileAction.PubSubNotification event. +// To receive a message of protocol buffer schema type, convert the message data +// to an object of this proto class. +type DataProfilePubSubMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If run with an InspectTemplate, a snapshot of its state at the time of - // this run. - SnapshotInspectTemplate *InspectTemplate `protobuf:"bytes,1,opt,name=snapshot_inspect_template,json=snapshotInspectTemplate,proto3" json:"snapshot_inspect_template,omitempty"` - // Inspect config. - JobConfig *InspectJobConfig `protobuf:"bytes,3,opt,name=job_config,json=jobConfig,proto3" json:"job_config,omitempty"` + // If `DetailLevel` is `TABLE_PROFILE` this will be fully populated. + // Otherwise, if `DetailLevel` is `RESOURCE_NAME`, then only `name` and + // `full_resource` will be populated. + Profile *TableDataProfile `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"` + // The event that caused the Pub/Sub message to be sent. + Event DataProfileAction_EventType `protobuf:"varint,2,opt,name=event,proto3,enum=google.privacy.dlp.v2.DataProfileAction_EventType" json:"event,omitempty"` } -func (x *InspectDataSourceDetails_RequestedOptions) Reset() { - *x = InspectDataSourceDetails_RequestedOptions{} +func (x *DataProfilePubSubMessage) Reset() { + *x = DataProfilePubSubMessage{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[143] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InspectDataSourceDetails_RequestedOptions) String() string { +func (x *DataProfilePubSubMessage) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InspectDataSourceDetails_RequestedOptions) ProtoMessage() {} +func (*DataProfilePubSubMessage) ProtoMessage() {} -func (x *InspectDataSourceDetails_RequestedOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[143] +func (x *DataProfilePubSubMessage) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13710,59 +14271,68 @@ func (x *InspectDataSourceDetails_RequestedOptions) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use InspectDataSourceDetails_RequestedOptions.ProtoReflect.Descriptor instead. -func (*InspectDataSourceDetails_RequestedOptions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{32, 0} +// Deprecated: Use DataProfilePubSubMessage.ProtoReflect.Descriptor instead. +func (*DataProfilePubSubMessage) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{145} } -func (x *InspectDataSourceDetails_RequestedOptions) GetSnapshotInspectTemplate() *InspectTemplate { +func (x *DataProfilePubSubMessage) GetProfile() *TableDataProfile { if x != nil { - return x.SnapshotInspectTemplate + return x.Profile } return nil } -func (x *InspectDataSourceDetails_RequestedOptions) GetJobConfig() *InspectJobConfig { +func (x *DataProfilePubSubMessage) GetEvent() DataProfileAction_EventType { if x != nil { - return x.JobConfig + return x.Event } - return nil + return DataProfileAction_EVENT_TYPE_UNSPECIFIED } -// All result fields mentioned below are updated while the job is processing. -type InspectDataSourceDetails_Result struct { +// Configuration to control the number of findings returned for inspection. +// This is not used for de-identification or data profiling. +// +// When redacting sensitive data from images, finding limits don't apply. They +// can cause unexpected or inconsistent results, where only some data is +// redacted. Don't include finding limits in +// [RedactImage][google.privacy.dlp.v2.DlpService.RedactImage] +// requests. Otherwise, Cloud DLP returns an error. +type InspectConfig_FindingLimits struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Total size in bytes that were processed. - ProcessedBytes int64 `protobuf:"varint,1,opt,name=processed_bytes,json=processedBytes,proto3" json:"processed_bytes,omitempty"` - // Estimate of the number of bytes to process. - TotalEstimatedBytes int64 `protobuf:"varint,2,opt,name=total_estimated_bytes,json=totalEstimatedBytes,proto3" json:"total_estimated_bytes,omitempty"` - // Statistics of how many instances of each info type were found during - // inspect job. - InfoTypeStats []*InfoTypeStats `protobuf:"bytes,3,rep,name=info_type_stats,json=infoTypeStats,proto3" json:"info_type_stats,omitempty"` - // Statistics related to the processing of hybrid inspect. - HybridStats *HybridInspectStatistics `protobuf:"bytes,7,opt,name=hybrid_stats,json=hybridStats,proto3" json:"hybrid_stats,omitempty"` + // Max number of findings that will be returned for each item scanned. + // When set within `InspectJobConfig`, + // the maximum returned is 2000 regardless if this is set higher. + // When set within `InspectContentRequest`, this field is ignored. + MaxFindingsPerItem int32 `protobuf:"varint,1,opt,name=max_findings_per_item,json=maxFindingsPerItem,proto3" json:"max_findings_per_item,omitempty"` + // Max number of findings that will be returned per request/job. + // When set within `InspectContentRequest`, the maximum returned is 2000 + // regardless if this is set higher. + MaxFindingsPerRequest int32 `protobuf:"varint,2,opt,name=max_findings_per_request,json=maxFindingsPerRequest,proto3" json:"max_findings_per_request,omitempty"` + // Configuration of findings limit given for specified infoTypes. + MaxFindingsPerInfoType []*InspectConfig_FindingLimits_InfoTypeLimit `protobuf:"bytes,3,rep,name=max_findings_per_info_type,json=maxFindingsPerInfoType,proto3" json:"max_findings_per_info_type,omitempty"` } -func (x *InspectDataSourceDetails_Result) Reset() { - *x = InspectDataSourceDetails_Result{} +func (x *InspectConfig_FindingLimits) Reset() { + *x = InspectConfig_FindingLimits{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[144] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InspectDataSourceDetails_Result) String() string { +func (x *InspectConfig_FindingLimits) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InspectDataSourceDetails_Result) ProtoMessage() {} +func (*InspectConfig_FindingLimits) ProtoMessage() {} -func (x *InspectDataSourceDetails_Result) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[144] +func (x *InspectConfig_FindingLimits) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13773,71 +14343,65 @@ func (x *InspectDataSourceDetails_Result) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InspectDataSourceDetails_Result.ProtoReflect.Descriptor instead. -func (*InspectDataSourceDetails_Result) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{32, 1} +// Deprecated: Use InspectConfig_FindingLimits.ProtoReflect.Descriptor instead. +func (*InspectConfig_FindingLimits) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{4, 0} } -func (x *InspectDataSourceDetails_Result) GetProcessedBytes() int64 { +func (x *InspectConfig_FindingLimits) GetMaxFindingsPerItem() int32 { if x != nil { - return x.ProcessedBytes + return x.MaxFindingsPerItem } return 0 } -func (x *InspectDataSourceDetails_Result) GetTotalEstimatedBytes() int64 { +func (x *InspectConfig_FindingLimits) GetMaxFindingsPerRequest() int32 { if x != nil { - return x.TotalEstimatedBytes + return x.MaxFindingsPerRequest } return 0 } -func (x *InspectDataSourceDetails_Result) GetInfoTypeStats() []*InfoTypeStats { - if x != nil { - return x.InfoTypeStats - } - return nil -} - -func (x *InspectDataSourceDetails_Result) GetHybridStats() *HybridInspectStatistics { +func (x *InspectConfig_FindingLimits) GetMaxFindingsPerInfoType() []*InspectConfig_FindingLimits_InfoTypeLimit { if x != nil { - return x.HybridStats + return x.MaxFindingsPerInfoType } return nil } -// A quasi-identifier column has a custom_tag, used to know which column -// in the data corresponds to which column in the statistical model. -type StatisticalTable_QuasiIdentifierField struct { +// Max findings configuration per infoType, per content item or long +// running DlpJob. +type InspectConfig_FindingLimits_InfoTypeLimit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Identifies the column. - Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` - // A column can be tagged with a custom tag. In this case, the user must - // indicate an auxiliary table that contains statistical information on - // the possible values of this column (below). - CustomTag string `protobuf:"bytes,2,opt,name=custom_tag,json=customTag,proto3" json:"custom_tag,omitempty"` + // Type of information the findings limit applies to. Only one limit per + // info_type should be provided. If InfoTypeLimit does not have an + // info_type, the DLP API applies the limit against all info_types that + // are found but not specified in another InfoTypeLimit. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3" json:"info_type,omitempty"` + // Max findings limit for the given infoType. + MaxFindings int32 `protobuf:"varint,2,opt,name=max_findings,json=maxFindings,proto3" json:"max_findings,omitempty"` } -func (x *StatisticalTable_QuasiIdentifierField) Reset() { - *x = StatisticalTable_QuasiIdentifierField{} +func (x *InspectConfig_FindingLimits_InfoTypeLimit) Reset() { + *x = InspectConfig_FindingLimits_InfoTypeLimit{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[145] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatisticalTable_QuasiIdentifierField) String() string { +func (x *InspectConfig_FindingLimits_InfoTypeLimit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatisticalTable_QuasiIdentifierField) ProtoMessage() {} +func (*InspectConfig_FindingLimits_InfoTypeLimit) ProtoMessage() {} -func (x *StatisticalTable_QuasiIdentifierField) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[145] +func (x *InspectConfig_FindingLimits_InfoTypeLimit) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13848,54 +14412,52 @@ func (x *StatisticalTable_QuasiIdentifierField) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use StatisticalTable_QuasiIdentifierField.ProtoReflect.Descriptor instead. -func (*StatisticalTable_QuasiIdentifierField) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{40, 0} -} - -func (x *StatisticalTable_QuasiIdentifierField) GetField() *FieldId { +// Deprecated: Use InspectConfig_FindingLimits_InfoTypeLimit.ProtoReflect.Descriptor instead. +func (*InspectConfig_FindingLimits_InfoTypeLimit) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{4, 0, 0} +} + +func (x *InspectConfig_FindingLimits_InfoTypeLimit) GetInfoType() *InfoType { if x != nil { - return x.Field + return x.InfoType } return nil } -func (x *StatisticalTable_QuasiIdentifierField) GetCustomTag() string { +func (x *InspectConfig_FindingLimits_InfoTypeLimit) GetMaxFindings() int32 { if x != nil { - return x.CustomTag + return x.MaxFindings } - return "" + return 0 } -// Compute numerical stats over an individual column, including -// min, max, and quantiles. -type PrivacyMetric_NumericalStatsConfig struct { +// Values of the row. +type Table_Row struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Field to compute numerical stats on. Supported types are - // integer, float, date, datetime, timestamp, time. - Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // Individual cells. + Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` } -func (x *PrivacyMetric_NumericalStatsConfig) Reset() { - *x = PrivacyMetric_NumericalStatsConfig{} +func (x *Table_Row) Reset() { + *x = Table_Row{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[146] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_NumericalStatsConfig) String() string { +func (x *Table_Row) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_NumericalStatsConfig) ProtoMessage() {} +func (*Table_Row) ProtoMessage() {} -func (x *PrivacyMetric_NumericalStatsConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[146] +func (x *Table_Row) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13906,49 +14468,53 @@ func (x *PrivacyMetric_NumericalStatsConfig) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_NumericalStatsConfig.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_NumericalStatsConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 0} +// Deprecated: Use Table_Row.ProtoReflect.Descriptor instead. +func (*Table_Row) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{7, 0} } -func (x *PrivacyMetric_NumericalStatsConfig) GetField() *FieldId { +func (x *Table_Row) GetValues() []*Value { if x != nil { - return x.Field + return x.Values } return nil } -// Compute numerical stats over an individual column, including -// number of distinct values and value count distribution. -type PrivacyMetric_CategoricalStatsConfig struct { +// Configuration for determining how redaction of images should occur. +type RedactImageRequest_ImageRedactionConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Field to compute categorical stats on. All column types are - // supported except for arrays and structs. However, it may be more - // informative to use NumericalStats when the field type is supported, - // depending on the data. - Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // Type of information to redact from images. + // + // Types that are assignable to Target: + // + // *RedactImageRequest_ImageRedactionConfig_InfoType + // *RedactImageRequest_ImageRedactionConfig_RedactAllText + Target isRedactImageRequest_ImageRedactionConfig_Target `protobuf_oneof:"target"` + // The color to use when redacting content from an image. If not specified, + // the default is black. + RedactionColor *Color `protobuf:"bytes,3,opt,name=redaction_color,json=redactionColor,proto3" json:"redaction_color,omitempty"` } -func (x *PrivacyMetric_CategoricalStatsConfig) Reset() { - *x = PrivacyMetric_CategoricalStatsConfig{} +func (x *RedactImageRequest_ImageRedactionConfig) Reset() { + *x = RedactImageRequest_ImageRedactionConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[147] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_CategoricalStatsConfig) String() string { +func (x *RedactImageRequest_ImageRedactionConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_CategoricalStatsConfig) ProtoMessage() {} +func (*RedactImageRequest_ImageRedactionConfig) ProtoMessage() {} -func (x *PrivacyMetric_CategoricalStatsConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[147] +func (x *RedactImageRequest_ImageRedactionConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13959,60 +14525,93 @@ func (x *PrivacyMetric_CategoricalStatsConfig) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_CategoricalStatsConfig.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_CategoricalStatsConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 1} +// Deprecated: Use RedactImageRequest_ImageRedactionConfig.ProtoReflect.Descriptor instead. +func (*RedactImageRequest_ImageRedactionConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{21, 0} } -func (x *PrivacyMetric_CategoricalStatsConfig) GetField() *FieldId { +func (m *RedactImageRequest_ImageRedactionConfig) GetTarget() isRedactImageRequest_ImageRedactionConfig_Target { + if m != nil { + return m.Target + } + return nil +} + +func (x *RedactImageRequest_ImageRedactionConfig) GetInfoType() *InfoType { + if x, ok := x.GetTarget().(*RedactImageRequest_ImageRedactionConfig_InfoType); ok { + return x.InfoType + } + return nil +} + +func (x *RedactImageRequest_ImageRedactionConfig) GetRedactAllText() bool { + if x, ok := x.GetTarget().(*RedactImageRequest_ImageRedactionConfig_RedactAllText); ok { + return x.RedactAllText + } + return false +} + +func (x *RedactImageRequest_ImageRedactionConfig) GetRedactionColor() *Color { if x != nil { - return x.Field + return x.RedactionColor } return nil } -// k-anonymity metric, used for analysis of reidentification risk. -type PrivacyMetric_KAnonymityConfig struct { +type isRedactImageRequest_ImageRedactionConfig_Target interface { + isRedactImageRequest_ImageRedactionConfig_Target() +} + +type RedactImageRequest_ImageRedactionConfig_InfoType struct { + // Only one per info_type should be provided per request. If not + // specified, and redact_all_text is false, the DLP API will redact all + // text that it matches against all info_types that are found, but not + // specified in another ImageRedactionConfig. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,proto3,oneof"` +} + +type RedactImageRequest_ImageRedactionConfig_RedactAllText struct { + // If true, all text found in the image, regardless whether it matches an + // info_type, is redacted. Only one should be provided. + RedactAllText bool `protobuf:"varint,2,opt,name=redact_all_text,json=redactAllText,proto3,oneof"` +} + +func (*RedactImageRequest_ImageRedactionConfig_InfoType) isRedactImageRequest_ImageRedactionConfig_Target() { +} + +func (*RedactImageRequest_ImageRedactionConfig_RedactAllText) isRedactImageRequest_ImageRedactionConfig_Target() { +} + +// Snapshot of the inspection configuration. +type InspectDataSourceDetails_RequestedOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Set of fields to compute k-anonymity over. When multiple fields are - // specified, they are considered a single composite key. Structs and - // repeated data types are not supported; however, nested fields are - // supported so long as they are not structs themselves or nested within - // a repeated field. - QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` - // Message indicating that multiple rows might be associated to a - // single individual. If the same entity_id is associated to multiple - // quasi-identifier tuples over distinct rows, we consider the entire - // collection of tuples as the composite quasi-identifier. This collection - // is a multiset: the order in which the different tuples appear in the - // dataset is ignored, but their frequency is taken into account. - // - // Important note: a maximum of 1000 rows can be associated to a single - // entity ID. If more rows are associated with the same entity ID, some - // might be ignored. - EntityId *EntityId `protobuf:"bytes,2,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` + // If run with an InspectTemplate, a snapshot of its state at the time of + // this run. + SnapshotInspectTemplate *InspectTemplate `protobuf:"bytes,1,opt,name=snapshot_inspect_template,json=snapshotInspectTemplate,proto3" json:"snapshot_inspect_template,omitempty"` + // Inspect config. + JobConfig *InspectJobConfig `protobuf:"bytes,3,opt,name=job_config,json=jobConfig,proto3" json:"job_config,omitempty"` } -func (x *PrivacyMetric_KAnonymityConfig) Reset() { - *x = PrivacyMetric_KAnonymityConfig{} +func (x *InspectDataSourceDetails_RequestedOptions) Reset() { + *x = InspectDataSourceDetails_RequestedOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[148] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_KAnonymityConfig) String() string { +func (x *InspectDataSourceDetails_RequestedOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_KAnonymityConfig) ProtoMessage() {} +func (*InspectDataSourceDetails_RequestedOptions) ProtoMessage() {} -func (x *PrivacyMetric_KAnonymityConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[148] +func (x *InspectDataSourceDetails_RequestedOptions) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14023,56 +14622,59 @@ func (x *PrivacyMetric_KAnonymityConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_KAnonymityConfig.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_KAnonymityConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 2} +// Deprecated: Use InspectDataSourceDetails_RequestedOptions.ProtoReflect.Descriptor instead. +func (*InspectDataSourceDetails_RequestedOptions) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{32, 0} } -func (x *PrivacyMetric_KAnonymityConfig) GetQuasiIds() []*FieldId { +func (x *InspectDataSourceDetails_RequestedOptions) GetSnapshotInspectTemplate() *InspectTemplate { if x != nil { - return x.QuasiIds + return x.SnapshotInspectTemplate } return nil } -func (x *PrivacyMetric_KAnonymityConfig) GetEntityId() *EntityId { +func (x *InspectDataSourceDetails_RequestedOptions) GetJobConfig() *InspectJobConfig { if x != nil { - return x.EntityId + return x.JobConfig } return nil } -// l-diversity metric, used for analysis of reidentification risk. -type PrivacyMetric_LDiversityConfig struct { +// All result fields mentioned below are updated while the job is processing. +type InspectDataSourceDetails_Result struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Set of quasi-identifiers indicating how equivalence classes are - // defined for the l-diversity computation. When multiple fields are - // specified, they are considered a single composite key. - QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` - // Sensitive field for computing the l-value. - SensitiveAttribute *FieldId `protobuf:"bytes,2,opt,name=sensitive_attribute,json=sensitiveAttribute,proto3" json:"sensitive_attribute,omitempty"` + // Total size in bytes that were processed. + ProcessedBytes int64 `protobuf:"varint,1,opt,name=processed_bytes,json=processedBytes,proto3" json:"processed_bytes,omitempty"` + // Estimate of the number of bytes to process. + TotalEstimatedBytes int64 `protobuf:"varint,2,opt,name=total_estimated_bytes,json=totalEstimatedBytes,proto3" json:"total_estimated_bytes,omitempty"` + // Statistics of how many instances of each info type were found during + // inspect job. + InfoTypeStats []*InfoTypeStats `protobuf:"bytes,3,rep,name=info_type_stats,json=infoTypeStats,proto3" json:"info_type_stats,omitempty"` + // Statistics related to the processing of hybrid inspect. + HybridStats *HybridInspectStatistics `protobuf:"bytes,7,opt,name=hybrid_stats,json=hybridStats,proto3" json:"hybrid_stats,omitempty"` } -func (x *PrivacyMetric_LDiversityConfig) Reset() { - *x = PrivacyMetric_LDiversityConfig{} +func (x *InspectDataSourceDetails_Result) Reset() { + *x = InspectDataSourceDetails_Result{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[149] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_LDiversityConfig) String() string { +func (x *InspectDataSourceDetails_Result) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_LDiversityConfig) ProtoMessage() {} +func (*InspectDataSourceDetails_Result) ProtoMessage() {} -func (x *PrivacyMetric_LDiversityConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[149] +func (x *InspectDataSourceDetails_Result) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14083,66 +14685,71 @@ func (x *PrivacyMetric_LDiversityConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_LDiversityConfig.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_LDiversityConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 3} +// Deprecated: Use InspectDataSourceDetails_Result.ProtoReflect.Descriptor instead. +func (*InspectDataSourceDetails_Result) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{32, 1} } -func (x *PrivacyMetric_LDiversityConfig) GetQuasiIds() []*FieldId { +func (x *InspectDataSourceDetails_Result) GetProcessedBytes() int64 { if x != nil { - return x.QuasiIds + return x.ProcessedBytes + } + return 0 +} + +func (x *InspectDataSourceDetails_Result) GetTotalEstimatedBytes() int64 { + if x != nil { + return x.TotalEstimatedBytes + } + return 0 +} + +func (x *InspectDataSourceDetails_Result) GetInfoTypeStats() []*InfoTypeStats { + if x != nil { + return x.InfoTypeStats } return nil } -func (x *PrivacyMetric_LDiversityConfig) GetSensitiveAttribute() *FieldId { +func (x *InspectDataSourceDetails_Result) GetHybridStats() *HybridInspectStatistics { if x != nil { - return x.SensitiveAttribute + return x.HybridStats } return nil } -// Reidentifiability metric. This corresponds to a risk model similar to what -// is called "journalist risk" in the literature, except the attack dataset is -// statistically modeled instead of being perfectly known. This can be done -// using publicly available data (like the US Census), or using a custom -// statistical model (indicated as one or several BigQuery tables), or by -// extrapolating from the distribution of values in the input dataset. -type PrivacyMetric_KMapEstimationConfig struct { - state protoimpl.MessageState +// A quasi-identifier column has a custom_tag, used to know which column +// in the data corresponds to which column in the statistical model. +type StatisticalTable_QuasiIdentifierField struct { + state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Fields considered to be quasi-identifiers. No two columns can have the - // same tag. - QuasiIds []*PrivacyMetric_KMapEstimationConfig_TaggedField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` - // ISO 3166-1 alpha-2 region code to use in the statistical modeling. - // Set if no column is tagged with a region-specific InfoType (like - // US_ZIP_5) or a region code. - RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"` - // Several auxiliary tables can be used in the analysis. Each custom_tag - // used to tag a quasi-identifiers column must appear in exactly one column - // of one auxiliary table. - AuxiliaryTables []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable `protobuf:"bytes,3,rep,name=auxiliary_tables,json=auxiliaryTables,proto3" json:"auxiliary_tables,omitempty"` + // Identifies the column. + Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // A column can be tagged with a custom tag. In this case, the user must + // indicate an auxiliary table that contains statistical information on + // the possible values of this column (below). + CustomTag string `protobuf:"bytes,2,opt,name=custom_tag,json=customTag,proto3" json:"custom_tag,omitempty"` } -func (x *PrivacyMetric_KMapEstimationConfig) Reset() { - *x = PrivacyMetric_KMapEstimationConfig{} +func (x *StatisticalTable_QuasiIdentifierField) Reset() { + *x = StatisticalTable_QuasiIdentifierField{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[150] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_KMapEstimationConfig) String() string { +func (x *StatisticalTable_QuasiIdentifierField) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_KMapEstimationConfig) ProtoMessage() {} +func (*StatisticalTable_QuasiIdentifierField) ProtoMessage() {} -func (x *PrivacyMetric_KMapEstimationConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[150] +func (x *StatisticalTable_QuasiIdentifierField) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14153,71 +14760,54 @@ func (x *PrivacyMetric_KMapEstimationConfig) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_KMapEstimationConfig.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_KMapEstimationConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 4} +// Deprecated: Use StatisticalTable_QuasiIdentifierField.ProtoReflect.Descriptor instead. +func (*StatisticalTable_QuasiIdentifierField) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 0} } -func (x *PrivacyMetric_KMapEstimationConfig) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_TaggedField { +func (x *StatisticalTable_QuasiIdentifierField) GetField() *FieldId { if x != nil { - return x.QuasiIds + return x.Field } return nil } -func (x *PrivacyMetric_KMapEstimationConfig) GetRegionCode() string { +func (x *StatisticalTable_QuasiIdentifierField) GetCustomTag() string { if x != nil { - return x.RegionCode + return x.CustomTag } return "" } -func (x *PrivacyMetric_KMapEstimationConfig) GetAuxiliaryTables() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable { - if x != nil { - return x.AuxiliaryTables - } - return nil -} - -// δ-presence metric, used to estimate how likely it is for an attacker to -// figure out that one given individual appears in a de-identified dataset. -// Similarly to the k-map metric, we cannot compute δ-presence exactly without -// knowing the attack dataset, so we use a statistical model instead. -type PrivacyMetric_DeltaPresenceEstimationConfig struct { +// Compute numerical stats over an individual column, including +// min, max, and quantiles. +type PrivacyMetric_NumericalStatsConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Fields considered to be quasi-identifiers. No two fields can have the - // same tag. - QuasiIds []*QuasiId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` - // ISO 3166-1 alpha-2 region code to use in the statistical modeling. - // Set if no column is tagged with a region-specific InfoType (like - // US_ZIP_5) or a region code. - RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"` - // Several auxiliary tables can be used in the analysis. Each custom_tag - // used to tag a quasi-identifiers field must appear in exactly one - // field of one auxiliary table. - AuxiliaryTables []*StatisticalTable `protobuf:"bytes,3,rep,name=auxiliary_tables,json=auxiliaryTables,proto3" json:"auxiliary_tables,omitempty"` + // Field to compute numerical stats on. Supported types are + // integer, float, date, datetime, timestamp, time. + Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` } -func (x *PrivacyMetric_DeltaPresenceEstimationConfig) Reset() { - *x = PrivacyMetric_DeltaPresenceEstimationConfig{} +func (x *PrivacyMetric_NumericalStatsConfig) Reset() { + *x = PrivacyMetric_NumericalStatsConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[151] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_DeltaPresenceEstimationConfig) String() string { +func (x *PrivacyMetric_NumericalStatsConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_DeltaPresenceEstimationConfig) ProtoMessage() {} +func (*PrivacyMetric_NumericalStatsConfig) ProtoMessage() {} -func (x *PrivacyMetric_DeltaPresenceEstimationConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[151] +func (x *PrivacyMetric_NumericalStatsConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14228,68 +14818,113 @@ func (x *PrivacyMetric_DeltaPresenceEstimationConfig) ProtoReflect() protoreflec return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_DeltaPresenceEstimationConfig.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_DeltaPresenceEstimationConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 5} +// Deprecated: Use PrivacyMetric_NumericalStatsConfig.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_NumericalStatsConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 0} } -func (x *PrivacyMetric_DeltaPresenceEstimationConfig) GetQuasiIds() []*QuasiId { +func (x *PrivacyMetric_NumericalStatsConfig) GetField() *FieldId { if x != nil { - return x.QuasiIds + return x.Field } return nil } -func (x *PrivacyMetric_DeltaPresenceEstimationConfig) GetRegionCode() string { - if x != nil { - return x.RegionCode +// Compute numerical stats over an individual column, including +// number of distinct values and value count distribution. +type PrivacyMetric_CategoricalStatsConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Field to compute categorical stats on. All column types are + // supported except for arrays and structs. However, it may be more + // informative to use NumericalStats when the field type is supported, + // depending on the data. + Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` +} + +func (x *PrivacyMetric_CategoricalStatsConfig) Reset() { + *x = PrivacyMetric_CategoricalStatsConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[155] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *PrivacyMetric_DeltaPresenceEstimationConfig) GetAuxiliaryTables() []*StatisticalTable { +func (x *PrivacyMetric_CategoricalStatsConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrivacyMetric_CategoricalStatsConfig) ProtoMessage() {} + +func (x *PrivacyMetric_CategoricalStatsConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[155] + 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 PrivacyMetric_CategoricalStatsConfig.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_CategoricalStatsConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 1} +} + +func (x *PrivacyMetric_CategoricalStatsConfig) GetField() *FieldId { if x != nil { - return x.AuxiliaryTables + return x.Field } return nil } -// A column with a semantic tag attached. -type PrivacyMetric_KMapEstimationConfig_TaggedField struct { +// k-anonymity metric, used for analysis of reidentification risk. +type PrivacyMetric_KAnonymityConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Identifies the column. - Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` - // Semantic tag that identifies what a column contains, to determine which - // statistical model to use to estimate the reidentifiability of each - // value. [required] + // Set of fields to compute k-anonymity over. When multiple fields are + // specified, they are considered a single composite key. Structs and + // repeated data types are not supported; however, nested fields are + // supported so long as they are not structs themselves or nested within + // a repeated field. + QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` + // Message indicating that multiple rows might be associated to a + // single individual. If the same entity_id is associated to multiple + // quasi-identifier tuples over distinct rows, we consider the entire + // collection of tuples as the composite quasi-identifier. This collection + // is a multiset: the order in which the different tuples appear in the + // dataset is ignored, but their frequency is taken into account. // - // Types that are assignable to Tag: - // *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType - // *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag - // *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred - Tag isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag `protobuf_oneof:"tag"` + // Important note: a maximum of 1000 rows can be associated to a single + // entity ID. If more rows are associated with the same entity ID, some + // might be ignored. + EntityId *EntityId `protobuf:"bytes,2,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` } -func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) Reset() { - *x = PrivacyMetric_KMapEstimationConfig_TaggedField{} +func (x *PrivacyMetric_KAnonymityConfig) Reset() { + *x = PrivacyMetric_KAnonymityConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[152] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) String() string { +func (x *PrivacyMetric_KAnonymityConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_KMapEstimationConfig_TaggedField) ProtoMessage() {} +func (*PrivacyMetric_KAnonymityConfig) ProtoMessage() {} -func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[152] +func (x *PrivacyMetric_KAnonymityConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14300,119 +14935,56 @@ func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_KMapEstimationConfig_TaggedField.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_KMapEstimationConfig_TaggedField) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 4, 0} +// Deprecated: Use PrivacyMetric_KAnonymityConfig.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_KAnonymityConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 2} } -func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetField() *FieldId { +func (x *PrivacyMetric_KAnonymityConfig) GetQuasiIds() []*FieldId { if x != nil { - return x.Field + return x.QuasiIds } return nil } -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetTag() isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag { - if m != nil { - return m.Tag +func (x *PrivacyMetric_KAnonymityConfig) GetEntityId() *EntityId { + if x != nil { + return x.EntityId } return nil } -func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInfoType() *InfoType { - if x, ok := x.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType); ok { - return x.InfoType - } - return nil -} +// l-diversity metric, used for analysis of reidentification risk. +type PrivacyMetric_LDiversityConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetCustomTag() string { - if x, ok := x.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag); ok { - return x.CustomTag - } - return "" + // Set of quasi-identifiers indicating how equivalence classes are + // defined for the l-diversity computation. When multiple fields are + // specified, they are considered a single composite key. + QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` + // Sensitive field for computing the l-value. + SensitiveAttribute *FieldId `protobuf:"bytes,2,opt,name=sensitive_attribute,json=sensitiveAttribute,proto3" json:"sensitive_attribute,omitempty"` } -func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInferred() *emptypb.Empty { - if x, ok := x.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred); ok { - return x.Inferred +func (x *PrivacyMetric_LDiversityConfig) Reset() { + *x = PrivacyMetric_LDiversityConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[157] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag interface { - isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() +func (x *PrivacyMetric_LDiversityConfig) String() string { + return protoimpl.X.MessageStringOf(x) } -type PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType struct { - // A column can be tagged with a InfoType to use the relevant public - // dataset as a statistical model of population, if available. We - // currently support US ZIP codes, region codes, ages and genders. - // To programmatically obtain the list of supported InfoTypes, use - // ListInfoTypes with the supported_by=RISK_ANALYSIS filter. - InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType,proto3,oneof"` -} +func (*PrivacyMetric_LDiversityConfig) ProtoMessage() {} -type PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag struct { - // A column can be tagged with a custom tag. In this case, the user must - // indicate an auxiliary table that contains statistical information on - // the possible values of this column (below). - CustomTag string `protobuf:"bytes,3,opt,name=custom_tag,json=customTag,proto3,oneof"` -} - -type PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred struct { - // If no semantic tag is indicated, we infer the statistical model from - // the distribution of values in the input data - Inferred *emptypb.Empty `protobuf:"bytes,4,opt,name=inferred,proto3,oneof"` -} - -func (*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { -} - -func (*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { -} - -func (*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { -} - -// An auxiliary table contains statistical information on the relative -// frequency of different quasi-identifiers values. It has one or several -// quasi-identifiers columns, and one column that indicates the relative -// frequency of each quasi-identifier tuple. -// If a tuple is present in the data but not in the auxiliary table, the -// corresponding relative frequency is assumed to be zero (and thus, the -// tuple is highly reidentifiable). -type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Auxiliary table location. - Table *BigQueryTable `protobuf:"bytes,3,opt,name=table,proto3" json:"table,omitempty"` - // Required. Quasi-identifier columns. - QuasiIds []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` - // Required. The relative frequency column must contain a floating-point number - // between 0 and 1 (inclusive). Null values are assumed to be zero. - RelativeFrequency *FieldId `protobuf:"bytes,2,opt,name=relative_frequency,json=relativeFrequency,proto3" json:"relative_frequency,omitempty"` -} - -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Reset() { - *x = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[153] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) ProtoMessage() {} - -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[153] +func (x *PrivacyMetric_LDiversityConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14423,62 +14995,66 @@ func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_KMapEstimationConfig_AuxiliaryTable.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 4, 1} -} - -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetTable() *BigQueryTable { - if x != nil { - return x.Table - } - return nil +// Deprecated: Use PrivacyMetric_LDiversityConfig.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_LDiversityConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 3} } -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField { +func (x *PrivacyMetric_LDiversityConfig) GetQuasiIds() []*FieldId { if x != nil { return x.QuasiIds } return nil } -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetRelativeFrequency() *FieldId { +func (x *PrivacyMetric_LDiversityConfig) GetSensitiveAttribute() *FieldId { if x != nil { - return x.RelativeFrequency + return x.SensitiveAttribute } return nil } -// A quasi-identifier column has a custom_tag, used to know which column -// in the data corresponds to which column in the statistical model. -type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField struct { +// Reidentifiability metric. This corresponds to a risk model similar to what +// is called "journalist risk" in the literature, except the attack dataset is +// statistically modeled instead of being perfectly known. This can be done +// using publicly available data (like the US Census), or using a custom +// statistical model (indicated as one or several BigQuery tables), or by +// extrapolating from the distribution of values in the input dataset. +type PrivacyMetric_KMapEstimationConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Identifies the column. - Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` - // A auxiliary field. - CustomTag string `protobuf:"bytes,2,opt,name=custom_tag,json=customTag,proto3" json:"custom_tag,omitempty"` + // Required. Fields considered to be quasi-identifiers. No two columns can have the + // same tag. + QuasiIds []*PrivacyMetric_KMapEstimationConfig_TaggedField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` + // ISO 3166-1 alpha-2 region code to use in the statistical modeling. + // Set if no column is tagged with a region-specific InfoType (like + // US_ZIP_5) or a region code. + RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"` + // Several auxiliary tables can be used in the analysis. Each custom_tag + // used to tag a quasi-identifiers column must appear in exactly one column + // of one auxiliary table. + AuxiliaryTables []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable `protobuf:"bytes,3,rep,name=auxiliary_tables,json=auxiliaryTables,proto3" json:"auxiliary_tables,omitempty"` } -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Reset() { - *x = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField{} +func (x *PrivacyMetric_KMapEstimationConfig) Reset() { + *x = PrivacyMetric_KMapEstimationConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[154] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) String() string { +func (x *PrivacyMetric_KMapEstimationConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig) ProtoMessage() {} -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[154] +func (x *PrivacyMetric_KMapEstimationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14489,57 +15065,71 @@ func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) ProtoRe return mi.MessageOf(x) } -// Deprecated: Use PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField.ProtoReflect.Descriptor instead. -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{41, 4, 1, 0} +// Deprecated: Use PrivacyMetric_KMapEstimationConfig.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_KMapEstimationConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 4} } -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetField() *FieldId { +func (x *PrivacyMetric_KMapEstimationConfig) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_TaggedField { if x != nil { - return x.Field + return x.QuasiIds } return nil } -func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetCustomTag() string { +func (x *PrivacyMetric_KMapEstimationConfig) GetRegionCode() string { if x != nil { - return x.CustomTag + return x.RegionCode } return "" } -// Result of the numerical stats computation. -type AnalyzeDataSourceRiskDetails_NumericalStatsResult struct { +func (x *PrivacyMetric_KMapEstimationConfig) GetAuxiliaryTables() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable { + if x != nil { + return x.AuxiliaryTables + } + return nil +} + +// δ-presence metric, used to estimate how likely it is for an attacker to +// figure out that one given individual appears in a de-identified dataset. +// Similarly to the k-map metric, we cannot compute δ-presence exactly without +// knowing the attack dataset, so we use a statistical model instead. +type PrivacyMetric_DeltaPresenceEstimationConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Minimum value appearing in the column. - MinValue *Value `protobuf:"bytes,1,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"` - // Maximum value appearing in the column. - MaxValue *Value `protobuf:"bytes,2,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"` - // List of 99 values that partition the set of field values into 100 equal - // sized buckets. - QuantileValues []*Value `protobuf:"bytes,4,rep,name=quantile_values,json=quantileValues,proto3" json:"quantile_values,omitempty"` + // Required. Fields considered to be quasi-identifiers. No two fields can have the + // same tag. + QuasiIds []*QuasiId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` + // ISO 3166-1 alpha-2 region code to use in the statistical modeling. + // Set if no column is tagged with a region-specific InfoType (like + // US_ZIP_5) or a region code. + RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"` + // Several auxiliary tables can be used in the analysis. Each custom_tag + // used to tag a quasi-identifiers field must appear in exactly one + // field of one auxiliary table. + AuxiliaryTables []*StatisticalTable `protobuf:"bytes,3,rep,name=auxiliary_tables,json=auxiliaryTables,proto3" json:"auxiliary_tables,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) Reset() { - *x = AnalyzeDataSourceRiskDetails_NumericalStatsResult{} +func (x *PrivacyMetric_DeltaPresenceEstimationConfig) Reset() { + *x = PrivacyMetric_DeltaPresenceEstimationConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[155] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) String() string { +func (x *PrivacyMetric_DeltaPresenceEstimationConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) ProtoMessage() {} +func (*PrivacyMetric_DeltaPresenceEstimationConfig) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[155] +func (x *PrivacyMetric_DeltaPresenceEstimationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14550,59 +15140,69 @@ func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_NumericalStatsResult.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 0} +// Deprecated: Use PrivacyMetric_DeltaPresenceEstimationConfig.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_DeltaPresenceEstimationConfig) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 5} } -func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMinValue() *Value { +func (x *PrivacyMetric_DeltaPresenceEstimationConfig) GetQuasiIds() []*QuasiId { if x != nil { - return x.MinValue + return x.QuasiIds } return nil } -func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMaxValue() *Value { +func (x *PrivacyMetric_DeltaPresenceEstimationConfig) GetRegionCode() string { if x != nil { - return x.MaxValue + return x.RegionCode } - return nil + return "" } -func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetQuantileValues() []*Value { +func (x *PrivacyMetric_DeltaPresenceEstimationConfig) GetAuxiliaryTables() []*StatisticalTable { if x != nil { - return x.QuantileValues + return x.AuxiliaryTables } return nil } -// Result of the categorical stats computation. -type AnalyzeDataSourceRiskDetails_CategoricalStatsResult struct { +// A column with a semantic tag attached. +type PrivacyMetric_KMapEstimationConfig_TaggedField struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Histogram of value frequencies in the column. - ValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket `protobuf:"bytes,5,rep,name=value_frequency_histogram_buckets,json=valueFrequencyHistogramBuckets,proto3" json:"value_frequency_histogram_buckets,omitempty"` + // Required. Identifies the column. + Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // Semantic tag that identifies what a column contains, to determine which + // statistical model to use to estimate the reidentifiability of each + // value. [required] + // + // Types that are assignable to Tag: + // + // *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType + // *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag + // *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred + Tag isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag `protobuf_oneof:"tag"` } -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Reset() { - *x = AnalyzeDataSourceRiskDetails_CategoricalStatsResult{} +func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) Reset() { + *x = PrivacyMetric_KMapEstimationConfig_TaggedField{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[156] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) String() string { +func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig_TaggedField) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[156] +func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14613,94 +15213,119 @@ func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) ProtoReflect() pro return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_CategoricalStatsResult.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 1} +// Deprecated: Use PrivacyMetric_KMapEstimationConfig_TaggedField.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_KMapEstimationConfig_TaggedField) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 4, 0} } -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) GetValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket { +func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetField() *FieldId { if x != nil { - return x.ValueFrequencyHistogramBuckets + return x.Field } return nil } -// Result of the k-anonymity computation. -type AnalyzeDataSourceRiskDetails_KAnonymityResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Histogram of k-anonymity equivalence classes. - EquivalenceClassHistogramBuckets []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket `protobuf:"bytes,5,rep,name=equivalence_class_histogram_buckets,json=equivalenceClassHistogramBuckets,proto3" json:"equivalence_class_histogram_buckets,omitempty"` +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetTag() isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag { + if m != nil { + return m.Tag + } + return nil } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) Reset() { - *x = AnalyzeDataSourceRiskDetails_KAnonymityResult{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[157] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInfoType() *InfoType { + if x, ok := x.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType); ok { + return x.InfoType } + return nil } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetCustomTag() string { + if x, ok := x.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag); ok { + return x.CustomTag + } + return "" } -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) ProtoMessage() {} - -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[157] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInferred() *emptypb.Empty { + if x, ok := x.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred); ok { + return x.Inferred } - return mi.MessageOf(x) + return nil } -// Deprecated: Use AnalyzeDataSourceRiskDetails_KAnonymityResult.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 2} +type isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag interface { + isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) GetEquivalenceClassHistogramBuckets() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket { - if x != nil { - return x.EquivalenceClassHistogramBuckets - } - return nil +type PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType struct { + // A column can be tagged with a InfoType to use the relevant public + // dataset as a statistical model of population, if available. We + // currently support US ZIP codes, region codes, ages and genders. + // To programmatically obtain the list of supported InfoTypes, use + // ListInfoTypes with the supported_by=RISK_ANALYSIS filter. + InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType,proto3,oneof"` } -// Result of the l-diversity computation. -type AnalyzeDataSourceRiskDetails_LDiversityResult struct { +type PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag struct { + // A column can be tagged with a custom tag. In this case, the user must + // indicate an auxiliary table that contains statistical information on + // the possible values of this column (below). + CustomTag string `protobuf:"bytes,3,opt,name=custom_tag,json=customTag,proto3,oneof"` +} + +type PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred struct { + // If no semantic tag is indicated, we infer the statistical model from + // the distribution of values in the input data + Inferred *emptypb.Empty `protobuf:"bytes,4,opt,name=inferred,proto3,oneof"` +} + +func (*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { +} + +func (*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { +} + +func (*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { +} + +// An auxiliary table contains statistical information on the relative +// frequency of different quasi-identifiers values. It has one or several +// quasi-identifiers columns, and one column that indicates the relative +// frequency of each quasi-identifier tuple. +// If a tuple is present in the data but not in the auxiliary table, the +// corresponding relative frequency is assumed to be zero (and thus, the +// tuple is highly reidentifiable). +type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Histogram of l-diversity equivalence class sensitive value frequencies. - SensitiveValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket `protobuf:"bytes,5,rep,name=sensitive_value_frequency_histogram_buckets,json=sensitiveValueFrequencyHistogramBuckets,proto3" json:"sensitive_value_frequency_histogram_buckets,omitempty"` + // Required. Auxiliary table location. + Table *BigQueryTable `protobuf:"bytes,3,opt,name=table,proto3" json:"table,omitempty"` + // Required. Quasi-identifier columns. + QuasiIds []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds,proto3" json:"quasi_ids,omitempty"` + // Required. The relative frequency column must contain a floating-point number + // between 0 and 1 (inclusive). Null values are assumed to be zero. + RelativeFrequency *FieldId `protobuf:"bytes,2,opt,name=relative_frequency,json=relativeFrequency,proto3" json:"relative_frequency,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) Reset() { - *x = AnalyzeDataSourceRiskDetails_LDiversityResult{} +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Reset() { + *x = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[158] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) String() string { +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_LDiversityResult) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[158] +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14711,53 +15336,62 @@ func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_LDiversityResult.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_LDiversityResult) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 3} +// Deprecated: Use PrivacyMetric_KMapEstimationConfig_AuxiliaryTable.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 4, 1} } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) GetSensitiveValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket { +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetTable() *BigQueryTable { if x != nil { - return x.SensitiveValueFrequencyHistogramBuckets + return x.Table } return nil } -// Result of the reidentifiability analysis. Note that these results are an -// estimation, not exact values. -type AnalyzeDataSourceRiskDetails_KMapEstimationResult struct { +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField { + if x != nil { + return x.QuasiIds + } + return nil +} + +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetRelativeFrequency() *FieldId { + if x != nil { + return x.RelativeFrequency + } + return nil +} + +// A quasi-identifier column has a custom_tag, used to know which column +// in the data corresponds to which column in the statistical model. +type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The intervals [min_anonymity, max_anonymity] do not overlap. If a value - // doesn't correspond to any such interval, the associated frequency is - // zero. For example, the following records: - // {min_anonymity: 1, max_anonymity: 1, frequency: 17} - // {min_anonymity: 2, max_anonymity: 3, frequency: 42} - // {min_anonymity: 5, max_anonymity: 10, frequency: 99} - // mean that there are no record with an estimated anonymity of 4, 5, or - // larger than 10. - KMapEstimationHistogram []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket `protobuf:"bytes,1,rep,name=k_map_estimation_histogram,json=kMapEstimationHistogram,proto3" json:"k_map_estimation_histogram,omitempty"` + // Identifies the column. + Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // A auxiliary field. + CustomTag string `protobuf:"bytes,2,opt,name=custom_tag,json=customTag,proto3" json:"custom_tag,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) Reset() { - *x = AnalyzeDataSourceRiskDetails_KMapEstimationResult{} +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Reset() { + *x = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[159] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) String() string { +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[159] +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14768,53 +15402,57 @@ func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_KMapEstimationResult.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 4} +// Deprecated: Use PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField.ProtoReflect.Descriptor instead. +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 4, 1, 0} } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) GetKMapEstimationHistogram() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket { +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetField() *FieldId { if x != nil { - return x.KMapEstimationHistogram + return x.Field } return nil } -// Result of the δ-presence computation. Note that these results are an -// estimation, not exact values. -type AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult struct { +func (x *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetCustomTag() string { + if x != nil { + return x.CustomTag + } + return "" +} + +// Result of the numerical stats computation. +type AnalyzeDataSourceRiskDetails_NumericalStatsResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The intervals [min_probability, max_probability) do not overlap. If a - // value doesn't correspond to any such interval, the associated frequency - // is zero. For example, the following records: - // {min_probability: 0, max_probability: 0.1, frequency: 17} - // {min_probability: 0.2, max_probability: 0.3, frequency: 42} - // {min_probability: 0.3, max_probability: 0.4, frequency: 99} - // mean that there are no record with an estimated probability in [0.1, 0.2) - // nor larger or equal to 0.4. - DeltaPresenceEstimationHistogram []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket `protobuf:"bytes,1,rep,name=delta_presence_estimation_histogram,json=deltaPresenceEstimationHistogram,proto3" json:"delta_presence_estimation_histogram,omitempty"` + // Minimum value appearing in the column. + MinValue *Value `protobuf:"bytes,1,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"` + // Maximum value appearing in the column. + MaxValue *Value `protobuf:"bytes,2,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"` + // List of 99 values that partition the set of field values into 100 equal + // sized buckets. + QuantileValues []*Value `protobuf:"bytes,4,rep,name=quantile_values,json=quantileValues,proto3" json:"quantile_values,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) Reset() { - *x = AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult{} +func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) Reset() { + *x = AnalyzeDataSourceRiskDetails_NumericalStatsResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[160] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) String() string { +func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[160] +func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14825,45 +15463,59 @@ func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) ProtoReflec return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 5} +// Deprecated: Use AnalyzeDataSourceRiskDetails_NumericalStatsResult.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 0} } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) GetDeltaPresenceEstimationHistogram() []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket { +func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMinValue() *Value { if x != nil { - return x.DeltaPresenceEstimationHistogram + return x.MinValue } return nil } -// Risk analysis options. -type AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions struct { +func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMaxValue() *Value { + if x != nil { + return x.MaxValue + } + return nil +} + +func (x *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetQuantileValues() []*Value { + if x != nil { + return x.QuantileValues + } + return nil +} + +// Result of the categorical stats computation. +type AnalyzeDataSourceRiskDetails_CategoricalStatsResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The job config for the risk job. - JobConfig *RiskAnalysisJobConfig `protobuf:"bytes,1,opt,name=job_config,json=jobConfig,proto3" json:"job_config,omitempty"` + // Histogram of value frequencies in the column. + ValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket `protobuf:"bytes,5,rep,name=value_frequency_histogram_buckets,json=valueFrequencyHistogramBuckets,proto3" json:"value_frequency_histogram_buckets,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) Reset() { - *x = AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions{} +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Reset() { + *x = AnalyzeDataSourceRiskDetails_CategoricalStatsResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[161] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) String() string { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[161] +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14874,55 +15526,45 @@ func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) ProtoReflect return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 6} +// Deprecated: Use AnalyzeDataSourceRiskDetails_CategoricalStatsResult.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 1} } -func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) GetJobConfig() *RiskAnalysisJobConfig { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) GetValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket { if x != nil { - return x.JobConfig + return x.ValueFrequencyHistogramBuckets } return nil } -// Histogram of value frequencies in the column. -type AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket struct { +// Result of the k-anonymity computation. +type AnalyzeDataSourceRiskDetails_KAnonymityResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Lower bound on the value frequency of the values in this bucket. - ValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=value_frequency_lower_bound,json=valueFrequencyLowerBound,proto3" json:"value_frequency_lower_bound,omitempty"` - // Upper bound on the value frequency of the values in this bucket. - ValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=value_frequency_upper_bound,json=valueFrequencyUpperBound,proto3" json:"value_frequency_upper_bound,omitempty"` - // Total number of values in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` - // Sample of value frequencies in this bucket. The total number of - // values returned per bucket is capped at 20. - BucketValues []*ValueFrequency `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` - // Total number of distinct values in this bucket. - BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` + // Histogram of k-anonymity equivalence classes. + EquivalenceClassHistogramBuckets []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket `protobuf:"bytes,5,rep,name=equivalence_class_histogram_buckets,json=equivalenceClassHistogramBuckets,proto3" json:"equivalence_class_histogram_buckets,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Reset() { - *x = AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket{} +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) Reset() { + *x = AnalyzeDataSourceRiskDetails_KAnonymityResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[162] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) String() string { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) ProtoMessage() { -} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[162] +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14933,78 +15575,45 @@ func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHis return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 1, 0} -} - -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyLowerBound() int64 { - if x != nil { - return x.ValueFrequencyLowerBound - } - return 0 -} - -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyUpperBound() int64 { - if x != nil { - return x.ValueFrequencyUpperBound - } - return 0 -} - -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketSize() int64 { - if x != nil { - return x.BucketSize - } - return 0 +// Deprecated: Use AnalyzeDataSourceRiskDetails_KAnonymityResult.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 2} } -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValues() []*ValueFrequency { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult) GetEquivalenceClassHistogramBuckets() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket { if x != nil { - return x.BucketValues + return x.EquivalenceClassHistogramBuckets } return nil } -func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValueCount() int64 { - if x != nil { - return x.BucketValueCount - } - return 0 -} - -// The set of columns' values that share the same ldiversity value -type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass struct { +// Result of the l-diversity computation. +type AnalyzeDataSourceRiskDetails_LDiversityResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Set of values defining the equivalence class. One value per - // quasi-identifier column in the original KAnonymity metric message. - // The order is always the same as the original request. - QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues,proto3" json:"quasi_ids_values,omitempty"` - // Size of the equivalence class, for example number of rows with the - // above set of values. - EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize,proto3" json:"equivalence_class_size,omitempty"` + // Histogram of l-diversity equivalence class sensitive value frequencies. + SensitiveValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket `protobuf:"bytes,5,rep,name=sensitive_value_frequency_histogram_buckets,json=sensitiveValueFrequencyHistogramBuckets,proto3" json:"sensitive_value_frequency_histogram_buckets,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Reset() { - *x = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass{} +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) Reset() { + *x = AnalyzeDataSourceRiskDetails_LDiversityResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[163] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) String() string { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[163] +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15015,61 +15624,55 @@ func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClas return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 2, 0} +// Deprecated: Use AnalyzeDataSourceRiskDetails_LDiversityResult.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_LDiversityResult) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 3} } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetQuasiIdsValues() []*Value { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult) GetSensitiveValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket { if x != nil { - return x.QuasiIdsValues + return x.SensitiveValueFrequencyHistogramBuckets } return nil } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetEquivalenceClassSize() int64 { - if x != nil { - return x.EquivalenceClassSize - } - return 0 -} - -// Histogram of k-anonymity equivalence classes. -type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket struct { +// Result of the reidentifiability analysis. Note that these results are an +// estimation, not exact values. +type AnalyzeDataSourceRiskDetails_KMapEstimationResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Lower bound on the size of the equivalence classes in this bucket. - EquivalenceClassSizeLowerBound int64 `protobuf:"varint,1,opt,name=equivalence_class_size_lower_bound,json=equivalenceClassSizeLowerBound,proto3" json:"equivalence_class_size_lower_bound,omitempty"` - // Upper bound on the size of the equivalence classes in this bucket. - EquivalenceClassSizeUpperBound int64 `protobuf:"varint,2,opt,name=equivalence_class_size_upper_bound,json=equivalenceClassSizeUpperBound,proto3" json:"equivalence_class_size_upper_bound,omitempty"` - // Total number of equivalence classes in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` - // Sample of equivalence classes in this bucket. The total number of - // classes returned per bucket is capped at 20. - BucketValues []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` - // Total number of distinct equivalence classes in this bucket. - BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` + // The intervals [min_anonymity, max_anonymity] do not overlap. If a value + // doesn't correspond to any such interval, the associated frequency is + // zero. For example, the following records: + // + // {min_anonymity: 1, max_anonymity: 1, frequency: 17} + // {min_anonymity: 2, max_anonymity: 3, frequency: 42} + // {min_anonymity: 5, max_anonymity: 10, frequency: 99} + // + // mean that there are no record with an estimated anonymity of 4, 5, or + // larger than 10. + KMapEstimationHistogram []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket `protobuf:"bytes,1,rep,name=k_map_estimation_histogram,json=kMapEstimationHistogram,proto3" json:"k_map_estimation_histogram,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Reset() { - *x = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket{} +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) Reset() { + *x = AnalyzeDataSourceRiskDetails_KMapEstimationResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[164] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) String() string { +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[164] +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15080,80 +15683,104 @@ func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 2, 1} +// Deprecated: Use AnalyzeDataSourceRiskDetails_KMapEstimationResult.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 4} } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeLowerBound() int64 { +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult) GetKMapEstimationHistogram() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket { if x != nil { - return x.EquivalenceClassSizeLowerBound + return x.KMapEstimationHistogram } - return 0 + return nil } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeUpperBound() int64 { - if x != nil { - return x.EquivalenceClassSizeUpperBound - } - return 0 +// Result of the δ-presence computation. Note that these results are an +// estimation, not exact values. +type AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The intervals [min_probability, max_probability) do not overlap. If a + // value doesn't correspond to any such interval, the associated frequency + // is zero. For example, the following records: + // + // {min_probability: 0, max_probability: 0.1, frequency: 17} + // {min_probability: 0.2, max_probability: 0.3, frequency: 42} + // {min_probability: 0.3, max_probability: 0.4, frequency: 99} + // + // mean that there are no record with an estimated probability in [0.1, 0.2) + // nor larger or equal to 0.4. + DeltaPresenceEstimationHistogram []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket `protobuf:"bytes,1,rep,name=delta_presence_estimation_histogram,json=deltaPresenceEstimationHistogram,proto3" json:"delta_presence_estimation_histogram,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketSize() int64 { - if x != nil { - return x.BucketSize +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) Reset() { + *x = AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[168] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass { - if x != nil { - return x.BucketValues +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) ProtoMessage() {} + +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[168] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValueCount() int64 { +// Deprecated: Use AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 5} +} + +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult) GetDeltaPresenceEstimationHistogram() []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket { if x != nil { - return x.BucketValueCount + return x.DeltaPresenceEstimationHistogram } - return 0 + return nil } -// The set of columns' values that share the same ldiversity value. -type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass struct { +// Risk analysis options. +type AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Quasi-identifier values defining the k-anonymity equivalence - // class. The order is always the same as the original request. - QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues,proto3" json:"quasi_ids_values,omitempty"` - // Size of the k-anonymity equivalence class. - EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize,proto3" json:"equivalence_class_size,omitempty"` - // Number of distinct sensitive values in this equivalence class. - NumDistinctSensitiveValues int64 `protobuf:"varint,3,opt,name=num_distinct_sensitive_values,json=numDistinctSensitiveValues,proto3" json:"num_distinct_sensitive_values,omitempty"` - // Estimated frequencies of top sensitive values. - TopSensitiveValues []*ValueFrequency `protobuf:"bytes,4,rep,name=top_sensitive_values,json=topSensitiveValues,proto3" json:"top_sensitive_values,omitempty"` + // The job config for the risk job. + JobConfig *RiskAnalysisJobConfig `protobuf:"bytes,1,opt,name=job_config,json=jobConfig,proto3" json:"job_config,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Reset() { - *x = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass{} +func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) Reset() { + *x = AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[165] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) String() string { +func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[165] +func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15164,77 +15791,55 @@ func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClas return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 3, 0} +// Deprecated: Use AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 6} } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetQuasiIdsValues() []*Value { +func (x *AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions) GetJobConfig() *RiskAnalysisJobConfig { if x != nil { - return x.QuasiIdsValues + return x.JobConfig } return nil } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetEquivalenceClassSize() int64 { - if x != nil { - return x.EquivalenceClassSize - } - return 0 -} - -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetNumDistinctSensitiveValues() int64 { - if x != nil { - return x.NumDistinctSensitiveValues - } - return 0 -} - -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetTopSensitiveValues() []*ValueFrequency { - if x != nil { - return x.TopSensitiveValues - } - return nil -} - -// Histogram of l-diversity equivalence class sensitive value frequencies. -type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket struct { +// Histogram of value frequencies in the column. +type AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Lower bound on the sensitive value frequencies of the equivalence - // classes in this bucket. - SensitiveValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=sensitive_value_frequency_lower_bound,json=sensitiveValueFrequencyLowerBound,proto3" json:"sensitive_value_frequency_lower_bound,omitempty"` - // Upper bound on the sensitive value frequencies of the equivalence - // classes in this bucket. - SensitiveValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=sensitive_value_frequency_upper_bound,json=sensitiveValueFrequencyUpperBound,proto3" json:"sensitive_value_frequency_upper_bound,omitempty"` - // Total number of equivalence classes in this bucket. + // Lower bound on the value frequency of the values in this bucket. + ValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=value_frequency_lower_bound,json=valueFrequencyLowerBound,proto3" json:"value_frequency_lower_bound,omitempty"` + // Upper bound on the value frequency of the values in this bucket. + ValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=value_frequency_upper_bound,json=valueFrequencyUpperBound,proto3" json:"value_frequency_upper_bound,omitempty"` + // Total number of values in this bucket. BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` - // Sample of equivalence classes in this bucket. The total number of - // classes returned per bucket is capped at 20. - BucketValues []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` - // Total number of distinct equivalence classes in this bucket. + // Sample of value frequencies in this bucket. The total number of + // values returned per bucket is capped at 20. + BucketValues []*ValueFrequency `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` + // Total number of distinct values in this bucket. BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Reset() { - *x = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket{} +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Reset() { + *x = AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[166] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) String() string { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) ProtoMessage() { +} -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[166] +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15245,76 +15850,78 @@ func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 3, 1} +// Deprecated: Use AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 1, 0} } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyLowerBound() int64 { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyLowerBound() int64 { if x != nil { - return x.SensitiveValueFrequencyLowerBound + return x.ValueFrequencyLowerBound } return 0 } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyUpperBound() int64 { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyUpperBound() int64 { if x != nil { - return x.SensitiveValueFrequencyUpperBound + return x.ValueFrequencyUpperBound } return 0 } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketSize() int64 { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketSize() int64 { if x != nil { return x.BucketSize } return 0 } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValues() []*ValueFrequency { if x != nil { return x.BucketValues } return nil } -func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketValueCount() int64 { +func (x *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValueCount() int64 { if x != nil { return x.BucketValueCount } return 0 } -// A tuple of values for the quasi-identifier columns. -type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues struct { +// The set of columns' values that share the same ldiversity value +type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The quasi-identifier values. + // Set of values defining the equivalence class. One value per + // quasi-identifier column in the original KAnonymity metric message. + // The order is always the same as the original request. QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues,proto3" json:"quasi_ids_values,omitempty"` - // The estimated anonymity for these quasi-identifier values. - EstimatedAnonymity int64 `protobuf:"varint,2,opt,name=estimated_anonymity,json=estimatedAnonymity,proto3" json:"estimated_anonymity,omitempty"` + // Size of the equivalence class, for example number of rows with the + // above set of values. + EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize,proto3" json:"equivalence_class_size,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Reset() { - *x = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues{} +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Reset() { + *x = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[167] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) String() string { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) ProtoMessage() { -} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[167] +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15325,71 +15932,61 @@ func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiId return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 4, 0} +// Deprecated: Use AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 2, 0} } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetQuasiIdsValues() []*Value { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetQuasiIdsValues() []*Value { if x != nil { return x.QuasiIdsValues } return nil } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetEstimatedAnonymity() int64 { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetEquivalenceClassSize() int64 { if x != nil { - return x.EstimatedAnonymity + return x.EquivalenceClassSize } return 0 } -// A KMapEstimationHistogramBucket message with the following values: -// -// min_anonymity: 3 -// max_anonymity: 5 -// frequency: 42 -// -// means that there are 42 records whose quasi-identifier values correspond -// to 3, 4 or 5 people in the overlying population. An important particular -// case is when min_anonymity = max_anonymity = 1: the frequency field then -// corresponds to the number of uniquely identifiable records. -type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket struct { +// Histogram of k-anonymity equivalence classes. +type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Always positive. - MinAnonymity int64 `protobuf:"varint,1,opt,name=min_anonymity,json=minAnonymity,proto3" json:"min_anonymity,omitempty"` - // Always greater than or equal to min_anonymity. - MaxAnonymity int64 `protobuf:"varint,2,opt,name=max_anonymity,json=maxAnonymity,proto3" json:"max_anonymity,omitempty"` - // Number of records within these anonymity bounds. - BucketSize int64 `protobuf:"varint,5,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` - // Sample of quasi-identifier tuple values in this bucket. The total - // number of classes returned per bucket is capped at 20. - BucketValues []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues `protobuf:"bytes,6,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` - // Total number of distinct quasi-identifier tuple values in this bucket. - BucketValueCount int64 `protobuf:"varint,7,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` + // Lower bound on the size of the equivalence classes in this bucket. + EquivalenceClassSizeLowerBound int64 `protobuf:"varint,1,opt,name=equivalence_class_size_lower_bound,json=equivalenceClassSizeLowerBound,proto3" json:"equivalence_class_size_lower_bound,omitempty"` + // Upper bound on the size of the equivalence classes in this bucket. + EquivalenceClassSizeUpperBound int64 `protobuf:"varint,2,opt,name=equivalence_class_size_upper_bound,json=equivalenceClassSizeUpperBound,proto3" json:"equivalence_class_size_upper_bound,omitempty"` + // Total number of equivalence classes in this bucket. + BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` + // Sample of equivalence classes in this bucket. The total number of + // classes returned per bucket is capped at 20. + BucketValues []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` + // Total number of distinct equivalence classes in this bucket. + BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Reset() { - *x = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket{} +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Reset() { + *x = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[168] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) String() string { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) ProtoMessage() { -} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[168] +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15400,83 +15997,80 @@ func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogr return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 4, 1} +// Deprecated: Use AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 2, 1} } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMinAnonymity() int64 { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeLowerBound() int64 { if x != nil { - return x.MinAnonymity + return x.EquivalenceClassSizeLowerBound } return 0 } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMaxAnonymity() int64 { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeUpperBound() int64 { if x != nil { - return x.MaxAnonymity + return x.EquivalenceClassSizeUpperBound } return 0 } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketSize() int64 { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketSize() int64 { if x != nil { return x.BucketSize } return 0 } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass { if x != nil { return x.BucketValues } return nil } -func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketValueCount() int64 { +func (x *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValueCount() int64 { if x != nil { return x.BucketValueCount } return 0 } -// A tuple of values for the quasi-identifier columns. -type AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues struct { +// The set of columns' values that share the same ldiversity value. +type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The quasi-identifier values. + // Quasi-identifier values defining the k-anonymity equivalence + // class. The order is always the same as the original request. QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues,proto3" json:"quasi_ids_values,omitempty"` - // The estimated probability that a given individual sharing these - // quasi-identifier values is in the dataset. This value, typically called - // δ, is the ratio between the number of records in the dataset with these - // quasi-identifier values, and the total number of individuals (inside - // *and* outside the dataset) with these quasi-identifier values. - // For example, if there are 15 individuals in the dataset who share the - // same quasi-identifier values, and an estimated 100 people in the entire - // population with these values, then δ is 0.15. - EstimatedProbability float64 `protobuf:"fixed64,2,opt,name=estimated_probability,json=estimatedProbability,proto3" json:"estimated_probability,omitempty"` + // Size of the k-anonymity equivalence class. + EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize,proto3" json:"equivalence_class_size,omitempty"` + // Number of distinct sensitive values in this equivalence class. + NumDistinctSensitiveValues int64 `protobuf:"varint,3,opt,name=num_distinct_sensitive_values,json=numDistinctSensitiveValues,proto3" json:"num_distinct_sensitive_values,omitempty"` + // Estimated frequencies of top sensitive values. + TopSensitiveValues []*ValueFrequency `protobuf:"bytes,4,rep,name=top_sensitive_values,json=topSensitiveValues,proto3" json:"top_sensitive_values,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) Reset() { - *x = AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues{} +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Reset() { + *x = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[169] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) String() string { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) ProtoMessage() { -} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[169] +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15487,72 +16081,77 @@ func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenc return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 5, 0} +// Deprecated: Use AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 3, 0} } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) GetQuasiIdsValues() []*Value { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetQuasiIdsValues() []*Value { if x != nil { return x.QuasiIdsValues } return nil } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) GetEstimatedProbability() float64 { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetEquivalenceClassSize() int64 { if x != nil { - return x.EstimatedProbability + return x.EquivalenceClassSize } return 0 } -// A DeltaPresenceEstimationHistogramBucket message with the following -// values: -// -// min_probability: 0.1 -// max_probability: 0.2 -// frequency: 42 -// -// means that there are 42 records for which δ is in [0.1, 0.2). An -// important particular case is when min_probability = max_probability = 1: -// then, every individual who shares this quasi-identifier combination is in -// the dataset. -type AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket struct { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetNumDistinctSensitiveValues() int64 { + if x != nil { + return x.NumDistinctSensitiveValues + } + return 0 +} + +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetTopSensitiveValues() []*ValueFrequency { + if x != nil { + return x.TopSensitiveValues + } + return nil +} + +// Histogram of l-diversity equivalence class sensitive value frequencies. +type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Between 0 and 1. - MinProbability float64 `protobuf:"fixed64,1,opt,name=min_probability,json=minProbability,proto3" json:"min_probability,omitempty"` - // Always greater than or equal to min_probability. - MaxProbability float64 `protobuf:"fixed64,2,opt,name=max_probability,json=maxProbability,proto3" json:"max_probability,omitempty"` - // Number of records within these probability bounds. - BucketSize int64 `protobuf:"varint,5,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` - // Sample of quasi-identifier tuple values in this bucket. The total - // number of classes returned per bucket is capped at 20. - BucketValues []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues `protobuf:"bytes,6,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` - // Total number of distinct quasi-identifier tuple values in this bucket. - BucketValueCount int64 `protobuf:"varint,7,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` + // Lower bound on the sensitive value frequencies of the equivalence + // classes in this bucket. + SensitiveValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=sensitive_value_frequency_lower_bound,json=sensitiveValueFrequencyLowerBound,proto3" json:"sensitive_value_frequency_lower_bound,omitempty"` + // Upper bound on the sensitive value frequencies of the equivalence + // classes in this bucket. + SensitiveValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=sensitive_value_frequency_upper_bound,json=sensitiveValueFrequencyUpperBound,proto3" json:"sensitive_value_frequency_upper_bound,omitempty"` + // Total number of equivalence classes in this bucket. + BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` + // Sample of equivalence classes in this bucket. The total number of + // classes returned per bucket is capped at 20. + BucketValues []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` + // Total number of distinct equivalence classes in this bucket. + BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) Reset() { - *x = AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket{} +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Reset() { + *x = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[170] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) String() string { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) ProtoMessage() { -} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) ProtoMessage() {} -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[170] +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15563,74 +16162,76 @@ func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenc return mi.MessageOf(x) } -// Deprecated: Use AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket.ProtoReflect.Descriptor instead. -func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{42, 5, 1} +// Deprecated: Use AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 3, 1} } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetMinProbability() float64 { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyLowerBound() int64 { if x != nil { - return x.MinProbability + return x.SensitiveValueFrequencyLowerBound } return 0 } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetMaxProbability() float64 { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyUpperBound() int64 { if x != nil { - return x.MaxProbability + return x.SensitiveValueFrequencyUpperBound } return 0 } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetBucketSize() int64 { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketSize() int64 { if x != nil { return x.BucketSize } return 0 } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass { if x != nil { return x.BucketValues } return nil } -func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetBucketValueCount() int64 { +func (x *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketValueCount() int64 { if x != nil { return x.BucketValueCount } return 0 } -// Time zone of the date time object. -type DateTime_TimeZone struct { +// A tuple of values for the quasi-identifier columns. +type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Set only if the offset can be determined. Positive for time ahead of UTC. - // E.g. For "UTC-9", this value is -540. - OffsetMinutes int32 `protobuf:"varint,1,opt,name=offset_minutes,json=offsetMinutes,proto3" json:"offset_minutes,omitempty"` + // The quasi-identifier values. + QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues,proto3" json:"quasi_ids_values,omitempty"` + // The estimated anonymity for these quasi-identifier values. + EstimatedAnonymity int64 `protobuf:"varint,2,opt,name=estimated_anonymity,json=estimatedAnonymity,proto3" json:"estimated_anonymity,omitempty"` } -func (x *DateTime_TimeZone) Reset() { - *x = DateTime_TimeZone{} +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Reset() { + *x = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[171] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DateTime_TimeZone) String() string { +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DateTime_TimeZone) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) ProtoMessage() { +} -func (x *DateTime_TimeZone) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[171] +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15641,42 +16242,71 @@ func (x *DateTime_TimeZone) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DateTime_TimeZone.ProtoReflect.Descriptor instead. -func (*DateTime_TimeZone) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{46, 0} +// Deprecated: Use AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 4, 0} } -func (x *DateTime_TimeZone) GetOffsetMinutes() int32 { +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetQuasiIdsValues() []*Value { if x != nil { - return x.OffsetMinutes + return x.QuasiIdsValues + } + return nil +} + +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetEstimatedAnonymity() int64 { + if x != nil { + return x.EstimatedAnonymity } return 0 } -// Throw an error and fail the request when a transformation error occurs. -type TransformationErrorHandling_ThrowError struct { +// A KMapEstimationHistogramBucket message with the following values: +// +// min_anonymity: 3 +// max_anonymity: 5 +// frequency: 42 +// +// means that there are 42 records whose quasi-identifier values correspond +// to 3, 4 or 5 people in the overlying population. An important particular +// case is when min_anonymity = max_anonymity = 1: the frequency field then +// corresponds to the number of uniquely identifiable records. +type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Always positive. + MinAnonymity int64 `protobuf:"varint,1,opt,name=min_anonymity,json=minAnonymity,proto3" json:"min_anonymity,omitempty"` + // Always greater than or equal to min_anonymity. + MaxAnonymity int64 `protobuf:"varint,2,opt,name=max_anonymity,json=maxAnonymity,proto3" json:"max_anonymity,omitempty"` + // Number of records within these anonymity bounds. + BucketSize int64 `protobuf:"varint,5,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` + // Sample of quasi-identifier tuple values in this bucket. The total + // number of classes returned per bucket is capped at 20. + BucketValues []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues `protobuf:"bytes,6,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` + // Total number of distinct quasi-identifier tuple values in this bucket. + BucketValueCount int64 `protobuf:"varint,7,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` } -func (x *TransformationErrorHandling_ThrowError) Reset() { - *x = TransformationErrorHandling_ThrowError{} +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Reset() { + *x = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[172] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TransformationErrorHandling_ThrowError) String() string { +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransformationErrorHandling_ThrowError) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) ProtoMessage() { +} -func (x *TransformationErrorHandling_ThrowError) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[172] +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15687,85 +16317,83 @@ func (x *TransformationErrorHandling_ThrowError) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use TransformationErrorHandling_ThrowError.ProtoReflect.Descriptor instead. -func (*TransformationErrorHandling_ThrowError) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{48, 0} +// Deprecated: Use AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 4, 1} } -// Skips the data without modifying it if the requested transformation would -// cause an error. For example, if a `DateShift` transformation were applied -// an an IP address, this mode would leave the IP address unchanged in the -// response. -type TransformationErrorHandling_LeaveUntransformed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMinAnonymity() int64 { + if x != nil { + return x.MinAnonymity + } + return 0 } -func (x *TransformationErrorHandling_LeaveUntransformed) Reset() { - *x = TransformationErrorHandling_LeaveUntransformed{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[173] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMaxAnonymity() int64 { + if x != nil { + return x.MaxAnonymity } + return 0 } -func (x *TransformationErrorHandling_LeaveUntransformed) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketSize() int64 { + if x != nil { + return x.BucketSize + } + return 0 } -func (*TransformationErrorHandling_LeaveUntransformed) ProtoMessage() {} - -func (x *TransformationErrorHandling_LeaveUntransformed) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[173] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues { + if x != nil { + return x.BucketValues } - return mi.MessageOf(x) + return nil } -// Deprecated: Use TransformationErrorHandling_LeaveUntransformed.ProtoReflect.Descriptor instead. -func (*TransformationErrorHandling_LeaveUntransformed) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{48, 1} +func (x *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketValueCount() int64 { + if x != nil { + return x.BucketValueCount + } + return 0 } -// Bucket is represented as a range, along with replacement values. -type BucketingConfig_Bucket struct { +// A tuple of values for the quasi-identifier columns. +type AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Lower bound of the range, inclusive. Type should be the same as max if - // used. - Min *Value `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"` - // Upper bound of the range, exclusive; type must match min. - Max *Value `protobuf:"bytes,2,opt,name=max,proto3" json:"max,omitempty"` - // Required. Replacement value for this bucket. - ReplacementValue *Value `protobuf:"bytes,3,opt,name=replacement_value,json=replacementValue,proto3" json:"replacement_value,omitempty"` + // The quasi-identifier values. + QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues,proto3" json:"quasi_ids_values,omitempty"` + // The estimated probability that a given individual sharing these + // quasi-identifier values is in the dataset. This value, typically + // called δ, is the ratio between the number of records in the dataset + // with these quasi-identifier values, and the total number of individuals + // (inside *and* outside the dataset) with these quasi-identifier values. + // For example, if there are 15 individuals in the dataset who share the + // same quasi-identifier values, and an estimated 100 people in the entire + // population with these values, then δ is 0.15. + EstimatedProbability float64 `protobuf:"fixed64,2,opt,name=estimated_probability,json=estimatedProbability,proto3" json:"estimated_probability,omitempty"` } -func (x *BucketingConfig_Bucket) Reset() { - *x = BucketingConfig_Bucket{} +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) Reset() { + *x = AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[174] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BucketingConfig_Bucket) String() string { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BucketingConfig_Bucket) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) ProtoMessage() { +} -func (x *BucketingConfig_Bucket) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[174] +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15776,64 +16404,72 @@ func (x *BucketingConfig_Bucket) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BucketingConfig_Bucket.ProtoReflect.Descriptor instead. -func (*BucketingConfig_Bucket) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{60, 0} -} - -func (x *BucketingConfig_Bucket) GetMin() *Value { - if x != nil { - return x.Min - } - return nil +// Deprecated: Use AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 5, 0} } -func (x *BucketingConfig_Bucket) GetMax() *Value { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) GetQuasiIdsValues() []*Value { if x != nil { - return x.Max + return x.QuasiIdsValues } return nil } -func (x *BucketingConfig_Bucket) GetReplacementValue() *Value { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues) GetEstimatedProbability() float64 { if x != nil { - return x.ReplacementValue + return x.EstimatedProbability } - return nil + return 0 } -// A transformation to apply to text that is identified as a specific -// info_type. -type InfoTypeTransformations_InfoTypeTransformation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // InfoTypes to apply the transformation to. An empty list will cause - // this transformation to apply to all findings that correspond to - // infoTypes that were requested in `InspectConfig`. - InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes,proto3" json:"info_types,omitempty"` - // Required. Primitive transformation to apply to the infoType. - PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,2,opt,name=primitive_transformation,json=primitiveTransformation,proto3" json:"primitive_transformation,omitempty"` +// A DeltaPresenceEstimationHistogramBucket message with the following +// values: +// +// min_probability: 0.1 +// max_probability: 0.2 +// frequency: 42 +// +// means that there are 42 records for which δ is in [0.1, 0.2). An +// important particular case is when min_probability = max_probability = 1: +// then, every individual who shares this quasi-identifier combination is in +// the dataset. +type AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Between 0 and 1. + MinProbability float64 `protobuf:"fixed64,1,opt,name=min_probability,json=minProbability,proto3" json:"min_probability,omitempty"` + // Always greater than or equal to min_probability. + MaxProbability float64 `protobuf:"fixed64,2,opt,name=max_probability,json=maxProbability,proto3" json:"max_probability,omitempty"` + // Number of records within these probability bounds. + BucketSize int64 `protobuf:"varint,5,opt,name=bucket_size,json=bucketSize,proto3" json:"bucket_size,omitempty"` + // Sample of quasi-identifier tuple values in this bucket. The total + // number of classes returned per bucket is capped at 20. + BucketValues []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues `protobuf:"bytes,6,rep,name=bucket_values,json=bucketValues,proto3" json:"bucket_values,omitempty"` + // Total number of distinct quasi-identifier tuple values in this bucket. + BucketValueCount int64 `protobuf:"varint,7,opt,name=bucket_value_count,json=bucketValueCount,proto3" json:"bucket_value_count,omitempty"` } -func (x *InfoTypeTransformations_InfoTypeTransformation) Reset() { - *x = InfoTypeTransformations_InfoTypeTransformation{} +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) Reset() { + *x = AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[175] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InfoTypeTransformations_InfoTypeTransformation) String() string { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InfoTypeTransformations_InfoTypeTransformation) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) ProtoMessage() { +} -func (x *InfoTypeTransformations_InfoTypeTransformation) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[175] +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15844,137 +16480,74 @@ func (x *InfoTypeTransformations_InfoTypeTransformation) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use InfoTypeTransformations_InfoTypeTransformation.ProtoReflect.Descriptor instead. -func (*InfoTypeTransformations_InfoTypeTransformation) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{67, 0} +// Deprecated: Use AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket.ProtoReflect.Descriptor instead. +func (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{43, 5, 1} } -func (x *InfoTypeTransformations_InfoTypeTransformation) GetInfoTypes() []*InfoType { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetMinProbability() float64 { if x != nil { - return x.InfoTypes + return x.MinProbability } - return nil + return 0 } -func (x *InfoTypeTransformations_InfoTypeTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetMaxProbability() float64 { if x != nil { - return x.PrimitiveTransformation - } - return nil -} - -// The field type of `value` and `field` do not need to match to be -// considered equal, but not all comparisons are possible. -// EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types, -// but all other comparisons are invalid with incompatible types. -// A `value` of type: -// -// - `string` can be compared against all other types -// - `boolean` can only be compared against other booleans -// - `integer` can be compared against doubles or a string if the string value -// can be parsed as an integer. -// - `double` can be compared against integers or a string if the string can -// be parsed as a double. -// - `Timestamp` can be compared against strings in RFC 3339 date string -// format. -// - `TimeOfDay` can be compared against timestamps and strings in the format -// of 'HH:mm:ss'. -// -// If we fail to compare do to type mismatch, a warning will be given and -// the condition will evaluate to false. -type RecordCondition_Condition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Field within the record this condition is evaluated against. - Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` - // Required. Operator used to compare the field or infoType to the value. - Operator RelationalOperator `protobuf:"varint,3,opt,name=operator,proto3,enum=google.privacy.dlp.v2.RelationalOperator" json:"operator,omitempty"` - // Value to compare against. [Mandatory, except for `EXISTS` tests.] - Value *Value `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *RecordCondition_Condition) Reset() { - *x = RecordCondition_Condition{} - if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[176] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RecordCondition_Condition) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RecordCondition_Condition) ProtoMessage() {} - -func (x *RecordCondition_Condition) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[176] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + return x.MaxProbability } - return mi.MessageOf(x) -} - -// Deprecated: Use RecordCondition_Condition.ProtoReflect.Descriptor instead. -func (*RecordCondition_Condition) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{71, 0} + return 0 } -func (x *RecordCondition_Condition) GetField() *FieldId { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetBucketSize() int64 { if x != nil { - return x.Field + return x.BucketSize } - return nil + return 0 } -func (x *RecordCondition_Condition) GetOperator() RelationalOperator { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues { if x != nil { - return x.Operator + return x.BucketValues } - return RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED + return nil } -func (x *RecordCondition_Condition) GetValue() *Value { +func (x *AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket) GetBucketValueCount() int64 { if x != nil { - return x.Value + return x.BucketValueCount } - return nil + return 0 } -// A collection of conditions. -type RecordCondition_Conditions struct { +// Time zone of the date time object. +type DateTime_TimeZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A collection of conditions. - Conditions []*RecordCondition_Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` + // Set only if the offset can be determined. Positive for time ahead of UTC. + // E.g. For "UTC-9", this value is -540. + OffsetMinutes int32 `protobuf:"varint,1,opt,name=offset_minutes,json=offsetMinutes,proto3" json:"offset_minutes,omitempty"` } -func (x *RecordCondition_Conditions) Reset() { - *x = RecordCondition_Conditions{} +func (x *DateTime_TimeZone) Reset() { + *x = DateTime_TimeZone{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[177] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecordCondition_Conditions) String() string { +func (x *DateTime_TimeZone) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecordCondition_Conditions) ProtoMessage() {} +func (*DateTime_TimeZone) ProtoMessage() {} -func (x *RecordCondition_Conditions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[177] +func (x *DateTime_TimeZone) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15985,51 +16558,52 @@ func (x *RecordCondition_Conditions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecordCondition_Conditions.ProtoReflect.Descriptor instead. -func (*RecordCondition_Conditions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{71, 1} +// Deprecated: Use DateTime_TimeZone.ProtoReflect.Descriptor instead. +func (*DateTime_TimeZone) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{47, 0} } -func (x *RecordCondition_Conditions) GetConditions() []*RecordCondition_Condition { +func (x *DateTime_TimeZone) GetOffsetMinutes() int32 { if x != nil { - return x.Conditions + return x.OffsetMinutes } - return nil + return 0 } -// An expression, consisting or an operator and conditions. -type RecordCondition_Expressions struct { +// Configuration for determining how redaction of images should occur. +type ImageTransformations_ImageTransformation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The operator to apply to the result of conditions. Default and currently - // only supported value is `AND`. - LogicalOperator RecordCondition_Expressions_LogicalOperator `protobuf:"varint,1,opt,name=logical_operator,json=logicalOperator,proto3,enum=google.privacy.dlp.v2.RecordCondition_Expressions_LogicalOperator" json:"logical_operator,omitempty"` - // Expression types. + // Types that are assignable to Target: // - // Types that are assignable to Type: - // *RecordCondition_Expressions_Conditions - Type isRecordCondition_Expressions_Type `protobuf_oneof:"type"` + // *ImageTransformations_ImageTransformation_SelectedInfoTypes_ + // *ImageTransformations_ImageTransformation_AllInfoTypes_ + // *ImageTransformations_ImageTransformation_AllText_ + Target isImageTransformations_ImageTransformation_Target `protobuf_oneof:"target"` + // The color to use when redacting content from an image. If not + // specified, the default is black. + RedactionColor *Color `protobuf:"bytes,3,opt,name=redaction_color,json=redactionColor,proto3" json:"redaction_color,omitempty"` } -func (x *RecordCondition_Expressions) Reset() { - *x = RecordCondition_Expressions{} +func (x *ImageTransformations_ImageTransformation) Reset() { + *x = ImageTransformations_ImageTransformation{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[178] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecordCondition_Expressions) String() string { +func (x *ImageTransformations_ImageTransformation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecordCondition_Expressions) ProtoMessage() {} +func (*ImageTransformations_ImageTransformation) ProtoMessage() {} -func (x *RecordCondition_Expressions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[178] +func (x *ImageTransformations_ImageTransformation) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16040,76 +16614,105 @@ func (x *RecordCondition_Expressions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecordCondition_Expressions.ProtoReflect.Descriptor instead. -func (*RecordCondition_Expressions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{71, 2} +// Deprecated: Use ImageTransformations_ImageTransformation.ProtoReflect.Descriptor instead. +func (*ImageTransformations_ImageTransformation) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{49, 0} } -func (x *RecordCondition_Expressions) GetLogicalOperator() RecordCondition_Expressions_LogicalOperator { - if x != nil { - return x.LogicalOperator +func (m *ImageTransformations_ImageTransformation) GetTarget() isImageTransformations_ImageTransformation_Target { + if m != nil { + return m.Target } - return RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED + return nil } -func (m *RecordCondition_Expressions) GetType() isRecordCondition_Expressions_Type { - if m != nil { - return m.Type +func (x *ImageTransformations_ImageTransformation) GetSelectedInfoTypes() *ImageTransformations_ImageTransformation_SelectedInfoTypes { + if x, ok := x.GetTarget().(*ImageTransformations_ImageTransformation_SelectedInfoTypes_); ok { + return x.SelectedInfoTypes } return nil } -func (x *RecordCondition_Expressions) GetConditions() *RecordCondition_Conditions { - if x, ok := x.GetType().(*RecordCondition_Expressions_Conditions); ok { - return x.Conditions +func (x *ImageTransformations_ImageTransformation) GetAllInfoTypes() *ImageTransformations_ImageTransformation_AllInfoTypes { + if x, ok := x.GetTarget().(*ImageTransformations_ImageTransformation_AllInfoTypes_); ok { + return x.AllInfoTypes } return nil } -type isRecordCondition_Expressions_Type interface { - isRecordCondition_Expressions_Type() +func (x *ImageTransformations_ImageTransformation) GetAllText() *ImageTransformations_ImageTransformation_AllText { + if x, ok := x.GetTarget().(*ImageTransformations_ImageTransformation_AllText_); ok { + return x.AllText + } + return nil } -type RecordCondition_Expressions_Conditions struct { - // Conditions to apply to the expression. - Conditions *RecordCondition_Conditions `protobuf:"bytes,3,opt,name=conditions,proto3,oneof"` +func (x *ImageTransformations_ImageTransformation) GetRedactionColor() *Color { + if x != nil { + return x.RedactionColor + } + return nil } -func (*RecordCondition_Expressions_Conditions) isRecordCondition_Expressions_Type() {} +type isImageTransformations_ImageTransformation_Target interface { + isImageTransformations_ImageTransformation_Target() +} -// A collection that informs the user the number of times a particular -// `TransformationResultCode` and error details occurred. -type TransformationSummary_SummaryResult struct { +type ImageTransformations_ImageTransformation_SelectedInfoTypes_ struct { + // Apply transformation to the selected info_types. + SelectedInfoTypes *ImageTransformations_ImageTransformation_SelectedInfoTypes `protobuf:"bytes,4,opt,name=selected_info_types,json=selectedInfoTypes,proto3,oneof"` +} + +type ImageTransformations_ImageTransformation_AllInfoTypes_ struct { + // Apply transformation to all findings not specified in other + // ImageTransformation's selected_info_types. Only one instance is allowed + // within the ImageTransformations message. + AllInfoTypes *ImageTransformations_ImageTransformation_AllInfoTypes `protobuf:"bytes,5,opt,name=all_info_types,json=allInfoTypes,proto3,oneof"` +} + +type ImageTransformations_ImageTransformation_AllText_ struct { + // Apply transformation to all text that doesn't match an infoType. Only + // one instance is allowed within the ImageTransformations message. + AllText *ImageTransformations_ImageTransformation_AllText `protobuf:"bytes,6,opt,name=all_text,json=allText,proto3,oneof"` +} + +func (*ImageTransformations_ImageTransformation_SelectedInfoTypes_) isImageTransformations_ImageTransformation_Target() { +} + +func (*ImageTransformations_ImageTransformation_AllInfoTypes_) isImageTransformations_ImageTransformation_Target() { +} + +func (*ImageTransformations_ImageTransformation_AllText_) isImageTransformations_ImageTransformation_Target() { +} + +// Apply transformation to the selected info_types. +type ImageTransformations_ImageTransformation_SelectedInfoTypes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Number of transformations counted by this result. - Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` - // Outcome of the transformation. - Code TransformationSummary_TransformationResultCode `protobuf:"varint,2,opt,name=code,proto3,enum=google.privacy.dlp.v2.TransformationSummary_TransformationResultCode" json:"code,omitempty"` - // A place for warnings or errors to show up if a transformation didn't - // work as expected. - Details string `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"` + // Required. InfoTypes to apply the transformation to. Required. Provided InfoType + // must be unique within the ImageTransformations message. + InfoTypes []*InfoType `protobuf:"bytes,5,rep,name=info_types,json=infoTypes,proto3" json:"info_types,omitempty"` } -func (x *TransformationSummary_SummaryResult) Reset() { - *x = TransformationSummary_SummaryResult{} +func (x *ImageTransformations_ImageTransformation_SelectedInfoTypes) Reset() { + *x = ImageTransformations_ImageTransformation_SelectedInfoTypes{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[179] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TransformationSummary_SummaryResult) String() string { +func (x *ImageTransformations_ImageTransformation_SelectedInfoTypes) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransformationSummary_SummaryResult) ProtoMessage() {} +func (*ImageTransformations_ImageTransformation_SelectedInfoTypes) ProtoMessage() {} -func (x *TransformationSummary_SummaryResult) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[179] +func (x *ImageTransformations_ImageTransformation_SelectedInfoTypes) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16120,61 +16723,42 @@ func (x *TransformationSummary_SummaryResult) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use TransformationSummary_SummaryResult.ProtoReflect.Descriptor instead. -func (*TransformationSummary_SummaryResult) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73, 0} -} - -func (x *TransformationSummary_SummaryResult) GetCount() int64 { - if x != nil { - return x.Count - } - return 0 +// Deprecated: Use ImageTransformations_ImageTransformation_SelectedInfoTypes.ProtoReflect.Descriptor instead. +func (*ImageTransformations_ImageTransformation_SelectedInfoTypes) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{49, 0, 0} } -func (x *TransformationSummary_SummaryResult) GetCode() TransformationSummary_TransformationResultCode { - if x != nil { - return x.Code - } - return TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED -} - -func (x *TransformationSummary_SummaryResult) GetDetails() string { +func (x *ImageTransformations_ImageTransformation_SelectedInfoTypes) GetInfoTypes() []*InfoType { if x != nil { - return x.Details + return x.InfoTypes } - return "" + return nil } -// What event needs to occur for a new job to be started. -type JobTrigger_Trigger struct { +// Apply transformation to all findings. +type ImageTransformations_ImageTransformation_AllInfoTypes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Types that are assignable to Trigger: - // *JobTrigger_Trigger_Schedule - // *JobTrigger_Trigger_Manual - Trigger isJobTrigger_Trigger_Trigger `protobuf_oneof:"trigger"` } -func (x *JobTrigger_Trigger) Reset() { - *x = JobTrigger_Trigger{} +func (x *ImageTransformations_ImageTransformation_AllInfoTypes) Reset() { + *x = ImageTransformations_ImageTransformation_AllInfoTypes{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[180] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *JobTrigger_Trigger) String() string { +func (x *ImageTransformations_ImageTransformation_AllInfoTypes) String() string { return protoimpl.X.MessageStringOf(x) } -func (*JobTrigger_Trigger) ProtoMessage() {} +func (*ImageTransformations_ImageTransformation_AllInfoTypes) ProtoMessage() {} -func (x *JobTrigger_Trigger) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[180] +func (x *ImageTransformations_ImageTransformation_AllInfoTypes) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16185,80 +16769,35 @@ func (x *JobTrigger_Trigger) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use JobTrigger_Trigger.ProtoReflect.Descriptor instead. -func (*JobTrigger_Trigger) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{79, 0} -} - -func (m *JobTrigger_Trigger) GetTrigger() isJobTrigger_Trigger_Trigger { - if m != nil { - return m.Trigger - } - return nil -} - -func (x *JobTrigger_Trigger) GetSchedule() *Schedule { - if x, ok := x.GetTrigger().(*JobTrigger_Trigger_Schedule); ok { - return x.Schedule - } - return nil -} - -func (x *JobTrigger_Trigger) GetManual() *Manual { - if x, ok := x.GetTrigger().(*JobTrigger_Trigger_Manual); ok { - return x.Manual - } - return nil -} - -type isJobTrigger_Trigger_Trigger interface { - isJobTrigger_Trigger_Trigger() -} - -type JobTrigger_Trigger_Schedule struct { - // Create a job on a repeating basis based on the elapse of time. - Schedule *Schedule `protobuf:"bytes,1,opt,name=schedule,proto3,oneof"` -} - -type JobTrigger_Trigger_Manual struct { - // For use with hybrid jobs. Jobs must be manually created and finished. - Manual *Manual `protobuf:"bytes,2,opt,name=manual,proto3,oneof"` +// Deprecated: Use ImageTransformations_ImageTransformation_AllInfoTypes.ProtoReflect.Descriptor instead. +func (*ImageTransformations_ImageTransformation_AllInfoTypes) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{49, 0, 1} } -func (*JobTrigger_Trigger_Schedule) isJobTrigger_Trigger_Trigger() {} - -func (*JobTrigger_Trigger_Manual) isJobTrigger_Trigger_Trigger() {} - -// If set, the detailed findings will be persisted to the specified -// OutputStorageConfig. Only a single instance of this action can be -// specified. -// Compatible with: Inspect, Risk -type Action_SaveFindings struct { +// Apply to all text. +type ImageTransformations_ImageTransformation_AllText struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Location to store findings outside of DLP. - OutputConfig *OutputStorageConfig `protobuf:"bytes,1,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"` } -func (x *Action_SaveFindings) Reset() { - *x = Action_SaveFindings{} +func (x *ImageTransformations_ImageTransformation_AllText) Reset() { + *x = ImageTransformations_ImageTransformation_AllText{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[181] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Action_SaveFindings) String() string { +func (x *ImageTransformations_ImageTransformation_AllText) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_SaveFindings) ProtoMessage() {} +func (*ImageTransformations_ImageTransformation_AllText) ProtoMessage() {} -func (x *Action_SaveFindings) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[181] +func (x *ImageTransformations_ImageTransformation_AllText) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16269,52 +16808,35 @@ func (x *Action_SaveFindings) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action_SaveFindings.ProtoReflect.Descriptor instead. -func (*Action_SaveFindings) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80, 0} -} - -func (x *Action_SaveFindings) GetOutputConfig() *OutputStorageConfig { - if x != nil { - return x.OutputConfig - } - return nil +// Deprecated: Use ImageTransformations_ImageTransformation_AllText.ProtoReflect.Descriptor instead. +func (*ImageTransformations_ImageTransformation_AllText) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{49, 0, 2} } -// Publish a message into given Pub/Sub topic when DlpJob has completed. The -// message contains a single field, `DlpJobName`, which is equal to the -// finished job's -// [`DlpJob.name`](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs#DlpJob). -// Compatible with: Inspect, Risk -type Action_PublishToPubSub struct { +// Throw an error and fail the request when a transformation error occurs. +type TransformationErrorHandling_ThrowError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Cloud Pub/Sub topic to send notifications to. The topic must have given - // publishing access rights to the DLP API service account executing - // the long running DlpJob sending the notifications. - // Format is projects/{project}/topics/{topic}. - Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` } -func (x *Action_PublishToPubSub) Reset() { - *x = Action_PublishToPubSub{} +func (x *TransformationErrorHandling_ThrowError) Reset() { + *x = TransformationErrorHandling_ThrowError{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[182] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Action_PublishToPubSub) String() string { +func (x *TransformationErrorHandling_ThrowError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_PublishToPubSub) ProtoMessage() {} +func (*TransformationErrorHandling_ThrowError) ProtoMessage() {} -func (x *Action_PublishToPubSub) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[182] +func (x *TransformationErrorHandling_ThrowError) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16325,51 +16847,38 @@ func (x *Action_PublishToPubSub) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action_PublishToPubSub.ProtoReflect.Descriptor instead. -func (*Action_PublishToPubSub) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80, 1} -} - -func (x *Action_PublishToPubSub) GetTopic() string { - if x != nil { - return x.Topic - } - return "" +// Deprecated: Use TransformationErrorHandling_ThrowError.ProtoReflect.Descriptor instead. +func (*TransformationErrorHandling_ThrowError) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{50, 0} } -// Publish the result summary of a DlpJob to the Cloud Security -// Command Center (CSCC Alpha). -// This action is only available for projects which are parts of -// an organization and whitelisted for the alpha Cloud Security Command -// Center. -// The action will publish count of finding instances and their info types. -// The summary of findings will be persisted in CSCC and are governed by CSCC -// service-specific policy, see https://cloud.google.com/terms/service-terms -// Only a single instance of this action can be specified. -// Compatible with: Inspect -type Action_PublishSummaryToCscc struct { +// Skips the data without modifying it if the requested transformation would +// cause an error. For example, if a `DateShift` transformation were applied +// an an IP address, this mode would leave the IP address unchanged in the +// response. +type TransformationErrorHandling_LeaveUntransformed struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *Action_PublishSummaryToCscc) Reset() { - *x = Action_PublishSummaryToCscc{} +func (x *TransformationErrorHandling_LeaveUntransformed) Reset() { + *x = TransformationErrorHandling_LeaveUntransformed{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[183] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Action_PublishSummaryToCscc) String() string { +func (x *TransformationErrorHandling_LeaveUntransformed) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_PublishSummaryToCscc) ProtoMessage() {} +func (*TransformationErrorHandling_LeaveUntransformed) ProtoMessage() {} -func (x *Action_PublishSummaryToCscc) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[183] +func (x *TransformationErrorHandling_LeaveUntransformed) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16380,44 +16889,43 @@ func (x *Action_PublishSummaryToCscc) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action_PublishSummaryToCscc.ProtoReflect.Descriptor instead. -func (*Action_PublishSummaryToCscc) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80, 2} -} - -// Publish findings of a DlpJob to Data Catalog. Labels summarizing the -// results of the DlpJob will be applied to the entry for the resource scanned -// in Data Catalog. Any labels previously written by another DlpJob will -// be deleted. InfoType naming patterns are strictly enforced when using this -// feature. Note that the findings will be persisted in Data Catalog -// storage and are governed by Data Catalog service-specific policy, see -// https://cloud.google.com/terms/service-terms -// Only a single instance of this action can be specified and only allowed if -// all resources being scanned are BigQuery tables. -// Compatible with: Inspect -type Action_PublishFindingsToCloudDataCatalog struct { +// Deprecated: Use TransformationErrorHandling_LeaveUntransformed.ProtoReflect.Descriptor instead. +func (*TransformationErrorHandling_LeaveUntransformed) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{50, 1} +} + +// Bucket is represented as a range, along with replacement values. +type BucketingConfig_Bucket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Lower bound of the range, inclusive. Type should be the same as max if + // used. + Min *Value `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"` + // Upper bound of the range, exclusive; type must match min. + Max *Value `protobuf:"bytes,2,opt,name=max,proto3" json:"max,omitempty"` + // Required. Replacement value for this bucket. + ReplacementValue *Value `protobuf:"bytes,3,opt,name=replacement_value,json=replacementValue,proto3" json:"replacement_value,omitempty"` } -func (x *Action_PublishFindingsToCloudDataCatalog) Reset() { - *x = Action_PublishFindingsToCloudDataCatalog{} +func (x *BucketingConfig_Bucket) Reset() { + *x = BucketingConfig_Bucket{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[184] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Action_PublishFindingsToCloudDataCatalog) String() string { +func (x *BucketingConfig_Bucket) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_PublishFindingsToCloudDataCatalog) ProtoMessage() {} +func (*BucketingConfig_Bucket) ProtoMessage() {} -func (x *Action_PublishFindingsToCloudDataCatalog) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[184] +func (x *BucketingConfig_Bucket) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16428,36 +16936,64 @@ func (x *Action_PublishFindingsToCloudDataCatalog) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use Action_PublishFindingsToCloudDataCatalog.ProtoReflect.Descriptor instead. -func (*Action_PublishFindingsToCloudDataCatalog) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80, 3} +// Deprecated: Use BucketingConfig_Bucket.ProtoReflect.Descriptor instead. +func (*BucketingConfig_Bucket) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{62, 0} } -// Enable email notification to project owners and editors on jobs's -// completion/failure. -type Action_JobNotificationEmails struct { +func (x *BucketingConfig_Bucket) GetMin() *Value { + if x != nil { + return x.Min + } + return nil +} + +func (x *BucketingConfig_Bucket) GetMax() *Value { + if x != nil { + return x.Max + } + return nil +} + +func (x *BucketingConfig_Bucket) GetReplacementValue() *Value { + if x != nil { + return x.ReplacementValue + } + return nil +} + +// A transformation to apply to text that is identified as a specific +// info_type. +type InfoTypeTransformations_InfoTypeTransformation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // InfoTypes to apply the transformation to. An empty list will cause + // this transformation to apply to all findings that correspond to + // infoTypes that were requested in `InspectConfig`. + InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes,proto3" json:"info_types,omitempty"` + // Required. Primitive transformation to apply to the infoType. + PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,2,opt,name=primitive_transformation,json=primitiveTransformation,proto3" json:"primitive_transformation,omitempty"` } -func (x *Action_JobNotificationEmails) Reset() { - *x = Action_JobNotificationEmails{} +func (x *InfoTypeTransformations_InfoTypeTransformation) Reset() { + *x = InfoTypeTransformations_InfoTypeTransformation{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[185] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Action_JobNotificationEmails) String() string { +func (x *InfoTypeTransformations_InfoTypeTransformation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_JobNotificationEmails) ProtoMessage() {} +func (*InfoTypeTransformations_InfoTypeTransformation) ProtoMessage() {} -func (x *Action_JobNotificationEmails) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[185] +func (x *InfoTypeTransformations_InfoTypeTransformation) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[187] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16468,38 +17004,74 @@ func (x *Action_JobNotificationEmails) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action_JobNotificationEmails.ProtoReflect.Descriptor instead. -func (*Action_JobNotificationEmails) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80, 4} +// Deprecated: Use InfoTypeTransformations_InfoTypeTransformation.ProtoReflect.Descriptor instead. +func (*InfoTypeTransformations_InfoTypeTransformation) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{69, 0} } -// Enable Stackdriver metric dlp.googleapis.com/finding_count. This -// will publish a metric to stack driver on each infotype requested and -// how many findings were found for it. CustomDetectors will be bucketed -// as 'Custom' under the Stackdriver label 'info_type'. -type Action_PublishToStackdriver struct { +func (x *InfoTypeTransformations_InfoTypeTransformation) GetInfoTypes() []*InfoType { + if x != nil { + return x.InfoTypes + } + return nil +} + +func (x *InfoTypeTransformations_InfoTypeTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { + if x != nil { + return x.PrimitiveTransformation + } + return nil +} + +// The field type of `value` and `field` do not need to match to be +// considered equal, but not all comparisons are possible. +// EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types, +// but all other comparisons are invalid with incompatible types. +// A `value` of type: +// +// - `string` can be compared against all other types +// - `boolean` can only be compared against other booleans +// - `integer` can be compared against doubles or a string if the string value +// can be parsed as an integer. +// - `double` can be compared against integers or a string if the string can +// be parsed as a double. +// - `Timestamp` can be compared against strings in RFC 3339 date string +// format. +// - `TimeOfDay` can be compared against timestamps and strings in the format +// of 'HH:mm:ss'. +// +// If we fail to compare do to type mismatch, a warning will be given and +// the condition will evaluate to false. +type RecordCondition_Condition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Required. Field within the record this condition is evaluated against. + Field *FieldId `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` + // Required. Operator used to compare the field or infoType to the value. + Operator RelationalOperator `protobuf:"varint,3,opt,name=operator,proto3,enum=google.privacy.dlp.v2.RelationalOperator" json:"operator,omitempty"` + // Value to compare against. [Mandatory, except for `EXISTS` tests.] + Value *Value `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` } -func (x *Action_PublishToStackdriver) Reset() { - *x = Action_PublishToStackdriver{} +func (x *RecordCondition_Condition) Reset() { + *x = RecordCondition_Condition{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[186] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Action_PublishToStackdriver) String() string { +func (x *RecordCondition_Condition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Action_PublishToStackdriver) ProtoMessage() {} +func (*RecordCondition_Condition) ProtoMessage() {} -func (x *Action_PublishToStackdriver) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[186] +func (x *RecordCondition_Condition) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16510,41 +17082,59 @@ func (x *Action_PublishToStackdriver) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Action_PublishToStackdriver.ProtoReflect.Descriptor instead. -func (*Action_PublishToStackdriver) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{80, 5} +// Deprecated: Use RecordCondition_Condition.ProtoReflect.Descriptor instead. +func (*RecordCondition_Condition) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73, 0} } -// If set, the detailed data profiles will be persisted to the location -// of your choice whenever updated. -type DataProfileAction_Export struct { +func (x *RecordCondition_Condition) GetField() *FieldId { + if x != nil { + return x.Field + } + return nil +} + +func (x *RecordCondition_Condition) GetOperator() RelationalOperator { + if x != nil { + return x.Operator + } + return RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED +} + +func (x *RecordCondition_Condition) GetValue() *Value { + if x != nil { + return x.Value + } + return nil +} + +// A collection of conditions. +type RecordCondition_Conditions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Store all table and column profiles in an existing table or a new table - // in an existing dataset. Each re-generation will result in a new row in - // BigQuery. - ProfileTable *BigQueryTable `protobuf:"bytes,1,opt,name=profile_table,json=profileTable,proto3" json:"profile_table,omitempty"` + // A collection of conditions. + Conditions []*RecordCondition_Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` } -func (x *DataProfileAction_Export) Reset() { - *x = DataProfileAction_Export{} +func (x *RecordCondition_Conditions) Reset() { + *x = RecordCondition_Conditions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[187] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataProfileAction_Export) String() string { +func (x *RecordCondition_Conditions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfileAction_Export) ProtoMessage() {} +func (*RecordCondition_Conditions) ProtoMessage() {} -func (x *DataProfileAction_Export) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[187] +func (x *RecordCondition_Conditions) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[189] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16555,58 +17145,52 @@ func (x *DataProfileAction_Export) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DataProfileAction_Export.ProtoReflect.Descriptor instead. -func (*DataProfileAction_Export) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{96, 0} +// Deprecated: Use RecordCondition_Conditions.ProtoReflect.Descriptor instead. +func (*RecordCondition_Conditions) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73, 1} } -func (x *DataProfileAction_Export) GetProfileTable() *BigQueryTable { +func (x *RecordCondition_Conditions) GetConditions() []*RecordCondition_Condition { if x != nil { - return x.ProfileTable + return x.Conditions } return nil } -// Send a Pub/Sub message into the given Pub/Sub topic to connect other -// systems to data profile generation. The message payload data will -// be the byte serialization of `DataProfilePubSubMessage`. -type DataProfileAction_PubSubNotification struct { +// An expression, consisting of an operator and conditions. +type RecordCondition_Expressions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Cloud Pub/Sub topic to send notifications to. - // Format is projects/{project}/topics/{topic}. - Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` - // The type of event that triggers a Pub/Sub. At most one - // `PubSubNotification` per EventType is permitted. - Event DataProfileAction_EventType `protobuf:"varint,2,opt,name=event,proto3,enum=google.privacy.dlp.v2.DataProfileAction_EventType" json:"event,omitempty"` - // Conditions (e.g., data risk or sensitivity level) for triggering a - // Pub/Sub. - PubsubCondition *DataProfilePubSubCondition `protobuf:"bytes,3,opt,name=pubsub_condition,json=pubsubCondition,proto3" json:"pubsub_condition,omitempty"` - // How much data to include in the Pub/Sub message. If the user wishes to - // limit the size of the message, they can use resource_name and fetch the - // profile fields they wish to. Per table profile (not per column). - DetailOfMessage DataProfileAction_PubSubNotification_DetailLevel `protobuf:"varint,4,opt,name=detail_of_message,json=detailOfMessage,proto3,enum=google.privacy.dlp.v2.DataProfileAction_PubSubNotification_DetailLevel" json:"detail_of_message,omitempty"` + // The operator to apply to the result of conditions. Default and currently + // only supported value is `AND`. + LogicalOperator RecordCondition_Expressions_LogicalOperator `protobuf:"varint,1,opt,name=logical_operator,json=logicalOperator,proto3,enum=google.privacy.dlp.v2.RecordCondition_Expressions_LogicalOperator" json:"logical_operator,omitempty"` + // Expression types. + // + // Types that are assignable to Type: + // + // *RecordCondition_Expressions_Conditions + Type isRecordCondition_Expressions_Type `protobuf_oneof:"type"` } -func (x *DataProfileAction_PubSubNotification) Reset() { - *x = DataProfileAction_PubSubNotification{} +func (x *RecordCondition_Expressions) Reset() { + *x = RecordCondition_Expressions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[188] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataProfileAction_PubSubNotification) String() string { +func (x *RecordCondition_Expressions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfileAction_PubSubNotification) ProtoMessage() {} +func (*RecordCondition_Expressions) ProtoMessage() {} -func (x *DataProfileAction_PubSubNotification) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[188] +func (x *RecordCondition_Expressions) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[190] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16617,55 +17201,61 @@ func (x *DataProfileAction_PubSubNotification) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use DataProfileAction_PubSubNotification.ProtoReflect.Descriptor instead. -func (*DataProfileAction_PubSubNotification) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{96, 1} +// Deprecated: Use RecordCondition_Expressions.ProtoReflect.Descriptor instead. +func (*RecordCondition_Expressions) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{73, 2} } -func (x *DataProfileAction_PubSubNotification) GetTopic() string { +func (x *RecordCondition_Expressions) GetLogicalOperator() RecordCondition_Expressions_LogicalOperator { if x != nil { - return x.Topic + return x.LogicalOperator } - return "" + return RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED } -func (x *DataProfileAction_PubSubNotification) GetEvent() DataProfileAction_EventType { - if x != nil { - return x.Event +func (m *RecordCondition_Expressions) GetType() isRecordCondition_Expressions_Type { + if m != nil { + return m.Type } - return DataProfileAction_EVENT_TYPE_UNSPECIFIED + return nil } -func (x *DataProfileAction_PubSubNotification) GetPubsubCondition() *DataProfilePubSubCondition { - if x != nil { - return x.PubsubCondition +func (x *RecordCondition_Expressions) GetConditions() *RecordCondition_Conditions { + if x, ok := x.GetType().(*RecordCondition_Expressions_Conditions); ok { + return x.Conditions } return nil } -func (x *DataProfileAction_PubSubNotification) GetDetailOfMessage() DataProfileAction_PubSubNotification_DetailLevel { - if x != nil { - return x.DetailOfMessage - } - return DataProfileAction_PubSubNotification_DETAIL_LEVEL_UNSPECIFIED +type isRecordCondition_Expressions_Type interface { + isRecordCondition_Expressions_Type() } -// A condition consisting of a value. -type DataProfilePubSubCondition_PubSubCondition struct { +type RecordCondition_Expressions_Conditions struct { + // Conditions to apply to the expression. + Conditions *RecordCondition_Conditions `protobuf:"bytes,3,opt,name=conditions,proto3,oneof"` +} + +func (*RecordCondition_Expressions_Conditions) isRecordCondition_Expressions_Type() {} + +// A collection that informs the user the number of times a particular +// `TransformationResultCode` and error details occurred. +type TransformationSummary_SummaryResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The value for the condition to trigger. - // - // Types that are assignable to Value: - // *DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore - // *DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore - Value isDataProfilePubSubCondition_PubSubCondition_Value `protobuf_oneof:"value"` + // Number of transformations counted by this result. + Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + // Outcome of the transformation. + Code TransformationSummary_TransformationResultCode `protobuf:"varint,2,opt,name=code,proto3,enum=google.privacy.dlp.v2.TransformationSummary_TransformationResultCode" json:"code,omitempty"` + // A place for warnings or errors to show up if a transformation didn't + // work as expected. + Details string `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"` } -func (x *DataProfilePubSubCondition_PubSubCondition) Reset() { - *x = DataProfilePubSubCondition_PubSubCondition{} +func (x *TransformationSummary_SummaryResult) Reset() { + *x = TransformationSummary_SummaryResult{} if protoimpl.UnsafeEnabled { mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16673,13 +17263,13 @@ func (x *DataProfilePubSubCondition_PubSubCondition) Reset() { } } -func (x *DataProfilePubSubCondition_PubSubCondition) String() string { +func (x *TransformationSummary_SummaryResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfilePubSubCondition_PubSubCondition) ProtoMessage() {} +func (*TransformationSummary_SummaryResult) ProtoMessage() {} -func (x *DataProfilePubSubCondition_PubSubCondition) ProtoReflect() protoreflect.Message { +func (x *TransformationSummary_SummaryResult) ProtoReflect() protoreflect.Message { mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[191] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16691,81 +17281,146 @@ func (x *DataProfilePubSubCondition_PubSubCondition) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use DataProfilePubSubCondition_PubSubCondition.ProtoReflect.Descriptor instead. -func (*DataProfilePubSubCondition_PubSubCondition) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{136, 0} +// Deprecated: Use TransformationSummary_SummaryResult.ProtoReflect.Descriptor instead. +func (*TransformationSummary_SummaryResult) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{75, 0} } -func (m *DataProfilePubSubCondition_PubSubCondition) GetValue() isDataProfilePubSubCondition_PubSubCondition_Value { - if m != nil { - return m.Value +func (x *TransformationSummary_SummaryResult) GetCount() int64 { + if x != nil { + return x.Count } - return nil + return 0 } -func (x *DataProfilePubSubCondition_PubSubCondition) GetMinimumRiskScore() DataProfilePubSubCondition_ProfileScoreBucket { - if x, ok := x.GetValue().(*DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore); ok { - return x.MinimumRiskScore +func (x *TransformationSummary_SummaryResult) GetCode() TransformationSummary_TransformationResultCode { + if x != nil { + return x.Code } - return DataProfilePubSubCondition_PROFILE_SCORE_BUCKET_UNSPECIFIED + return TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED } -func (x *DataProfilePubSubCondition_PubSubCondition) GetMinimumSensitivityScore() DataProfilePubSubCondition_ProfileScoreBucket { - if x, ok := x.GetValue().(*DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore); ok { - return x.MinimumSensitivityScore +func (x *TransformationSummary_SummaryResult) GetDetails() string { + if x != nil { + return x.Details } - return DataProfilePubSubCondition_PROFILE_SCORE_BUCKET_UNSPECIFIED -} - -type isDataProfilePubSubCondition_PubSubCondition_Value interface { - isDataProfilePubSubCondition_PubSubCondition_Value() + return "" } -type DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore struct { - // The minimum data risk score that triggers the condition. - MinimumRiskScore DataProfilePubSubCondition_ProfileScoreBucket `protobuf:"varint,1,opt,name=minimum_risk_score,json=minimumRiskScore,proto3,enum=google.privacy.dlp.v2.DataProfilePubSubCondition_ProfileScoreBucket,oneof"` +// What event needs to occur for a new job to be started. +type JobTrigger_Trigger struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Trigger: + // + // *JobTrigger_Trigger_Schedule + // *JobTrigger_Trigger_Manual + Trigger isJobTrigger_Trigger_Trigger `protobuf_oneof:"trigger"` } -type DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore struct { - // The minimum sensitivity level that triggers the condition. - MinimumSensitivityScore DataProfilePubSubCondition_ProfileScoreBucket `protobuf:"varint,2,opt,name=minimum_sensitivity_score,json=minimumSensitivityScore,proto3,enum=google.privacy.dlp.v2.DataProfilePubSubCondition_ProfileScoreBucket,oneof"` +func (x *JobTrigger_Trigger) Reset() { + *x = JobTrigger_Trigger{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[192] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (*DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore) isDataProfilePubSubCondition_PubSubCondition_Value() { +func (x *JobTrigger_Trigger) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore) isDataProfilePubSubCondition_PubSubCondition_Value() { +func (*JobTrigger_Trigger) ProtoMessage() {} + +func (x *JobTrigger_Trigger) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[192] + 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) } -// An expression, consisting of an operator and conditions. -type DataProfilePubSubCondition_PubSubExpressions struct { +// Deprecated: Use JobTrigger_Trigger.ProtoReflect.Descriptor instead. +func (*JobTrigger_Trigger) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{87, 0} +} + +func (m *JobTrigger_Trigger) GetTrigger() isJobTrigger_Trigger_Trigger { + if m != nil { + return m.Trigger + } + return nil +} + +func (x *JobTrigger_Trigger) GetSchedule() *Schedule { + if x, ok := x.GetTrigger().(*JobTrigger_Trigger_Schedule); ok { + return x.Schedule + } + return nil +} + +func (x *JobTrigger_Trigger) GetManual() *Manual { + if x, ok := x.GetTrigger().(*JobTrigger_Trigger_Manual); ok { + return x.Manual + } + return nil +} + +type isJobTrigger_Trigger_Trigger interface { + isJobTrigger_Trigger_Trigger() +} + +type JobTrigger_Trigger_Schedule struct { + // Create a job on a repeating basis based on the elapse of time. + Schedule *Schedule `protobuf:"bytes,1,opt,name=schedule,proto3,oneof"` +} + +type JobTrigger_Trigger_Manual struct { + // For use with hybrid jobs. Jobs must be manually created and finished. + Manual *Manual `protobuf:"bytes,2,opt,name=manual,proto3,oneof"` +} + +func (*JobTrigger_Trigger_Schedule) isJobTrigger_Trigger_Trigger() {} + +func (*JobTrigger_Trigger_Manual) isJobTrigger_Trigger_Trigger() {} + +// If set, the detailed findings will be persisted to the specified +// OutputStorageConfig. Only a single instance of this action can be +// specified. +// Compatible with: Inspect, Risk +type Action_SaveFindings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The operator to apply to the collection of conditions. - LogicalOperator DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator `protobuf:"varint,1,opt,name=logical_operator,json=logicalOperator,proto3,enum=google.privacy.dlp.v2.DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator" json:"logical_operator,omitempty"` - // Conditions to apply to the expression. - Conditions []*DataProfilePubSubCondition_PubSubCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` + // Location to store findings outside of DLP. + OutputConfig *OutputStorageConfig `protobuf:"bytes,1,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"` } -func (x *DataProfilePubSubCondition_PubSubExpressions) Reset() { - *x = DataProfilePubSubCondition_PubSubExpressions{} +func (x *Action_SaveFindings) Reset() { + *x = Action_SaveFindings{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[192] + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DataProfilePubSubCondition_PubSubExpressions) String() string { +func (x *Action_SaveFindings) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DataProfilePubSubCondition_PubSubExpressions) ProtoMessage() {} +func (*Action_SaveFindings) ProtoMessage() {} -func (x *DataProfilePubSubCondition_PubSubExpressions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[192] +func (x *Action_SaveFindings) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[193] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16776,106 +17431,750 @@ func (x *DataProfilePubSubCondition_PubSubExpressions) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use DataProfilePubSubCondition_PubSubExpressions.ProtoReflect.Descriptor instead. -func (*DataProfilePubSubCondition_PubSubExpressions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{136, 1} +// Deprecated: Use Action_SaveFindings.ProtoReflect.Descriptor instead. +func (*Action_SaveFindings) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88, 0} } -func (x *DataProfilePubSubCondition_PubSubExpressions) GetLogicalOperator() DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator { +func (x *Action_SaveFindings) GetOutputConfig() *OutputStorageConfig { if x != nil { - return x.LogicalOperator + return x.OutputConfig } - return DataProfilePubSubCondition_PubSubExpressions_LOGICAL_OPERATOR_UNSPECIFIED + return nil } -func (x *DataProfilePubSubCondition_PubSubExpressions) GetConditions() []*DataProfilePubSubCondition_PubSubCondition { +// Publish a message into a given Pub/Sub topic when DlpJob has completed. The +// message contains a single field, `DlpJobName`, which is equal to the +// finished job's +// [`DlpJob.name`](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs#DlpJob). +// Compatible with: Inspect, Risk +type Action_PublishToPubSub struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Cloud Pub/Sub topic to send notifications to. The topic must have given + // publishing access rights to the DLP API service account executing + // the long running DlpJob sending the notifications. + // Format is projects/{project}/topics/{topic}. + Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` +} + +func (x *Action_PublishToPubSub) Reset() { + *x = Action_PublishToPubSub{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[194] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Action_PublishToPubSub) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_PublishToPubSub) ProtoMessage() {} + +func (x *Action_PublishToPubSub) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[194] + 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 Action_PublishToPubSub.ProtoReflect.Descriptor instead. +func (*Action_PublishToPubSub) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88, 1} +} + +func (x *Action_PublishToPubSub) GetTopic() string { if x != nil { - return x.Conditions + return x.Topic } - return nil + return "" } -var File_google_privacy_dlp_v2_dlp_proto protoreflect.FileDescriptor +// Publish the result summary of a DlpJob to the Cloud Security +// Command Center (CSCC Alpha). +// This action is only available for projects which are parts of +// an organization and whitelisted for the alpha Cloud Security Command +// Center. +// The action will publish the count of finding instances and their info +// types. The summary of findings will be persisted in CSCC and are governed +// by CSCC service-specific policy, see +// https://cloud.google.com/terms/service-terms Only a single instance of this +// action can be specified. Compatible with: Inspect +type Action_PublishSummaryToCscc struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} -var file_google_privacy_dlp_v2_dlp_proto_rawDesc = []byte{ - 0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x6c, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 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, 0x23, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2f, 0x64, 0x6c, 0x70, 0x2f, - 0x76, 0x32, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1a, - 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, - 0x61, 0x79, 0x6f, 0x66, 0x77, 0x65, 0x65, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x66, 0x64, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x52, 0x0a, 0x10, 0x45, - 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, - 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, - 0xd3, 0x02, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, - 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x65, - 0x78, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x57, 0x0a, 0x12, 0x65, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, - 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x48, - 0x00, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x64, 0x0a, 0x0c, 0x68, 0x6f, 0x74, 0x77, - 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x75, 0x6c, 0x65, 0x2e, 0x48, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x48, - 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4d, - 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, - 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0d, - 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x69, - 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, - 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x8d, 0x07, 0x0a, 0x0d, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, +func (x *Action_PublishSummaryToCscc) Reset() { + *x = Action_PublishSummaryToCscc{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[195] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Action_PublishSummaryToCscc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_PublishSummaryToCscc) ProtoMessage() {} + +func (x *Action_PublishSummaryToCscc) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[195] + 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 Action_PublishSummaryToCscc.ProtoReflect.Descriptor instead. +func (*Action_PublishSummaryToCscc) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88, 2} +} + +// Publish findings of a DlpJob to Data Catalog. In Data Catalog, tag +// templates are applied to the resource that Cloud DLP scanned. Data +// Catalog tag templates are stored in the same project and region where the +// BigQuery table exists. For Cloud DLP to create and apply the tag template, +// the Cloud DLP service agent must have the +// `roles/datacatalog.tagTemplateOwner` permission on the project. The tag +// template contains fields summarizing the results of the DlpJob. Any field +// values previously written by another DlpJob are deleted. [InfoType naming +// patterns][google.privacy.dlp.v2.InfoType] are strictly enforced when using +// this feature. +// +// Findings are persisted in Data Catalog storage and are governed by +// service-specific policies for Data Catalog. For more information, see +// [Service Specific Terms](https://cloud.google.com/terms/service-terms). +// +// Only a single instance of this action can be specified. This action is +// allowed only if all resources being scanned are BigQuery tables. +// Compatible with: Inspect +type Action_PublishFindingsToCloudDataCatalog struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Action_PublishFindingsToCloudDataCatalog) Reset() { + *x = Action_PublishFindingsToCloudDataCatalog{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[196] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Action_PublishFindingsToCloudDataCatalog) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_PublishFindingsToCloudDataCatalog) ProtoMessage() {} + +func (x *Action_PublishFindingsToCloudDataCatalog) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[196] + 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 Action_PublishFindingsToCloudDataCatalog.ProtoReflect.Descriptor instead. +func (*Action_PublishFindingsToCloudDataCatalog) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88, 3} +} + +// Create a de-identified copy of the requested table or files. +// +// A TransformationDetail will be created for each transformation. +// +// If any rows in BigQuery are skipped during de-identification +// (transformation errors or row size exceeds BigQuery insert API limits) they +// are placed in the failure output table. If the original row exceeds +// the BigQuery insert API limit it will be truncated when written to the +// failure output table. The failure output table can be set in the +// action.deidentify.output.big_query_output.deidentified_failure_output_table +// field, if no table is set, a table will be automatically created in the +// same project and dataset as the original table. +// +// Compatible with: Inspect +type Action_Deidentify struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // User specified deidentify templates and configs for structured, + // unstructured, and image files. + TransformationConfig *TransformationConfig `protobuf:"bytes,7,opt,name=transformation_config,json=transformationConfig,proto3" json:"transformation_config,omitempty"` + // Config for storing transformation details. This is separate from the + // de-identified content, and contains metadata about the successful + // transformations and/or failures that occurred while de-identifying. This + // needs to be set in order for users to access information about the status + // of each transformation (see + // [TransformationDetails][google.privacy.dlp.v2.TransformationDetails] + // message for more information about what is noted). + TransformationDetailsStorageConfig *TransformationDetailsStorageConfig `protobuf:"bytes,3,opt,name=transformation_details_storage_config,json=transformationDetailsStorageConfig,proto3" json:"transformation_details_storage_config,omitempty"` + // Types that are assignable to Output: + // + // *Action_Deidentify_CloudStorageOutput + Output isAction_Deidentify_Output `protobuf_oneof:"output"` + // List of user-specified file type groups to transform. If specified, only + // the files with these filetypes will be transformed. If empty, all + // supported files will be transformed. Supported types may be automatically + // added over time. If a file type is set in this field that isn't supported + // by the Deidentify action then the job will fail and will not be + // successfully created/started. Currently the only filetypes supported are: + // IMAGES, TEXT_FILES, CSV, TSV. + FileTypesToTransform []FileType `protobuf:"varint,8,rep,packed,name=file_types_to_transform,json=fileTypesToTransform,proto3,enum=google.privacy.dlp.v2.FileType" json:"file_types_to_transform,omitempty"` +} + +func (x *Action_Deidentify) Reset() { + *x = Action_Deidentify{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[197] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Action_Deidentify) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_Deidentify) ProtoMessage() {} + +func (x *Action_Deidentify) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[197] + 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 Action_Deidentify.ProtoReflect.Descriptor instead. +func (*Action_Deidentify) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88, 4} +} + +func (x *Action_Deidentify) GetTransformationConfig() *TransformationConfig { + if x != nil { + return x.TransformationConfig + } + return nil +} + +func (x *Action_Deidentify) GetTransformationDetailsStorageConfig() *TransformationDetailsStorageConfig { + if x != nil { + return x.TransformationDetailsStorageConfig + } + return nil +} + +func (m *Action_Deidentify) GetOutput() isAction_Deidentify_Output { + if m != nil { + return m.Output + } + return nil +} + +func (x *Action_Deidentify) GetCloudStorageOutput() string { + if x, ok := x.GetOutput().(*Action_Deidentify_CloudStorageOutput); ok { + return x.CloudStorageOutput + } + return "" +} + +func (x *Action_Deidentify) GetFileTypesToTransform() []FileType { + if x != nil { + return x.FileTypesToTransform + } + return nil +} + +type isAction_Deidentify_Output interface { + isAction_Deidentify_Output() +} + +type Action_Deidentify_CloudStorageOutput struct { + // Required. User settable Cloud Storage bucket and folders to store de-identified + // files. This field must be set for cloud storage deidentification. The + // output Cloud Storage bucket must be different from the input bucket. + // De-identified files will overwrite files in the output path. + // + // Form of: gs://bucket/folder/ or gs://bucket + CloudStorageOutput string `protobuf:"bytes,9,opt,name=cloud_storage_output,json=cloudStorageOutput,proto3,oneof"` +} + +func (*Action_Deidentify_CloudStorageOutput) isAction_Deidentify_Output() {} + +// Sends an email when the job completes. The email goes to IAM project owners +// and technical [Essential +// Contacts](https://cloud.google.com/resource-manager/docs/managing-notification-contacts). +type Action_JobNotificationEmails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Action_JobNotificationEmails) Reset() { + *x = Action_JobNotificationEmails{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[198] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Action_JobNotificationEmails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_JobNotificationEmails) ProtoMessage() {} + +func (x *Action_JobNotificationEmails) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[198] + 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 Action_JobNotificationEmails.ProtoReflect.Descriptor instead. +func (*Action_JobNotificationEmails) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88, 5} +} + +// Enable Stackdriver metric dlp.googleapis.com/finding_count. This +// will publish a metric to stack driver on each infotype requested and +// how many findings were found for it. CustomDetectors will be bucketed +// as 'Custom' under the Stackdriver label 'info_type'. +type Action_PublishToStackdriver struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Action_PublishToStackdriver) Reset() { + *x = Action_PublishToStackdriver{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[199] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Action_PublishToStackdriver) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Action_PublishToStackdriver) ProtoMessage() {} + +func (x *Action_PublishToStackdriver) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[199] + 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 Action_PublishToStackdriver.ProtoReflect.Descriptor instead. +func (*Action_PublishToStackdriver) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{88, 6} +} + +// If set, the detailed data profiles will be persisted to the location +// of your choice whenever updated. +type DataProfileAction_Export struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Store all table and column profiles in an existing table or a new table + // in an existing dataset. Each re-generation will result in a new row in + // BigQuery. + ProfileTable *BigQueryTable `protobuf:"bytes,1,opt,name=profile_table,json=profileTable,proto3" json:"profile_table,omitempty"` +} + +func (x *DataProfileAction_Export) Reset() { + *x = DataProfileAction_Export{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[200] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataProfileAction_Export) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataProfileAction_Export) ProtoMessage() {} + +func (x *DataProfileAction_Export) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[200] + 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 DataProfileAction_Export.ProtoReflect.Descriptor instead. +func (*DataProfileAction_Export) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{105, 0} +} + +func (x *DataProfileAction_Export) GetProfileTable() *BigQueryTable { + if x != nil { + return x.ProfileTable + } + return nil +} + +// Send a Pub/Sub message into the given Pub/Sub topic to connect other +// systems to data profile generation. The message payload data will +// be the byte serialization of `DataProfilePubSubMessage`. +type DataProfileAction_PubSubNotification struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Cloud Pub/Sub topic to send notifications to. + // Format is projects/{project}/topics/{topic}. + Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` + // The type of event that triggers a Pub/Sub. At most one + // `PubSubNotification` per EventType is permitted. + Event DataProfileAction_EventType `protobuf:"varint,2,opt,name=event,proto3,enum=google.privacy.dlp.v2.DataProfileAction_EventType" json:"event,omitempty"` + // Conditions (e.g., data risk or sensitivity level) for triggering a + // Pub/Sub. + PubsubCondition *DataProfilePubSubCondition `protobuf:"bytes,3,opt,name=pubsub_condition,json=pubsubCondition,proto3" json:"pubsub_condition,omitempty"` + // How much data to include in the Pub/Sub message. If the user wishes to + // limit the size of the message, they can use resource_name and fetch the + // profile fields they wish to. Per table profile (not per column). + DetailOfMessage DataProfileAction_PubSubNotification_DetailLevel `protobuf:"varint,4,opt,name=detail_of_message,json=detailOfMessage,proto3,enum=google.privacy.dlp.v2.DataProfileAction_PubSubNotification_DetailLevel" json:"detail_of_message,omitempty"` +} + +func (x *DataProfileAction_PubSubNotification) Reset() { + *x = DataProfileAction_PubSubNotification{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[201] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataProfileAction_PubSubNotification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataProfileAction_PubSubNotification) ProtoMessage() {} + +func (x *DataProfileAction_PubSubNotification) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[201] + 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 DataProfileAction_PubSubNotification.ProtoReflect.Descriptor instead. +func (*DataProfileAction_PubSubNotification) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{105, 1} +} + +func (x *DataProfileAction_PubSubNotification) GetTopic() string { + if x != nil { + return x.Topic + } + return "" +} + +func (x *DataProfileAction_PubSubNotification) GetEvent() DataProfileAction_EventType { + if x != nil { + return x.Event + } + return DataProfileAction_EVENT_TYPE_UNSPECIFIED +} + +func (x *DataProfileAction_PubSubNotification) GetPubsubCondition() *DataProfilePubSubCondition { + if x != nil { + return x.PubsubCondition + } + return nil +} + +func (x *DataProfileAction_PubSubNotification) GetDetailOfMessage() DataProfileAction_PubSubNotification_DetailLevel { + if x != nil { + return x.DetailOfMessage + } + return DataProfileAction_PubSubNotification_DETAIL_LEVEL_UNSPECIFIED +} + +// A condition consisting of a value. +type DataProfilePubSubCondition_PubSubCondition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The value for the condition to trigger. + // + // Types that are assignable to Value: + // + // *DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore + // *DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore + Value isDataProfilePubSubCondition_PubSubCondition_Value `protobuf_oneof:"value"` +} + +func (x *DataProfilePubSubCondition_PubSubCondition) Reset() { + *x = DataProfilePubSubCondition_PubSubCondition{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[204] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataProfilePubSubCondition_PubSubCondition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataProfilePubSubCondition_PubSubCondition) ProtoMessage() {} + +func (x *DataProfilePubSubCondition_PubSubCondition) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[204] + 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 DataProfilePubSubCondition_PubSubCondition.ProtoReflect.Descriptor instead. +func (*DataProfilePubSubCondition_PubSubCondition) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{144, 0} +} + +func (m *DataProfilePubSubCondition_PubSubCondition) GetValue() isDataProfilePubSubCondition_PubSubCondition_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *DataProfilePubSubCondition_PubSubCondition) GetMinimumRiskScore() DataProfilePubSubCondition_ProfileScoreBucket { + if x, ok := x.GetValue().(*DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore); ok { + return x.MinimumRiskScore + } + return DataProfilePubSubCondition_PROFILE_SCORE_BUCKET_UNSPECIFIED +} + +func (x *DataProfilePubSubCondition_PubSubCondition) GetMinimumSensitivityScore() DataProfilePubSubCondition_ProfileScoreBucket { + if x, ok := x.GetValue().(*DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore); ok { + return x.MinimumSensitivityScore + } + return DataProfilePubSubCondition_PROFILE_SCORE_BUCKET_UNSPECIFIED +} + +type isDataProfilePubSubCondition_PubSubCondition_Value interface { + isDataProfilePubSubCondition_PubSubCondition_Value() +} + +type DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore struct { + // The minimum data risk score that triggers the condition. + MinimumRiskScore DataProfilePubSubCondition_ProfileScoreBucket `protobuf:"varint,1,opt,name=minimum_risk_score,json=minimumRiskScore,proto3,enum=google.privacy.dlp.v2.DataProfilePubSubCondition_ProfileScoreBucket,oneof"` +} + +type DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore struct { + // The minimum sensitivity level that triggers the condition. + MinimumSensitivityScore DataProfilePubSubCondition_ProfileScoreBucket `protobuf:"varint,2,opt,name=minimum_sensitivity_score,json=minimumSensitivityScore,proto3,enum=google.privacy.dlp.v2.DataProfilePubSubCondition_ProfileScoreBucket,oneof"` +} + +func (*DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore) isDataProfilePubSubCondition_PubSubCondition_Value() { +} + +func (*DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore) isDataProfilePubSubCondition_PubSubCondition_Value() { +} + +// An expression, consisting of an operator and conditions. +type DataProfilePubSubCondition_PubSubExpressions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The operator to apply to the collection of conditions. + LogicalOperator DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator `protobuf:"varint,1,opt,name=logical_operator,json=logicalOperator,proto3,enum=google.privacy.dlp.v2.DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator" json:"logical_operator,omitempty"` + // Conditions to apply to the expression. + Conditions []*DataProfilePubSubCondition_PubSubCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` +} + +func (x *DataProfilePubSubCondition_PubSubExpressions) Reset() { + *x = DataProfilePubSubCondition_PubSubExpressions{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[205] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataProfilePubSubCondition_PubSubExpressions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataProfilePubSubCondition_PubSubExpressions) ProtoMessage() {} + +func (x *DataProfilePubSubCondition_PubSubExpressions) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_dlp_proto_msgTypes[205] + 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 DataProfilePubSubCondition_PubSubExpressions.ProtoReflect.Descriptor instead. +func (*DataProfilePubSubCondition_PubSubExpressions) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP(), []int{144, 1} +} + +func (x *DataProfilePubSubCondition_PubSubExpressions) GetLogicalOperator() DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator { + if x != nil { + return x.LogicalOperator + } + return DataProfilePubSubCondition_PubSubExpressions_LOGICAL_OPERATOR_UNSPECIFIED +} + +func (x *DataProfilePubSubCondition_PubSubExpressions) GetConditions() []*DataProfilePubSubCondition_PubSubCondition { + if x != nil { + return x.Conditions + } + return nil +} + +var File_google_privacy_dlp_v2_dlp_proto protoreflect.FileDescriptor + +var file_google_privacy_dlp_v2_dlp_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x6c, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 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, 0x23, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2f, 0x64, 0x6c, 0x70, 0x2f, + 0x76, 0x32, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, + 0x61, 0x79, 0x6f, 0x66, 0x77, 0x65, 0x65, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x66, 0x64, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x52, 0x0a, 0x10, 0x45, + 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, + 0xd3, 0x02, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, + 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x57, 0x0a, 0x12, 0x65, 0x78, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, + 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x48, + 0x00, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x64, 0x0a, 0x0c, 0x68, 0x6f, 0x74, 0x77, + 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x75, 0x6c, 0x65, 0x2e, 0x48, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x48, + 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4d, + 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0d, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x06, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x69, + 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x8d, 0x07, 0x0a, 0x0d, 0x49, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, @@ -17388,7 +18687,7 @@ var file_google_privacy_dlp_v2_dlp_proto_rawDesc = []byte{ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x86, 0x02, + 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xcd, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 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, @@ -17400,245 +18699,125 @@ var file_google_privacy_dlp_v2_dlp_proto_rawDesc = []byte{ 0x79, 0x70, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x52, 0x0b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, - 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x8a, 0x09, 0x0a, 0x10, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x67, 0x0a, 0x11, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, + 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x8a, 0x09, + 0x0a, 0x10, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x12, 0x67, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x67, 0x0a, 0x11, 0x69, + 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x48, 0x00, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x12, 0x67, 0x0a, 0x11, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, - 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, - 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x64, - 0x75, 0x73, 0x74, 0x72, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x5b, 0x0a, - 0x0d, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x79, - 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x79, - 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0xc3, 0x04, 0x0a, 0x10, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, - 0x18, 0x0a, 0x14, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x4c, 0x4f, - 0x42, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x52, 0x47, 0x45, 0x4e, 0x54, 0x49, - 0x4e, 0x41, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x53, 0x54, 0x52, 0x41, 0x4c, 0x49, - 0x41, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x45, 0x4c, 0x47, 0x49, 0x55, 0x4d, 0x10, 0x04, - 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x52, 0x41, 0x5a, 0x49, 0x4c, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, - 0x43, 0x41, 0x4e, 0x41, 0x44, 0x41, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x49, 0x4c, - 0x45, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x49, 0x4e, 0x41, 0x10, 0x08, 0x12, 0x0c, - 0x0a, 0x08, 0x43, 0x4f, 0x4c, 0x4f, 0x4d, 0x42, 0x49, 0x41, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, - 0x44, 0x45, 0x4e, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0a, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x52, 0x41, - 0x4e, 0x43, 0x45, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x49, 0x4e, 0x4c, 0x41, 0x4e, 0x44, - 0x10, 0x0c, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x59, 0x10, 0x0d, 0x12, - 0x0d, 0x0a, 0x09, 0x48, 0x4f, 0x4e, 0x47, 0x5f, 0x4b, 0x4f, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x09, - 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x49, 0x41, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x44, - 0x4f, 0x4e, 0x45, 0x53, 0x49, 0x41, 0x10, 0x10, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x52, 0x45, 0x4c, - 0x41, 0x4e, 0x44, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x53, 0x52, 0x41, 0x45, 0x4c, 0x10, - 0x12, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x54, 0x41, 0x4c, 0x59, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, - 0x4a, 0x41, 0x50, 0x41, 0x4e, 0x10, 0x14, 0x12, 0x09, 0x0a, 0x05, 0x4b, 0x4f, 0x52, 0x45, 0x41, - 0x10, 0x15, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x58, 0x49, 0x43, 0x4f, 0x10, 0x16, 0x12, 0x13, - 0x0a, 0x0f, 0x54, 0x48, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x48, 0x45, 0x52, 0x4c, 0x41, 0x4e, 0x44, - 0x53, 0x10, 0x17, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x57, 0x41, 0x59, 0x10, 0x18, 0x12, - 0x0c, 0x0a, 0x08, 0x50, 0x41, 0x52, 0x41, 0x47, 0x55, 0x41, 0x59, 0x10, 0x19, 0x12, 0x08, 0x0a, - 0x04, 0x50, 0x45, 0x52, 0x55, 0x10, 0x1a, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x4f, 0x4c, 0x41, 0x4e, - 0x44, 0x10, 0x1b, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x4f, 0x52, 0x54, 0x55, 0x47, 0x41, 0x4c, 0x10, - 0x1c, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x49, 0x4e, 0x47, 0x41, 0x50, 0x4f, 0x52, 0x45, 0x10, 0x1d, - 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x4f, 0x55, 0x54, 0x48, 0x5f, 0x41, 0x46, 0x52, 0x49, 0x43, 0x41, - 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, 0x49, 0x4e, 0x10, 0x1f, 0x12, 0x0a, 0x0a, - 0x06, 0x53, 0x57, 0x45, 0x44, 0x45, 0x4e, 0x10, 0x20, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x41, 0x49, - 0x57, 0x41, 0x4e, 0x10, 0x21, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x48, 0x41, 0x49, 0x4c, 0x41, 0x4e, - 0x44, 0x10, 0x22, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x55, 0x52, 0x4b, 0x45, 0x59, 0x10, 0x23, 0x12, - 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x49, 0x54, 0x45, 0x44, 0x5f, 0x4b, 0x49, 0x4e, 0x47, 0x44, 0x4f, - 0x4d, 0x10, 0x24, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x49, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x53, 0x10, 0x25, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x52, 0x55, 0x47, 0x55, 0x41, - 0x59, 0x10, 0x26, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x45, 0x4e, 0x45, 0x5a, 0x55, 0x45, 0x4c, 0x41, - 0x10, 0x27, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x28, - 0x22, 0x5d, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x43, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x44, 0x55, 0x53, 0x54, 0x52, 0x59, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x48, - 0x45, 0x41, 0x4c, 0x54, 0x48, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4c, 0x45, 0x43, - 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x22, - 0x95, 0x01, 0x0a, 0x0c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x49, 0x49, 0x10, 0x01, 0x12, - 0x08, 0x0a, 0x04, 0x53, 0x50, 0x49, 0x49, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x4d, - 0x4f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, - 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x4f, - 0x56, 0x45, 0x52, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, 0x0c, 0x0a, - 0x08, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x43, - 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x42, 0x0a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x22, 0x8c, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x6e, - 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0x62, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x69, - 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x69, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x15, 0x52, 0x69, 0x73, 0x6b, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x4b, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0d, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x47, 0x0a, - 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0xe2, 0x01, 0x0a, 0x07, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x05, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x34, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x65, 0x72, - 0x72, 0x65, 0x64, 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, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, 0x05, 0x0a, - 0x03, 0x74, 0x61, 0x67, 0x22, 0xf4, 0x02, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x12, 0x5b, 0x0a, 0x0d, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x22, 0xc3, 0x04, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, + 0x41, 0x52, 0x47, 0x45, 0x4e, 0x54, 0x49, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x41, + 0x55, 0x53, 0x54, 0x52, 0x41, 0x4c, 0x49, 0x41, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x45, + 0x4c, 0x47, 0x49, 0x55, 0x4d, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x52, 0x41, 0x5a, 0x49, + 0x4c, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x4e, 0x41, 0x44, 0x41, 0x10, 0x06, 0x12, + 0x09, 0x0a, 0x05, 0x43, 0x48, 0x49, 0x4c, 0x45, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, + 0x49, 0x4e, 0x41, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4c, 0x4f, 0x4d, 0x42, 0x49, + 0x41, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4e, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0a, + 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x52, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, + 0x46, 0x49, 0x4e, 0x4c, 0x41, 0x4e, 0x44, 0x10, 0x0c, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x45, 0x52, + 0x4d, 0x41, 0x4e, 0x59, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x4f, 0x4e, 0x47, 0x5f, 0x4b, + 0x4f, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x49, 0x41, 0x10, 0x0f, + 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x44, 0x4f, 0x4e, 0x45, 0x53, 0x49, 0x41, 0x10, 0x10, 0x12, + 0x0b, 0x0a, 0x07, 0x49, 0x52, 0x45, 0x4c, 0x41, 0x4e, 0x44, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, + 0x49, 0x53, 0x52, 0x41, 0x45, 0x4c, 0x10, 0x12, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x54, 0x41, 0x4c, + 0x59, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x4a, 0x41, 0x50, 0x41, 0x4e, 0x10, 0x14, 0x12, 0x09, + 0x0a, 0x05, 0x4b, 0x4f, 0x52, 0x45, 0x41, 0x10, 0x15, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x58, + 0x49, 0x43, 0x4f, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x48, 0x45, 0x5f, 0x4e, 0x45, 0x54, + 0x48, 0x45, 0x52, 0x4c, 0x41, 0x4e, 0x44, 0x53, 0x10, 0x17, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, + 0x52, 0x57, 0x41, 0x59, 0x10, 0x18, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x41, 0x52, 0x41, 0x47, 0x55, + 0x41, 0x59, 0x10, 0x19, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x45, 0x52, 0x55, 0x10, 0x1a, 0x12, 0x0a, + 0x0a, 0x06, 0x50, 0x4f, 0x4c, 0x41, 0x4e, 0x44, 0x10, 0x1b, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x4f, + 0x52, 0x54, 0x55, 0x47, 0x41, 0x4c, 0x10, 0x1c, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x49, 0x4e, 0x47, + 0x41, 0x50, 0x4f, 0x52, 0x45, 0x10, 0x1d, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x4f, 0x55, 0x54, 0x48, + 0x5f, 0x41, 0x46, 0x52, 0x49, 0x43, 0x41, 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, + 0x49, 0x4e, 0x10, 0x1f, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x45, 0x44, 0x45, 0x4e, 0x10, 0x20, + 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x41, 0x49, 0x57, 0x41, 0x4e, 0x10, 0x21, 0x12, 0x0c, 0x0a, 0x08, + 0x54, 0x48, 0x41, 0x49, 0x4c, 0x41, 0x4e, 0x44, 0x10, 0x22, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x55, + 0x52, 0x4b, 0x45, 0x59, 0x10, 0x23, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x49, 0x54, 0x45, 0x44, + 0x5f, 0x4b, 0x49, 0x4e, 0x47, 0x44, 0x4f, 0x4d, 0x10, 0x24, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, + 0x49, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x53, 0x10, 0x25, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x52, 0x55, 0x47, 0x55, 0x41, 0x59, 0x10, 0x26, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x45, + 0x4e, 0x45, 0x5a, 0x55, 0x45, 0x4c, 0x41, 0x10, 0x27, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x28, 0x22, 0x5d, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x75, 0x73, + 0x74, 0x72, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x49, + 0x4e, 0x44, 0x55, 0x53, 0x54, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x45, + 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x10, 0x02, 0x12, 0x16, + 0x0a, 0x12, 0x54, 0x45, 0x4c, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x22, 0x95, 0x01, 0x0a, 0x0c, 0x54, 0x79, 0x70, 0x65, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, + 0x03, 0x50, 0x49, 0x49, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x50, 0x49, 0x49, 0x10, 0x02, + 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x4d, 0x4f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x10, + 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, + 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x49, 0x44, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, + 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x55, 0x41, 0x4c, + 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x42, 0x0a, + 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x50, 0x0a, 0x12, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x01, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, + 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x15, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5e, 0x0a, 0x09, 0x71, 0x75, - 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, - 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x6b, - 0x0a, 0x14, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x22, 0x86, 0x12, 0x0a, 0x0d, - 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x71, 0x0a, - 0x16, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x77, 0x0a, 0x18, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, - 0x00, 0x52, 0x16, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x65, 0x0a, 0x12, 0x6b, 0x5f, 0x61, - 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, - 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, - 0x6b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x65, 0x0a, 0x12, 0x6c, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, + 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, + 0xe6, 0x01, 0x0a, 0x15, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x0e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x47, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x2e, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x6c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x72, 0x0a, 0x17, 0x6b, 0x5f, 0x6d, 0x61, 0x70, - 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, - 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x14, 0x6b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x8d, 0x01, 0x0a, 0x20, - 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x65, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x1d, 0x64, 0x65, - 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x4c, 0x0a, 0x14, 0x4e, - 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x4e, 0x0a, 0x16, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x8d, 0x01, 0x0a, 0x10, 0x4b, 0x41, - 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, - 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, - 0x64, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x52, - 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x1a, 0xa0, 0x01, 0x0a, 0x10, 0x4c, 0x44, - 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, - 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, - 0x64, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x73, - 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x12, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x1a, 0x84, 0x07, 0x0a, - 0x14, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x67, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, - 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x73, 0x0a, 0x10, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, - 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x0f, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x1a, 0xe6, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x39, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x37, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe2, 0x01, 0x0a, 0x07, 0x51, 0x75, 0x61, + 0x73, 0x69, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, @@ -17651,2693 +18830,3035 @@ var file_google_privacy_dlp_v2_dlp_proto_rawDesc = []byte{ 0x12, 0x34, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 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, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, - 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x1a, 0x83, 0x03, - 0x0a, 0x0e, 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x3f, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x77, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x55, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x51, - 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x63, - 0x0a, 0x0c, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x34, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, - 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x54, 0x61, 0x67, 0x1a, 0xd6, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x71, + 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x22, 0xf4, 0x02, + 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x5e, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, + 0x49, 0x64, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x6b, 0x0a, 0x14, 0x51, 0x75, 0x61, 0x73, 0x69, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, + 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x54, 0x61, 0x67, 0x22, 0x86, 0x12, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x71, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4e, 0x75, 0x6d, + 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x77, 0x0a, 0x18, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x16, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x65, 0x0a, 0x12, 0x6b, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, + 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x6b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, + 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x65, 0x0a, 0x12, 0x6c, 0x5f, 0x64, + 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4c, 0x44, 0x69, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, + 0x6c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x72, 0x0a, 0x17, 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x14, + 0x6b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x70, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, + 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, + 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x4c, 0x0a, 0x14, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x1a, 0x4e, 0x0a, 0x16, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x1a, 0x8d, 0x01, 0x0a, 0x10, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, + 0x69, 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x49, 0x64, 0x1a, 0xa0, 0x01, 0x0a, 0x10, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, + 0x69, 0x49, 0x64, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x64, 0x52, 0x12, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x1a, 0x84, 0x07, 0x0a, 0x14, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x67, + 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x67, + 0x67, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x52, 0x0a, 0x10, 0x61, 0x75, 0x78, 0x69, + 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x73, 0x0a, 0x10, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0f, 0x61, 0x75, 0x78, - 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x22, 0xff, 0x27, 0x0a, 0x1c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5e, 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x16, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x5a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x14, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x86, 0x01, 0x0a, 0x18, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x16, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, - 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x74, 0x0a, - 0x12, 0x6b, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4b, - 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, - 0x00, 0x52, 0x10, 0x6b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x74, 0x0a, 0x12, 0x6c, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x10, 0x6c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x81, 0x01, 0x0a, 0x17, 0x6b, 0x5f, - 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, + 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0f, 0x61, 0x75, + 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0xe6, 0x01, + 0x0a, 0x0b, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x39, 0x0a, + 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, + 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x34, 0x0a, 0x08, 0x69, 0x6e, 0x66, + 0x65, 0x72, 0x72, 0x65, 0x64, 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, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, + 0x05, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x1a, 0x83, 0x03, 0x0a, 0x0e, 0x41, 0x75, 0x78, 0x69, 0x6c, + 0x69, 0x61, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x77, 0x0a, 0x09, 0x71, 0x75, + 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x55, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, + 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, + 0x49, 0x64, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x63, 0x0a, 0x0c, 0x51, 0x75, 0x61, 0x73, 0x69, + 0x49, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x1a, 0xd6, 0x01, 0x0a, + 0x1d, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, + 0x0a, 0x09, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, + 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x52, 0x0a, 0x10, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0f, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xff, 0x27, + 0x0a, 0x1c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5e, + 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x5a, + 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x14, 0x6b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x9c, 0x01, - 0x0a, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, - 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x64, - 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x7d, 0x0a, 0x11, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xd3, 0x01, 0x0a, 0x14, - 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x39, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x71, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x1a, 0x8d, 0x04, 0x0a, 0x16, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xb5, 0x01, 0x0a, - 0x21, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x6a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, + 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x86, 0x01, + 0x0a, 0x18, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x16, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x74, 0x0a, 0x12, 0x6b, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, + 0x79, 0x6d, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x10, 0x6b, 0x41, 0x6e, 0x6f, + 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x74, 0x0a, 0x12, + 0x6c, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x52, 0x1e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x1a, 0xba, 0x02, 0x0a, 0x1f, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x6f, 0x77, 0x65, - 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x6f, 0x77, - 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, - 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4a, 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x1a, 0xeb, 0x05, 0x0a, 0x10, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xad, 0x01, 0x0a, 0x23, 0x65, 0x71, 0x75, 0x69, 0x76, - 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x44, + 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, + 0x52, 0x10, 0x6c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x81, 0x01, 0x0a, 0x17, 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, - 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, - 0x6d, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, - 0x79, 0x6d, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x52, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x9a, 0x01, 0x0a, 0x1a, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, - 0x79, 0x6d, 0x69, 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, - 0x64, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, - 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, - 0x16, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x65, - 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, - 0x69, 0x7a, 0x65, 0x1a, 0x89, 0x03, 0x0a, 0x19, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, - 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x12, 0x4a, 0x0a, 0x22, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x6f, 0x77, 0x65, - 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x65, - 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, - 0x69, 0x7a, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4a, 0x0a, - 0x22, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x65, 0x71, 0x75, 0x69, 0x76, - 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x55, - 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x0d, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x5f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, - 0x69, 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, - 0xa2, 0x07, 0x0a, 0x10, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0xbc, 0x01, 0x0a, 0x2b, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, - 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x2e, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x27, 0x73, 0x65, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x1a, 0xb6, 0x02, 0x0a, 0x1a, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x73, - 0x69, 0x49, 0x64, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x71, - 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x65, 0x71, 0x75, 0x69, - 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x41, 0x0a, 0x1d, 0x6e, 0x75, 0x6d, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, - 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x6e, 0x75, 0x6d, 0x44, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x63, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x14, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x12, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x6e, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x95, 0x03, 0x0a, - 0x19, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x25, 0x73, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x21, 0x73, 0x65, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x50, 0x0a, 0x25, - 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x21, 0x73, 0x65, 0x6e, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x84, 0x01, 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x44, 0x69, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4c, 0x44, - 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, - 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x9c, 0x05, 0x0a, 0x14, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xa3, 0x01, - 0x0a, 0x1a, 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x66, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4b, 0x4d, 0x61, - 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x17, 0x6b, 0x4d, 0x61, 0x70, - 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x1a, 0x96, 0x01, 0x0a, 0x1b, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, - 0x73, 0x69, 0x49, 0x64, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x65, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, - 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x1a, 0xc4, 0x02, 0x0a, - 0x1d, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, - 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, - 0x6d, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x41, - 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x0d, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, + 0x52, 0x14, 0x6b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x9c, 0x01, 0x0a, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4b, 0x4d, 0x61, 0x70, - 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, - 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x1a, 0xf9, 0x05, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, + 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xc7, 0x01, 0x0a, 0x23, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x7d, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, + 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xd3, 0x01, 0x0a, 0x14, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, + 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, + 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, + 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x8d, 0x04, 0x0a, 0x16, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xb5, 0x01, 0x0a, 0x21, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x6a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, + 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x1e, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0xba, 0x02, + 0x0a, 0x1f, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x12, 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x4a, 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0c, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xeb, 0x05, 0x0a, 0x10, 0x4b, + 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0xad, 0x01, 0x0a, 0x23, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x20, 0x65, + 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, + 0x9a, 0x01, 0x0a, 0x1a, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x45, 0x71, + 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x46, + 0x0a, 0x10, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x89, 0x03, 0x0a, + 0x19, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x4a, 0x0a, 0x22, 0x65, 0x71, + 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4a, 0x0a, 0x22, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x1e, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x2e, 0x4b, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, + 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xa2, 0x07, 0x0a, 0x10, 0x4c, 0x44, 0x69, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xbc, 0x01, + 0x0a, 0x2b, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, - 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x20, 0x64, - 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x1a, - 0xa3, 0x01, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, - 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x73, 0x69, - 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71, 0x75, 0x61, 0x73, - 0x69, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0e, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x33, 0x0a, 0x15, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x14, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x1a, 0xe7, 0x02, 0x0a, 0x26, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x50, 0x72, - 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, - 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x76, 0x2e, 0x67, 0x6f, + 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x27, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0xb6, 0x02, 0x0a, + 0x1a, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x76, + 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71, + 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, + 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x14, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x41, 0x0a, 0x1d, 0x6e, 0x75, 0x6d, + 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x1a, 0x6e, 0x75, 0x6d, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x53, 0x65, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x14, + 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x52, 0x12, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x95, 0x03, 0x0a, 0x19, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x25, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x21, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x50, 0x0a, 0x25, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x21, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x55, 0x70, 0x70, + 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x0d, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x5f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4c, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, + 0x79, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x9c, 0x05, + 0x0a, 0x14, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xa3, 0x01, 0x0a, 0x1a, 0x6b, 0x5f, 0x6d, 0x61, 0x70, + 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x66, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, - 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x44, - 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, - 0x6b, 0x0a, 0x1c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x69, 0x73, 0x6b, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x4b, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x69, 0x73, 0x6b, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x5a, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x9e, 0x03, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x62, - 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 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, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x4f, 0x66, 0x44, 0x61, 0x79, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x64, 0x61, 0x79, 0x5f, 0x6f, 0x66, - 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, - 0x44, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x61, 0x79, - 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x09, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x42, 0x0e, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, - 0x22, 0x8f, 0x02, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x61, 0x79, 0x5f, 0x6f, 0x66, 0x5f, 0x77, - 0x65, 0x65, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, - 0x6b, 0x52, 0x09, 0x64, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x2a, 0x0a, 0x04, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x44, - 0x61, 0x79, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x1a, - 0x31, 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x75, 0x74, - 0x65, 0x73, 0x22, 0xf1, 0x02, 0x0a, 0x10, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6c, 0x0a, 0x19, 0x69, 0x6e, 0x66, 0x6f, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x17, 0x6b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x1a, 0x96, 0x01, 0x0a, + 0x1b, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, + 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x10, + 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x73, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x12, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x6f, 0x6e, + 0x79, 0x6d, 0x69, 0x74, 0x79, 0x1a, 0xc4, 0x02, 0x0a, 0x1d, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x61, + 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, + 0x6d, 0x69, 0x6e, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, + 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x69, 0x74, + 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x17, 0x69, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, 0x0a, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x76, 0x0a, 0x1d, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, - 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, - 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x10, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa5, 0x02, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, - 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x0b, 0x74, 0x68, 0x72, 0x6f, 0x77, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, + 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, + 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4b, 0x4d, 0x61, 0x70, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2c, + 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xf9, 0x05, 0x0a, + 0x1d, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xc7, + 0x01, 0x0a, 0x23, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, + 0x65, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x69, 0x73, + 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x78, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, + 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, + 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, + 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x1a, 0xa3, 0x01, 0x0a, 0x24, 0x44, 0x65, 0x6c, + 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71, 0x75, 0x61, 0x73, 0x69, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x2e, - 0x54, 0x68, 0x72, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x68, - 0x72, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x78, 0x0a, 0x13, 0x6c, 0x65, 0x61, 0x76, - 0x65, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x55, - 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, - 0x6c, 0x65, 0x61, 0x76, 0x65, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x65, 0x64, 0x1a, 0x0c, 0x0a, 0x0a, 0x54, 0x68, 0x72, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x1a, 0x14, 0x0a, 0x12, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xc4, - 0x09, 0x0a, 0x17, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0e, 0x72, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, - 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, - 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, - 0x64, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, - 0x64, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x15, 0x63, 0x68, - 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x6b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x13, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, - 0x65, 0x72, 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x1d, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x66, - 0x66, 0x78, 0x5f, 0x66, 0x70, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x46, 0x66, 0x78, 0x46, 0x70, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x19, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, - 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x46, 0x66, 0x78, 0x46, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x70, 0x0a, 0x1b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x18, 0x66, 0x69, 0x78, 0x65, - 0x64, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x73, 0x69, + 0x49, 0x64, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x15, 0x65, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x1a, 0xe7, + 0x02, 0x0a, 0x26, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, + 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, + 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x9b, 0x01, 0x0a, + 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x76, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, + 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x50, 0x72, 0x65, + 0x73, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, + 0x75, 0x61, 0x73, 0x69, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x0c, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x6b, 0x0a, 0x1c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x5a, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9e, 0x03, 0x0a, 0x05, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x62, + 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 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, + 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x44, 0x61, 0x79, 0x48, 0x00, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, + 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x43, 0x0a, 0x11, 0x64, 0x61, 0x79, 0x5f, 0x6f, 0x66, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, + 0x65, 0x6b, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x09, + 0x51, 0x75, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, + 0x08, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x22, 0x8f, 0x02, 0x0a, 0x08, 0x44, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, + 0x0b, 0x64, 0x61, 0x79, 0x5f, 0x6f, 0x66, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x2e, 0x44, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x09, 0x64, 0x61, 0x79, 0x4f, + 0x66, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x44, 0x61, 0x79, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x45, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x08, + 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x1a, 0x31, 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, + 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x6d, + 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x22, 0xd5, 0x03, 0x0a, 0x10, + 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x6c, 0x0a, 0x19, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, + 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x17, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, + 0x0a, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x1d, 0x72, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x00, 0x52, 0x19, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x69, 0x74, - 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x51, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x15, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x15, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x48, 0x00, 0x52, 0x14, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x76, 0x0a, 0x1d, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, + 0x67, 0x42, 0x10, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x05, 0x0a, 0x14, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x0a, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x1a, 0xbd, 0x04, + 0x0a, 0x13, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x83, 0x01, 0x0a, 0x13, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x48, 0x00, 0x52, 0x11, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x0e, 0x61, + 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x12, 0x64, 0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6c, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x07, + 0x61, 0x6c, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x64, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0e, + 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x1a, 0x58, + 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x0e, 0x0a, 0x0c, 0x41, 0x6c, 0x6c, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x09, 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x54, + 0x65, 0x78, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xa5, 0x02, + 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, + 0x0b, 0x74, 0x68, 0x72, 0x6f, 0x77, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, + 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x68, 0x72, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x78, 0x0a, 0x13, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, + 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x55, 0x6e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x1a, 0x0c, 0x0a, 0x0a, 0x54, 0x68, 0x72, + 0x6f, 0x77, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x06, 0x0a, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xc4, 0x09, 0x0a, 0x17, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x52, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x57, 0x0a, 0x12, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x32, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x60, 0x0a, 0x15, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, + 0x65, 0x72, 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x13, + 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x1d, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x72, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x66, 0x78, 0x5f, 0x66, 0x70, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x46, 0x66, 0x78, 0x46, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x19, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x46, 0x66, 0x78, + 0x46, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x70, 0x0a, 0x1b, 0x66, 0x69, 0x78, + 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x48, 0x61, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x11, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x61, 0x74, 0x65, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, - 0x52, 0x0f, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x72, 0x0a, 0x1b, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x19, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6c, 0x0a, 0x19, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x18, 0x66, 0x69, 0x78, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x10, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, + 0x0f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x74, 0x0a, 0x1d, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x19, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x50, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, 0x0a, 0x12, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, + 0x52, 0x10, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x54, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x69, + 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x72, 0x0a, 0x1b, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x19, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6c, 0x0a, 0x19, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x17, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x10, 0x0a, 0x0e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, + 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x56, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x17, 0x72, 0x65, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x42, 0x10, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, - 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x56, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, - 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, - 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, - 0x74, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x54, 0x6f, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x22, 0x80, 0x01, 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, - 0x15, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x59, 0x45, 0x41, 0x52, - 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x02, 0x12, 0x10, 0x0a, - 0x0c, 0x44, 0x41, 0x59, 0x5f, 0x4f, 0x46, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x03, 0x12, - 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x59, 0x5f, 0x4f, 0x46, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x10, 0x04, - 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x45, 0x45, 0x4b, 0x5f, 0x4f, 0x46, 0x5f, 0x59, 0x45, 0x41, 0x52, - 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x4f, 0x55, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x41, - 0x59, 0x10, 0x06, 0x22, 0x53, 0x0a, 0x10, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x48, 0x61, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x54, 0x6f, + 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, + 0x50, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x50, 0x41, 0x52, + 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x59, 0x45, 0x41, 0x52, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x4e, + 0x54, 0x48, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x59, 0x5f, 0x4f, 0x46, 0x5f, 0x4d, + 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x59, 0x5f, 0x4f, 0x46, + 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x45, 0x45, 0x4b, 0x5f, + 0x4f, 0x46, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x4f, 0x55, + 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x06, 0x22, 0x53, 0x0a, 0x10, 0x43, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, + 0x0a, 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x22, + 0xe7, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, + 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x4b, 0x65, 0x79, 0x52, 0x09, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x4f, + 0x0a, 0x13, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x22, 0xe7, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x4f, 0x0a, 0x13, 0x73, 0x75, 0x72, 0x72, 0x6f, - 0x67, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x73, 0x75, + 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x4f, 0x0a, 0x12, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x39, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x08, 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x7b, 0x0a, 0x17, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x58, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, + 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x2e, 0x57, 0x6f, 0x72, 0x64, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0xe2, 0x02, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, + 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, + 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x79, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x69, + 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, 0x49, + 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x48, 0x00, 0x52, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x72, + 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4f, 0x4d, + 0x4d, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x49, 0x47, 0x4e, + 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, 0x12, 0x14, + 0x0a, 0x10, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x5f, 0x55, 0x50, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x41, + 0x53, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x5f, 0x4c, 0x4f, + 0x57, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x55, + 0x4e, 0x43, 0x54, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x57, + 0x48, 0x49, 0x54, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x05, 0x42, 0x0c, 0x0a, 0x0a, 0x63, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x43, 0x68, + 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x61, 0x73, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x61, + 0x73, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x24, + 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x6f, + 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x76, + 0x65, 0x72, 0x73, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x14, 0x63, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x52, 0x12, 0x63, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x18, 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, + 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, + 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x95, 0x02, 0x0a, + 0x0f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x47, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0xb8, 0x01, 0x0a, 0x06, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x03, 0x6d, 0x61, 0x78, 0x12, 0x4e, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc7, 0x04, 0x0a, 0x19, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x46, 0x66, 0x78, 0x46, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x22, 0x4f, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x78, 0x74, 0x12, 0x73, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x62, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x7b, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x58, - 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x72, 0x79, 0x2e, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, - 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x0e, 0x0a, - 0x0c, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xe2, 0x02, - 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, - 0x2e, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, - 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x63, - 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x70, 0x12, - 0x79, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, - 0x74, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, - 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x48, 0x00, - 0x52, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, - 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, - 0x72, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, - 0x52, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x55, - 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4c, 0x50, 0x48, 0x41, - 0x5f, 0x55, 0x50, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, - 0x10, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x5f, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, - 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x55, 0x4e, 0x43, 0x54, 0x55, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x48, 0x49, 0x54, 0x45, 0x53, 0x50, 0x41, - 0x43, 0x45, 0x10, 0x05, 0x42, 0x0c, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, - 0x72, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, - 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x61, - 0x73, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x61, 0x73, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x68, - 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x6f, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x0a, - 0x0d, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x12, 0x56, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, - 0x5f, 0x74, 0x6f, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x73, 0x54, 0x6f, - 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x52, 0x12, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, - 0x72, 0x73, 0x54, 0x6f, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x18, 0x46, - 0x69, 0x78, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, - 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x75, - 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, - 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x95, 0x02, 0x0a, 0x0f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x07, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x1a, 0xb8, 0x01, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2e, 0x0a, - 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x2e, 0x0a, - 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x4e, 0x0a, - 0x11, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x72, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc7, 0x04, - 0x0a, 0x19, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x46, - 0x66, 0x78, 0x46, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, - 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, - 0x79, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x49, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x73, 0x0a, 0x0f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x46, 0x66, 0x78, 0x46, 0x70, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x66, 0x78, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x48, 0x00, - 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, - 0x12, 0x29, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x62, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x72, - 0x61, 0x64, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, - 0x64, 0x69, 0x78, 0x12, 0x4f, 0x0a, 0x13, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x11, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x17, 0x46, 0x66, 0x78, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, - 0x12, 0x2a, 0x0a, 0x26, 0x46, 0x46, 0x58, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x4e, - 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x42, 0x45, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, - 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x45, 0x58, - 0x41, 0x44, 0x45, 0x43, 0x49, 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x50, - 0x50, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x5f, 0x4e, - 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x50, 0x48, - 0x41, 0x5f, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x04, 0x42, 0x0a, 0x0a, 0x08, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x22, 0xfa, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x49, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, - 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, - 0x12, 0x49, 0x0a, 0x09, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x6e, 0x77, 0x72, - 0x61, 0x70, 0x70, 0x65, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x48, 0x00, - 0x52, 0x09, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x0b, 0x6b, - 0x6d, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4b, 0x6d, 0x73, 0x57, 0x72, 0x61, 0x70, - 0x70, 0x65, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, - 0x6b, 0x6d, 0x73, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x22, 0x2d, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, - 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x12, 0x55, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, - 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x22, 0x68, 0x0a, 0x13, 0x4b, 0x6d, 0x73, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x43, 0x72, - 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0b, 0x77, 0x72, 0x61, 0x70, 0x70, - 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0a, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x0a, - 0x0f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x0f, 0x44, - 0x61, 0x74, 0x65, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, - 0x0a, 0x10, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x61, - 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x75, - 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x61, 0x79, 0x73, 0x12, 0x2d, 0x0a, - 0x10, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x79, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x6c, 0x6f, - 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x61, 0x79, 0x73, 0x12, 0x38, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x46, 0x66, 0x78, 0x46, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x66, + 0x78, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6c, 0x70, + 0x68, 0x61, 0x62, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, + 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x62, + 0x65, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x72, 0x61, 0x64, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x64, 0x69, 0x78, 0x12, 0x4f, 0x0a, 0x13, 0x73, 0x75, + 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x17, + 0x46, 0x66, 0x78, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, + 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x26, 0x46, 0x46, 0x58, 0x5f, 0x43, + 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x4c, 0x50, + 0x48, 0x41, 0x42, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, + 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x45, 0x58, 0x41, 0x44, 0x45, 0x43, 0x49, 0x4d, 0x41, 0x4c, 0x10, + 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x50, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, + 0x41, 0x4c, 0x50, 0x48, 0x41, 0x5f, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x03, 0x12, + 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x5f, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, + 0x10, 0x04, 0x42, 0x0a, 0x0a, 0x08, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x22, 0xfa, + 0x01, 0x0a, 0x09, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x49, 0x0a, 0x09, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x09, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x75, 0x6e, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x09, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x17, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x74, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, - 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc8, 0x01, 0x0a, 0x16, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x12, 0x6e, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x76, 0x32, 0x2e, 0x55, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x43, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x0b, 0x6b, 0x6d, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x4b, 0x6d, 0x73, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x6b, 0x6d, 0x73, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x2d, 0x0a, 0x12, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, + 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x12, 0x55, 0x6e, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, + 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x68, 0x0a, 0x13, 0x4b, 0x6d, 0x73, 0x57, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x24, + 0x0a, 0x0b, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x0f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0d, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x65, 0x53, 0x68, 0x69, 0x66, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, 0x0a, 0x10, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x44, 0x61, 0x79, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x44, + 0x61, 0x79, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x41, 0x0a, + 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x09, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, + 0x42, 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x17, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x74, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc8, 0x01, 0x0a, + 0x16, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x6f, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6e, + 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x6d, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x17, + 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x03, 0x0a, 0x13, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3b, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x09, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, + 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x6c, 0x0a, 0x19, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x17, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x85, 0x03, 0x0a, 0x13, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x48, 0x00, 0x52, 0x17, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x0a, + 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xd3, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x18, 0x70, - 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x13, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x59, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, + 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x09, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x17, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x19, 0x69, 0x6e, 0x66, 0x6f, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x17, 0x69, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x75, - 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, - 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x59, - 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x05, 0x0a, 0x0f, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, - 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x1a, 0xc6, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x4a, 0x0a, 0x08, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xaa, 0x05, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x65, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc6, 0x01, 0x0a, 0x09, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x5e, 0x0a, 0x0a, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x12, 0x4a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x97, 0x02, 0x0a, - 0x0b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6d, 0x0a, 0x10, - 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x1a, 0x5e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x1a, 0x97, 0x02, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x6d, 0x0a, 0x10, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x53, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x63, - 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x69, - 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x53, 0x0a, 0x0a, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x3c, 0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x42, 0x06, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, - 0x77, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x67, - 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x17, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x97, 0x06, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3c, 0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x69, 0x63, + 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x4f, + 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x41, 0x4e, 0x44, 0x10, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xae, 0x01, + 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x67, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x17, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x97, + 0x06, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, + 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x56, 0x0a, 0x0e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, + 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, + 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x56, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x70, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x53, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x12, 0x54, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2b, + 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x9a, 0x01, 0x0a, 0x0d, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5e, 0x0a, 0x18, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x22, 0xd8, 0x01, 0x0a, 0x19, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x22, 0xac, 0x03, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 0x0a, + 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x17, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x89, 0x02, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, + 0x0a, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x09, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x62, + 0x0a, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, - 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, - 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x54, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x1a, 0x9a, 0x01, 0x0a, 0x0d, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x22, 0x5e, 0x0a, 0x18, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, - 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, - 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x02, 0x22, 0x6f, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x59, 0x0a, - 0x1a, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x18, - 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x08, 0x0a, 0x06, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x22, 0x89, 0x05, 0x0a, - 0x0f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 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, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, - 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, - 0xc6, 0x02, 0xea, 0x41, 0xc2, 0x02, 0x0a, 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x40, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x36, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a, + 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcb, + 0x01, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, 0x52, 0x12, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, + 0x1a, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x63, 0x0a, 0x12, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x2c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x6a, + 0x0a, 0x22, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6f, 0x0a, 0x08, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x59, 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x08, 0x0a, 0x06, 0x4d, + 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x22, 0x89, 0x05, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 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, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 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, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x69, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0xc6, 0x02, 0xea, 0x41, 0xc2, 0x02, 0x0a, + 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x40, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x36, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x55, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x7d, 0x12, 0x55, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x61, 0x74, 0x65, 0x7d, 0x12, 0x4b, 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, 0x69, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x7d, 0x22, 0xb0, 0x05, 0x0a, 0x12, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 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, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 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, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x64, 0x65, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, + 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x3a, 0xe1, 0x02, 0xea, 0x41, 0xdd, 0x02, 0x0a, 0x25, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x65, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x2f, 0x7b, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, + 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x7d, 0x12, 0x5b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x4b, 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, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x22, 0xb0, 0x05, 0x0a, 0x12, 0x44, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x7d, 0x12, 0x51, 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, 0x64, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, + 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x7d, 0x22, 0x71, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2c, 0x0a, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 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, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x22, 0xba, 0x07, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x4a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, + 0x0a, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x45, 0x0a, 0x08, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x40, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x54, 0x0a, 0x11, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0xe1, 0x02, 0xea, 0x41, 0xdd, 0x02, 0x0a, 0x25, - 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x3c, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x5b, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, - 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x51, 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, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x22, 0x71, 0x0a, 0x05, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, - 0x18, 0x02, 0x20, 0x03, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x22, 0xba, - 0x07, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, + 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x09, 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, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x52, + 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, + 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x8c, 0x01, + 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x08, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, - 0x6f, 0x62, 0x12, 0x45, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, - 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x12, 0x40, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 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, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 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, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x1a, 0x8c, 0x01, 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x12, 0x3d, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, - 0x37, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x48, 0x00, - 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x22, 0x48, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, - 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, - 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x3a, 0x94, 0x01, - 0xea, 0x41, 0x90, 0x01, 0x0a, 0x1d, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x12, 0x2c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x7d, 0x12, 0x41, 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, 0x6a, 0x6f, 0x62, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x7d, 0x42, 0x05, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x86, 0x07, 0x0a, 0x06, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0d, 0x73, 0x61, 0x76, 0x65, 0x5f, 0x66, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x08, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x75, + 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, + 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x48, 0x0a, 0x06, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, + 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, + 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x3a, 0x94, 0x01, 0xea, 0x41, 0x90, 0x01, 0x0a, 0x1d, 0x64, + 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2c, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6a, 0x6f, + 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x7d, 0x12, 0x41, 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, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x7d, 0x42, 0x05, 0x0a, + 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xed, 0x0a, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x51, 0x0a, 0x0d, 0x73, 0x61, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x76, 0x65, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x48, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x50, 0x75, 0x62, 0x53, + 0x75, 0x62, 0x48, 0x00, 0x52, 0x06, 0x70, 0x75, 0x62, 0x53, 0x75, 0x62, 0x12, 0x6b, 0x0a, 0x17, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, + 0x74, 0x6f, 0x5f, 0x63, 0x73, 0x63, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x76, - 0x65, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x76, - 0x65, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x48, 0x0a, 0x07, 0x70, 0x75, 0x62, - 0x5f, 0x73, 0x75, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x54, 0x6f, 0x43, 0x73, 0x63, + 0x63, 0x48, 0x00, 0x52, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x54, 0x6f, 0x43, 0x73, 0x63, 0x63, 0x12, 0x94, 0x01, 0x0a, 0x26, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x74, + 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x54, 0x6f, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x48, 0x00, 0x52, 0x06, 0x70, 0x75, 0x62, - 0x53, 0x75, 0x62, 0x12, 0x6b, 0x0a, 0x17, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x73, 0x63, 0x63, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x68, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x21, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x6f, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x44, 0x61, 0x74, 0x61, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x54, 0x6f, 0x43, 0x73, 0x63, 0x63, 0x48, 0x00, 0x52, 0x14, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x54, 0x6f, 0x43, 0x73, 0x63, 0x63, - 0x12, 0x94, 0x01, 0x0a, 0x26, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x44, 0x61, 0x74, 0x61, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x48, 0x00, 0x52, 0x21, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x6d, 0x0a, 0x17, 0x6a, 0x6f, 0x62, 0x5f, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x48, 0x00, + 0x52, 0x0a, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x12, 0x6d, 0x0a, 0x17, + 0x6a, 0x6f, 0x62, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x6f, 0x62, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6d, 0x61, 0x69, + 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, 0x6a, 0x6f, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x6a, 0x0a, 0x16, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x64, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x63, + 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x1a, 0x5f, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x46, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x27, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x54, 0x6f, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x1a, 0x16, 0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x54, 0x6f, 0x43, 0x73, 0x63, 0x63, 0x1a, 0x23, 0x0a, 0x21, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x6f, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x44, 0x61, 0x74, 0x61, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x1a, 0x98, + 0x03, 0x0a, 0x0a, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x12, 0x60, 0x0a, + 0x15, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x8c, 0x01, 0x0a, 0x25, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x22, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, + 0x0a, 0x14, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x48, 0x00, 0x52, 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x56, 0x0a, 0x17, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x6f, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, - 0x15, 0x6a, 0x6f, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x6a, 0x0a, 0x16, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x53, - 0x74, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x48, 0x00, 0x52, 0x14, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x1a, 0x5f, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x1a, 0x27, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, - 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x1a, 0x16, 0x0a, 0x14, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x54, 0x6f, - 0x43, 0x73, 0x63, 0x63, 0x1a, 0x23, 0x0a, 0x21, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x46, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x44, 0x61, - 0x74, 0x61, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x1a, 0x17, 0x0a, 0x15, 0x4a, 0x6f, 0x62, + 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, 0x66, 0x69, 0x6c, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x54, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x42, + 0x08, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x17, 0x0a, 0x15, 0x4a, 0x6f, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x16, 0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfc, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc1, 0x01, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, + 0x13, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x44, + 0x0a, 0x1e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x64, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, + 0x64, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x24, 0x12, 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, + 0x10, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xee, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, + 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x6c, 0x70, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x12, 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x10, 0x69, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, + 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x53, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 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, 0x22, + 0x5e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0xe1, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6a, 0x6f, + 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0xee, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x6c, 0x70, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x12, 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x9b, 0x01, - 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, - 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 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, 0x22, 0x5e, 0x0a, 0x1c, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x24, 0x0a, 0x22, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe1, 0x01, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x56, 0x0a, 0x19, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, - 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, - 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, - 0x51, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x19, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4a, + 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x17, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0xa6, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6c, 0x70, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x1b, 0x12, 0x19, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, - 0x62, 0x12, 0x49, 0x0a, 0x08, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x69, 0x73, 0x6b, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x48, 0x00, 0x52, 0x07, 0x72, 0x69, 0x73, 0x6b, 0x4a, 0x6f, 0x62, 0x12, 0x15, 0x0a, 0x06, - 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, - 0x62, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x9e, 0x02, 0x0a, 0x16, - 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, - 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, - 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x6a, 0x6f, 0x62, 0x5f, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0x51, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa6, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1b, 0x12, 0x19, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, + 0x62, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x99, 0x02, 0x0a, - 0x10, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, - 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x69, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x69, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x37, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcb, 0x06, 0x0a, 0x11, 0x44, 0x61, 0x74, - 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x6f, 0x0a, 0x14, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, - 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x12, 0x70, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x53, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x49, 0x0a, - 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x9a, 0x03, 0x0a, 0x12, 0x50, 0x75, 0x62, - 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x48, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, + 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x49, 0x0a, 0x08, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x6a, 0x6f, + 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4a, 0x6f, 0x62, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x72, 0x69, 0x73, 0x6b, 0x4a, 0x6f, 0x62, + 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x22, + 0x9e, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, + 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x22, 0x87, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, + 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 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, 0x17, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x99, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcb, 0x06, 0x0a, + 0x11, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x6f, 0x0a, 0x14, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, + 0x62, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x5c, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, - 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x70, 0x75, - 0x62, 0x73, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x73, 0x0a, - 0x11, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x12, 0x70, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x53, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x49, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0c, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x9a, 0x03, 0x0a, + 0x12, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x48, 0x0a, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x52, 0x0f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x51, 0x0a, 0x0b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x4c, 0x45, 0x56, 0x45, - 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, - 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4e, - 0x41, 0x4d, 0x45, 0x10, 0x02, 0x22, 0x75, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x0b, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, - 0x13, 0x0a, 0x0f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, - 0x4c, 0x45, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x5f, 0x49, 0x4e, - 0x43, 0x52, 0x45, 0x41, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x04, 0x42, 0x08, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x02, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x46, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x64, 0x61, 0x74, - 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x6b, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x00, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x49, 0x64, - 0x42, 0x0a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x06, 0x0a, - 0x06, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, - 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x58, 0x0a, 0x0c, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x72, - 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x69, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x73, 0x0a, 0x11, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x51, 0x0a, 0x0b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x5f, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x52, 0x4f, + 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x02, 0x22, 0x75, 0x0a, 0x09, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, + 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x5f, 0x50, + 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x43, 0x4f, 0x52, + 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x41, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a, + 0x0d, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x04, + 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x02, 0x0a, 0x14, 0x44, + 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x12, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0x6b, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x0f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x66, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xd3, 0x06, 0x0a, 0x06, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, + 0x70, 0x4a, 0x6f, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x0b, 0x72, 0x69, 0x73, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5a, + 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 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, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, - 0x0a, 0x08, 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, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x34, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x6f, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, - 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x03, - 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, - 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, - 0x54, 0x49, 0x56, 0x45, 0x10, 0x06, 0x3a, 0x7f, 0xea, 0x41, 0x7c, 0x0a, 0x19, 0x64, 0x6c, 0x70, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x24, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, - 0x62, 0x73, 0x2f, 0x7b, 0x64, 0x6c, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x7d, 0x12, 0x39, 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, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x64, - 0x6c, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x7d, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0x49, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, - 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x02, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1b, 0x12, 0x19, 0x64, 0x6c, - 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6c, - 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, - 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 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, 0x4c, 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x63, - 0x65, 0x6c, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 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, + 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6a, 0x6f, 0x62, + 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x6f, 0x0a, 0x08, 0x4a, 0x6f, 0x62, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, + 0x4e, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, + 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0a, + 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x06, 0x3a, 0x7f, 0xea, 0x41, 0x7c, 0x0a, + 0x19, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x24, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, + 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x64, 0x6c, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x7d, + 0x12, 0x39, 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, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, + 0x73, 0x2f, 0x7b, 0x64, 0x6c, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x7d, 0x42, 0x09, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x49, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x6c, 0x70, + 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x96, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1b, + 0x12, 0x19, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, + 0x70, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, + 0x6a, 0x6f, 0x62, 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, 0x4c, 0x0a, 0x13, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, + 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x13, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, + 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6c, - 0x70, 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x8b, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x12, 0x25, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8b, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x27, 0x12, 0x25, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x5f, 0x0a, 0x13, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, + 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5f, 0x0a, - 0x13, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x64, 0x65, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, - 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0xfd, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x13, 0x64, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x12, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x61, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x13, 0x64, 0x65, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x12, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, - 0x22, 0x61, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x12, 0x25, - 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xa7, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x14, 0x64, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x13, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 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, 0x22, - 0x64, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x02, 0x0a, 0x1b, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, - 0x61, 0x74, 0x68, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, - 0x61, 0x0a, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x13, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, - 0x65, 0x74, 0x12, 0x4e, 0x0a, 0x0f, 0x62, 0x69, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x27, 0x12, 0x25, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xa7, 0x01, 0x0a, 0x1f, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, + 0x14, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x4a, 0x0a, 0x1a, - 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x70, - 0x70, 0x72, 0x6f, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x4e, 0x75, - 0x6d, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x73, 0x22, 0xea, 0x02, 0x0a, 0x14, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x17, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x6c, - 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x72, 0x79, 0x12, 0x52, 0x0a, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, - 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x52, - 0x65, 0x67, 0x65, 0x78, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x06, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x6b, 0x0a, - 0x17, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x13, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 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, 0x22, 0x64, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x6c, + 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x02, 0x0a, 0x1b, 0x4c, 0x61, + 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a, 0x0b, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x48, 0x00, 0x52, 0x15, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0xd3, 0x02, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x61, 0x0a, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x48, + 0x00, 0x52, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x4e, 0x0a, 0x0f, 0x62, 0x69, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x22, 0x4a, 0x0a, 0x1a, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, + 0x0a, 0x12, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x61, 0x70, 0x70, 0x72, + 0x6f, 0x78, 0x4e, 0x75, 0x6d, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x73, 0x22, 0xea, 0x02, 0x0a, + 0x14, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x17, 0x6c, 0x61, + 0x72, 0x67, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x15, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x52, 0x0a, 0x0a, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x34, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, + 0x52, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x43, 0x0a, 0x05, + 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x98, 0x04, 0x0a, 0x0e, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x55, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x73, 0x12, 0x6b, 0x0a, 0x17, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x72, 0x67, 0x65, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x15, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x06, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd3, 0x02, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x43, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, - 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, - 0xc1, 0x02, 0xea, 0x41, 0xbd, 0x02, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0x35, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x7d, 0x12, 0x54, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0x4a, 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, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x7d, 0x22, 0xfa, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x12, 0x21, 0x64, 0x6c, 0x70, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, - 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0xde, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x43, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, - 0x6b, 0x22, 0x59, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd7, 0x01, 0x0a, - 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x23, 0x12, 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 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, 0x22, 0x5c, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0xa6, 0x01, 0x0a, 0x1e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, - 0x0b, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, - 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x68, 0x79, - 0x62, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x9e, 0x01, 0x0a, 0x1a, 0x48, 0x79, 0x62, - 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, - 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, 0x64, - 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, - 0x0a, 0x0b, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, - 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x68, - 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xa1, 0x01, 0x0a, 0x11, 0x48, 0x79, - 0x62, 0x72, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x36, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x54, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x46, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xfb, 0x02, - 0x0a, 0x14, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x6f, 0x77, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x48, 0x0a, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x98, 0x04, 0x0a, + 0x0e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x4f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x46, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x17, 0x0a, 0x15, 0x48, - 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x53, 0x0a, 0x05, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7f, - 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x45, 0x4e, 0x53, 0x49, - 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, - 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x0a, 0x12, - 0x18, 0x0a, 0x14, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, 0x45, 0x10, 0x14, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x4e, - 0x53, 0x49, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x1e, 0x22, - 0xc0, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x4d, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, - 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x22, 0x60, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x53, - 0x43, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x0a, - 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, - 0x45, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x48, 0x49, 0x47, 0x48, - 0x10, 0x1e, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x12, 0x4b, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, - 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, - 0x10, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6a, 0x6f, - 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x4a, 0x6f, 0x62, 0x22, 0xab, 0x0d, 0x0a, 0x10, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, - 0x14, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, - 0x2c, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x29, 0x0a, - 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, - 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x73, 0x65, 0x6e, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x6e, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x10, 0x73, - 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x4c, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x58, 0x0a, - 0x14, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x12, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, - 0x6f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x59, - 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x10, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x3a, 0xc1, 0x02, 0xea, 0x41, 0xbd, 0x02, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0x35, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0x54, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0x4a, 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, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x22, 0xfa, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x12, + 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xde, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x59, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0xd7, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x12, 0x21, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x1b, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 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, 0x22, 0x5c, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x6c, 0x70, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x1e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x64, 0x6c, + 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, + 0x79, 0x62, 0x72, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x0a, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x9e, 0x01, 0x0a, + 0x1a, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x6c, + 0x70, 0x4a, 0x6f, 0x62, 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, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x0a, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xa1, 0x01, + 0x0a, 0x11, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x36, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x54, 0x0a, 0x0f, 0x66, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, + 0x72, 0x69, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x0e, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0xfb, 0x02, 0x0a, 0x14, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x46, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x66, 0x69, 0x6c, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, + 0x77, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x72, 0x6f, 0x77, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x48, 0x0a, 0x0d, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, + 0x69, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x17, 0x0a, 0x15, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x4d, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x60, 0x0a, 0x12, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x69, 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x52, + 0x49, 0x53, 0x4b, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x49, 0x53, + 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, 0x45, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, + 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x1e, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x4b, 0x0a, 0x0e, 0x69, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x64, + 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x22, 0xab, 0x0d, + 0x0a, 0x10, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, + 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x4b, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x10, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x69, + 0x73, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x69, 0x73, + 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x58, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x1b, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, + 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x12, 0x70, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x55, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, + 0x69, 0x65, 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, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, + 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0f, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x09, 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, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x70, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x12, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x11, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x5a, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x16, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x10, 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, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x63, 0x61, 0x6e, - 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x54, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, - 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x10, 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, - 0x14, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x17, 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, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x35, 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, 0x52, - 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x4e, 0x45, - 0x10, 0x02, 0x22, 0x75, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x4f, 0x0a, 0x0f, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x09, - 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, 0x54, 0x0a, 0x14, 0x4f, 0x74, - 0x68, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x22, 0xc1, 0x06, 0x0a, 0x1a, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x65, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x95, 0x02, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x53, 0x75, - 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x74, 0x0a, 0x12, 0x6d, 0x69, - 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x10, - 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x73, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x12, 0x82, 0x01, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6e, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4c, 0x61, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x12, 0x64, + 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x17, 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, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x35, 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, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x22, 0x75, 0x0a, 0x0d, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0x82, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x13, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x50, 0x72, 0x65, + 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x14, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, + 0x0a, 0x14, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x76, + 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x65, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x50, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, + 0x65, 0x22, 0xc1, 0x06, 0x0a, 0x1a, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x65, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x95, 0x02, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x53, + 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x74, 0x0a, 0x12, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, + 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, + 0x10, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x73, 0x6b, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x82, 0x01, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x73, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x17, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, + 0xc9, 0x02, 0x0a, 0x11, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x10, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x59, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x69, + 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x67, + 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x61, 0x0a, 0x0a, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x4a, 0x0a, 0x15, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x4f, 0x47, 0x49, + 0x43, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x52, + 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x44, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x12, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x43, 0x4f, + 0x52, 0x45, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x5f, 0x4f, 0x52, 0x5f, 0x48, + 0x49, 0x47, 0x48, 0x10, 0x02, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x17, 0x6d, 0x69, - 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc9, - 0x02, 0x0a, 0x11, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x10, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, - 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x59, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x69, 0x63, - 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x69, - 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x61, 0x0a, 0x0a, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4a, - 0x0a, 0x15, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x4f, 0x47, 0x49, 0x43, - 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x52, 0x10, - 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x44, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x12, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x52, - 0x45, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x01, - 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x5f, 0x4f, 0x52, 0x5f, 0x48, 0x49, - 0x47, 0x48, 0x10, 0x02, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x41, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2a, 0xbb, - 0x01, 0x0a, 0x12, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x51, - 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, - 0x45, 0x51, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, - 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x47, - 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, - 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x45, 0x53, 0x53, 0x5f, - 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x06, - 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x07, 0x2a, 0x8d, 0x01, 0x0a, - 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, - 0x19, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, - 0x4d, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, - 0x4c, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, - 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, - 0x49, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, - 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, - 0x45, 0x52, 0x53, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x03, 0x2a, 0x4d, 0x0a, 0x0d, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, - 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4e, 0x54, - 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x02, 0x2a, 0x42, 0x0a, 0x0c, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4d, - 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x4f, - 0x52, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x2a, - 0x50, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, + 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2a, + 0xa0, 0x01, 0x0a, 0x1e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, + 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, + 0x4f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, + 0x59, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x4f, 0x57, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x45, + 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x54, + 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x10, 0x04, 0x2a, 0x7f, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, + 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x5f, + 0x42, 0x4f, 0x44, 0x59, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, + 0x4f, 0x52, 0x4d, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x12, 0x13, + 0x0a, 0x0f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x03, 0x2a, 0xe0, 0x02, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x52, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x50, 0x4c, 0x41, + 0x43, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, + 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x52, 0x59, + 0x10, 0x0f, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x44, 0x41, 0x43, 0x54, 0x10, 0x03, 0x12, 0x12, + 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x53, 0x4b, + 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x52, 0x59, 0x50, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x50, + 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x46, 0x46, 0x58, 0x5f, 0x46, 0x50, 0x45, 0x10, 0x05, 0x12, 0x18, + 0x0a, 0x14, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x42, 0x55, 0x43, + 0x4b, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x55, 0x43, 0x4b, + 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x41, + 0x43, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, + 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x52, 0x59, 0x50, 0x54, 0x4f, 0x5f, 0x48, 0x41, 0x53, + 0x48, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x48, 0x49, 0x46, + 0x54, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x52, 0x59, 0x50, 0x54, 0x4f, 0x5f, 0x44, 0x45, + 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x44, 0x41, 0x43, 0x54, 0x5f, 0x49, + 0x4d, 0x41, 0x47, 0x45, 0x10, 0x0e, 0x2a, 0xbb, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x0a, + 0x1f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, + 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x10, 0x01, + 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x4f, + 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, + 0x41, 0x4e, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, + 0x4e, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, + 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x05, 0x12, + 0x17, 0x0a, 0x13, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, + 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, + 0x54, 0x53, 0x10, 0x07, 0x2a, 0x8d, 0x01, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, + 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x43, + 0x48, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x45, 0x5f, 0x4d, 0x41, 0x54, + 0x43, 0x48, 0x10, 0x03, 0x2a, 0x4d, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x10, 0x01, + 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4d, 0x41, 0x47, + 0x45, 0x10, 0x02, 0x2a, 0x42, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, - 0x02, 0x2a, 0x52, 0x0a, 0x0a, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1c, 0x0a, 0x18, 0x44, 0x4c, 0x50, 0x5f, 0x4a, 0x4f, 0x42, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x49, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x54, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x01, 0x12, 0x15, - 0x0a, 0x11, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x5f, - 0x4a, 0x4f, 0x42, 0x10, 0x02, 0x2a, 0x6e, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x22, - 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, - 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, - 0x4c, 0x49, 0x44, 0x10, 0x04, 0x2a, 0x7d, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x1f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, - 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x56, 0x49, 0x53, - 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x0a, - 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x56, 0x49, 0x53, - 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, - 0x45, 0x44, 0x10, 0x14, 0x2a, 0x75, 0x0a, 0x10, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x4e, 0x43, 0x52, - 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x45, - 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, - 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x4e, - 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, - 0x52, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x10, 0x02, 0x32, 0xa0, 0x4c, 0x0a, 0x0a, - 0x44, 0x6c, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x66, 0x22, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x3a, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x38, - 0x22, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x69, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0xcc, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x64, - 0x61, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x64, 0x61, - 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x22, 0x24, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x3a, 0x01, 0x2a, - 0x5a, 0x35, 0x22, 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x72, 0x65, - 0x64, 0x61, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0xea, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x22, 0x2a, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x5a, 0x3b, 0x22, 0x36, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x3a, 0x01, 0x2a, 0x12, 0xea, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x52, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x22, 0x2a, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x3a, 0x01, 0x2a, 0x5a, 0x3b, 0x22, 0x36, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 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, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x3a, 0x01, - 0x2a, 0x12, 0xb0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x0d, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x5a, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x7d, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0xf4, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x45, 0x54, + 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x2a, 0x50, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x19, + 0x0a, 0x15, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x41, + 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0x02, 0x2a, 0x52, 0x0a, 0x0a, 0x44, 0x6c, 0x70, + 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x4c, 0x50, 0x5f, 0x4a, + 0x4f, 0x42, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x54, + 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x41, + 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x02, 0x2a, 0x6e, 0x0a, + 0x13, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x5f, 0x49, + 0x4e, 0x46, 0x4f, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, + 0x44, 0x59, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x04, 0x2a, 0x7d, 0x0a, + 0x12, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x0a, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x52, 0x45, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x45, 0x44, 0x10, 0x14, 0x2a, 0x75, 0x0a, 0x10, + 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, + 0x44, 0x10, 0x02, 0x32, 0xa0, 0x4c, 0x0a, 0x0a, 0x44, 0x6c, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xfd, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x22, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x3e, 0x22, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x2d, 0x22, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x22, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x22, 0x27, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x69, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, - 0x2a, 0xda, 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0xfe, 0x02, 0x0a, 0x15, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x22, 0x87, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x32, 0x2d, 0x2f, 0x76, - 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3e, - 0x32, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x2d, - 0x32, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x32, - 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x21, 0x6e, 0x61, 0x6d, 0x65, 0x2c, - 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xcf, 0x02, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xde, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd0, 0x01, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x2f, 0x2a, 0x7d, 0x5a, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, - 0x36, 0x12, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe2, - 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x3a, 0x01, 0x2a, + 0x12, 0xcc, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xe0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd0, 0x01, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x32, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x22, + 0x24, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x72, + 0x65, 0x64, 0x61, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x35, 0x22, 0x30, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0x12, + 0xea, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, + 0x22, 0x2a, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x3a, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x5a, + 0x3b, 0x22, 0x36, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x64, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0xea, 0x01, 0x0a, + 0x11, 0x52, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x22, 0x2a, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x72, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x5a, 0x3b, 0x22, 0x36, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x65, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0xb0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x0d, + 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5a, 0x24, 0x12, + 0x22, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xf4, 0x02, 0x0a, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x22, 0xfd, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x22, 0x2d, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, + 0x3e, 0x22, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, + 0x2d, 0x22, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x39, + 0x22, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x12, 0xc5, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0xfe, 0x02, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 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, 0xde, 0x01, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0xd0, 0x01, 0x2a, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x87, 0x02, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0xdc, 0x01, 0x32, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x2f, 0x2a, 0x7d, 0x5a, 0x3b, 0x2a, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3e, 0x32, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x2d, 0x32, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x32, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, + 0xda, 0x41, 0x21, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xcf, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xde, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd0, 0x01, 0x12, + 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3b, + 0x12, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2a, 0x12, 0x28, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe2, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0xd0, 0x01, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x5a, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, - 0x5a, 0x2a, 0x2a, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x36, 0x2a, 0x34, - 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x2a, + 0x12, 0x28, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, + 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xc5, 0x02, 0x0a, 0x15, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 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, 0xde, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd0, 0x01, 0x2a, 0x2d, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3b, 0x2a, 0x39, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2a, 0x2a, 0x28, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8c, 0x03, 0x0a, 0x18, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x36, 0x2a, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x8c, 0x03, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x8c, 0x02, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0xe8, 0x01, 0x22, 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x41, 0x22, 0x3c, 0x2f, 0x76, - 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x30, 0x22, - 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, - 0x3c, 0x22, 0x37, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x1a, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x96, 0x03, 0x0a, 0x18, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x22, 0x8c, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe8, 0x01, 0x22, 0x30, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, + 0x01, 0x2a, 0x5a, 0x41, 0x22, 0x3c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x30, 0x22, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x3c, 0x22, 0x37, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x64, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x1a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x12, 0x96, 0x03, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x96, 0x02, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0xe8, 0x01, 0x32, 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x22, 0x96, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe8, 0x01, 0x32, 0x30, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, + 0x2a, 0x5a, 0x41, 0x32, 0x3c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x30, 0x32, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3c, 0x32, 0x37, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x24, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x64, 0x65, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2c, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xe4, 0x02, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xea, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x12, + 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x5a, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0xf7, 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x35, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x12, 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x32, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x41, 0x32, 0x3c, 0x2f, 0x76, 0x32, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x30, 0x32, 0x2b, - 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3c, - 0x32, 0x37, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x24, 0x6e, - 0x61, 0x6d, 0x65, 0x2c, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x12, 0xe4, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x33, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xea, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x12, 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, + 0x74, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xd7, 0x02, 0x0a, + 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 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, 0xea, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0xdc, 0x01, 0x2a, 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3e, 0x2a, 0x3c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x32, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x32, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xf7, 0x02, 0x0a, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x12, - 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x5a, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, + 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x39, 0x2a, 0x37, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x9d, 0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xb5, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x99, 0x01, 0x22, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, + 0x5a, 0x34, 0x22, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0xd7, 0x02, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, - 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x44, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 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, 0xea, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdc, 0x01, 0x2a, 0x30, 0x2f, 0x76, 0x32, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3e, 0x2a, - 0x3c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2d, 0x2a, - 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x39, 0x2a, 0x37, - 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x9d, - 0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xb5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x99, 0x01, - 0x22, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x22, 0x2f, 0x2f, 0x76, 0x32, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, - 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x39, - 0x22, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x2c, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0xa7, - 0x02, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xbf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x99, 0x01, - 0x32, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x32, 0x2f, 0x2f, 0x76, 0x32, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x39, - 0x32, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x1c, 0x6e, 0x61, 0x6d, 0x65, - 0x2c, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2c, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xcf, 0x01, 0x0a, 0x17, 0x48, 0x79, 0x62, - 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, - 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x22, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x3a, 0x01, + 0x2a, 0xda, 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6a, 0x6f, 0x62, 0x5f, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0xa7, 0x02, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x42, 0x22, 0x3d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x80, 0x02, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x9e, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x90, 0x01, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x31, 0x12, 0x2f, 0x2f, - 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xbf, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x99, 0x01, 0x32, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, + 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, + 0x5a, 0x34, 0x32, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x32, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x36, - 0x12, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, + 0x2a, 0xda, 0x41, 0x1c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x12, 0xcf, 0x01, 0x0a, 0x17, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x35, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, + 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x3d, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x68, 0x79, 0x62, 0x72, 0x69, + 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x80, 0x02, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x22, 0x9e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x90, 0x01, 0x12, 0x23, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, + 0x2f, 0x2a, 0x7d, 0x5a, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x93, 0x02, - 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, - 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xa0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x90, 0x01, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x5a, - 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, - 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x12, 0xfb, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, - 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x93, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, + 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 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, 0x9e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x90, 0x01, 0x2a, 0x23, 0x2f, 0x76, 0x32, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, - 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, - 0x2a, 0x7d, 0x5a, 0x36, 0x2a, 0x34, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x90, 0x01, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x5a, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x6a, + 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xfb, 0x01, 0x0a, 0x10, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, + 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 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, 0x9e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x90, 0x01, 0x2a, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0xdd, 0x01, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4a, 0x6f, - 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x36, 0x2a, 0x34, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, + 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xdd, 0x01, 0x0a, 0x12, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x4a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, + 0x62, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x22, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x5a, 0x3d, 0x22, 0x38, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, + 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xdf, 0x01, 0x0a, 0x0c, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x70, 0x22, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x3a, - 0x01, 0x2a, 0x5a, 0x3d, 0x22, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x3a, 0x01, - 0x2a, 0x12, 0xdf, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6c, 0x70, 0x4a, - 0x6f, 0x62, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x22, 0x83, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x30, 0x22, 0x2b, 0x2f, 0x76, + 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, + 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x22, 0x83, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x1f, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x3a, + 0x01, 0x2a, 0x5a, 0x30, 0x22, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, + 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0xda, 0x41, 0x0f, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x6a, 0x6f, 0x62, 0x12, 0xfb, 0x01, 0x0a, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x84, 0x01, 0x12, 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, - 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x12, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6a, 0x6f, - 0x62, 0xda, 0x41, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x69, 0x73, 0x6b, 0x5f, - 0x6a, 0x6f, 0x62, 0x12, 0xfb, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, - 0x6f, 0x62, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, - 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x84, 0x01, 0x12, 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x6c, - 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 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, 0x7d, 0x2f, 0x64, 0x6c, 0x70, - 0x4a, 0x6f, 0x62, 0x73, 0x5a, 0x32, 0x12, 0x30, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0xb2, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, - 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x22, 0x5d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x12, - 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, - 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0xda, - 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x5a, 0x2d, 0x12, + 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x5a, 0x32, 0x12, 0x30, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, + 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xb2, 0x01, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 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, 0x5d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x50, 0x2a, 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, - 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, - 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xbe, 0x01, 0x0a, 0x0c, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x2a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, - 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, - 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x22, 0x26, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, + 0x47, 0x65, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x22, + 0x5d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x12, 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, - 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x3a, - 0x01, 0x2a, 0x5a, 0x37, 0x22, 0x32, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, - 0x7d, 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0xe3, 0x02, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, - 0xef, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd8, 0x01, 0x22, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x3d, 0x22, 0x38, 0x2f, 0x76, - 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x2c, 0x22, 0x27, 0x2f, 0x76, 0x32, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, + 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xb1, + 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, + 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6c, + 0x70, 0x4a, 0x6f, 0x62, 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, 0x5d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x2a, 0x1f, 0x2f, 0x76, 0x32, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x2d, 0x2a, 0x2b, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0xbe, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x6c, 0x70, + 0x4a, 0x6f, 0x62, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 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, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x22, + 0x26, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x3a, 0x01, 0x2a, 0x5a, 0x37, 0x22, 0x32, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, + 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x3a, 0x01, 0x2a, 0x12, 0xe3, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, 0xef, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd8, + 0x01, 0x22, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, + 0x01, 0x2a, 0x5a, 0x3d, 0x22, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x01, - 0x2a, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0xed, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, 0xf9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd8, 0x01, 0x32, - 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, - 0x5a, 0x3d, 0x32, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, - 0x2c, 0x32, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x38, 0x32, - 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x17, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x12, 0xc8, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, - 0xda, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xcc, 0x01, 0x12, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x2a, 0x7d, 0x5a, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x35, - 0x12, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, - 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xdb, 0x02, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdc, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0xcc, 0x01, 0x12, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5a, - 0x29, 0x12, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5a, 0x35, 0x12, 0x33, 0x2f, 0x76, - 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, - 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xbf, 0x02, 0x0a, 0x14, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 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, - 0xda, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xcc, 0x01, 0x2a, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3a, 0x2a, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x2a, 0x7d, 0x5a, 0x29, 0x2a, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x35, - 0x2a, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2a, 0x5a, 0x2c, 0x22, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x5a, + 0x38, 0x22, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0xed, 0x02, 0x0a, 0x14, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, 0xf9, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd8, 0x01, 0x32, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, - 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xc3, 0x01, 0x0a, - 0x13, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x6c, - 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, - 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x39, 0x2f, + 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3d, 0x32, 0x38, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x2c, 0x32, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x38, 0x32, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0xda, + 0x41, 0x17, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xc8, 0x02, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x22, 0xda, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xcc, + 0x01, 0x12, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, + 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x68, 0x79, 0x62, 0x72, 0x69, - 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x44, 0x6c, 0x70, - 0x4a, 0x6f, 0x62, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6e, 0x69, - 0x73, 0x68, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xdb, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xdc, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xcc, 0x01, 0x12, 0x2c, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5a, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x5a, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 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, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0xbf, 0x02, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 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, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x22, - 0x32, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x1a, 0x46, 0xca, 0x41, 0x12, 0x64, 0x6c, 0x70, 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, 0xfa, - 0x02, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x42, 0x08, 0x44, 0x6c, - 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x76, 0x32, 0x3b, 0x64, - 0x6c, 0x70, 0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x44, 0x6c, 0x70, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x6c, 0x70, 0x5c, 0x56, 0x32, 0xea, 0x02, - 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x44, 0x6c, 0x70, 0x3a, 0x3a, 0x56, 0x32, 0xea, 0x41, 0x72, 0x0a, 0x1d, 0x64, 0x6c, 0x70, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, - 0x6c, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x6c, - 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x32, 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, 0x64, 0x6c, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0xea, 0x41, 0x5c, 0x0a, - 0x27, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xda, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xcc, + 0x01, 0x2a, 0x2c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, + 0x3a, 0x2a, 0x38, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x29, 0x2a, 0x27, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x35, 0x2a, 0x33, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xc3, 0x01, 0x0a, 0x13, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x31, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x2a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, + 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x44, 0x6c, 0x70, 0x4a, 0x6f, 0x62, + 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, + 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x22, 0x32, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x6c, 0x70, 0x4a, 0x6f, 0x62, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x1a, 0x46, + 0xca, 0x41, 0x12, 0x64, 0x6c, 0x70, 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, 0xfa, 0x02, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x42, 0x08, 0x44, 0x6c, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, + 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2f, + 0x64, 0x6c, 0x70, 0x2f, 0x76, 0x32, 0x3b, 0x64, 0x6c, 0x70, 0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x6c, 0x70, 0x2e, 0x56, 0x32, + 0xca, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, + 0x44, 0x6c, 0x70, 0x5c, 0x56, 0x32, 0xea, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, + 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x6c, 0x70, 0x3a, 0x3a, 0x56, 0x32, 0xea, + 0x41, 0x72, 0x0a, 0x1d, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6c, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x1d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x6c, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x32, 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, 0x64, 0x6c, 0x70, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0xea, 0x41, 0x5c, 0x0a, 0x27, 0x64, 0x6c, 0x70, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x31, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -20352,662 +21873,702 @@ func file_google_privacy_dlp_v2_dlp_proto_rawDescGZIP() []byte { return file_google_privacy_dlp_v2_dlp_proto_rawDescData } -var file_google_privacy_dlp_v2_dlp_proto_enumTypes = make([]protoimpl.EnumInfo, 28) -var file_google_privacy_dlp_v2_dlp_proto_msgTypes = make([]protoimpl.MessageInfo, 193) +var file_google_privacy_dlp_v2_dlp_proto_enumTypes = make([]protoimpl.EnumInfo, 30) +var file_google_privacy_dlp_v2_dlp_proto_msgTypes = make([]protoimpl.MessageInfo, 206) var file_google_privacy_dlp_v2_dlp_proto_goTypes = []interface{}{ - (RelationalOperator)(0), // 0: google.privacy.dlp.v2.RelationalOperator - (MatchingType)(0), // 1: google.privacy.dlp.v2.MatchingType - (ContentOption)(0), // 2: google.privacy.dlp.v2.ContentOption - (MetadataType)(0), // 3: google.privacy.dlp.v2.MetadataType - (InfoTypeSupportedBy)(0), // 4: google.privacy.dlp.v2.InfoTypeSupportedBy - (DlpJobType)(0), // 5: google.privacy.dlp.v2.DlpJobType - (StoredInfoTypeState)(0), // 6: google.privacy.dlp.v2.StoredInfoTypeState - (ResourceVisibility)(0), // 7: google.privacy.dlp.v2.ResourceVisibility - (EncryptionStatus)(0), // 8: google.privacy.dlp.v2.EncryptionStatus - (ByteContentItem_BytesType)(0), // 9: google.privacy.dlp.v2.ByteContentItem.BytesType - (OutputStorageConfig_OutputSchema)(0), // 10: google.privacy.dlp.v2.OutputStorageConfig.OutputSchema - (InfoTypeCategory_LocationCategory)(0), // 11: google.privacy.dlp.v2.InfoTypeCategory.LocationCategory - (InfoTypeCategory_IndustryCategory)(0), // 12: google.privacy.dlp.v2.InfoTypeCategory.IndustryCategory - (InfoTypeCategory_TypeCategory)(0), // 13: google.privacy.dlp.v2.InfoTypeCategory.TypeCategory - (TimePartConfig_TimePart)(0), // 14: google.privacy.dlp.v2.TimePartConfig.TimePart - (CharsToIgnore_CommonCharsToIgnore)(0), // 15: google.privacy.dlp.v2.CharsToIgnore.CommonCharsToIgnore - (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet)(0), // 16: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet - (RecordCondition_Expressions_LogicalOperator)(0), // 17: google.privacy.dlp.v2.RecordCondition.Expressions.LogicalOperator - (TransformationSummary_TransformationResultCode)(0), // 18: google.privacy.dlp.v2.TransformationSummary.TransformationResultCode - (JobTrigger_Status)(0), // 19: google.privacy.dlp.v2.JobTrigger.Status - (DataProfileAction_EventType)(0), // 20: google.privacy.dlp.v2.DataProfileAction.EventType - (DataProfileAction_PubSubNotification_DetailLevel)(0), // 21: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.DetailLevel - (DlpJob_JobState)(0), // 22: google.privacy.dlp.v2.DlpJob.JobState - (SensitivityScore_SensitivityScoreLevel)(0), // 23: google.privacy.dlp.v2.SensitivityScore.SensitivityScoreLevel - (DataRiskLevel_DataRiskLevelScore)(0), // 24: google.privacy.dlp.v2.DataRiskLevel.DataRiskLevelScore - (TableDataProfile_State)(0), // 25: google.privacy.dlp.v2.TableDataProfile.State - (DataProfilePubSubCondition_ProfileScoreBucket)(0), // 26: google.privacy.dlp.v2.DataProfilePubSubCondition.ProfileScoreBucket - (DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator)(0), // 27: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.PubSubLogicalOperator - (*ExcludeInfoTypes)(nil), // 28: google.privacy.dlp.v2.ExcludeInfoTypes - (*ExclusionRule)(nil), // 29: google.privacy.dlp.v2.ExclusionRule - (*InspectionRule)(nil), // 30: google.privacy.dlp.v2.InspectionRule - (*InspectionRuleSet)(nil), // 31: google.privacy.dlp.v2.InspectionRuleSet - (*InspectConfig)(nil), // 32: google.privacy.dlp.v2.InspectConfig - (*ByteContentItem)(nil), // 33: google.privacy.dlp.v2.ByteContentItem - (*ContentItem)(nil), // 34: google.privacy.dlp.v2.ContentItem - (*Table)(nil), // 35: google.privacy.dlp.v2.Table - (*InspectResult)(nil), // 36: google.privacy.dlp.v2.InspectResult - (*Finding)(nil), // 37: google.privacy.dlp.v2.Finding - (*Location)(nil), // 38: google.privacy.dlp.v2.Location - (*ContentLocation)(nil), // 39: google.privacy.dlp.v2.ContentLocation - (*MetadataLocation)(nil), // 40: google.privacy.dlp.v2.MetadataLocation - (*StorageMetadataLabel)(nil), // 41: google.privacy.dlp.v2.StorageMetadataLabel - (*DocumentLocation)(nil), // 42: google.privacy.dlp.v2.DocumentLocation - (*RecordLocation)(nil), // 43: google.privacy.dlp.v2.RecordLocation - (*TableLocation)(nil), // 44: google.privacy.dlp.v2.TableLocation - (*Container)(nil), // 45: google.privacy.dlp.v2.Container - (*Range)(nil), // 46: google.privacy.dlp.v2.Range - (*ImageLocation)(nil), // 47: google.privacy.dlp.v2.ImageLocation - (*BoundingBox)(nil), // 48: google.privacy.dlp.v2.BoundingBox - (*RedactImageRequest)(nil), // 49: google.privacy.dlp.v2.RedactImageRequest - (*Color)(nil), // 50: google.privacy.dlp.v2.Color - (*RedactImageResponse)(nil), // 51: google.privacy.dlp.v2.RedactImageResponse - (*DeidentifyContentRequest)(nil), // 52: google.privacy.dlp.v2.DeidentifyContentRequest - (*DeidentifyContentResponse)(nil), // 53: google.privacy.dlp.v2.DeidentifyContentResponse - (*ReidentifyContentRequest)(nil), // 54: google.privacy.dlp.v2.ReidentifyContentRequest - (*ReidentifyContentResponse)(nil), // 55: google.privacy.dlp.v2.ReidentifyContentResponse - (*InspectContentRequest)(nil), // 56: google.privacy.dlp.v2.InspectContentRequest - (*InspectContentResponse)(nil), // 57: google.privacy.dlp.v2.InspectContentResponse - (*OutputStorageConfig)(nil), // 58: google.privacy.dlp.v2.OutputStorageConfig - (*InfoTypeStats)(nil), // 59: google.privacy.dlp.v2.InfoTypeStats - (*InspectDataSourceDetails)(nil), // 60: google.privacy.dlp.v2.InspectDataSourceDetails - (*HybridInspectStatistics)(nil), // 61: google.privacy.dlp.v2.HybridInspectStatistics - (*InfoTypeDescription)(nil), // 62: google.privacy.dlp.v2.InfoTypeDescription - (*InfoTypeCategory)(nil), // 63: google.privacy.dlp.v2.InfoTypeCategory - (*ListInfoTypesRequest)(nil), // 64: google.privacy.dlp.v2.ListInfoTypesRequest - (*ListInfoTypesResponse)(nil), // 65: google.privacy.dlp.v2.ListInfoTypesResponse - (*RiskAnalysisJobConfig)(nil), // 66: google.privacy.dlp.v2.RiskAnalysisJobConfig - (*QuasiId)(nil), // 67: google.privacy.dlp.v2.QuasiId - (*StatisticalTable)(nil), // 68: google.privacy.dlp.v2.StatisticalTable - (*PrivacyMetric)(nil), // 69: google.privacy.dlp.v2.PrivacyMetric - (*AnalyzeDataSourceRiskDetails)(nil), // 70: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails - (*ValueFrequency)(nil), // 71: google.privacy.dlp.v2.ValueFrequency - (*Value)(nil), // 72: google.privacy.dlp.v2.Value - (*QuoteInfo)(nil), // 73: google.privacy.dlp.v2.QuoteInfo - (*DateTime)(nil), // 74: google.privacy.dlp.v2.DateTime - (*DeidentifyConfig)(nil), // 75: google.privacy.dlp.v2.DeidentifyConfig - (*TransformationErrorHandling)(nil), // 76: google.privacy.dlp.v2.TransformationErrorHandling - (*PrimitiveTransformation)(nil), // 77: google.privacy.dlp.v2.PrimitiveTransformation - (*TimePartConfig)(nil), // 78: google.privacy.dlp.v2.TimePartConfig - (*CryptoHashConfig)(nil), // 79: google.privacy.dlp.v2.CryptoHashConfig - (*CryptoDeterministicConfig)(nil), // 80: google.privacy.dlp.v2.CryptoDeterministicConfig - (*ReplaceValueConfig)(nil), // 81: google.privacy.dlp.v2.ReplaceValueConfig - (*ReplaceDictionaryConfig)(nil), // 82: google.privacy.dlp.v2.ReplaceDictionaryConfig - (*ReplaceWithInfoTypeConfig)(nil), // 83: google.privacy.dlp.v2.ReplaceWithInfoTypeConfig - (*RedactConfig)(nil), // 84: google.privacy.dlp.v2.RedactConfig - (*CharsToIgnore)(nil), // 85: google.privacy.dlp.v2.CharsToIgnore - (*CharacterMaskConfig)(nil), // 86: google.privacy.dlp.v2.CharacterMaskConfig - (*FixedSizeBucketingConfig)(nil), // 87: google.privacy.dlp.v2.FixedSizeBucketingConfig - (*BucketingConfig)(nil), // 88: google.privacy.dlp.v2.BucketingConfig - (*CryptoReplaceFfxFpeConfig)(nil), // 89: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig - (*CryptoKey)(nil), // 90: google.privacy.dlp.v2.CryptoKey - (*TransientCryptoKey)(nil), // 91: google.privacy.dlp.v2.TransientCryptoKey - (*UnwrappedCryptoKey)(nil), // 92: google.privacy.dlp.v2.UnwrappedCryptoKey - (*KmsWrappedCryptoKey)(nil), // 93: google.privacy.dlp.v2.KmsWrappedCryptoKey - (*DateShiftConfig)(nil), // 94: google.privacy.dlp.v2.DateShiftConfig - (*InfoTypeTransformations)(nil), // 95: google.privacy.dlp.v2.InfoTypeTransformations - (*FieldTransformation)(nil), // 96: google.privacy.dlp.v2.FieldTransformation - (*RecordTransformations)(nil), // 97: google.privacy.dlp.v2.RecordTransformations - (*RecordSuppression)(nil), // 98: google.privacy.dlp.v2.RecordSuppression - (*RecordCondition)(nil), // 99: google.privacy.dlp.v2.RecordCondition - (*TransformationOverview)(nil), // 100: google.privacy.dlp.v2.TransformationOverview - (*TransformationSummary)(nil), // 101: google.privacy.dlp.v2.TransformationSummary - (*Schedule)(nil), // 102: google.privacy.dlp.v2.Schedule - (*Manual)(nil), // 103: google.privacy.dlp.v2.Manual - (*InspectTemplate)(nil), // 104: google.privacy.dlp.v2.InspectTemplate - (*DeidentifyTemplate)(nil), // 105: google.privacy.dlp.v2.DeidentifyTemplate - (*Error)(nil), // 106: google.privacy.dlp.v2.Error - (*JobTrigger)(nil), // 107: google.privacy.dlp.v2.JobTrigger - (*Action)(nil), // 108: google.privacy.dlp.v2.Action - (*CreateInspectTemplateRequest)(nil), // 109: google.privacy.dlp.v2.CreateInspectTemplateRequest - (*UpdateInspectTemplateRequest)(nil), // 110: google.privacy.dlp.v2.UpdateInspectTemplateRequest - (*GetInspectTemplateRequest)(nil), // 111: google.privacy.dlp.v2.GetInspectTemplateRequest - (*ListInspectTemplatesRequest)(nil), // 112: google.privacy.dlp.v2.ListInspectTemplatesRequest - (*ListInspectTemplatesResponse)(nil), // 113: google.privacy.dlp.v2.ListInspectTemplatesResponse - (*DeleteInspectTemplateRequest)(nil), // 114: google.privacy.dlp.v2.DeleteInspectTemplateRequest - (*CreateJobTriggerRequest)(nil), // 115: google.privacy.dlp.v2.CreateJobTriggerRequest - (*ActivateJobTriggerRequest)(nil), // 116: google.privacy.dlp.v2.ActivateJobTriggerRequest - (*UpdateJobTriggerRequest)(nil), // 117: google.privacy.dlp.v2.UpdateJobTriggerRequest - (*GetJobTriggerRequest)(nil), // 118: google.privacy.dlp.v2.GetJobTriggerRequest - (*CreateDlpJobRequest)(nil), // 119: google.privacy.dlp.v2.CreateDlpJobRequest - (*ListJobTriggersRequest)(nil), // 120: google.privacy.dlp.v2.ListJobTriggersRequest - (*ListJobTriggersResponse)(nil), // 121: google.privacy.dlp.v2.ListJobTriggersResponse - (*DeleteJobTriggerRequest)(nil), // 122: google.privacy.dlp.v2.DeleteJobTriggerRequest - (*InspectJobConfig)(nil), // 123: google.privacy.dlp.v2.InspectJobConfig - (*DataProfileAction)(nil), // 124: google.privacy.dlp.v2.DataProfileAction - (*DataProfileJobConfig)(nil), // 125: google.privacy.dlp.v2.DataProfileJobConfig - (*DataProfileLocation)(nil), // 126: google.privacy.dlp.v2.DataProfileLocation - (*DlpJob)(nil), // 127: google.privacy.dlp.v2.DlpJob - (*GetDlpJobRequest)(nil), // 128: google.privacy.dlp.v2.GetDlpJobRequest - (*ListDlpJobsRequest)(nil), // 129: google.privacy.dlp.v2.ListDlpJobsRequest - (*ListDlpJobsResponse)(nil), // 130: google.privacy.dlp.v2.ListDlpJobsResponse - (*CancelDlpJobRequest)(nil), // 131: google.privacy.dlp.v2.CancelDlpJobRequest - (*FinishDlpJobRequest)(nil), // 132: google.privacy.dlp.v2.FinishDlpJobRequest - (*DeleteDlpJobRequest)(nil), // 133: google.privacy.dlp.v2.DeleteDlpJobRequest - (*CreateDeidentifyTemplateRequest)(nil), // 134: google.privacy.dlp.v2.CreateDeidentifyTemplateRequest - (*UpdateDeidentifyTemplateRequest)(nil), // 135: google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest - (*GetDeidentifyTemplateRequest)(nil), // 136: google.privacy.dlp.v2.GetDeidentifyTemplateRequest - (*ListDeidentifyTemplatesRequest)(nil), // 137: google.privacy.dlp.v2.ListDeidentifyTemplatesRequest - (*ListDeidentifyTemplatesResponse)(nil), // 138: google.privacy.dlp.v2.ListDeidentifyTemplatesResponse - (*DeleteDeidentifyTemplateRequest)(nil), // 139: google.privacy.dlp.v2.DeleteDeidentifyTemplateRequest - (*LargeCustomDictionaryConfig)(nil), // 140: google.privacy.dlp.v2.LargeCustomDictionaryConfig - (*LargeCustomDictionaryStats)(nil), // 141: google.privacy.dlp.v2.LargeCustomDictionaryStats - (*StoredInfoTypeConfig)(nil), // 142: google.privacy.dlp.v2.StoredInfoTypeConfig - (*StoredInfoTypeStats)(nil), // 143: google.privacy.dlp.v2.StoredInfoTypeStats - (*StoredInfoTypeVersion)(nil), // 144: google.privacy.dlp.v2.StoredInfoTypeVersion - (*StoredInfoType)(nil), // 145: google.privacy.dlp.v2.StoredInfoType - (*CreateStoredInfoTypeRequest)(nil), // 146: google.privacy.dlp.v2.CreateStoredInfoTypeRequest - (*UpdateStoredInfoTypeRequest)(nil), // 147: google.privacy.dlp.v2.UpdateStoredInfoTypeRequest - (*GetStoredInfoTypeRequest)(nil), // 148: google.privacy.dlp.v2.GetStoredInfoTypeRequest - (*ListStoredInfoTypesRequest)(nil), // 149: google.privacy.dlp.v2.ListStoredInfoTypesRequest - (*ListStoredInfoTypesResponse)(nil), // 150: google.privacy.dlp.v2.ListStoredInfoTypesResponse - (*DeleteStoredInfoTypeRequest)(nil), // 151: google.privacy.dlp.v2.DeleteStoredInfoTypeRequest - (*HybridInspectJobTriggerRequest)(nil), // 152: google.privacy.dlp.v2.HybridInspectJobTriggerRequest - (*HybridInspectDlpJobRequest)(nil), // 153: google.privacy.dlp.v2.HybridInspectDlpJobRequest - (*HybridContentItem)(nil), // 154: google.privacy.dlp.v2.HybridContentItem - (*HybridFindingDetails)(nil), // 155: google.privacy.dlp.v2.HybridFindingDetails - (*HybridInspectResponse)(nil), // 156: google.privacy.dlp.v2.HybridInspectResponse - (*SensitivityScore)(nil), // 157: google.privacy.dlp.v2.SensitivityScore - (*DataRiskLevel)(nil), // 158: google.privacy.dlp.v2.DataRiskLevel - (*DataProfileConfigSnapshot)(nil), // 159: google.privacy.dlp.v2.DataProfileConfigSnapshot - (*TableDataProfile)(nil), // 160: google.privacy.dlp.v2.TableDataProfile - (*ProfileStatus)(nil), // 161: google.privacy.dlp.v2.ProfileStatus - (*InfoTypeSummary)(nil), // 162: google.privacy.dlp.v2.InfoTypeSummary - (*OtherInfoTypeSummary)(nil), // 163: google.privacy.dlp.v2.OtherInfoTypeSummary - (*DataProfilePubSubCondition)(nil), // 164: google.privacy.dlp.v2.DataProfilePubSubCondition - (*DataProfilePubSubMessage)(nil), // 165: google.privacy.dlp.v2.DataProfilePubSubMessage - (*InspectConfig_FindingLimits)(nil), // 166: google.privacy.dlp.v2.InspectConfig.FindingLimits - (*InspectConfig_FindingLimits_InfoTypeLimit)(nil), // 167: google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit - (*Table_Row)(nil), // 168: google.privacy.dlp.v2.Table.Row - nil, // 169: google.privacy.dlp.v2.Finding.LabelsEntry - (*RedactImageRequest_ImageRedactionConfig)(nil), // 170: google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig - (*InspectDataSourceDetails_RequestedOptions)(nil), // 171: google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions - (*InspectDataSourceDetails_Result)(nil), // 172: google.privacy.dlp.v2.InspectDataSourceDetails.Result - (*StatisticalTable_QuasiIdentifierField)(nil), // 173: google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField - (*PrivacyMetric_NumericalStatsConfig)(nil), // 174: google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig - (*PrivacyMetric_CategoricalStatsConfig)(nil), // 175: google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig - (*PrivacyMetric_KAnonymityConfig)(nil), // 176: google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig - (*PrivacyMetric_LDiversityConfig)(nil), // 177: google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig - (*PrivacyMetric_KMapEstimationConfig)(nil), // 178: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig - (*PrivacyMetric_DeltaPresenceEstimationConfig)(nil), // 179: google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig - (*PrivacyMetric_KMapEstimationConfig_TaggedField)(nil), // 180: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField - (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable)(nil), // 181: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable - (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField)(nil), // 182: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField - (*AnalyzeDataSourceRiskDetails_NumericalStatsResult)(nil), // 183: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult - (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult)(nil), // 184: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult - (*AnalyzeDataSourceRiskDetails_KAnonymityResult)(nil), // 185: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult - (*AnalyzeDataSourceRiskDetails_LDiversityResult)(nil), // 186: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult - (*AnalyzeDataSourceRiskDetails_KMapEstimationResult)(nil), // 187: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult - (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult)(nil), // 188: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult - (*AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions)(nil), // 189: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.RequestedRiskAnalysisOptions - (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket)(nil), // 190: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket - (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass)(nil), // 191: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass - (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket)(nil), // 192: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket - (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass)(nil), // 193: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass - (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket)(nil), // 194: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket - (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues)(nil), // 195: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues - (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket)(nil), // 196: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket - (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues)(nil), // 197: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues - (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket)(nil), // 198: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket - (*DateTime_TimeZone)(nil), // 199: google.privacy.dlp.v2.DateTime.TimeZone - (*TransformationErrorHandling_ThrowError)(nil), // 200: google.privacy.dlp.v2.TransformationErrorHandling.ThrowError - (*TransformationErrorHandling_LeaveUntransformed)(nil), // 201: google.privacy.dlp.v2.TransformationErrorHandling.LeaveUntransformed - (*BucketingConfig_Bucket)(nil), // 202: google.privacy.dlp.v2.BucketingConfig.Bucket - (*InfoTypeTransformations_InfoTypeTransformation)(nil), // 203: google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation - (*RecordCondition_Condition)(nil), // 204: google.privacy.dlp.v2.RecordCondition.Condition - (*RecordCondition_Conditions)(nil), // 205: google.privacy.dlp.v2.RecordCondition.Conditions - (*RecordCondition_Expressions)(nil), // 206: google.privacy.dlp.v2.RecordCondition.Expressions - (*TransformationSummary_SummaryResult)(nil), // 207: google.privacy.dlp.v2.TransformationSummary.SummaryResult - (*JobTrigger_Trigger)(nil), // 208: google.privacy.dlp.v2.JobTrigger.Trigger - (*Action_SaveFindings)(nil), // 209: google.privacy.dlp.v2.Action.SaveFindings - (*Action_PublishToPubSub)(nil), // 210: google.privacy.dlp.v2.Action.PublishToPubSub - (*Action_PublishSummaryToCscc)(nil), // 211: google.privacy.dlp.v2.Action.PublishSummaryToCscc - (*Action_PublishFindingsToCloudDataCatalog)(nil), // 212: google.privacy.dlp.v2.Action.PublishFindingsToCloudDataCatalog - (*Action_JobNotificationEmails)(nil), // 213: google.privacy.dlp.v2.Action.JobNotificationEmails - (*Action_PublishToStackdriver)(nil), // 214: google.privacy.dlp.v2.Action.PublishToStackdriver - (*DataProfileAction_Export)(nil), // 215: google.privacy.dlp.v2.DataProfileAction.Export - (*DataProfileAction_PubSubNotification)(nil), // 216: google.privacy.dlp.v2.DataProfileAction.PubSubNotification - nil, // 217: google.privacy.dlp.v2.HybridFindingDetails.LabelsEntry - nil, // 218: google.privacy.dlp.v2.TableDataProfile.ResourceLabelsEntry - (*DataProfilePubSubCondition_PubSubCondition)(nil), // 219: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition - (*DataProfilePubSubCondition_PubSubExpressions)(nil), // 220: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions - (*InfoType)(nil), // 221: google.privacy.dlp.v2.InfoType - (*CustomInfoType_Dictionary)(nil), // 222: google.privacy.dlp.v2.CustomInfoType.Dictionary - (*CustomInfoType_Regex)(nil), // 223: google.privacy.dlp.v2.CustomInfoType.Regex - (*CustomInfoType_DetectionRule_HotwordRule)(nil), // 224: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule - (Likelihood)(0), // 225: google.privacy.dlp.v2.Likelihood - (*CustomInfoType)(nil), // 226: google.privacy.dlp.v2.CustomInfoType - (*FieldId)(nil), // 227: google.privacy.dlp.v2.FieldId - (*timestamppb.Timestamp)(nil), // 228: google.protobuf.Timestamp - (*RecordKey)(nil), // 229: google.privacy.dlp.v2.RecordKey - (*BigQueryTable)(nil), // 230: google.privacy.dlp.v2.BigQueryTable - (*emptypb.Empty)(nil), // 231: google.protobuf.Empty - (*timeofday.TimeOfDay)(nil), // 232: google.type.TimeOfDay - (*date.Date)(nil), // 233: google.type.Date - (dayofweek.DayOfWeek)(0), // 234: google.type.DayOfWeek - (*CustomInfoType_Dictionary_WordList)(nil), // 235: google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList - (*durationpb.Duration)(nil), // 236: google.protobuf.Duration - (*status.Status)(nil), // 237: google.rpc.Status - (*fieldmaskpb.FieldMask)(nil), // 238: google.protobuf.FieldMask - (*StorageConfig)(nil), // 239: google.privacy.dlp.v2.StorageConfig - (*CloudStoragePath)(nil), // 240: google.privacy.dlp.v2.CloudStoragePath - (*CloudStorageFileSet)(nil), // 241: google.privacy.dlp.v2.CloudStorageFileSet - (*BigQueryField)(nil), // 242: google.privacy.dlp.v2.BigQueryField - (*TableOptions)(nil), // 243: google.privacy.dlp.v2.TableOptions - (*EntityId)(nil), // 244: google.privacy.dlp.v2.EntityId + (TransformationResultStatusType)(0), // 0: google.privacy.dlp.v2.TransformationResultStatusType + (TransformationContainerType)(0), // 1: google.privacy.dlp.v2.TransformationContainerType + (TransformationType)(0), // 2: google.privacy.dlp.v2.TransformationType + (RelationalOperator)(0), // 3: google.privacy.dlp.v2.RelationalOperator + (MatchingType)(0), // 4: google.privacy.dlp.v2.MatchingType + (ContentOption)(0), // 5: google.privacy.dlp.v2.ContentOption + (MetadataType)(0), // 6: google.privacy.dlp.v2.MetadataType + (InfoTypeSupportedBy)(0), // 7: google.privacy.dlp.v2.InfoTypeSupportedBy + (DlpJobType)(0), // 8: google.privacy.dlp.v2.DlpJobType + (StoredInfoTypeState)(0), // 9: google.privacy.dlp.v2.StoredInfoTypeState + (ResourceVisibility)(0), // 10: google.privacy.dlp.v2.ResourceVisibility + (EncryptionStatus)(0), // 11: google.privacy.dlp.v2.EncryptionStatus + (ByteContentItem_BytesType)(0), // 12: google.privacy.dlp.v2.ByteContentItem.BytesType + (OutputStorageConfig_OutputSchema)(0), // 13: google.privacy.dlp.v2.OutputStorageConfig.OutputSchema + (InfoTypeCategory_LocationCategory)(0), // 14: google.privacy.dlp.v2.InfoTypeCategory.LocationCategory + (InfoTypeCategory_IndustryCategory)(0), // 15: google.privacy.dlp.v2.InfoTypeCategory.IndustryCategory + (InfoTypeCategory_TypeCategory)(0), // 16: google.privacy.dlp.v2.InfoTypeCategory.TypeCategory + (TimePartConfig_TimePart)(0), // 17: google.privacy.dlp.v2.TimePartConfig.TimePart + (CharsToIgnore_CommonCharsToIgnore)(0), // 18: google.privacy.dlp.v2.CharsToIgnore.CommonCharsToIgnore + (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet)(0), // 19: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet + (RecordCondition_Expressions_LogicalOperator)(0), // 20: google.privacy.dlp.v2.RecordCondition.Expressions.LogicalOperator + (TransformationSummary_TransformationResultCode)(0), // 21: google.privacy.dlp.v2.TransformationSummary.TransformationResultCode + (JobTrigger_Status)(0), // 22: google.privacy.dlp.v2.JobTrigger.Status + (DataProfileAction_EventType)(0), // 23: google.privacy.dlp.v2.DataProfileAction.EventType + (DataProfileAction_PubSubNotification_DetailLevel)(0), // 24: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.DetailLevel + (DlpJob_JobState)(0), // 25: google.privacy.dlp.v2.DlpJob.JobState + (DataRiskLevel_DataRiskLevelScore)(0), // 26: google.privacy.dlp.v2.DataRiskLevel.DataRiskLevelScore + (TableDataProfile_State)(0), // 27: google.privacy.dlp.v2.TableDataProfile.State + (DataProfilePubSubCondition_ProfileScoreBucket)(0), // 28: google.privacy.dlp.v2.DataProfilePubSubCondition.ProfileScoreBucket + (DataProfilePubSubCondition_PubSubExpressions_PubSubLogicalOperator)(0), // 29: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.PubSubLogicalOperator + (*ExcludeInfoTypes)(nil), // 30: google.privacy.dlp.v2.ExcludeInfoTypes + (*ExclusionRule)(nil), // 31: google.privacy.dlp.v2.ExclusionRule + (*InspectionRule)(nil), // 32: google.privacy.dlp.v2.InspectionRule + (*InspectionRuleSet)(nil), // 33: google.privacy.dlp.v2.InspectionRuleSet + (*InspectConfig)(nil), // 34: google.privacy.dlp.v2.InspectConfig + (*ByteContentItem)(nil), // 35: google.privacy.dlp.v2.ByteContentItem + (*ContentItem)(nil), // 36: google.privacy.dlp.v2.ContentItem + (*Table)(nil), // 37: google.privacy.dlp.v2.Table + (*InspectResult)(nil), // 38: google.privacy.dlp.v2.InspectResult + (*Finding)(nil), // 39: google.privacy.dlp.v2.Finding + (*Location)(nil), // 40: google.privacy.dlp.v2.Location + (*ContentLocation)(nil), // 41: google.privacy.dlp.v2.ContentLocation + (*MetadataLocation)(nil), // 42: google.privacy.dlp.v2.MetadataLocation + (*StorageMetadataLabel)(nil), // 43: google.privacy.dlp.v2.StorageMetadataLabel + (*DocumentLocation)(nil), // 44: google.privacy.dlp.v2.DocumentLocation + (*RecordLocation)(nil), // 45: google.privacy.dlp.v2.RecordLocation + (*TableLocation)(nil), // 46: google.privacy.dlp.v2.TableLocation + (*Container)(nil), // 47: google.privacy.dlp.v2.Container + (*Range)(nil), // 48: google.privacy.dlp.v2.Range + (*ImageLocation)(nil), // 49: google.privacy.dlp.v2.ImageLocation + (*BoundingBox)(nil), // 50: google.privacy.dlp.v2.BoundingBox + (*RedactImageRequest)(nil), // 51: google.privacy.dlp.v2.RedactImageRequest + (*Color)(nil), // 52: google.privacy.dlp.v2.Color + (*RedactImageResponse)(nil), // 53: google.privacy.dlp.v2.RedactImageResponse + (*DeidentifyContentRequest)(nil), // 54: google.privacy.dlp.v2.DeidentifyContentRequest + (*DeidentifyContentResponse)(nil), // 55: google.privacy.dlp.v2.DeidentifyContentResponse + (*ReidentifyContentRequest)(nil), // 56: google.privacy.dlp.v2.ReidentifyContentRequest + (*ReidentifyContentResponse)(nil), // 57: google.privacy.dlp.v2.ReidentifyContentResponse + (*InspectContentRequest)(nil), // 58: google.privacy.dlp.v2.InspectContentRequest + (*InspectContentResponse)(nil), // 59: google.privacy.dlp.v2.InspectContentResponse + (*OutputStorageConfig)(nil), // 60: google.privacy.dlp.v2.OutputStorageConfig + (*InfoTypeStats)(nil), // 61: google.privacy.dlp.v2.InfoTypeStats + (*InspectDataSourceDetails)(nil), // 62: google.privacy.dlp.v2.InspectDataSourceDetails + (*HybridInspectStatistics)(nil), // 63: google.privacy.dlp.v2.HybridInspectStatistics + (*InfoTypeDescription)(nil), // 64: google.privacy.dlp.v2.InfoTypeDescription + (*InfoTypeCategory)(nil), // 65: google.privacy.dlp.v2.InfoTypeCategory + (*VersionDescription)(nil), // 66: google.privacy.dlp.v2.VersionDescription + (*ListInfoTypesRequest)(nil), // 67: google.privacy.dlp.v2.ListInfoTypesRequest + (*ListInfoTypesResponse)(nil), // 68: google.privacy.dlp.v2.ListInfoTypesResponse + (*RiskAnalysisJobConfig)(nil), // 69: google.privacy.dlp.v2.RiskAnalysisJobConfig + (*QuasiId)(nil), // 70: google.privacy.dlp.v2.QuasiId + (*StatisticalTable)(nil), // 71: google.privacy.dlp.v2.StatisticalTable + (*PrivacyMetric)(nil), // 72: google.privacy.dlp.v2.PrivacyMetric + (*AnalyzeDataSourceRiskDetails)(nil), // 73: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails + (*ValueFrequency)(nil), // 74: google.privacy.dlp.v2.ValueFrequency + (*Value)(nil), // 75: google.privacy.dlp.v2.Value + (*QuoteInfo)(nil), // 76: google.privacy.dlp.v2.QuoteInfo + (*DateTime)(nil), // 77: google.privacy.dlp.v2.DateTime + (*DeidentifyConfig)(nil), // 78: google.privacy.dlp.v2.DeidentifyConfig + (*ImageTransformations)(nil), // 79: google.privacy.dlp.v2.ImageTransformations + (*TransformationErrorHandling)(nil), // 80: google.privacy.dlp.v2.TransformationErrorHandling + (*PrimitiveTransformation)(nil), // 81: google.privacy.dlp.v2.PrimitiveTransformation + (*TimePartConfig)(nil), // 82: google.privacy.dlp.v2.TimePartConfig + (*CryptoHashConfig)(nil), // 83: google.privacy.dlp.v2.CryptoHashConfig + (*CryptoDeterministicConfig)(nil), // 84: google.privacy.dlp.v2.CryptoDeterministicConfig + (*ReplaceValueConfig)(nil), // 85: google.privacy.dlp.v2.ReplaceValueConfig + (*ReplaceDictionaryConfig)(nil), // 86: google.privacy.dlp.v2.ReplaceDictionaryConfig + (*ReplaceWithInfoTypeConfig)(nil), // 87: google.privacy.dlp.v2.ReplaceWithInfoTypeConfig + (*RedactConfig)(nil), // 88: google.privacy.dlp.v2.RedactConfig + (*CharsToIgnore)(nil), // 89: google.privacy.dlp.v2.CharsToIgnore + (*CharacterMaskConfig)(nil), // 90: google.privacy.dlp.v2.CharacterMaskConfig + (*FixedSizeBucketingConfig)(nil), // 91: google.privacy.dlp.v2.FixedSizeBucketingConfig + (*BucketingConfig)(nil), // 92: google.privacy.dlp.v2.BucketingConfig + (*CryptoReplaceFfxFpeConfig)(nil), // 93: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig + (*CryptoKey)(nil), // 94: google.privacy.dlp.v2.CryptoKey + (*TransientCryptoKey)(nil), // 95: google.privacy.dlp.v2.TransientCryptoKey + (*UnwrappedCryptoKey)(nil), // 96: google.privacy.dlp.v2.UnwrappedCryptoKey + (*KmsWrappedCryptoKey)(nil), // 97: google.privacy.dlp.v2.KmsWrappedCryptoKey + (*DateShiftConfig)(nil), // 98: google.privacy.dlp.v2.DateShiftConfig + (*InfoTypeTransformations)(nil), // 99: google.privacy.dlp.v2.InfoTypeTransformations + (*FieldTransformation)(nil), // 100: google.privacy.dlp.v2.FieldTransformation + (*RecordTransformations)(nil), // 101: google.privacy.dlp.v2.RecordTransformations + (*RecordSuppression)(nil), // 102: google.privacy.dlp.v2.RecordSuppression + (*RecordCondition)(nil), // 103: google.privacy.dlp.v2.RecordCondition + (*TransformationOverview)(nil), // 104: google.privacy.dlp.v2.TransformationOverview + (*TransformationSummary)(nil), // 105: google.privacy.dlp.v2.TransformationSummary + (*TransformationDescription)(nil), // 106: google.privacy.dlp.v2.TransformationDescription + (*TransformationDetails)(nil), // 107: google.privacy.dlp.v2.TransformationDetails + (*TransformationLocation)(nil), // 108: google.privacy.dlp.v2.TransformationLocation + (*RecordTransformation)(nil), // 109: google.privacy.dlp.v2.RecordTransformation + (*TransformationResultStatus)(nil), // 110: google.privacy.dlp.v2.TransformationResultStatus + (*TransformationDetailsStorageConfig)(nil), // 111: google.privacy.dlp.v2.TransformationDetailsStorageConfig + (*Schedule)(nil), // 112: google.privacy.dlp.v2.Schedule + (*Manual)(nil), // 113: google.privacy.dlp.v2.Manual + (*InspectTemplate)(nil), // 114: google.privacy.dlp.v2.InspectTemplate + (*DeidentifyTemplate)(nil), // 115: google.privacy.dlp.v2.DeidentifyTemplate + (*Error)(nil), // 116: google.privacy.dlp.v2.Error + (*JobTrigger)(nil), // 117: google.privacy.dlp.v2.JobTrigger + (*Action)(nil), // 118: google.privacy.dlp.v2.Action + (*TransformationConfig)(nil), // 119: google.privacy.dlp.v2.TransformationConfig + (*CreateInspectTemplateRequest)(nil), // 120: google.privacy.dlp.v2.CreateInspectTemplateRequest + (*UpdateInspectTemplateRequest)(nil), // 121: google.privacy.dlp.v2.UpdateInspectTemplateRequest + (*GetInspectTemplateRequest)(nil), // 122: google.privacy.dlp.v2.GetInspectTemplateRequest + (*ListInspectTemplatesRequest)(nil), // 123: google.privacy.dlp.v2.ListInspectTemplatesRequest + (*ListInspectTemplatesResponse)(nil), // 124: google.privacy.dlp.v2.ListInspectTemplatesResponse + (*DeleteInspectTemplateRequest)(nil), // 125: google.privacy.dlp.v2.DeleteInspectTemplateRequest + (*CreateJobTriggerRequest)(nil), // 126: google.privacy.dlp.v2.CreateJobTriggerRequest + (*ActivateJobTriggerRequest)(nil), // 127: google.privacy.dlp.v2.ActivateJobTriggerRequest + (*UpdateJobTriggerRequest)(nil), // 128: google.privacy.dlp.v2.UpdateJobTriggerRequest + (*GetJobTriggerRequest)(nil), // 129: google.privacy.dlp.v2.GetJobTriggerRequest + (*CreateDlpJobRequest)(nil), // 130: google.privacy.dlp.v2.CreateDlpJobRequest + (*ListJobTriggersRequest)(nil), // 131: google.privacy.dlp.v2.ListJobTriggersRequest + (*ListJobTriggersResponse)(nil), // 132: google.privacy.dlp.v2.ListJobTriggersResponse + (*DeleteJobTriggerRequest)(nil), // 133: google.privacy.dlp.v2.DeleteJobTriggerRequest + (*InspectJobConfig)(nil), // 134: google.privacy.dlp.v2.InspectJobConfig + (*DataProfileAction)(nil), // 135: google.privacy.dlp.v2.DataProfileAction + (*DataProfileJobConfig)(nil), // 136: google.privacy.dlp.v2.DataProfileJobConfig + (*DataProfileLocation)(nil), // 137: google.privacy.dlp.v2.DataProfileLocation + (*DlpJob)(nil), // 138: google.privacy.dlp.v2.DlpJob + (*GetDlpJobRequest)(nil), // 139: google.privacy.dlp.v2.GetDlpJobRequest + (*ListDlpJobsRequest)(nil), // 140: google.privacy.dlp.v2.ListDlpJobsRequest + (*ListDlpJobsResponse)(nil), // 141: google.privacy.dlp.v2.ListDlpJobsResponse + (*CancelDlpJobRequest)(nil), // 142: google.privacy.dlp.v2.CancelDlpJobRequest + (*FinishDlpJobRequest)(nil), // 143: google.privacy.dlp.v2.FinishDlpJobRequest + (*DeleteDlpJobRequest)(nil), // 144: google.privacy.dlp.v2.DeleteDlpJobRequest + (*CreateDeidentifyTemplateRequest)(nil), // 145: google.privacy.dlp.v2.CreateDeidentifyTemplateRequest + (*UpdateDeidentifyTemplateRequest)(nil), // 146: google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest + (*GetDeidentifyTemplateRequest)(nil), // 147: google.privacy.dlp.v2.GetDeidentifyTemplateRequest + (*ListDeidentifyTemplatesRequest)(nil), // 148: google.privacy.dlp.v2.ListDeidentifyTemplatesRequest + (*ListDeidentifyTemplatesResponse)(nil), // 149: google.privacy.dlp.v2.ListDeidentifyTemplatesResponse + (*DeleteDeidentifyTemplateRequest)(nil), // 150: google.privacy.dlp.v2.DeleteDeidentifyTemplateRequest + (*LargeCustomDictionaryConfig)(nil), // 151: google.privacy.dlp.v2.LargeCustomDictionaryConfig + (*LargeCustomDictionaryStats)(nil), // 152: google.privacy.dlp.v2.LargeCustomDictionaryStats + (*StoredInfoTypeConfig)(nil), // 153: google.privacy.dlp.v2.StoredInfoTypeConfig + (*StoredInfoTypeStats)(nil), // 154: google.privacy.dlp.v2.StoredInfoTypeStats + (*StoredInfoTypeVersion)(nil), // 155: google.privacy.dlp.v2.StoredInfoTypeVersion + (*StoredInfoType)(nil), // 156: google.privacy.dlp.v2.StoredInfoType + (*CreateStoredInfoTypeRequest)(nil), // 157: google.privacy.dlp.v2.CreateStoredInfoTypeRequest + (*UpdateStoredInfoTypeRequest)(nil), // 158: google.privacy.dlp.v2.UpdateStoredInfoTypeRequest + (*GetStoredInfoTypeRequest)(nil), // 159: google.privacy.dlp.v2.GetStoredInfoTypeRequest + (*ListStoredInfoTypesRequest)(nil), // 160: google.privacy.dlp.v2.ListStoredInfoTypesRequest + (*ListStoredInfoTypesResponse)(nil), // 161: google.privacy.dlp.v2.ListStoredInfoTypesResponse + (*DeleteStoredInfoTypeRequest)(nil), // 162: google.privacy.dlp.v2.DeleteStoredInfoTypeRequest + (*HybridInspectJobTriggerRequest)(nil), // 163: google.privacy.dlp.v2.HybridInspectJobTriggerRequest + (*HybridInspectDlpJobRequest)(nil), // 164: google.privacy.dlp.v2.HybridInspectDlpJobRequest + (*HybridContentItem)(nil), // 165: google.privacy.dlp.v2.HybridContentItem + (*HybridFindingDetails)(nil), // 166: google.privacy.dlp.v2.HybridFindingDetails + (*HybridInspectResponse)(nil), // 167: google.privacy.dlp.v2.HybridInspectResponse + (*DataRiskLevel)(nil), // 168: google.privacy.dlp.v2.DataRiskLevel + (*DataProfileConfigSnapshot)(nil), // 169: google.privacy.dlp.v2.DataProfileConfigSnapshot + (*TableDataProfile)(nil), // 170: google.privacy.dlp.v2.TableDataProfile + (*ProfileStatus)(nil), // 171: google.privacy.dlp.v2.ProfileStatus + (*InfoTypeSummary)(nil), // 172: google.privacy.dlp.v2.InfoTypeSummary + (*OtherInfoTypeSummary)(nil), // 173: google.privacy.dlp.v2.OtherInfoTypeSummary + (*DataProfilePubSubCondition)(nil), // 174: google.privacy.dlp.v2.DataProfilePubSubCondition + (*DataProfilePubSubMessage)(nil), // 175: google.privacy.dlp.v2.DataProfilePubSubMessage + (*InspectConfig_FindingLimits)(nil), // 176: google.privacy.dlp.v2.InspectConfig.FindingLimits + (*InspectConfig_FindingLimits_InfoTypeLimit)(nil), // 177: google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit + (*Table_Row)(nil), // 178: google.privacy.dlp.v2.Table.Row + nil, // 179: google.privacy.dlp.v2.Finding.LabelsEntry + (*RedactImageRequest_ImageRedactionConfig)(nil), // 180: google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig + (*InspectDataSourceDetails_RequestedOptions)(nil), // 181: google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions + (*InspectDataSourceDetails_Result)(nil), // 182: google.privacy.dlp.v2.InspectDataSourceDetails.Result + (*StatisticalTable_QuasiIdentifierField)(nil), // 183: google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField + (*PrivacyMetric_NumericalStatsConfig)(nil), // 184: google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig + (*PrivacyMetric_CategoricalStatsConfig)(nil), // 185: google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig + (*PrivacyMetric_KAnonymityConfig)(nil), // 186: google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig + (*PrivacyMetric_LDiversityConfig)(nil), // 187: google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig + (*PrivacyMetric_KMapEstimationConfig)(nil), // 188: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig + (*PrivacyMetric_DeltaPresenceEstimationConfig)(nil), // 189: google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig + (*PrivacyMetric_KMapEstimationConfig_TaggedField)(nil), // 190: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField + (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable)(nil), // 191: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable + (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField)(nil), // 192: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField + (*AnalyzeDataSourceRiskDetails_NumericalStatsResult)(nil), // 193: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult + (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult)(nil), // 194: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult + (*AnalyzeDataSourceRiskDetails_KAnonymityResult)(nil), // 195: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult + (*AnalyzeDataSourceRiskDetails_LDiversityResult)(nil), // 196: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult + (*AnalyzeDataSourceRiskDetails_KMapEstimationResult)(nil), // 197: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult + (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult)(nil), // 198: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult + (*AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions)(nil), // 199: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.RequestedRiskAnalysisOptions + (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket)(nil), // 200: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket + (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass)(nil), // 201: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass + (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket)(nil), // 202: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket + (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass)(nil), // 203: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass + (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket)(nil), // 204: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket + (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues)(nil), // 205: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues + (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket)(nil), // 206: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket + (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues)(nil), // 207: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues + (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket)(nil), // 208: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket + (*DateTime_TimeZone)(nil), // 209: google.privacy.dlp.v2.DateTime.TimeZone + (*ImageTransformations_ImageTransformation)(nil), // 210: google.privacy.dlp.v2.ImageTransformations.ImageTransformation + (*ImageTransformations_ImageTransformation_SelectedInfoTypes)(nil), // 211: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.SelectedInfoTypes + (*ImageTransformations_ImageTransformation_AllInfoTypes)(nil), // 212: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.AllInfoTypes + (*ImageTransformations_ImageTransformation_AllText)(nil), // 213: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.AllText + (*TransformationErrorHandling_ThrowError)(nil), // 214: google.privacy.dlp.v2.TransformationErrorHandling.ThrowError + (*TransformationErrorHandling_LeaveUntransformed)(nil), // 215: google.privacy.dlp.v2.TransformationErrorHandling.LeaveUntransformed + (*BucketingConfig_Bucket)(nil), // 216: google.privacy.dlp.v2.BucketingConfig.Bucket + (*InfoTypeTransformations_InfoTypeTransformation)(nil), // 217: google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation + (*RecordCondition_Condition)(nil), // 218: google.privacy.dlp.v2.RecordCondition.Condition + (*RecordCondition_Conditions)(nil), // 219: google.privacy.dlp.v2.RecordCondition.Conditions + (*RecordCondition_Expressions)(nil), // 220: google.privacy.dlp.v2.RecordCondition.Expressions + (*TransformationSummary_SummaryResult)(nil), // 221: google.privacy.dlp.v2.TransformationSummary.SummaryResult + (*JobTrigger_Trigger)(nil), // 222: google.privacy.dlp.v2.JobTrigger.Trigger + (*Action_SaveFindings)(nil), // 223: google.privacy.dlp.v2.Action.SaveFindings + (*Action_PublishToPubSub)(nil), // 224: google.privacy.dlp.v2.Action.PublishToPubSub + (*Action_PublishSummaryToCscc)(nil), // 225: google.privacy.dlp.v2.Action.PublishSummaryToCscc + (*Action_PublishFindingsToCloudDataCatalog)(nil), // 226: google.privacy.dlp.v2.Action.PublishFindingsToCloudDataCatalog + (*Action_Deidentify)(nil), // 227: google.privacy.dlp.v2.Action.Deidentify + (*Action_JobNotificationEmails)(nil), // 228: google.privacy.dlp.v2.Action.JobNotificationEmails + (*Action_PublishToStackdriver)(nil), // 229: google.privacy.dlp.v2.Action.PublishToStackdriver + (*DataProfileAction_Export)(nil), // 230: google.privacy.dlp.v2.DataProfileAction.Export + (*DataProfileAction_PubSubNotification)(nil), // 231: google.privacy.dlp.v2.DataProfileAction.PubSubNotification + nil, // 232: google.privacy.dlp.v2.HybridFindingDetails.LabelsEntry + nil, // 233: google.privacy.dlp.v2.TableDataProfile.ResourceLabelsEntry + (*DataProfilePubSubCondition_PubSubCondition)(nil), // 234: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition + (*DataProfilePubSubCondition_PubSubExpressions)(nil), // 235: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions + (*InfoType)(nil), // 236: google.privacy.dlp.v2.InfoType + (*CustomInfoType_Dictionary)(nil), // 237: google.privacy.dlp.v2.CustomInfoType.Dictionary + (*CustomInfoType_Regex)(nil), // 238: google.privacy.dlp.v2.CustomInfoType.Regex + (*CustomInfoType_DetectionRule_HotwordRule)(nil), // 239: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule + (Likelihood)(0), // 240: google.privacy.dlp.v2.Likelihood + (*CustomInfoType)(nil), // 241: google.privacy.dlp.v2.CustomInfoType + (*FieldId)(nil), // 242: google.privacy.dlp.v2.FieldId + (*timestamppb.Timestamp)(nil), // 243: google.protobuf.Timestamp + (*RecordKey)(nil), // 244: google.privacy.dlp.v2.RecordKey + (*BigQueryTable)(nil), // 245: google.privacy.dlp.v2.BigQueryTable + (*emptypb.Empty)(nil), // 246: google.protobuf.Empty + (*timeofday.TimeOfDay)(nil), // 247: google.type.TimeOfDay + (*date.Date)(nil), // 248: google.type.Date + (dayofweek.DayOfWeek)(0), // 249: google.type.DayOfWeek + (*CustomInfoType_Dictionary_WordList)(nil), // 250: google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList + (*status.Status)(nil), // 251: google.rpc.Status + (*durationpb.Duration)(nil), // 252: google.protobuf.Duration + (*fieldmaskpb.FieldMask)(nil), // 253: google.protobuf.FieldMask + (*StorageConfig)(nil), // 254: google.privacy.dlp.v2.StorageConfig + (*CloudStoragePath)(nil), // 255: google.privacy.dlp.v2.CloudStoragePath + (*CloudStorageFileSet)(nil), // 256: google.privacy.dlp.v2.CloudStorageFileSet + (*BigQueryField)(nil), // 257: google.privacy.dlp.v2.BigQueryField + (*TableOptions)(nil), // 258: google.privacy.dlp.v2.TableOptions + (*SensitivityScore)(nil), // 259: google.privacy.dlp.v2.SensitivityScore + (*EntityId)(nil), // 260: google.privacy.dlp.v2.EntityId + (FileType)(0), // 261: google.privacy.dlp.v2.FileType } var file_google_privacy_dlp_v2_dlp_proto_depIdxs = []int32{ - 221, // 0: google.privacy.dlp.v2.ExcludeInfoTypes.info_types:type_name -> google.privacy.dlp.v2.InfoType - 222, // 1: google.privacy.dlp.v2.ExclusionRule.dictionary:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary - 223, // 2: google.privacy.dlp.v2.ExclusionRule.regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex - 28, // 3: google.privacy.dlp.v2.ExclusionRule.exclude_info_types:type_name -> google.privacy.dlp.v2.ExcludeInfoTypes - 1, // 4: google.privacy.dlp.v2.ExclusionRule.matching_type:type_name -> google.privacy.dlp.v2.MatchingType - 224, // 5: google.privacy.dlp.v2.InspectionRule.hotword_rule:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule - 29, // 6: google.privacy.dlp.v2.InspectionRule.exclusion_rule:type_name -> google.privacy.dlp.v2.ExclusionRule - 221, // 7: google.privacy.dlp.v2.InspectionRuleSet.info_types:type_name -> google.privacy.dlp.v2.InfoType - 30, // 8: google.privacy.dlp.v2.InspectionRuleSet.rules:type_name -> google.privacy.dlp.v2.InspectionRule - 221, // 9: google.privacy.dlp.v2.InspectConfig.info_types:type_name -> google.privacy.dlp.v2.InfoType - 225, // 10: google.privacy.dlp.v2.InspectConfig.min_likelihood:type_name -> google.privacy.dlp.v2.Likelihood - 166, // 11: google.privacy.dlp.v2.InspectConfig.limits:type_name -> google.privacy.dlp.v2.InspectConfig.FindingLimits - 226, // 12: google.privacy.dlp.v2.InspectConfig.custom_info_types:type_name -> google.privacy.dlp.v2.CustomInfoType - 2, // 13: google.privacy.dlp.v2.InspectConfig.content_options:type_name -> google.privacy.dlp.v2.ContentOption - 31, // 14: google.privacy.dlp.v2.InspectConfig.rule_set:type_name -> google.privacy.dlp.v2.InspectionRuleSet - 9, // 15: google.privacy.dlp.v2.ByteContentItem.type:type_name -> google.privacy.dlp.v2.ByteContentItem.BytesType - 35, // 16: google.privacy.dlp.v2.ContentItem.table:type_name -> google.privacy.dlp.v2.Table - 33, // 17: google.privacy.dlp.v2.ContentItem.byte_item:type_name -> google.privacy.dlp.v2.ByteContentItem - 227, // 18: google.privacy.dlp.v2.Table.headers:type_name -> google.privacy.dlp.v2.FieldId - 168, // 19: google.privacy.dlp.v2.Table.rows:type_name -> google.privacy.dlp.v2.Table.Row - 37, // 20: google.privacy.dlp.v2.InspectResult.findings:type_name -> google.privacy.dlp.v2.Finding - 221, // 21: google.privacy.dlp.v2.Finding.info_type:type_name -> google.privacy.dlp.v2.InfoType - 225, // 22: google.privacy.dlp.v2.Finding.likelihood:type_name -> google.privacy.dlp.v2.Likelihood - 38, // 23: google.privacy.dlp.v2.Finding.location:type_name -> google.privacy.dlp.v2.Location - 228, // 24: google.privacy.dlp.v2.Finding.create_time:type_name -> google.protobuf.Timestamp - 73, // 25: google.privacy.dlp.v2.Finding.quote_info:type_name -> google.privacy.dlp.v2.QuoteInfo - 169, // 26: google.privacy.dlp.v2.Finding.labels:type_name -> google.privacy.dlp.v2.Finding.LabelsEntry - 228, // 27: google.privacy.dlp.v2.Finding.job_create_time:type_name -> google.protobuf.Timestamp - 46, // 28: google.privacy.dlp.v2.Location.byte_range:type_name -> google.privacy.dlp.v2.Range - 46, // 29: google.privacy.dlp.v2.Location.codepoint_range:type_name -> google.privacy.dlp.v2.Range - 39, // 30: google.privacy.dlp.v2.Location.content_locations:type_name -> google.privacy.dlp.v2.ContentLocation - 45, // 31: google.privacy.dlp.v2.Location.container:type_name -> google.privacy.dlp.v2.Container - 43, // 32: google.privacy.dlp.v2.ContentLocation.record_location:type_name -> google.privacy.dlp.v2.RecordLocation - 47, // 33: google.privacy.dlp.v2.ContentLocation.image_location:type_name -> google.privacy.dlp.v2.ImageLocation - 42, // 34: google.privacy.dlp.v2.ContentLocation.document_location:type_name -> google.privacy.dlp.v2.DocumentLocation - 40, // 35: google.privacy.dlp.v2.ContentLocation.metadata_location:type_name -> google.privacy.dlp.v2.MetadataLocation - 228, // 36: google.privacy.dlp.v2.ContentLocation.container_timestamp:type_name -> google.protobuf.Timestamp - 3, // 37: google.privacy.dlp.v2.MetadataLocation.type:type_name -> google.privacy.dlp.v2.MetadataType - 41, // 38: google.privacy.dlp.v2.MetadataLocation.storage_label:type_name -> google.privacy.dlp.v2.StorageMetadataLabel - 229, // 39: google.privacy.dlp.v2.RecordLocation.record_key:type_name -> google.privacy.dlp.v2.RecordKey - 227, // 40: google.privacy.dlp.v2.RecordLocation.field_id:type_name -> google.privacy.dlp.v2.FieldId - 44, // 41: google.privacy.dlp.v2.RecordLocation.table_location:type_name -> google.privacy.dlp.v2.TableLocation - 228, // 42: google.privacy.dlp.v2.Container.update_time:type_name -> google.protobuf.Timestamp - 48, // 43: google.privacy.dlp.v2.ImageLocation.bounding_boxes:type_name -> google.privacy.dlp.v2.BoundingBox - 32, // 44: google.privacy.dlp.v2.RedactImageRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig - 170, // 45: google.privacy.dlp.v2.RedactImageRequest.image_redaction_configs:type_name -> google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig - 33, // 46: google.privacy.dlp.v2.RedactImageRequest.byte_item:type_name -> google.privacy.dlp.v2.ByteContentItem - 36, // 47: google.privacy.dlp.v2.RedactImageResponse.inspect_result:type_name -> google.privacy.dlp.v2.InspectResult - 75, // 48: google.privacy.dlp.v2.DeidentifyContentRequest.deidentify_config:type_name -> google.privacy.dlp.v2.DeidentifyConfig - 32, // 49: google.privacy.dlp.v2.DeidentifyContentRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig - 34, // 50: google.privacy.dlp.v2.DeidentifyContentRequest.item:type_name -> google.privacy.dlp.v2.ContentItem - 34, // 51: google.privacy.dlp.v2.DeidentifyContentResponse.item:type_name -> google.privacy.dlp.v2.ContentItem - 100, // 52: google.privacy.dlp.v2.DeidentifyContentResponse.overview:type_name -> google.privacy.dlp.v2.TransformationOverview - 75, // 53: google.privacy.dlp.v2.ReidentifyContentRequest.reidentify_config:type_name -> google.privacy.dlp.v2.DeidentifyConfig - 32, // 54: google.privacy.dlp.v2.ReidentifyContentRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig - 34, // 55: google.privacy.dlp.v2.ReidentifyContentRequest.item:type_name -> google.privacy.dlp.v2.ContentItem - 34, // 56: google.privacy.dlp.v2.ReidentifyContentResponse.item:type_name -> google.privacy.dlp.v2.ContentItem - 100, // 57: google.privacy.dlp.v2.ReidentifyContentResponse.overview:type_name -> google.privacy.dlp.v2.TransformationOverview - 32, // 58: google.privacy.dlp.v2.InspectContentRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig - 34, // 59: google.privacy.dlp.v2.InspectContentRequest.item:type_name -> google.privacy.dlp.v2.ContentItem - 36, // 60: google.privacy.dlp.v2.InspectContentResponse.result:type_name -> google.privacy.dlp.v2.InspectResult - 230, // 61: google.privacy.dlp.v2.OutputStorageConfig.table:type_name -> google.privacy.dlp.v2.BigQueryTable - 10, // 62: google.privacy.dlp.v2.OutputStorageConfig.output_schema:type_name -> google.privacy.dlp.v2.OutputStorageConfig.OutputSchema - 221, // 63: google.privacy.dlp.v2.InfoTypeStats.info_type:type_name -> google.privacy.dlp.v2.InfoType - 171, // 64: google.privacy.dlp.v2.InspectDataSourceDetails.requested_options:type_name -> google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions - 172, // 65: google.privacy.dlp.v2.InspectDataSourceDetails.result:type_name -> google.privacy.dlp.v2.InspectDataSourceDetails.Result - 4, // 66: google.privacy.dlp.v2.InfoTypeDescription.supported_by:type_name -> google.privacy.dlp.v2.InfoTypeSupportedBy - 63, // 67: google.privacy.dlp.v2.InfoTypeDescription.categories:type_name -> google.privacy.dlp.v2.InfoTypeCategory - 11, // 68: google.privacy.dlp.v2.InfoTypeCategory.location_category:type_name -> google.privacy.dlp.v2.InfoTypeCategory.LocationCategory - 12, // 69: google.privacy.dlp.v2.InfoTypeCategory.industry_category:type_name -> google.privacy.dlp.v2.InfoTypeCategory.IndustryCategory - 13, // 70: google.privacy.dlp.v2.InfoTypeCategory.type_category:type_name -> google.privacy.dlp.v2.InfoTypeCategory.TypeCategory - 62, // 71: google.privacy.dlp.v2.ListInfoTypesResponse.info_types:type_name -> google.privacy.dlp.v2.InfoTypeDescription - 69, // 72: google.privacy.dlp.v2.RiskAnalysisJobConfig.privacy_metric:type_name -> google.privacy.dlp.v2.PrivacyMetric - 230, // 73: google.privacy.dlp.v2.RiskAnalysisJobConfig.source_table:type_name -> google.privacy.dlp.v2.BigQueryTable - 108, // 74: google.privacy.dlp.v2.RiskAnalysisJobConfig.actions:type_name -> google.privacy.dlp.v2.Action - 227, // 75: google.privacy.dlp.v2.QuasiId.field:type_name -> google.privacy.dlp.v2.FieldId - 221, // 76: google.privacy.dlp.v2.QuasiId.info_type:type_name -> google.privacy.dlp.v2.InfoType - 231, // 77: google.privacy.dlp.v2.QuasiId.inferred:type_name -> google.protobuf.Empty - 230, // 78: google.privacy.dlp.v2.StatisticalTable.table:type_name -> google.privacy.dlp.v2.BigQueryTable - 173, // 79: google.privacy.dlp.v2.StatisticalTable.quasi_ids:type_name -> google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField - 227, // 80: google.privacy.dlp.v2.StatisticalTable.relative_frequency:type_name -> google.privacy.dlp.v2.FieldId - 174, // 81: google.privacy.dlp.v2.PrivacyMetric.numerical_stats_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig - 175, // 82: google.privacy.dlp.v2.PrivacyMetric.categorical_stats_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig - 176, // 83: google.privacy.dlp.v2.PrivacyMetric.k_anonymity_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig - 177, // 84: google.privacy.dlp.v2.PrivacyMetric.l_diversity_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig - 178, // 85: google.privacy.dlp.v2.PrivacyMetric.k_map_estimation_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig - 179, // 86: google.privacy.dlp.v2.PrivacyMetric.delta_presence_estimation_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig - 69, // 87: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.requested_privacy_metric:type_name -> google.privacy.dlp.v2.PrivacyMetric - 230, // 88: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.requested_source_table:type_name -> google.privacy.dlp.v2.BigQueryTable - 183, // 89: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.numerical_stats_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult - 184, // 90: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.categorical_stats_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult - 185, // 91: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.k_anonymity_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult - 186, // 92: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.l_diversity_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult - 187, // 93: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.k_map_estimation_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult - 188, // 94: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.delta_presence_estimation_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult - 189, // 95: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.requested_options:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.RequestedRiskAnalysisOptions - 72, // 96: google.privacy.dlp.v2.ValueFrequency.value:type_name -> google.privacy.dlp.v2.Value - 228, // 97: google.privacy.dlp.v2.Value.timestamp_value:type_name -> google.protobuf.Timestamp - 232, // 98: google.privacy.dlp.v2.Value.time_value:type_name -> google.type.TimeOfDay - 233, // 99: google.privacy.dlp.v2.Value.date_value:type_name -> google.type.Date - 234, // 100: google.privacy.dlp.v2.Value.day_of_week_value:type_name -> google.type.DayOfWeek - 74, // 101: google.privacy.dlp.v2.QuoteInfo.date_time:type_name -> google.privacy.dlp.v2.DateTime - 233, // 102: google.privacy.dlp.v2.DateTime.date:type_name -> google.type.Date - 234, // 103: google.privacy.dlp.v2.DateTime.day_of_week:type_name -> google.type.DayOfWeek - 232, // 104: google.privacy.dlp.v2.DateTime.time:type_name -> google.type.TimeOfDay - 199, // 105: google.privacy.dlp.v2.DateTime.time_zone:type_name -> google.privacy.dlp.v2.DateTime.TimeZone - 95, // 106: google.privacy.dlp.v2.DeidentifyConfig.info_type_transformations:type_name -> google.privacy.dlp.v2.InfoTypeTransformations - 97, // 107: google.privacy.dlp.v2.DeidentifyConfig.record_transformations:type_name -> google.privacy.dlp.v2.RecordTransformations - 76, // 108: google.privacy.dlp.v2.DeidentifyConfig.transformation_error_handling:type_name -> google.privacy.dlp.v2.TransformationErrorHandling - 200, // 109: google.privacy.dlp.v2.TransformationErrorHandling.throw_error:type_name -> google.privacy.dlp.v2.TransformationErrorHandling.ThrowError - 201, // 110: google.privacy.dlp.v2.TransformationErrorHandling.leave_untransformed:type_name -> google.privacy.dlp.v2.TransformationErrorHandling.LeaveUntransformed - 81, // 111: google.privacy.dlp.v2.PrimitiveTransformation.replace_config:type_name -> google.privacy.dlp.v2.ReplaceValueConfig - 84, // 112: google.privacy.dlp.v2.PrimitiveTransformation.redact_config:type_name -> google.privacy.dlp.v2.RedactConfig - 86, // 113: google.privacy.dlp.v2.PrimitiveTransformation.character_mask_config:type_name -> google.privacy.dlp.v2.CharacterMaskConfig - 89, // 114: google.privacy.dlp.v2.PrimitiveTransformation.crypto_replace_ffx_fpe_config:type_name -> google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig - 87, // 115: google.privacy.dlp.v2.PrimitiveTransformation.fixed_size_bucketing_config:type_name -> google.privacy.dlp.v2.FixedSizeBucketingConfig - 88, // 116: google.privacy.dlp.v2.PrimitiveTransformation.bucketing_config:type_name -> google.privacy.dlp.v2.BucketingConfig - 83, // 117: google.privacy.dlp.v2.PrimitiveTransformation.replace_with_info_type_config:type_name -> google.privacy.dlp.v2.ReplaceWithInfoTypeConfig - 78, // 118: google.privacy.dlp.v2.PrimitiveTransformation.time_part_config:type_name -> google.privacy.dlp.v2.TimePartConfig - 79, // 119: google.privacy.dlp.v2.PrimitiveTransformation.crypto_hash_config:type_name -> google.privacy.dlp.v2.CryptoHashConfig - 94, // 120: google.privacy.dlp.v2.PrimitiveTransformation.date_shift_config:type_name -> google.privacy.dlp.v2.DateShiftConfig - 80, // 121: google.privacy.dlp.v2.PrimitiveTransformation.crypto_deterministic_config:type_name -> google.privacy.dlp.v2.CryptoDeterministicConfig - 82, // 122: google.privacy.dlp.v2.PrimitiveTransformation.replace_dictionary_config:type_name -> google.privacy.dlp.v2.ReplaceDictionaryConfig - 14, // 123: google.privacy.dlp.v2.TimePartConfig.part_to_extract:type_name -> google.privacy.dlp.v2.TimePartConfig.TimePart - 90, // 124: google.privacy.dlp.v2.CryptoHashConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey - 90, // 125: google.privacy.dlp.v2.CryptoDeterministicConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey - 221, // 126: google.privacy.dlp.v2.CryptoDeterministicConfig.surrogate_info_type:type_name -> google.privacy.dlp.v2.InfoType - 227, // 127: google.privacy.dlp.v2.CryptoDeterministicConfig.context:type_name -> google.privacy.dlp.v2.FieldId - 72, // 128: google.privacy.dlp.v2.ReplaceValueConfig.new_value:type_name -> google.privacy.dlp.v2.Value - 235, // 129: google.privacy.dlp.v2.ReplaceDictionaryConfig.word_list:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList - 15, // 130: google.privacy.dlp.v2.CharsToIgnore.common_characters_to_ignore:type_name -> google.privacy.dlp.v2.CharsToIgnore.CommonCharsToIgnore - 85, // 131: google.privacy.dlp.v2.CharacterMaskConfig.characters_to_ignore:type_name -> google.privacy.dlp.v2.CharsToIgnore - 72, // 132: google.privacy.dlp.v2.FixedSizeBucketingConfig.lower_bound:type_name -> google.privacy.dlp.v2.Value - 72, // 133: google.privacy.dlp.v2.FixedSizeBucketingConfig.upper_bound:type_name -> google.privacy.dlp.v2.Value - 202, // 134: google.privacy.dlp.v2.BucketingConfig.buckets:type_name -> google.privacy.dlp.v2.BucketingConfig.Bucket - 90, // 135: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey - 227, // 136: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.context:type_name -> google.privacy.dlp.v2.FieldId - 16, // 137: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.common_alphabet:type_name -> google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet - 221, // 138: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.surrogate_info_type:type_name -> google.privacy.dlp.v2.InfoType - 91, // 139: google.privacy.dlp.v2.CryptoKey.transient:type_name -> google.privacy.dlp.v2.TransientCryptoKey - 92, // 140: google.privacy.dlp.v2.CryptoKey.unwrapped:type_name -> google.privacy.dlp.v2.UnwrappedCryptoKey - 93, // 141: google.privacy.dlp.v2.CryptoKey.kms_wrapped:type_name -> google.privacy.dlp.v2.KmsWrappedCryptoKey - 227, // 142: google.privacy.dlp.v2.DateShiftConfig.context:type_name -> google.privacy.dlp.v2.FieldId - 90, // 143: google.privacy.dlp.v2.DateShiftConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey - 203, // 144: google.privacy.dlp.v2.InfoTypeTransformations.transformations:type_name -> google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation - 227, // 145: google.privacy.dlp.v2.FieldTransformation.fields:type_name -> google.privacy.dlp.v2.FieldId - 99, // 146: google.privacy.dlp.v2.FieldTransformation.condition:type_name -> google.privacy.dlp.v2.RecordCondition - 77, // 147: google.privacy.dlp.v2.FieldTransformation.primitive_transformation:type_name -> google.privacy.dlp.v2.PrimitiveTransformation - 95, // 148: google.privacy.dlp.v2.FieldTransformation.info_type_transformations:type_name -> google.privacy.dlp.v2.InfoTypeTransformations - 96, // 149: google.privacy.dlp.v2.RecordTransformations.field_transformations:type_name -> google.privacy.dlp.v2.FieldTransformation - 98, // 150: google.privacy.dlp.v2.RecordTransformations.record_suppressions:type_name -> google.privacy.dlp.v2.RecordSuppression - 99, // 151: google.privacy.dlp.v2.RecordSuppression.condition:type_name -> google.privacy.dlp.v2.RecordCondition - 206, // 152: google.privacy.dlp.v2.RecordCondition.expressions:type_name -> google.privacy.dlp.v2.RecordCondition.Expressions - 101, // 153: google.privacy.dlp.v2.TransformationOverview.transformation_summaries:type_name -> google.privacy.dlp.v2.TransformationSummary - 221, // 154: google.privacy.dlp.v2.TransformationSummary.info_type:type_name -> google.privacy.dlp.v2.InfoType - 227, // 155: google.privacy.dlp.v2.TransformationSummary.field:type_name -> google.privacy.dlp.v2.FieldId - 77, // 156: google.privacy.dlp.v2.TransformationSummary.transformation:type_name -> google.privacy.dlp.v2.PrimitiveTransformation - 96, // 157: google.privacy.dlp.v2.TransformationSummary.field_transformations:type_name -> google.privacy.dlp.v2.FieldTransformation - 98, // 158: google.privacy.dlp.v2.TransformationSummary.record_suppress:type_name -> google.privacy.dlp.v2.RecordSuppression - 207, // 159: google.privacy.dlp.v2.TransformationSummary.results:type_name -> google.privacy.dlp.v2.TransformationSummary.SummaryResult - 236, // 160: google.privacy.dlp.v2.Schedule.recurrence_period_duration:type_name -> google.protobuf.Duration - 228, // 161: google.privacy.dlp.v2.InspectTemplate.create_time:type_name -> google.protobuf.Timestamp - 228, // 162: google.privacy.dlp.v2.InspectTemplate.update_time:type_name -> google.protobuf.Timestamp - 32, // 163: google.privacy.dlp.v2.InspectTemplate.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig - 228, // 164: google.privacy.dlp.v2.DeidentifyTemplate.create_time:type_name -> google.protobuf.Timestamp - 228, // 165: google.privacy.dlp.v2.DeidentifyTemplate.update_time:type_name -> google.protobuf.Timestamp - 75, // 166: google.privacy.dlp.v2.DeidentifyTemplate.deidentify_config:type_name -> google.privacy.dlp.v2.DeidentifyConfig - 237, // 167: google.privacy.dlp.v2.Error.details:type_name -> google.rpc.Status - 228, // 168: google.privacy.dlp.v2.Error.timestamps:type_name -> google.protobuf.Timestamp - 123, // 169: google.privacy.dlp.v2.JobTrigger.inspect_job:type_name -> google.privacy.dlp.v2.InspectJobConfig - 208, // 170: google.privacy.dlp.v2.JobTrigger.triggers:type_name -> google.privacy.dlp.v2.JobTrigger.Trigger - 106, // 171: google.privacy.dlp.v2.JobTrigger.errors:type_name -> google.privacy.dlp.v2.Error - 228, // 172: google.privacy.dlp.v2.JobTrigger.create_time:type_name -> google.protobuf.Timestamp - 228, // 173: google.privacy.dlp.v2.JobTrigger.update_time:type_name -> google.protobuf.Timestamp - 228, // 174: google.privacy.dlp.v2.JobTrigger.last_run_time:type_name -> google.protobuf.Timestamp - 19, // 175: google.privacy.dlp.v2.JobTrigger.status:type_name -> google.privacy.dlp.v2.JobTrigger.Status - 209, // 176: google.privacy.dlp.v2.Action.save_findings:type_name -> google.privacy.dlp.v2.Action.SaveFindings - 210, // 177: google.privacy.dlp.v2.Action.pub_sub:type_name -> google.privacy.dlp.v2.Action.PublishToPubSub - 211, // 178: google.privacy.dlp.v2.Action.publish_summary_to_cscc:type_name -> google.privacy.dlp.v2.Action.PublishSummaryToCscc - 212, // 179: google.privacy.dlp.v2.Action.publish_findings_to_cloud_data_catalog:type_name -> google.privacy.dlp.v2.Action.PublishFindingsToCloudDataCatalog - 213, // 180: google.privacy.dlp.v2.Action.job_notification_emails:type_name -> google.privacy.dlp.v2.Action.JobNotificationEmails - 214, // 181: google.privacy.dlp.v2.Action.publish_to_stackdriver:type_name -> google.privacy.dlp.v2.Action.PublishToStackdriver - 104, // 182: google.privacy.dlp.v2.CreateInspectTemplateRequest.inspect_template:type_name -> google.privacy.dlp.v2.InspectTemplate - 104, // 183: google.privacy.dlp.v2.UpdateInspectTemplateRequest.inspect_template:type_name -> google.privacy.dlp.v2.InspectTemplate - 238, // 184: google.privacy.dlp.v2.UpdateInspectTemplateRequest.update_mask:type_name -> google.protobuf.FieldMask - 104, // 185: google.privacy.dlp.v2.ListInspectTemplatesResponse.inspect_templates:type_name -> google.privacy.dlp.v2.InspectTemplate - 107, // 186: google.privacy.dlp.v2.CreateJobTriggerRequest.job_trigger:type_name -> google.privacy.dlp.v2.JobTrigger - 107, // 187: google.privacy.dlp.v2.UpdateJobTriggerRequest.job_trigger:type_name -> google.privacy.dlp.v2.JobTrigger - 238, // 188: google.privacy.dlp.v2.UpdateJobTriggerRequest.update_mask:type_name -> google.protobuf.FieldMask - 123, // 189: google.privacy.dlp.v2.CreateDlpJobRequest.inspect_job:type_name -> google.privacy.dlp.v2.InspectJobConfig - 66, // 190: google.privacy.dlp.v2.CreateDlpJobRequest.risk_job:type_name -> google.privacy.dlp.v2.RiskAnalysisJobConfig - 5, // 191: google.privacy.dlp.v2.ListJobTriggersRequest.type:type_name -> google.privacy.dlp.v2.DlpJobType - 107, // 192: google.privacy.dlp.v2.ListJobTriggersResponse.job_triggers:type_name -> google.privacy.dlp.v2.JobTrigger - 239, // 193: google.privacy.dlp.v2.InspectJobConfig.storage_config:type_name -> google.privacy.dlp.v2.StorageConfig - 32, // 194: google.privacy.dlp.v2.InspectJobConfig.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig - 108, // 195: google.privacy.dlp.v2.InspectJobConfig.actions:type_name -> google.privacy.dlp.v2.Action - 215, // 196: google.privacy.dlp.v2.DataProfileAction.export_data:type_name -> google.privacy.dlp.v2.DataProfileAction.Export - 216, // 197: google.privacy.dlp.v2.DataProfileAction.pub_sub_notification:type_name -> google.privacy.dlp.v2.DataProfileAction.PubSubNotification - 126, // 198: google.privacy.dlp.v2.DataProfileJobConfig.location:type_name -> google.privacy.dlp.v2.DataProfileLocation - 124, // 199: google.privacy.dlp.v2.DataProfileJobConfig.data_profile_actions:type_name -> google.privacy.dlp.v2.DataProfileAction - 5, // 200: google.privacy.dlp.v2.DlpJob.type:type_name -> google.privacy.dlp.v2.DlpJobType - 22, // 201: google.privacy.dlp.v2.DlpJob.state:type_name -> google.privacy.dlp.v2.DlpJob.JobState - 70, // 202: google.privacy.dlp.v2.DlpJob.risk_details:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails - 60, // 203: google.privacy.dlp.v2.DlpJob.inspect_details:type_name -> google.privacy.dlp.v2.InspectDataSourceDetails - 228, // 204: google.privacy.dlp.v2.DlpJob.create_time:type_name -> google.protobuf.Timestamp - 228, // 205: google.privacy.dlp.v2.DlpJob.start_time:type_name -> google.protobuf.Timestamp - 228, // 206: google.privacy.dlp.v2.DlpJob.end_time:type_name -> google.protobuf.Timestamp - 106, // 207: google.privacy.dlp.v2.DlpJob.errors:type_name -> google.privacy.dlp.v2.Error - 5, // 208: google.privacy.dlp.v2.ListDlpJobsRequest.type:type_name -> google.privacy.dlp.v2.DlpJobType - 127, // 209: google.privacy.dlp.v2.ListDlpJobsResponse.jobs:type_name -> google.privacy.dlp.v2.DlpJob - 105, // 210: google.privacy.dlp.v2.CreateDeidentifyTemplateRequest.deidentify_template:type_name -> google.privacy.dlp.v2.DeidentifyTemplate - 105, // 211: google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest.deidentify_template:type_name -> google.privacy.dlp.v2.DeidentifyTemplate - 238, // 212: google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest.update_mask:type_name -> google.protobuf.FieldMask - 105, // 213: google.privacy.dlp.v2.ListDeidentifyTemplatesResponse.deidentify_templates:type_name -> google.privacy.dlp.v2.DeidentifyTemplate - 240, // 214: google.privacy.dlp.v2.LargeCustomDictionaryConfig.output_path:type_name -> google.privacy.dlp.v2.CloudStoragePath - 241, // 215: google.privacy.dlp.v2.LargeCustomDictionaryConfig.cloud_storage_file_set:type_name -> google.privacy.dlp.v2.CloudStorageFileSet - 242, // 216: google.privacy.dlp.v2.LargeCustomDictionaryConfig.big_query_field:type_name -> google.privacy.dlp.v2.BigQueryField - 140, // 217: google.privacy.dlp.v2.StoredInfoTypeConfig.large_custom_dictionary:type_name -> google.privacy.dlp.v2.LargeCustomDictionaryConfig - 222, // 218: google.privacy.dlp.v2.StoredInfoTypeConfig.dictionary:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary - 223, // 219: google.privacy.dlp.v2.StoredInfoTypeConfig.regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex - 141, // 220: google.privacy.dlp.v2.StoredInfoTypeStats.large_custom_dictionary:type_name -> google.privacy.dlp.v2.LargeCustomDictionaryStats - 142, // 221: google.privacy.dlp.v2.StoredInfoTypeVersion.config:type_name -> google.privacy.dlp.v2.StoredInfoTypeConfig - 228, // 222: google.privacy.dlp.v2.StoredInfoTypeVersion.create_time:type_name -> google.protobuf.Timestamp - 6, // 223: google.privacy.dlp.v2.StoredInfoTypeVersion.state:type_name -> google.privacy.dlp.v2.StoredInfoTypeState - 106, // 224: google.privacy.dlp.v2.StoredInfoTypeVersion.errors:type_name -> google.privacy.dlp.v2.Error - 143, // 225: google.privacy.dlp.v2.StoredInfoTypeVersion.stats:type_name -> google.privacy.dlp.v2.StoredInfoTypeStats - 144, // 226: google.privacy.dlp.v2.StoredInfoType.current_version:type_name -> google.privacy.dlp.v2.StoredInfoTypeVersion - 144, // 227: google.privacy.dlp.v2.StoredInfoType.pending_versions:type_name -> google.privacy.dlp.v2.StoredInfoTypeVersion - 142, // 228: google.privacy.dlp.v2.CreateStoredInfoTypeRequest.config:type_name -> google.privacy.dlp.v2.StoredInfoTypeConfig - 142, // 229: google.privacy.dlp.v2.UpdateStoredInfoTypeRequest.config:type_name -> google.privacy.dlp.v2.StoredInfoTypeConfig - 238, // 230: google.privacy.dlp.v2.UpdateStoredInfoTypeRequest.update_mask:type_name -> google.protobuf.FieldMask - 145, // 231: google.privacy.dlp.v2.ListStoredInfoTypesResponse.stored_info_types:type_name -> google.privacy.dlp.v2.StoredInfoType - 154, // 232: google.privacy.dlp.v2.HybridInspectJobTriggerRequest.hybrid_item:type_name -> google.privacy.dlp.v2.HybridContentItem - 154, // 233: google.privacy.dlp.v2.HybridInspectDlpJobRequest.hybrid_item:type_name -> google.privacy.dlp.v2.HybridContentItem - 34, // 234: google.privacy.dlp.v2.HybridContentItem.item:type_name -> google.privacy.dlp.v2.ContentItem - 155, // 235: google.privacy.dlp.v2.HybridContentItem.finding_details:type_name -> google.privacy.dlp.v2.HybridFindingDetails - 45, // 236: google.privacy.dlp.v2.HybridFindingDetails.container_details:type_name -> google.privacy.dlp.v2.Container - 243, // 237: google.privacy.dlp.v2.HybridFindingDetails.table_options:type_name -> google.privacy.dlp.v2.TableOptions - 217, // 238: google.privacy.dlp.v2.HybridFindingDetails.labels:type_name -> google.privacy.dlp.v2.HybridFindingDetails.LabelsEntry - 23, // 239: google.privacy.dlp.v2.SensitivityScore.score:type_name -> google.privacy.dlp.v2.SensitivityScore.SensitivityScoreLevel - 24, // 240: google.privacy.dlp.v2.DataRiskLevel.score:type_name -> google.privacy.dlp.v2.DataRiskLevel.DataRiskLevelScore - 32, // 241: google.privacy.dlp.v2.DataProfileConfigSnapshot.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig - 125, // 242: google.privacy.dlp.v2.DataProfileConfigSnapshot.data_profile_job:type_name -> google.privacy.dlp.v2.DataProfileJobConfig - 161, // 243: google.privacy.dlp.v2.TableDataProfile.profile_status:type_name -> google.privacy.dlp.v2.ProfileStatus - 25, // 244: google.privacy.dlp.v2.TableDataProfile.state:type_name -> google.privacy.dlp.v2.TableDataProfile.State - 157, // 245: google.privacy.dlp.v2.TableDataProfile.sensitivity_score:type_name -> google.privacy.dlp.v2.SensitivityScore - 158, // 246: google.privacy.dlp.v2.TableDataProfile.data_risk_level:type_name -> google.privacy.dlp.v2.DataRiskLevel - 162, // 247: google.privacy.dlp.v2.TableDataProfile.predicted_info_types:type_name -> google.privacy.dlp.v2.InfoTypeSummary - 163, // 248: google.privacy.dlp.v2.TableDataProfile.other_info_types:type_name -> google.privacy.dlp.v2.OtherInfoTypeSummary - 159, // 249: google.privacy.dlp.v2.TableDataProfile.config_snapshot:type_name -> google.privacy.dlp.v2.DataProfileConfigSnapshot - 228, // 250: google.privacy.dlp.v2.TableDataProfile.last_modified_time:type_name -> google.protobuf.Timestamp - 228, // 251: google.privacy.dlp.v2.TableDataProfile.expiration_time:type_name -> google.protobuf.Timestamp - 8, // 252: google.privacy.dlp.v2.TableDataProfile.encryption_status:type_name -> google.privacy.dlp.v2.EncryptionStatus - 7, // 253: google.privacy.dlp.v2.TableDataProfile.resource_visibility:type_name -> google.privacy.dlp.v2.ResourceVisibility - 228, // 254: google.privacy.dlp.v2.TableDataProfile.profile_last_generated:type_name -> google.protobuf.Timestamp - 218, // 255: google.privacy.dlp.v2.TableDataProfile.resource_labels:type_name -> google.privacy.dlp.v2.TableDataProfile.ResourceLabelsEntry - 228, // 256: google.privacy.dlp.v2.TableDataProfile.create_time:type_name -> google.protobuf.Timestamp - 237, // 257: google.privacy.dlp.v2.ProfileStatus.status:type_name -> google.rpc.Status - 228, // 258: google.privacy.dlp.v2.ProfileStatus.timestamp:type_name -> google.protobuf.Timestamp - 221, // 259: google.privacy.dlp.v2.InfoTypeSummary.info_type:type_name -> google.privacy.dlp.v2.InfoType - 221, // 260: google.privacy.dlp.v2.OtherInfoTypeSummary.info_type:type_name -> google.privacy.dlp.v2.InfoType - 220, // 261: google.privacy.dlp.v2.DataProfilePubSubCondition.expressions:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions - 160, // 262: google.privacy.dlp.v2.DataProfilePubSubMessage.profile:type_name -> google.privacy.dlp.v2.TableDataProfile - 20, // 263: google.privacy.dlp.v2.DataProfilePubSubMessage.event:type_name -> google.privacy.dlp.v2.DataProfileAction.EventType - 167, // 264: google.privacy.dlp.v2.InspectConfig.FindingLimits.max_findings_per_info_type:type_name -> google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit - 221, // 265: google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit.info_type:type_name -> google.privacy.dlp.v2.InfoType - 72, // 266: google.privacy.dlp.v2.Table.Row.values:type_name -> google.privacy.dlp.v2.Value - 221, // 267: google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig.info_type:type_name -> google.privacy.dlp.v2.InfoType - 50, // 268: google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig.redaction_color:type_name -> google.privacy.dlp.v2.Color - 104, // 269: google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions.snapshot_inspect_template:type_name -> google.privacy.dlp.v2.InspectTemplate - 123, // 270: google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions.job_config:type_name -> google.privacy.dlp.v2.InspectJobConfig - 59, // 271: google.privacy.dlp.v2.InspectDataSourceDetails.Result.info_type_stats:type_name -> google.privacy.dlp.v2.InfoTypeStats - 61, // 272: google.privacy.dlp.v2.InspectDataSourceDetails.Result.hybrid_stats:type_name -> google.privacy.dlp.v2.HybridInspectStatistics - 227, // 273: google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField.field:type_name -> google.privacy.dlp.v2.FieldId - 227, // 274: google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig.field:type_name -> google.privacy.dlp.v2.FieldId - 227, // 275: google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig.field:type_name -> google.privacy.dlp.v2.FieldId - 227, // 276: google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig.quasi_ids:type_name -> google.privacy.dlp.v2.FieldId - 244, // 277: google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig.entity_id:type_name -> google.privacy.dlp.v2.EntityId - 227, // 278: google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig.quasi_ids:type_name -> google.privacy.dlp.v2.FieldId - 227, // 279: google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig.sensitive_attribute:type_name -> google.privacy.dlp.v2.FieldId - 180, // 280: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.quasi_ids:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField - 181, // 281: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.auxiliary_tables:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable - 67, // 282: google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig.quasi_ids:type_name -> google.privacy.dlp.v2.QuasiId - 68, // 283: google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig.auxiliary_tables:type_name -> google.privacy.dlp.v2.StatisticalTable - 227, // 284: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField.field:type_name -> google.privacy.dlp.v2.FieldId - 221, // 285: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField.info_type:type_name -> google.privacy.dlp.v2.InfoType - 231, // 286: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField.inferred:type_name -> google.protobuf.Empty - 230, // 287: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.table:type_name -> google.privacy.dlp.v2.BigQueryTable - 182, // 288: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.quasi_ids:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField - 227, // 289: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.relative_frequency:type_name -> google.privacy.dlp.v2.FieldId - 227, // 290: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField.field:type_name -> google.privacy.dlp.v2.FieldId - 72, // 291: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult.min_value:type_name -> google.privacy.dlp.v2.Value - 72, // 292: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult.max_value:type_name -> google.privacy.dlp.v2.Value - 72, // 293: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult.quantile_values:type_name -> google.privacy.dlp.v2.Value - 190, // 294: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.value_frequency_histogram_buckets:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket - 192, // 295: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.equivalence_class_histogram_buckets:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket - 194, // 296: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.sensitive_value_frequency_histogram_buckets:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket - 196, // 297: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.k_map_estimation_histogram:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket - 198, // 298: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.delta_presence_estimation_histogram:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket - 66, // 299: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.RequestedRiskAnalysisOptions.job_config:type_name -> google.privacy.dlp.v2.RiskAnalysisJobConfig - 71, // 300: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.ValueFrequency - 72, // 301: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value - 191, // 302: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass - 72, // 303: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value - 71, // 304: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass.top_sensitive_values:type_name -> google.privacy.dlp.v2.ValueFrequency - 193, // 305: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass - 72, // 306: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value - 195, // 307: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues - 72, // 308: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value - 197, // 309: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues - 72, // 310: google.privacy.dlp.v2.BucketingConfig.Bucket.min:type_name -> google.privacy.dlp.v2.Value - 72, // 311: google.privacy.dlp.v2.BucketingConfig.Bucket.max:type_name -> google.privacy.dlp.v2.Value - 72, // 312: google.privacy.dlp.v2.BucketingConfig.Bucket.replacement_value:type_name -> google.privacy.dlp.v2.Value - 221, // 313: google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation.info_types:type_name -> google.privacy.dlp.v2.InfoType - 77, // 314: google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation.primitive_transformation:type_name -> google.privacy.dlp.v2.PrimitiveTransformation - 227, // 315: google.privacy.dlp.v2.RecordCondition.Condition.field:type_name -> google.privacy.dlp.v2.FieldId - 0, // 316: google.privacy.dlp.v2.RecordCondition.Condition.operator:type_name -> google.privacy.dlp.v2.RelationalOperator - 72, // 317: google.privacy.dlp.v2.RecordCondition.Condition.value:type_name -> google.privacy.dlp.v2.Value - 204, // 318: google.privacy.dlp.v2.RecordCondition.Conditions.conditions:type_name -> google.privacy.dlp.v2.RecordCondition.Condition - 17, // 319: google.privacy.dlp.v2.RecordCondition.Expressions.logical_operator:type_name -> google.privacy.dlp.v2.RecordCondition.Expressions.LogicalOperator - 205, // 320: google.privacy.dlp.v2.RecordCondition.Expressions.conditions:type_name -> google.privacy.dlp.v2.RecordCondition.Conditions - 18, // 321: google.privacy.dlp.v2.TransformationSummary.SummaryResult.code:type_name -> google.privacy.dlp.v2.TransformationSummary.TransformationResultCode - 102, // 322: google.privacy.dlp.v2.JobTrigger.Trigger.schedule:type_name -> google.privacy.dlp.v2.Schedule - 103, // 323: google.privacy.dlp.v2.JobTrigger.Trigger.manual:type_name -> google.privacy.dlp.v2.Manual - 58, // 324: google.privacy.dlp.v2.Action.SaveFindings.output_config:type_name -> google.privacy.dlp.v2.OutputStorageConfig - 230, // 325: google.privacy.dlp.v2.DataProfileAction.Export.profile_table:type_name -> google.privacy.dlp.v2.BigQueryTable - 20, // 326: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.event:type_name -> google.privacy.dlp.v2.DataProfileAction.EventType - 164, // 327: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.pubsub_condition:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition - 21, // 328: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.detail_of_message:type_name -> google.privacy.dlp.v2.DataProfileAction.PubSubNotification.DetailLevel - 26, // 329: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition.minimum_risk_score:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.ProfileScoreBucket - 26, // 330: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition.minimum_sensitivity_score:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.ProfileScoreBucket - 27, // 331: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.logical_operator:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.PubSubLogicalOperator - 219, // 332: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.conditions:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition - 56, // 333: google.privacy.dlp.v2.DlpService.InspectContent:input_type -> google.privacy.dlp.v2.InspectContentRequest - 49, // 334: google.privacy.dlp.v2.DlpService.RedactImage:input_type -> google.privacy.dlp.v2.RedactImageRequest - 52, // 335: google.privacy.dlp.v2.DlpService.DeidentifyContent:input_type -> google.privacy.dlp.v2.DeidentifyContentRequest - 54, // 336: google.privacy.dlp.v2.DlpService.ReidentifyContent:input_type -> google.privacy.dlp.v2.ReidentifyContentRequest - 64, // 337: google.privacy.dlp.v2.DlpService.ListInfoTypes:input_type -> google.privacy.dlp.v2.ListInfoTypesRequest - 109, // 338: google.privacy.dlp.v2.DlpService.CreateInspectTemplate:input_type -> google.privacy.dlp.v2.CreateInspectTemplateRequest - 110, // 339: google.privacy.dlp.v2.DlpService.UpdateInspectTemplate:input_type -> google.privacy.dlp.v2.UpdateInspectTemplateRequest - 111, // 340: google.privacy.dlp.v2.DlpService.GetInspectTemplate:input_type -> google.privacy.dlp.v2.GetInspectTemplateRequest - 112, // 341: google.privacy.dlp.v2.DlpService.ListInspectTemplates:input_type -> google.privacy.dlp.v2.ListInspectTemplatesRequest - 114, // 342: google.privacy.dlp.v2.DlpService.DeleteInspectTemplate:input_type -> google.privacy.dlp.v2.DeleteInspectTemplateRequest - 134, // 343: google.privacy.dlp.v2.DlpService.CreateDeidentifyTemplate:input_type -> google.privacy.dlp.v2.CreateDeidentifyTemplateRequest - 135, // 344: google.privacy.dlp.v2.DlpService.UpdateDeidentifyTemplate:input_type -> google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest - 136, // 345: google.privacy.dlp.v2.DlpService.GetDeidentifyTemplate:input_type -> google.privacy.dlp.v2.GetDeidentifyTemplateRequest - 137, // 346: google.privacy.dlp.v2.DlpService.ListDeidentifyTemplates:input_type -> google.privacy.dlp.v2.ListDeidentifyTemplatesRequest - 139, // 347: google.privacy.dlp.v2.DlpService.DeleteDeidentifyTemplate:input_type -> google.privacy.dlp.v2.DeleteDeidentifyTemplateRequest - 115, // 348: google.privacy.dlp.v2.DlpService.CreateJobTrigger:input_type -> google.privacy.dlp.v2.CreateJobTriggerRequest - 117, // 349: google.privacy.dlp.v2.DlpService.UpdateJobTrigger:input_type -> google.privacy.dlp.v2.UpdateJobTriggerRequest - 152, // 350: google.privacy.dlp.v2.DlpService.HybridInspectJobTrigger:input_type -> google.privacy.dlp.v2.HybridInspectJobTriggerRequest - 118, // 351: google.privacy.dlp.v2.DlpService.GetJobTrigger:input_type -> google.privacy.dlp.v2.GetJobTriggerRequest - 120, // 352: google.privacy.dlp.v2.DlpService.ListJobTriggers:input_type -> google.privacy.dlp.v2.ListJobTriggersRequest - 122, // 353: google.privacy.dlp.v2.DlpService.DeleteJobTrigger:input_type -> google.privacy.dlp.v2.DeleteJobTriggerRequest - 116, // 354: google.privacy.dlp.v2.DlpService.ActivateJobTrigger:input_type -> google.privacy.dlp.v2.ActivateJobTriggerRequest - 119, // 355: google.privacy.dlp.v2.DlpService.CreateDlpJob:input_type -> google.privacy.dlp.v2.CreateDlpJobRequest - 129, // 356: google.privacy.dlp.v2.DlpService.ListDlpJobs:input_type -> google.privacy.dlp.v2.ListDlpJobsRequest - 128, // 357: google.privacy.dlp.v2.DlpService.GetDlpJob:input_type -> google.privacy.dlp.v2.GetDlpJobRequest - 133, // 358: google.privacy.dlp.v2.DlpService.DeleteDlpJob:input_type -> google.privacy.dlp.v2.DeleteDlpJobRequest - 131, // 359: google.privacy.dlp.v2.DlpService.CancelDlpJob:input_type -> google.privacy.dlp.v2.CancelDlpJobRequest - 146, // 360: google.privacy.dlp.v2.DlpService.CreateStoredInfoType:input_type -> google.privacy.dlp.v2.CreateStoredInfoTypeRequest - 147, // 361: google.privacy.dlp.v2.DlpService.UpdateStoredInfoType:input_type -> google.privacy.dlp.v2.UpdateStoredInfoTypeRequest - 148, // 362: google.privacy.dlp.v2.DlpService.GetStoredInfoType:input_type -> google.privacy.dlp.v2.GetStoredInfoTypeRequest - 149, // 363: google.privacy.dlp.v2.DlpService.ListStoredInfoTypes:input_type -> google.privacy.dlp.v2.ListStoredInfoTypesRequest - 151, // 364: google.privacy.dlp.v2.DlpService.DeleteStoredInfoType:input_type -> google.privacy.dlp.v2.DeleteStoredInfoTypeRequest - 153, // 365: google.privacy.dlp.v2.DlpService.HybridInspectDlpJob:input_type -> google.privacy.dlp.v2.HybridInspectDlpJobRequest - 132, // 366: google.privacy.dlp.v2.DlpService.FinishDlpJob:input_type -> google.privacy.dlp.v2.FinishDlpJobRequest - 57, // 367: google.privacy.dlp.v2.DlpService.InspectContent:output_type -> google.privacy.dlp.v2.InspectContentResponse - 51, // 368: google.privacy.dlp.v2.DlpService.RedactImage:output_type -> google.privacy.dlp.v2.RedactImageResponse - 53, // 369: google.privacy.dlp.v2.DlpService.DeidentifyContent:output_type -> google.privacy.dlp.v2.DeidentifyContentResponse - 55, // 370: google.privacy.dlp.v2.DlpService.ReidentifyContent:output_type -> google.privacy.dlp.v2.ReidentifyContentResponse - 65, // 371: google.privacy.dlp.v2.DlpService.ListInfoTypes:output_type -> google.privacy.dlp.v2.ListInfoTypesResponse - 104, // 372: google.privacy.dlp.v2.DlpService.CreateInspectTemplate:output_type -> google.privacy.dlp.v2.InspectTemplate - 104, // 373: google.privacy.dlp.v2.DlpService.UpdateInspectTemplate:output_type -> google.privacy.dlp.v2.InspectTemplate - 104, // 374: google.privacy.dlp.v2.DlpService.GetInspectTemplate:output_type -> google.privacy.dlp.v2.InspectTemplate - 113, // 375: google.privacy.dlp.v2.DlpService.ListInspectTemplates:output_type -> google.privacy.dlp.v2.ListInspectTemplatesResponse - 231, // 376: google.privacy.dlp.v2.DlpService.DeleteInspectTemplate:output_type -> google.protobuf.Empty - 105, // 377: google.privacy.dlp.v2.DlpService.CreateDeidentifyTemplate:output_type -> google.privacy.dlp.v2.DeidentifyTemplate - 105, // 378: google.privacy.dlp.v2.DlpService.UpdateDeidentifyTemplate:output_type -> google.privacy.dlp.v2.DeidentifyTemplate - 105, // 379: google.privacy.dlp.v2.DlpService.GetDeidentifyTemplate:output_type -> google.privacy.dlp.v2.DeidentifyTemplate - 138, // 380: google.privacy.dlp.v2.DlpService.ListDeidentifyTemplates:output_type -> google.privacy.dlp.v2.ListDeidentifyTemplatesResponse - 231, // 381: google.privacy.dlp.v2.DlpService.DeleteDeidentifyTemplate:output_type -> google.protobuf.Empty - 107, // 382: google.privacy.dlp.v2.DlpService.CreateJobTrigger:output_type -> google.privacy.dlp.v2.JobTrigger - 107, // 383: google.privacy.dlp.v2.DlpService.UpdateJobTrigger:output_type -> google.privacy.dlp.v2.JobTrigger - 156, // 384: google.privacy.dlp.v2.DlpService.HybridInspectJobTrigger:output_type -> google.privacy.dlp.v2.HybridInspectResponse - 107, // 385: google.privacy.dlp.v2.DlpService.GetJobTrigger:output_type -> google.privacy.dlp.v2.JobTrigger - 121, // 386: google.privacy.dlp.v2.DlpService.ListJobTriggers:output_type -> google.privacy.dlp.v2.ListJobTriggersResponse - 231, // 387: google.privacy.dlp.v2.DlpService.DeleteJobTrigger:output_type -> google.protobuf.Empty - 127, // 388: google.privacy.dlp.v2.DlpService.ActivateJobTrigger:output_type -> google.privacy.dlp.v2.DlpJob - 127, // 389: google.privacy.dlp.v2.DlpService.CreateDlpJob:output_type -> google.privacy.dlp.v2.DlpJob - 130, // 390: google.privacy.dlp.v2.DlpService.ListDlpJobs:output_type -> google.privacy.dlp.v2.ListDlpJobsResponse - 127, // 391: google.privacy.dlp.v2.DlpService.GetDlpJob:output_type -> google.privacy.dlp.v2.DlpJob - 231, // 392: google.privacy.dlp.v2.DlpService.DeleteDlpJob:output_type -> google.protobuf.Empty - 231, // 393: google.privacy.dlp.v2.DlpService.CancelDlpJob:output_type -> google.protobuf.Empty - 145, // 394: google.privacy.dlp.v2.DlpService.CreateStoredInfoType:output_type -> google.privacy.dlp.v2.StoredInfoType - 145, // 395: google.privacy.dlp.v2.DlpService.UpdateStoredInfoType:output_type -> google.privacy.dlp.v2.StoredInfoType - 145, // 396: google.privacy.dlp.v2.DlpService.GetStoredInfoType:output_type -> google.privacy.dlp.v2.StoredInfoType - 150, // 397: google.privacy.dlp.v2.DlpService.ListStoredInfoTypes:output_type -> google.privacy.dlp.v2.ListStoredInfoTypesResponse - 231, // 398: google.privacy.dlp.v2.DlpService.DeleteStoredInfoType:output_type -> google.protobuf.Empty - 156, // 399: google.privacy.dlp.v2.DlpService.HybridInspectDlpJob:output_type -> google.privacy.dlp.v2.HybridInspectResponse - 231, // 400: google.privacy.dlp.v2.DlpService.FinishDlpJob:output_type -> google.protobuf.Empty - 367, // [367:401] is the sub-list for method output_type - 333, // [333:367] is the sub-list for method input_type - 333, // [333:333] is the sub-list for extension type_name - 333, // [333:333] is the sub-list for extension extendee - 0, // [0:333] is the sub-list for field type_name + 236, // 0: google.privacy.dlp.v2.ExcludeInfoTypes.info_types:type_name -> google.privacy.dlp.v2.InfoType + 237, // 1: google.privacy.dlp.v2.ExclusionRule.dictionary:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary + 238, // 2: google.privacy.dlp.v2.ExclusionRule.regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex + 30, // 3: google.privacy.dlp.v2.ExclusionRule.exclude_info_types:type_name -> google.privacy.dlp.v2.ExcludeInfoTypes + 4, // 4: google.privacy.dlp.v2.ExclusionRule.matching_type:type_name -> google.privacy.dlp.v2.MatchingType + 239, // 5: google.privacy.dlp.v2.InspectionRule.hotword_rule:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule + 31, // 6: google.privacy.dlp.v2.InspectionRule.exclusion_rule:type_name -> google.privacy.dlp.v2.ExclusionRule + 236, // 7: google.privacy.dlp.v2.InspectionRuleSet.info_types:type_name -> google.privacy.dlp.v2.InfoType + 32, // 8: google.privacy.dlp.v2.InspectionRuleSet.rules:type_name -> google.privacy.dlp.v2.InspectionRule + 236, // 9: google.privacy.dlp.v2.InspectConfig.info_types:type_name -> google.privacy.dlp.v2.InfoType + 240, // 10: google.privacy.dlp.v2.InspectConfig.min_likelihood:type_name -> google.privacy.dlp.v2.Likelihood + 176, // 11: google.privacy.dlp.v2.InspectConfig.limits:type_name -> google.privacy.dlp.v2.InspectConfig.FindingLimits + 241, // 12: google.privacy.dlp.v2.InspectConfig.custom_info_types:type_name -> google.privacy.dlp.v2.CustomInfoType + 5, // 13: google.privacy.dlp.v2.InspectConfig.content_options:type_name -> google.privacy.dlp.v2.ContentOption + 33, // 14: google.privacy.dlp.v2.InspectConfig.rule_set:type_name -> google.privacy.dlp.v2.InspectionRuleSet + 12, // 15: google.privacy.dlp.v2.ByteContentItem.type:type_name -> google.privacy.dlp.v2.ByteContentItem.BytesType + 37, // 16: google.privacy.dlp.v2.ContentItem.table:type_name -> google.privacy.dlp.v2.Table + 35, // 17: google.privacy.dlp.v2.ContentItem.byte_item:type_name -> google.privacy.dlp.v2.ByteContentItem + 242, // 18: google.privacy.dlp.v2.Table.headers:type_name -> google.privacy.dlp.v2.FieldId + 178, // 19: google.privacy.dlp.v2.Table.rows:type_name -> google.privacy.dlp.v2.Table.Row + 39, // 20: google.privacy.dlp.v2.InspectResult.findings:type_name -> google.privacy.dlp.v2.Finding + 236, // 21: google.privacy.dlp.v2.Finding.info_type:type_name -> google.privacy.dlp.v2.InfoType + 240, // 22: google.privacy.dlp.v2.Finding.likelihood:type_name -> google.privacy.dlp.v2.Likelihood + 40, // 23: google.privacy.dlp.v2.Finding.location:type_name -> google.privacy.dlp.v2.Location + 243, // 24: google.privacy.dlp.v2.Finding.create_time:type_name -> google.protobuf.Timestamp + 76, // 25: google.privacy.dlp.v2.Finding.quote_info:type_name -> google.privacy.dlp.v2.QuoteInfo + 179, // 26: google.privacy.dlp.v2.Finding.labels:type_name -> google.privacy.dlp.v2.Finding.LabelsEntry + 243, // 27: google.privacy.dlp.v2.Finding.job_create_time:type_name -> google.protobuf.Timestamp + 48, // 28: google.privacy.dlp.v2.Location.byte_range:type_name -> google.privacy.dlp.v2.Range + 48, // 29: google.privacy.dlp.v2.Location.codepoint_range:type_name -> google.privacy.dlp.v2.Range + 41, // 30: google.privacy.dlp.v2.Location.content_locations:type_name -> google.privacy.dlp.v2.ContentLocation + 47, // 31: google.privacy.dlp.v2.Location.container:type_name -> google.privacy.dlp.v2.Container + 45, // 32: google.privacy.dlp.v2.ContentLocation.record_location:type_name -> google.privacy.dlp.v2.RecordLocation + 49, // 33: google.privacy.dlp.v2.ContentLocation.image_location:type_name -> google.privacy.dlp.v2.ImageLocation + 44, // 34: google.privacy.dlp.v2.ContentLocation.document_location:type_name -> google.privacy.dlp.v2.DocumentLocation + 42, // 35: google.privacy.dlp.v2.ContentLocation.metadata_location:type_name -> google.privacy.dlp.v2.MetadataLocation + 243, // 36: google.privacy.dlp.v2.ContentLocation.container_timestamp:type_name -> google.protobuf.Timestamp + 6, // 37: google.privacy.dlp.v2.MetadataLocation.type:type_name -> google.privacy.dlp.v2.MetadataType + 43, // 38: google.privacy.dlp.v2.MetadataLocation.storage_label:type_name -> google.privacy.dlp.v2.StorageMetadataLabel + 244, // 39: google.privacy.dlp.v2.RecordLocation.record_key:type_name -> google.privacy.dlp.v2.RecordKey + 242, // 40: google.privacy.dlp.v2.RecordLocation.field_id:type_name -> google.privacy.dlp.v2.FieldId + 46, // 41: google.privacy.dlp.v2.RecordLocation.table_location:type_name -> google.privacy.dlp.v2.TableLocation + 243, // 42: google.privacy.dlp.v2.Container.update_time:type_name -> google.protobuf.Timestamp + 50, // 43: google.privacy.dlp.v2.ImageLocation.bounding_boxes:type_name -> google.privacy.dlp.v2.BoundingBox + 34, // 44: google.privacy.dlp.v2.RedactImageRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig + 180, // 45: google.privacy.dlp.v2.RedactImageRequest.image_redaction_configs:type_name -> google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig + 35, // 46: google.privacy.dlp.v2.RedactImageRequest.byte_item:type_name -> google.privacy.dlp.v2.ByteContentItem + 38, // 47: google.privacy.dlp.v2.RedactImageResponse.inspect_result:type_name -> google.privacy.dlp.v2.InspectResult + 78, // 48: google.privacy.dlp.v2.DeidentifyContentRequest.deidentify_config:type_name -> google.privacy.dlp.v2.DeidentifyConfig + 34, // 49: google.privacy.dlp.v2.DeidentifyContentRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig + 36, // 50: google.privacy.dlp.v2.DeidentifyContentRequest.item:type_name -> google.privacy.dlp.v2.ContentItem + 36, // 51: google.privacy.dlp.v2.DeidentifyContentResponse.item:type_name -> google.privacy.dlp.v2.ContentItem + 104, // 52: google.privacy.dlp.v2.DeidentifyContentResponse.overview:type_name -> google.privacy.dlp.v2.TransformationOverview + 78, // 53: google.privacy.dlp.v2.ReidentifyContentRequest.reidentify_config:type_name -> google.privacy.dlp.v2.DeidentifyConfig + 34, // 54: google.privacy.dlp.v2.ReidentifyContentRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig + 36, // 55: google.privacy.dlp.v2.ReidentifyContentRequest.item:type_name -> google.privacy.dlp.v2.ContentItem + 36, // 56: google.privacy.dlp.v2.ReidentifyContentResponse.item:type_name -> google.privacy.dlp.v2.ContentItem + 104, // 57: google.privacy.dlp.v2.ReidentifyContentResponse.overview:type_name -> google.privacy.dlp.v2.TransformationOverview + 34, // 58: google.privacy.dlp.v2.InspectContentRequest.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig + 36, // 59: google.privacy.dlp.v2.InspectContentRequest.item:type_name -> google.privacy.dlp.v2.ContentItem + 38, // 60: google.privacy.dlp.v2.InspectContentResponse.result:type_name -> google.privacy.dlp.v2.InspectResult + 245, // 61: google.privacy.dlp.v2.OutputStorageConfig.table:type_name -> google.privacy.dlp.v2.BigQueryTable + 13, // 62: google.privacy.dlp.v2.OutputStorageConfig.output_schema:type_name -> google.privacy.dlp.v2.OutputStorageConfig.OutputSchema + 236, // 63: google.privacy.dlp.v2.InfoTypeStats.info_type:type_name -> google.privacy.dlp.v2.InfoType + 181, // 64: google.privacy.dlp.v2.InspectDataSourceDetails.requested_options:type_name -> google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions + 182, // 65: google.privacy.dlp.v2.InspectDataSourceDetails.result:type_name -> google.privacy.dlp.v2.InspectDataSourceDetails.Result + 7, // 66: google.privacy.dlp.v2.InfoTypeDescription.supported_by:type_name -> google.privacy.dlp.v2.InfoTypeSupportedBy + 66, // 67: google.privacy.dlp.v2.InfoTypeDescription.versions:type_name -> google.privacy.dlp.v2.VersionDescription + 65, // 68: google.privacy.dlp.v2.InfoTypeDescription.categories:type_name -> google.privacy.dlp.v2.InfoTypeCategory + 14, // 69: google.privacy.dlp.v2.InfoTypeCategory.location_category:type_name -> google.privacy.dlp.v2.InfoTypeCategory.LocationCategory + 15, // 70: google.privacy.dlp.v2.InfoTypeCategory.industry_category:type_name -> google.privacy.dlp.v2.InfoTypeCategory.IndustryCategory + 16, // 71: google.privacy.dlp.v2.InfoTypeCategory.type_category:type_name -> google.privacy.dlp.v2.InfoTypeCategory.TypeCategory + 64, // 72: google.privacy.dlp.v2.ListInfoTypesResponse.info_types:type_name -> google.privacy.dlp.v2.InfoTypeDescription + 72, // 73: google.privacy.dlp.v2.RiskAnalysisJobConfig.privacy_metric:type_name -> google.privacy.dlp.v2.PrivacyMetric + 245, // 74: google.privacy.dlp.v2.RiskAnalysisJobConfig.source_table:type_name -> google.privacy.dlp.v2.BigQueryTable + 118, // 75: google.privacy.dlp.v2.RiskAnalysisJobConfig.actions:type_name -> google.privacy.dlp.v2.Action + 242, // 76: google.privacy.dlp.v2.QuasiId.field:type_name -> google.privacy.dlp.v2.FieldId + 236, // 77: google.privacy.dlp.v2.QuasiId.info_type:type_name -> google.privacy.dlp.v2.InfoType + 246, // 78: google.privacy.dlp.v2.QuasiId.inferred:type_name -> google.protobuf.Empty + 245, // 79: google.privacy.dlp.v2.StatisticalTable.table:type_name -> google.privacy.dlp.v2.BigQueryTable + 183, // 80: google.privacy.dlp.v2.StatisticalTable.quasi_ids:type_name -> google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField + 242, // 81: google.privacy.dlp.v2.StatisticalTable.relative_frequency:type_name -> google.privacy.dlp.v2.FieldId + 184, // 82: google.privacy.dlp.v2.PrivacyMetric.numerical_stats_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig + 185, // 83: google.privacy.dlp.v2.PrivacyMetric.categorical_stats_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig + 186, // 84: google.privacy.dlp.v2.PrivacyMetric.k_anonymity_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig + 187, // 85: google.privacy.dlp.v2.PrivacyMetric.l_diversity_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig + 188, // 86: google.privacy.dlp.v2.PrivacyMetric.k_map_estimation_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig + 189, // 87: google.privacy.dlp.v2.PrivacyMetric.delta_presence_estimation_config:type_name -> google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig + 72, // 88: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.requested_privacy_metric:type_name -> google.privacy.dlp.v2.PrivacyMetric + 245, // 89: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.requested_source_table:type_name -> google.privacy.dlp.v2.BigQueryTable + 193, // 90: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.numerical_stats_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult + 194, // 91: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.categorical_stats_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult + 195, // 92: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.k_anonymity_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult + 196, // 93: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.l_diversity_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult + 197, // 94: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.k_map_estimation_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult + 198, // 95: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.delta_presence_estimation_result:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult + 199, // 96: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.requested_options:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.RequestedRiskAnalysisOptions + 75, // 97: google.privacy.dlp.v2.ValueFrequency.value:type_name -> google.privacy.dlp.v2.Value + 243, // 98: google.privacy.dlp.v2.Value.timestamp_value:type_name -> google.protobuf.Timestamp + 247, // 99: google.privacy.dlp.v2.Value.time_value:type_name -> google.type.TimeOfDay + 248, // 100: google.privacy.dlp.v2.Value.date_value:type_name -> google.type.Date + 249, // 101: google.privacy.dlp.v2.Value.day_of_week_value:type_name -> google.type.DayOfWeek + 77, // 102: google.privacy.dlp.v2.QuoteInfo.date_time:type_name -> google.privacy.dlp.v2.DateTime + 248, // 103: google.privacy.dlp.v2.DateTime.date:type_name -> google.type.Date + 249, // 104: google.privacy.dlp.v2.DateTime.day_of_week:type_name -> google.type.DayOfWeek + 247, // 105: google.privacy.dlp.v2.DateTime.time:type_name -> google.type.TimeOfDay + 209, // 106: google.privacy.dlp.v2.DateTime.time_zone:type_name -> google.privacy.dlp.v2.DateTime.TimeZone + 99, // 107: google.privacy.dlp.v2.DeidentifyConfig.info_type_transformations:type_name -> google.privacy.dlp.v2.InfoTypeTransformations + 101, // 108: google.privacy.dlp.v2.DeidentifyConfig.record_transformations:type_name -> google.privacy.dlp.v2.RecordTransformations + 79, // 109: google.privacy.dlp.v2.DeidentifyConfig.image_transformations:type_name -> google.privacy.dlp.v2.ImageTransformations + 80, // 110: google.privacy.dlp.v2.DeidentifyConfig.transformation_error_handling:type_name -> google.privacy.dlp.v2.TransformationErrorHandling + 210, // 111: google.privacy.dlp.v2.ImageTransformations.transforms:type_name -> google.privacy.dlp.v2.ImageTransformations.ImageTransformation + 214, // 112: google.privacy.dlp.v2.TransformationErrorHandling.throw_error:type_name -> google.privacy.dlp.v2.TransformationErrorHandling.ThrowError + 215, // 113: google.privacy.dlp.v2.TransformationErrorHandling.leave_untransformed:type_name -> google.privacy.dlp.v2.TransformationErrorHandling.LeaveUntransformed + 85, // 114: google.privacy.dlp.v2.PrimitiveTransformation.replace_config:type_name -> google.privacy.dlp.v2.ReplaceValueConfig + 88, // 115: google.privacy.dlp.v2.PrimitiveTransformation.redact_config:type_name -> google.privacy.dlp.v2.RedactConfig + 90, // 116: google.privacy.dlp.v2.PrimitiveTransformation.character_mask_config:type_name -> google.privacy.dlp.v2.CharacterMaskConfig + 93, // 117: google.privacy.dlp.v2.PrimitiveTransformation.crypto_replace_ffx_fpe_config:type_name -> google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig + 91, // 118: google.privacy.dlp.v2.PrimitiveTransformation.fixed_size_bucketing_config:type_name -> google.privacy.dlp.v2.FixedSizeBucketingConfig + 92, // 119: google.privacy.dlp.v2.PrimitiveTransformation.bucketing_config:type_name -> google.privacy.dlp.v2.BucketingConfig + 87, // 120: google.privacy.dlp.v2.PrimitiveTransformation.replace_with_info_type_config:type_name -> google.privacy.dlp.v2.ReplaceWithInfoTypeConfig + 82, // 121: google.privacy.dlp.v2.PrimitiveTransformation.time_part_config:type_name -> google.privacy.dlp.v2.TimePartConfig + 83, // 122: google.privacy.dlp.v2.PrimitiveTransformation.crypto_hash_config:type_name -> google.privacy.dlp.v2.CryptoHashConfig + 98, // 123: google.privacy.dlp.v2.PrimitiveTransformation.date_shift_config:type_name -> google.privacy.dlp.v2.DateShiftConfig + 84, // 124: google.privacy.dlp.v2.PrimitiveTransformation.crypto_deterministic_config:type_name -> google.privacy.dlp.v2.CryptoDeterministicConfig + 86, // 125: google.privacy.dlp.v2.PrimitiveTransformation.replace_dictionary_config:type_name -> google.privacy.dlp.v2.ReplaceDictionaryConfig + 17, // 126: google.privacy.dlp.v2.TimePartConfig.part_to_extract:type_name -> google.privacy.dlp.v2.TimePartConfig.TimePart + 94, // 127: google.privacy.dlp.v2.CryptoHashConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey + 94, // 128: google.privacy.dlp.v2.CryptoDeterministicConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey + 236, // 129: google.privacy.dlp.v2.CryptoDeterministicConfig.surrogate_info_type:type_name -> google.privacy.dlp.v2.InfoType + 242, // 130: google.privacy.dlp.v2.CryptoDeterministicConfig.context:type_name -> google.privacy.dlp.v2.FieldId + 75, // 131: google.privacy.dlp.v2.ReplaceValueConfig.new_value:type_name -> google.privacy.dlp.v2.Value + 250, // 132: google.privacy.dlp.v2.ReplaceDictionaryConfig.word_list:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList + 18, // 133: google.privacy.dlp.v2.CharsToIgnore.common_characters_to_ignore:type_name -> google.privacy.dlp.v2.CharsToIgnore.CommonCharsToIgnore + 89, // 134: google.privacy.dlp.v2.CharacterMaskConfig.characters_to_ignore:type_name -> google.privacy.dlp.v2.CharsToIgnore + 75, // 135: google.privacy.dlp.v2.FixedSizeBucketingConfig.lower_bound:type_name -> google.privacy.dlp.v2.Value + 75, // 136: google.privacy.dlp.v2.FixedSizeBucketingConfig.upper_bound:type_name -> google.privacy.dlp.v2.Value + 216, // 137: google.privacy.dlp.v2.BucketingConfig.buckets:type_name -> google.privacy.dlp.v2.BucketingConfig.Bucket + 94, // 138: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey + 242, // 139: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.context:type_name -> google.privacy.dlp.v2.FieldId + 19, // 140: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.common_alphabet:type_name -> google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabet + 236, // 141: google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.surrogate_info_type:type_name -> google.privacy.dlp.v2.InfoType + 95, // 142: google.privacy.dlp.v2.CryptoKey.transient:type_name -> google.privacy.dlp.v2.TransientCryptoKey + 96, // 143: google.privacy.dlp.v2.CryptoKey.unwrapped:type_name -> google.privacy.dlp.v2.UnwrappedCryptoKey + 97, // 144: google.privacy.dlp.v2.CryptoKey.kms_wrapped:type_name -> google.privacy.dlp.v2.KmsWrappedCryptoKey + 242, // 145: google.privacy.dlp.v2.DateShiftConfig.context:type_name -> google.privacy.dlp.v2.FieldId + 94, // 146: google.privacy.dlp.v2.DateShiftConfig.crypto_key:type_name -> google.privacy.dlp.v2.CryptoKey + 217, // 147: google.privacy.dlp.v2.InfoTypeTransformations.transformations:type_name -> google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation + 242, // 148: google.privacy.dlp.v2.FieldTransformation.fields:type_name -> google.privacy.dlp.v2.FieldId + 103, // 149: google.privacy.dlp.v2.FieldTransformation.condition:type_name -> google.privacy.dlp.v2.RecordCondition + 81, // 150: google.privacy.dlp.v2.FieldTransformation.primitive_transformation:type_name -> google.privacy.dlp.v2.PrimitiveTransformation + 99, // 151: google.privacy.dlp.v2.FieldTransformation.info_type_transformations:type_name -> google.privacy.dlp.v2.InfoTypeTransformations + 100, // 152: google.privacy.dlp.v2.RecordTransformations.field_transformations:type_name -> google.privacy.dlp.v2.FieldTransformation + 102, // 153: google.privacy.dlp.v2.RecordTransformations.record_suppressions:type_name -> google.privacy.dlp.v2.RecordSuppression + 103, // 154: google.privacy.dlp.v2.RecordSuppression.condition:type_name -> google.privacy.dlp.v2.RecordCondition + 220, // 155: google.privacy.dlp.v2.RecordCondition.expressions:type_name -> google.privacy.dlp.v2.RecordCondition.Expressions + 105, // 156: google.privacy.dlp.v2.TransformationOverview.transformation_summaries:type_name -> google.privacy.dlp.v2.TransformationSummary + 236, // 157: google.privacy.dlp.v2.TransformationSummary.info_type:type_name -> google.privacy.dlp.v2.InfoType + 242, // 158: google.privacy.dlp.v2.TransformationSummary.field:type_name -> google.privacy.dlp.v2.FieldId + 81, // 159: google.privacy.dlp.v2.TransformationSummary.transformation:type_name -> google.privacy.dlp.v2.PrimitiveTransformation + 100, // 160: google.privacy.dlp.v2.TransformationSummary.field_transformations:type_name -> google.privacy.dlp.v2.FieldTransformation + 102, // 161: google.privacy.dlp.v2.TransformationSummary.record_suppress:type_name -> google.privacy.dlp.v2.RecordSuppression + 221, // 162: google.privacy.dlp.v2.TransformationSummary.results:type_name -> google.privacy.dlp.v2.TransformationSummary.SummaryResult + 2, // 163: google.privacy.dlp.v2.TransformationDescription.type:type_name -> google.privacy.dlp.v2.TransformationType + 236, // 164: google.privacy.dlp.v2.TransformationDescription.info_type:type_name -> google.privacy.dlp.v2.InfoType + 106, // 165: google.privacy.dlp.v2.TransformationDetails.transformation:type_name -> google.privacy.dlp.v2.TransformationDescription + 110, // 166: google.privacy.dlp.v2.TransformationDetails.status_details:type_name -> google.privacy.dlp.v2.TransformationResultStatus + 108, // 167: google.privacy.dlp.v2.TransformationDetails.transformation_location:type_name -> google.privacy.dlp.v2.TransformationLocation + 109, // 168: google.privacy.dlp.v2.TransformationLocation.record_transformation:type_name -> google.privacy.dlp.v2.RecordTransformation + 1, // 169: google.privacy.dlp.v2.TransformationLocation.container_type:type_name -> google.privacy.dlp.v2.TransformationContainerType + 242, // 170: google.privacy.dlp.v2.RecordTransformation.field_id:type_name -> google.privacy.dlp.v2.FieldId + 243, // 171: google.privacy.dlp.v2.RecordTransformation.container_timestamp:type_name -> google.protobuf.Timestamp + 0, // 172: google.privacy.dlp.v2.TransformationResultStatus.result_status_type:type_name -> google.privacy.dlp.v2.TransformationResultStatusType + 251, // 173: google.privacy.dlp.v2.TransformationResultStatus.details:type_name -> google.rpc.Status + 245, // 174: google.privacy.dlp.v2.TransformationDetailsStorageConfig.table:type_name -> google.privacy.dlp.v2.BigQueryTable + 252, // 175: google.privacy.dlp.v2.Schedule.recurrence_period_duration:type_name -> google.protobuf.Duration + 243, // 176: google.privacy.dlp.v2.InspectTemplate.create_time:type_name -> google.protobuf.Timestamp + 243, // 177: google.privacy.dlp.v2.InspectTemplate.update_time:type_name -> google.protobuf.Timestamp + 34, // 178: google.privacy.dlp.v2.InspectTemplate.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig + 243, // 179: google.privacy.dlp.v2.DeidentifyTemplate.create_time:type_name -> google.protobuf.Timestamp + 243, // 180: google.privacy.dlp.v2.DeidentifyTemplate.update_time:type_name -> google.protobuf.Timestamp + 78, // 181: google.privacy.dlp.v2.DeidentifyTemplate.deidentify_config:type_name -> google.privacy.dlp.v2.DeidentifyConfig + 251, // 182: google.privacy.dlp.v2.Error.details:type_name -> google.rpc.Status + 243, // 183: google.privacy.dlp.v2.Error.timestamps:type_name -> google.protobuf.Timestamp + 134, // 184: google.privacy.dlp.v2.JobTrigger.inspect_job:type_name -> google.privacy.dlp.v2.InspectJobConfig + 222, // 185: google.privacy.dlp.v2.JobTrigger.triggers:type_name -> google.privacy.dlp.v2.JobTrigger.Trigger + 116, // 186: google.privacy.dlp.v2.JobTrigger.errors:type_name -> google.privacy.dlp.v2.Error + 243, // 187: google.privacy.dlp.v2.JobTrigger.create_time:type_name -> google.protobuf.Timestamp + 243, // 188: google.privacy.dlp.v2.JobTrigger.update_time:type_name -> google.protobuf.Timestamp + 243, // 189: google.privacy.dlp.v2.JobTrigger.last_run_time:type_name -> google.protobuf.Timestamp + 22, // 190: google.privacy.dlp.v2.JobTrigger.status:type_name -> google.privacy.dlp.v2.JobTrigger.Status + 223, // 191: google.privacy.dlp.v2.Action.save_findings:type_name -> google.privacy.dlp.v2.Action.SaveFindings + 224, // 192: google.privacy.dlp.v2.Action.pub_sub:type_name -> google.privacy.dlp.v2.Action.PublishToPubSub + 225, // 193: google.privacy.dlp.v2.Action.publish_summary_to_cscc:type_name -> google.privacy.dlp.v2.Action.PublishSummaryToCscc + 226, // 194: google.privacy.dlp.v2.Action.publish_findings_to_cloud_data_catalog:type_name -> google.privacy.dlp.v2.Action.PublishFindingsToCloudDataCatalog + 227, // 195: google.privacy.dlp.v2.Action.deidentify:type_name -> google.privacy.dlp.v2.Action.Deidentify + 228, // 196: google.privacy.dlp.v2.Action.job_notification_emails:type_name -> google.privacy.dlp.v2.Action.JobNotificationEmails + 229, // 197: google.privacy.dlp.v2.Action.publish_to_stackdriver:type_name -> google.privacy.dlp.v2.Action.PublishToStackdriver + 114, // 198: google.privacy.dlp.v2.CreateInspectTemplateRequest.inspect_template:type_name -> google.privacy.dlp.v2.InspectTemplate + 114, // 199: google.privacy.dlp.v2.UpdateInspectTemplateRequest.inspect_template:type_name -> google.privacy.dlp.v2.InspectTemplate + 253, // 200: google.privacy.dlp.v2.UpdateInspectTemplateRequest.update_mask:type_name -> google.protobuf.FieldMask + 114, // 201: google.privacy.dlp.v2.ListInspectTemplatesResponse.inspect_templates:type_name -> google.privacy.dlp.v2.InspectTemplate + 117, // 202: google.privacy.dlp.v2.CreateJobTriggerRequest.job_trigger:type_name -> google.privacy.dlp.v2.JobTrigger + 117, // 203: google.privacy.dlp.v2.UpdateJobTriggerRequest.job_trigger:type_name -> google.privacy.dlp.v2.JobTrigger + 253, // 204: google.privacy.dlp.v2.UpdateJobTriggerRequest.update_mask:type_name -> google.protobuf.FieldMask + 134, // 205: google.privacy.dlp.v2.CreateDlpJobRequest.inspect_job:type_name -> google.privacy.dlp.v2.InspectJobConfig + 69, // 206: google.privacy.dlp.v2.CreateDlpJobRequest.risk_job:type_name -> google.privacy.dlp.v2.RiskAnalysisJobConfig + 8, // 207: google.privacy.dlp.v2.ListJobTriggersRequest.type:type_name -> google.privacy.dlp.v2.DlpJobType + 117, // 208: google.privacy.dlp.v2.ListJobTriggersResponse.job_triggers:type_name -> google.privacy.dlp.v2.JobTrigger + 254, // 209: google.privacy.dlp.v2.InspectJobConfig.storage_config:type_name -> google.privacy.dlp.v2.StorageConfig + 34, // 210: google.privacy.dlp.v2.InspectJobConfig.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig + 118, // 211: google.privacy.dlp.v2.InspectJobConfig.actions:type_name -> google.privacy.dlp.v2.Action + 230, // 212: google.privacy.dlp.v2.DataProfileAction.export_data:type_name -> google.privacy.dlp.v2.DataProfileAction.Export + 231, // 213: google.privacy.dlp.v2.DataProfileAction.pub_sub_notification:type_name -> google.privacy.dlp.v2.DataProfileAction.PubSubNotification + 137, // 214: google.privacy.dlp.v2.DataProfileJobConfig.location:type_name -> google.privacy.dlp.v2.DataProfileLocation + 135, // 215: google.privacy.dlp.v2.DataProfileJobConfig.data_profile_actions:type_name -> google.privacy.dlp.v2.DataProfileAction + 8, // 216: google.privacy.dlp.v2.DlpJob.type:type_name -> google.privacy.dlp.v2.DlpJobType + 25, // 217: google.privacy.dlp.v2.DlpJob.state:type_name -> google.privacy.dlp.v2.DlpJob.JobState + 73, // 218: google.privacy.dlp.v2.DlpJob.risk_details:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails + 62, // 219: google.privacy.dlp.v2.DlpJob.inspect_details:type_name -> google.privacy.dlp.v2.InspectDataSourceDetails + 243, // 220: google.privacy.dlp.v2.DlpJob.create_time:type_name -> google.protobuf.Timestamp + 243, // 221: google.privacy.dlp.v2.DlpJob.start_time:type_name -> google.protobuf.Timestamp + 243, // 222: google.privacy.dlp.v2.DlpJob.end_time:type_name -> google.protobuf.Timestamp + 116, // 223: google.privacy.dlp.v2.DlpJob.errors:type_name -> google.privacy.dlp.v2.Error + 8, // 224: google.privacy.dlp.v2.ListDlpJobsRequest.type:type_name -> google.privacy.dlp.v2.DlpJobType + 138, // 225: google.privacy.dlp.v2.ListDlpJobsResponse.jobs:type_name -> google.privacy.dlp.v2.DlpJob + 115, // 226: google.privacy.dlp.v2.CreateDeidentifyTemplateRequest.deidentify_template:type_name -> google.privacy.dlp.v2.DeidentifyTemplate + 115, // 227: google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest.deidentify_template:type_name -> google.privacy.dlp.v2.DeidentifyTemplate + 253, // 228: google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest.update_mask:type_name -> google.protobuf.FieldMask + 115, // 229: google.privacy.dlp.v2.ListDeidentifyTemplatesResponse.deidentify_templates:type_name -> google.privacy.dlp.v2.DeidentifyTemplate + 255, // 230: google.privacy.dlp.v2.LargeCustomDictionaryConfig.output_path:type_name -> google.privacy.dlp.v2.CloudStoragePath + 256, // 231: google.privacy.dlp.v2.LargeCustomDictionaryConfig.cloud_storage_file_set:type_name -> google.privacy.dlp.v2.CloudStorageFileSet + 257, // 232: google.privacy.dlp.v2.LargeCustomDictionaryConfig.big_query_field:type_name -> google.privacy.dlp.v2.BigQueryField + 151, // 233: google.privacy.dlp.v2.StoredInfoTypeConfig.large_custom_dictionary:type_name -> google.privacy.dlp.v2.LargeCustomDictionaryConfig + 237, // 234: google.privacy.dlp.v2.StoredInfoTypeConfig.dictionary:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary + 238, // 235: google.privacy.dlp.v2.StoredInfoTypeConfig.regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex + 152, // 236: google.privacy.dlp.v2.StoredInfoTypeStats.large_custom_dictionary:type_name -> google.privacy.dlp.v2.LargeCustomDictionaryStats + 153, // 237: google.privacy.dlp.v2.StoredInfoTypeVersion.config:type_name -> google.privacy.dlp.v2.StoredInfoTypeConfig + 243, // 238: google.privacy.dlp.v2.StoredInfoTypeVersion.create_time:type_name -> google.protobuf.Timestamp + 9, // 239: google.privacy.dlp.v2.StoredInfoTypeVersion.state:type_name -> google.privacy.dlp.v2.StoredInfoTypeState + 116, // 240: google.privacy.dlp.v2.StoredInfoTypeVersion.errors:type_name -> google.privacy.dlp.v2.Error + 154, // 241: google.privacy.dlp.v2.StoredInfoTypeVersion.stats:type_name -> google.privacy.dlp.v2.StoredInfoTypeStats + 155, // 242: google.privacy.dlp.v2.StoredInfoType.current_version:type_name -> google.privacy.dlp.v2.StoredInfoTypeVersion + 155, // 243: google.privacy.dlp.v2.StoredInfoType.pending_versions:type_name -> google.privacy.dlp.v2.StoredInfoTypeVersion + 153, // 244: google.privacy.dlp.v2.CreateStoredInfoTypeRequest.config:type_name -> google.privacy.dlp.v2.StoredInfoTypeConfig + 153, // 245: google.privacy.dlp.v2.UpdateStoredInfoTypeRequest.config:type_name -> google.privacy.dlp.v2.StoredInfoTypeConfig + 253, // 246: google.privacy.dlp.v2.UpdateStoredInfoTypeRequest.update_mask:type_name -> google.protobuf.FieldMask + 156, // 247: google.privacy.dlp.v2.ListStoredInfoTypesResponse.stored_info_types:type_name -> google.privacy.dlp.v2.StoredInfoType + 165, // 248: google.privacy.dlp.v2.HybridInspectJobTriggerRequest.hybrid_item:type_name -> google.privacy.dlp.v2.HybridContentItem + 165, // 249: google.privacy.dlp.v2.HybridInspectDlpJobRequest.hybrid_item:type_name -> google.privacy.dlp.v2.HybridContentItem + 36, // 250: google.privacy.dlp.v2.HybridContentItem.item:type_name -> google.privacy.dlp.v2.ContentItem + 166, // 251: google.privacy.dlp.v2.HybridContentItem.finding_details:type_name -> google.privacy.dlp.v2.HybridFindingDetails + 47, // 252: google.privacy.dlp.v2.HybridFindingDetails.container_details:type_name -> google.privacy.dlp.v2.Container + 258, // 253: google.privacy.dlp.v2.HybridFindingDetails.table_options:type_name -> google.privacy.dlp.v2.TableOptions + 232, // 254: google.privacy.dlp.v2.HybridFindingDetails.labels:type_name -> google.privacy.dlp.v2.HybridFindingDetails.LabelsEntry + 26, // 255: google.privacy.dlp.v2.DataRiskLevel.score:type_name -> google.privacy.dlp.v2.DataRiskLevel.DataRiskLevelScore + 34, // 256: google.privacy.dlp.v2.DataProfileConfigSnapshot.inspect_config:type_name -> google.privacy.dlp.v2.InspectConfig + 136, // 257: google.privacy.dlp.v2.DataProfileConfigSnapshot.data_profile_job:type_name -> google.privacy.dlp.v2.DataProfileJobConfig + 171, // 258: google.privacy.dlp.v2.TableDataProfile.profile_status:type_name -> google.privacy.dlp.v2.ProfileStatus + 27, // 259: google.privacy.dlp.v2.TableDataProfile.state:type_name -> google.privacy.dlp.v2.TableDataProfile.State + 259, // 260: google.privacy.dlp.v2.TableDataProfile.sensitivity_score:type_name -> google.privacy.dlp.v2.SensitivityScore + 168, // 261: google.privacy.dlp.v2.TableDataProfile.data_risk_level:type_name -> google.privacy.dlp.v2.DataRiskLevel + 172, // 262: google.privacy.dlp.v2.TableDataProfile.predicted_info_types:type_name -> google.privacy.dlp.v2.InfoTypeSummary + 173, // 263: google.privacy.dlp.v2.TableDataProfile.other_info_types:type_name -> google.privacy.dlp.v2.OtherInfoTypeSummary + 169, // 264: google.privacy.dlp.v2.TableDataProfile.config_snapshot:type_name -> google.privacy.dlp.v2.DataProfileConfigSnapshot + 243, // 265: google.privacy.dlp.v2.TableDataProfile.last_modified_time:type_name -> google.protobuf.Timestamp + 243, // 266: google.privacy.dlp.v2.TableDataProfile.expiration_time:type_name -> google.protobuf.Timestamp + 11, // 267: google.privacy.dlp.v2.TableDataProfile.encryption_status:type_name -> google.privacy.dlp.v2.EncryptionStatus + 10, // 268: google.privacy.dlp.v2.TableDataProfile.resource_visibility:type_name -> google.privacy.dlp.v2.ResourceVisibility + 243, // 269: google.privacy.dlp.v2.TableDataProfile.profile_last_generated:type_name -> google.protobuf.Timestamp + 233, // 270: google.privacy.dlp.v2.TableDataProfile.resource_labels:type_name -> google.privacy.dlp.v2.TableDataProfile.ResourceLabelsEntry + 243, // 271: google.privacy.dlp.v2.TableDataProfile.create_time:type_name -> google.protobuf.Timestamp + 251, // 272: google.privacy.dlp.v2.ProfileStatus.status:type_name -> google.rpc.Status + 243, // 273: google.privacy.dlp.v2.ProfileStatus.timestamp:type_name -> google.protobuf.Timestamp + 236, // 274: google.privacy.dlp.v2.InfoTypeSummary.info_type:type_name -> google.privacy.dlp.v2.InfoType + 236, // 275: google.privacy.dlp.v2.OtherInfoTypeSummary.info_type:type_name -> google.privacy.dlp.v2.InfoType + 235, // 276: google.privacy.dlp.v2.DataProfilePubSubCondition.expressions:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions + 170, // 277: google.privacy.dlp.v2.DataProfilePubSubMessage.profile:type_name -> google.privacy.dlp.v2.TableDataProfile + 23, // 278: google.privacy.dlp.v2.DataProfilePubSubMessage.event:type_name -> google.privacy.dlp.v2.DataProfileAction.EventType + 177, // 279: google.privacy.dlp.v2.InspectConfig.FindingLimits.max_findings_per_info_type:type_name -> google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit + 236, // 280: google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit.info_type:type_name -> google.privacy.dlp.v2.InfoType + 75, // 281: google.privacy.dlp.v2.Table.Row.values:type_name -> google.privacy.dlp.v2.Value + 236, // 282: google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig.info_type:type_name -> google.privacy.dlp.v2.InfoType + 52, // 283: google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig.redaction_color:type_name -> google.privacy.dlp.v2.Color + 114, // 284: google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions.snapshot_inspect_template:type_name -> google.privacy.dlp.v2.InspectTemplate + 134, // 285: google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions.job_config:type_name -> google.privacy.dlp.v2.InspectJobConfig + 61, // 286: google.privacy.dlp.v2.InspectDataSourceDetails.Result.info_type_stats:type_name -> google.privacy.dlp.v2.InfoTypeStats + 63, // 287: google.privacy.dlp.v2.InspectDataSourceDetails.Result.hybrid_stats:type_name -> google.privacy.dlp.v2.HybridInspectStatistics + 242, // 288: google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField.field:type_name -> google.privacy.dlp.v2.FieldId + 242, // 289: google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig.field:type_name -> google.privacy.dlp.v2.FieldId + 242, // 290: google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig.field:type_name -> google.privacy.dlp.v2.FieldId + 242, // 291: google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig.quasi_ids:type_name -> google.privacy.dlp.v2.FieldId + 260, // 292: google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig.entity_id:type_name -> google.privacy.dlp.v2.EntityId + 242, // 293: google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig.quasi_ids:type_name -> google.privacy.dlp.v2.FieldId + 242, // 294: google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig.sensitive_attribute:type_name -> google.privacy.dlp.v2.FieldId + 190, // 295: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.quasi_ids:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField + 191, // 296: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.auxiliary_tables:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable + 70, // 297: google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig.quasi_ids:type_name -> google.privacy.dlp.v2.QuasiId + 71, // 298: google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig.auxiliary_tables:type_name -> google.privacy.dlp.v2.StatisticalTable + 242, // 299: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField.field:type_name -> google.privacy.dlp.v2.FieldId + 236, // 300: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField.info_type:type_name -> google.privacy.dlp.v2.InfoType + 246, // 301: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField.inferred:type_name -> google.protobuf.Empty + 245, // 302: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.table:type_name -> google.privacy.dlp.v2.BigQueryTable + 192, // 303: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.quasi_ids:type_name -> google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField + 242, // 304: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.relative_frequency:type_name -> google.privacy.dlp.v2.FieldId + 242, // 305: google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField.field:type_name -> google.privacy.dlp.v2.FieldId + 75, // 306: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult.min_value:type_name -> google.privacy.dlp.v2.Value + 75, // 307: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult.max_value:type_name -> google.privacy.dlp.v2.Value + 75, // 308: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult.quantile_values:type_name -> google.privacy.dlp.v2.Value + 200, // 309: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.value_frequency_histogram_buckets:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket + 202, // 310: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.equivalence_class_histogram_buckets:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket + 204, // 311: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.sensitive_value_frequency_histogram_buckets:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket + 206, // 312: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.k_map_estimation_histogram:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket + 208, // 313: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.delta_presence_estimation_histogram:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket + 69, // 314: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.RequestedRiskAnalysisOptions.job_config:type_name -> google.privacy.dlp.v2.RiskAnalysisJobConfig + 74, // 315: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.ValueFrequency + 75, // 316: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value + 201, // 317: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass + 75, // 318: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value + 74, // 319: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass.top_sensitive_values:type_name -> google.privacy.dlp.v2.ValueFrequency + 203, // 320: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass + 75, // 321: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value + 205, // 322: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues + 75, // 323: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues.quasi_ids_values:type_name -> google.privacy.dlp.v2.Value + 207, // 324: google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket.bucket_values:type_name -> google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues + 211, // 325: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.selected_info_types:type_name -> google.privacy.dlp.v2.ImageTransformations.ImageTransformation.SelectedInfoTypes + 212, // 326: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.all_info_types:type_name -> google.privacy.dlp.v2.ImageTransformations.ImageTransformation.AllInfoTypes + 213, // 327: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.all_text:type_name -> google.privacy.dlp.v2.ImageTransformations.ImageTransformation.AllText + 52, // 328: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.redaction_color:type_name -> google.privacy.dlp.v2.Color + 236, // 329: google.privacy.dlp.v2.ImageTransformations.ImageTransformation.SelectedInfoTypes.info_types:type_name -> google.privacy.dlp.v2.InfoType + 75, // 330: google.privacy.dlp.v2.BucketingConfig.Bucket.min:type_name -> google.privacy.dlp.v2.Value + 75, // 331: google.privacy.dlp.v2.BucketingConfig.Bucket.max:type_name -> google.privacy.dlp.v2.Value + 75, // 332: google.privacy.dlp.v2.BucketingConfig.Bucket.replacement_value:type_name -> google.privacy.dlp.v2.Value + 236, // 333: google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation.info_types:type_name -> google.privacy.dlp.v2.InfoType + 81, // 334: google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation.primitive_transformation:type_name -> google.privacy.dlp.v2.PrimitiveTransformation + 242, // 335: google.privacy.dlp.v2.RecordCondition.Condition.field:type_name -> google.privacy.dlp.v2.FieldId + 3, // 336: google.privacy.dlp.v2.RecordCondition.Condition.operator:type_name -> google.privacy.dlp.v2.RelationalOperator + 75, // 337: google.privacy.dlp.v2.RecordCondition.Condition.value:type_name -> google.privacy.dlp.v2.Value + 218, // 338: google.privacy.dlp.v2.RecordCondition.Conditions.conditions:type_name -> google.privacy.dlp.v2.RecordCondition.Condition + 20, // 339: google.privacy.dlp.v2.RecordCondition.Expressions.logical_operator:type_name -> google.privacy.dlp.v2.RecordCondition.Expressions.LogicalOperator + 219, // 340: google.privacy.dlp.v2.RecordCondition.Expressions.conditions:type_name -> google.privacy.dlp.v2.RecordCondition.Conditions + 21, // 341: google.privacy.dlp.v2.TransformationSummary.SummaryResult.code:type_name -> google.privacy.dlp.v2.TransformationSummary.TransformationResultCode + 112, // 342: google.privacy.dlp.v2.JobTrigger.Trigger.schedule:type_name -> google.privacy.dlp.v2.Schedule + 113, // 343: google.privacy.dlp.v2.JobTrigger.Trigger.manual:type_name -> google.privacy.dlp.v2.Manual + 60, // 344: google.privacy.dlp.v2.Action.SaveFindings.output_config:type_name -> google.privacy.dlp.v2.OutputStorageConfig + 119, // 345: google.privacy.dlp.v2.Action.Deidentify.transformation_config:type_name -> google.privacy.dlp.v2.TransformationConfig + 111, // 346: google.privacy.dlp.v2.Action.Deidentify.transformation_details_storage_config:type_name -> google.privacy.dlp.v2.TransformationDetailsStorageConfig + 261, // 347: google.privacy.dlp.v2.Action.Deidentify.file_types_to_transform:type_name -> google.privacy.dlp.v2.FileType + 245, // 348: google.privacy.dlp.v2.DataProfileAction.Export.profile_table:type_name -> google.privacy.dlp.v2.BigQueryTable + 23, // 349: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.event:type_name -> google.privacy.dlp.v2.DataProfileAction.EventType + 174, // 350: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.pubsub_condition:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition + 24, // 351: google.privacy.dlp.v2.DataProfileAction.PubSubNotification.detail_of_message:type_name -> google.privacy.dlp.v2.DataProfileAction.PubSubNotification.DetailLevel + 28, // 352: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition.minimum_risk_score:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.ProfileScoreBucket + 28, // 353: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition.minimum_sensitivity_score:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.ProfileScoreBucket + 29, // 354: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.logical_operator:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.PubSubLogicalOperator + 234, // 355: google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubExpressions.conditions:type_name -> google.privacy.dlp.v2.DataProfilePubSubCondition.PubSubCondition + 58, // 356: google.privacy.dlp.v2.DlpService.InspectContent:input_type -> google.privacy.dlp.v2.InspectContentRequest + 51, // 357: google.privacy.dlp.v2.DlpService.RedactImage:input_type -> google.privacy.dlp.v2.RedactImageRequest + 54, // 358: google.privacy.dlp.v2.DlpService.DeidentifyContent:input_type -> google.privacy.dlp.v2.DeidentifyContentRequest + 56, // 359: google.privacy.dlp.v2.DlpService.ReidentifyContent:input_type -> google.privacy.dlp.v2.ReidentifyContentRequest + 67, // 360: google.privacy.dlp.v2.DlpService.ListInfoTypes:input_type -> google.privacy.dlp.v2.ListInfoTypesRequest + 120, // 361: google.privacy.dlp.v2.DlpService.CreateInspectTemplate:input_type -> google.privacy.dlp.v2.CreateInspectTemplateRequest + 121, // 362: google.privacy.dlp.v2.DlpService.UpdateInspectTemplate:input_type -> google.privacy.dlp.v2.UpdateInspectTemplateRequest + 122, // 363: google.privacy.dlp.v2.DlpService.GetInspectTemplate:input_type -> google.privacy.dlp.v2.GetInspectTemplateRequest + 123, // 364: google.privacy.dlp.v2.DlpService.ListInspectTemplates:input_type -> google.privacy.dlp.v2.ListInspectTemplatesRequest + 125, // 365: google.privacy.dlp.v2.DlpService.DeleteInspectTemplate:input_type -> google.privacy.dlp.v2.DeleteInspectTemplateRequest + 145, // 366: google.privacy.dlp.v2.DlpService.CreateDeidentifyTemplate:input_type -> google.privacy.dlp.v2.CreateDeidentifyTemplateRequest + 146, // 367: google.privacy.dlp.v2.DlpService.UpdateDeidentifyTemplate:input_type -> google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest + 147, // 368: google.privacy.dlp.v2.DlpService.GetDeidentifyTemplate:input_type -> google.privacy.dlp.v2.GetDeidentifyTemplateRequest + 148, // 369: google.privacy.dlp.v2.DlpService.ListDeidentifyTemplates:input_type -> google.privacy.dlp.v2.ListDeidentifyTemplatesRequest + 150, // 370: google.privacy.dlp.v2.DlpService.DeleteDeidentifyTemplate:input_type -> google.privacy.dlp.v2.DeleteDeidentifyTemplateRequest + 126, // 371: google.privacy.dlp.v2.DlpService.CreateJobTrigger:input_type -> google.privacy.dlp.v2.CreateJobTriggerRequest + 128, // 372: google.privacy.dlp.v2.DlpService.UpdateJobTrigger:input_type -> google.privacy.dlp.v2.UpdateJobTriggerRequest + 163, // 373: google.privacy.dlp.v2.DlpService.HybridInspectJobTrigger:input_type -> google.privacy.dlp.v2.HybridInspectJobTriggerRequest + 129, // 374: google.privacy.dlp.v2.DlpService.GetJobTrigger:input_type -> google.privacy.dlp.v2.GetJobTriggerRequest + 131, // 375: google.privacy.dlp.v2.DlpService.ListJobTriggers:input_type -> google.privacy.dlp.v2.ListJobTriggersRequest + 133, // 376: google.privacy.dlp.v2.DlpService.DeleteJobTrigger:input_type -> google.privacy.dlp.v2.DeleteJobTriggerRequest + 127, // 377: google.privacy.dlp.v2.DlpService.ActivateJobTrigger:input_type -> google.privacy.dlp.v2.ActivateJobTriggerRequest + 130, // 378: google.privacy.dlp.v2.DlpService.CreateDlpJob:input_type -> google.privacy.dlp.v2.CreateDlpJobRequest + 140, // 379: google.privacy.dlp.v2.DlpService.ListDlpJobs:input_type -> google.privacy.dlp.v2.ListDlpJobsRequest + 139, // 380: google.privacy.dlp.v2.DlpService.GetDlpJob:input_type -> google.privacy.dlp.v2.GetDlpJobRequest + 144, // 381: google.privacy.dlp.v2.DlpService.DeleteDlpJob:input_type -> google.privacy.dlp.v2.DeleteDlpJobRequest + 142, // 382: google.privacy.dlp.v2.DlpService.CancelDlpJob:input_type -> google.privacy.dlp.v2.CancelDlpJobRequest + 157, // 383: google.privacy.dlp.v2.DlpService.CreateStoredInfoType:input_type -> google.privacy.dlp.v2.CreateStoredInfoTypeRequest + 158, // 384: google.privacy.dlp.v2.DlpService.UpdateStoredInfoType:input_type -> google.privacy.dlp.v2.UpdateStoredInfoTypeRequest + 159, // 385: google.privacy.dlp.v2.DlpService.GetStoredInfoType:input_type -> google.privacy.dlp.v2.GetStoredInfoTypeRequest + 160, // 386: google.privacy.dlp.v2.DlpService.ListStoredInfoTypes:input_type -> google.privacy.dlp.v2.ListStoredInfoTypesRequest + 162, // 387: google.privacy.dlp.v2.DlpService.DeleteStoredInfoType:input_type -> google.privacy.dlp.v2.DeleteStoredInfoTypeRequest + 164, // 388: google.privacy.dlp.v2.DlpService.HybridInspectDlpJob:input_type -> google.privacy.dlp.v2.HybridInspectDlpJobRequest + 143, // 389: google.privacy.dlp.v2.DlpService.FinishDlpJob:input_type -> google.privacy.dlp.v2.FinishDlpJobRequest + 59, // 390: google.privacy.dlp.v2.DlpService.InspectContent:output_type -> google.privacy.dlp.v2.InspectContentResponse + 53, // 391: google.privacy.dlp.v2.DlpService.RedactImage:output_type -> google.privacy.dlp.v2.RedactImageResponse + 55, // 392: google.privacy.dlp.v2.DlpService.DeidentifyContent:output_type -> google.privacy.dlp.v2.DeidentifyContentResponse + 57, // 393: google.privacy.dlp.v2.DlpService.ReidentifyContent:output_type -> google.privacy.dlp.v2.ReidentifyContentResponse + 68, // 394: google.privacy.dlp.v2.DlpService.ListInfoTypes:output_type -> google.privacy.dlp.v2.ListInfoTypesResponse + 114, // 395: google.privacy.dlp.v2.DlpService.CreateInspectTemplate:output_type -> google.privacy.dlp.v2.InspectTemplate + 114, // 396: google.privacy.dlp.v2.DlpService.UpdateInspectTemplate:output_type -> google.privacy.dlp.v2.InspectTemplate + 114, // 397: google.privacy.dlp.v2.DlpService.GetInspectTemplate:output_type -> google.privacy.dlp.v2.InspectTemplate + 124, // 398: google.privacy.dlp.v2.DlpService.ListInspectTemplates:output_type -> google.privacy.dlp.v2.ListInspectTemplatesResponse + 246, // 399: google.privacy.dlp.v2.DlpService.DeleteInspectTemplate:output_type -> google.protobuf.Empty + 115, // 400: google.privacy.dlp.v2.DlpService.CreateDeidentifyTemplate:output_type -> google.privacy.dlp.v2.DeidentifyTemplate + 115, // 401: google.privacy.dlp.v2.DlpService.UpdateDeidentifyTemplate:output_type -> google.privacy.dlp.v2.DeidentifyTemplate + 115, // 402: google.privacy.dlp.v2.DlpService.GetDeidentifyTemplate:output_type -> google.privacy.dlp.v2.DeidentifyTemplate + 149, // 403: google.privacy.dlp.v2.DlpService.ListDeidentifyTemplates:output_type -> google.privacy.dlp.v2.ListDeidentifyTemplatesResponse + 246, // 404: google.privacy.dlp.v2.DlpService.DeleteDeidentifyTemplate:output_type -> google.protobuf.Empty + 117, // 405: google.privacy.dlp.v2.DlpService.CreateJobTrigger:output_type -> google.privacy.dlp.v2.JobTrigger + 117, // 406: google.privacy.dlp.v2.DlpService.UpdateJobTrigger:output_type -> google.privacy.dlp.v2.JobTrigger + 167, // 407: google.privacy.dlp.v2.DlpService.HybridInspectJobTrigger:output_type -> google.privacy.dlp.v2.HybridInspectResponse + 117, // 408: google.privacy.dlp.v2.DlpService.GetJobTrigger:output_type -> google.privacy.dlp.v2.JobTrigger + 132, // 409: google.privacy.dlp.v2.DlpService.ListJobTriggers:output_type -> google.privacy.dlp.v2.ListJobTriggersResponse + 246, // 410: google.privacy.dlp.v2.DlpService.DeleteJobTrigger:output_type -> google.protobuf.Empty + 138, // 411: google.privacy.dlp.v2.DlpService.ActivateJobTrigger:output_type -> google.privacy.dlp.v2.DlpJob + 138, // 412: google.privacy.dlp.v2.DlpService.CreateDlpJob:output_type -> google.privacy.dlp.v2.DlpJob + 141, // 413: google.privacy.dlp.v2.DlpService.ListDlpJobs:output_type -> google.privacy.dlp.v2.ListDlpJobsResponse + 138, // 414: google.privacy.dlp.v2.DlpService.GetDlpJob:output_type -> google.privacy.dlp.v2.DlpJob + 246, // 415: google.privacy.dlp.v2.DlpService.DeleteDlpJob:output_type -> google.protobuf.Empty + 246, // 416: google.privacy.dlp.v2.DlpService.CancelDlpJob:output_type -> google.protobuf.Empty + 156, // 417: google.privacy.dlp.v2.DlpService.CreateStoredInfoType:output_type -> google.privacy.dlp.v2.StoredInfoType + 156, // 418: google.privacy.dlp.v2.DlpService.UpdateStoredInfoType:output_type -> google.privacy.dlp.v2.StoredInfoType + 156, // 419: google.privacy.dlp.v2.DlpService.GetStoredInfoType:output_type -> google.privacy.dlp.v2.StoredInfoType + 161, // 420: google.privacy.dlp.v2.DlpService.ListStoredInfoTypes:output_type -> google.privacy.dlp.v2.ListStoredInfoTypesResponse + 246, // 421: google.privacy.dlp.v2.DlpService.DeleteStoredInfoType:output_type -> google.protobuf.Empty + 167, // 422: google.privacy.dlp.v2.DlpService.HybridInspectDlpJob:output_type -> google.privacy.dlp.v2.HybridInspectResponse + 246, // 423: google.privacy.dlp.v2.DlpService.FinishDlpJob:output_type -> google.protobuf.Empty + 390, // [390:424] is the sub-list for method output_type + 356, // [356:390] is the sub-list for method input_type + 356, // [356:356] is the sub-list for extension type_name + 356, // [356:356] is the sub-list for extension extendee + 0, // [0:356] is the sub-list for field type_name } func init() { file_google_privacy_dlp_v2_dlp_proto_init() } @@ -21450,7 +23011,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInfoTypesRequest); i { + switch v := v.(*VersionDescription); i { case 0: return &v.state case 1: @@ -21462,7 +23023,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInfoTypesResponse); i { + switch v := v.(*ListInfoTypesRequest); i { case 0: return &v.state case 1: @@ -21474,7 +23035,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RiskAnalysisJobConfig); i { + switch v := v.(*ListInfoTypesResponse); i { case 0: return &v.state case 1: @@ -21486,7 +23047,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuasiId); i { + switch v := v.(*RiskAnalysisJobConfig); i { case 0: return &v.state case 1: @@ -21498,7 +23059,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatisticalTable); i { + switch v := v.(*QuasiId); i { case 0: return &v.state case 1: @@ -21510,7 +23071,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrivacyMetric); i { + switch v := v.(*StatisticalTable); i { case 0: return &v.state case 1: @@ -21522,7 +23083,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzeDataSourceRiskDetails); i { + switch v := v.(*PrivacyMetric); i { case 0: return &v.state case 1: @@ -21534,7 +23095,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValueFrequency); i { + switch v := v.(*AnalyzeDataSourceRiskDetails); i { case 0: return &v.state case 1: @@ -21546,7 +23107,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value); i { + switch v := v.(*ValueFrequency); i { case 0: return &v.state case 1: @@ -21558,7 +23119,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuoteInfo); i { + switch v := v.(*Value); i { case 0: return &v.state case 1: @@ -21570,7 +23131,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DateTime); i { + switch v := v.(*QuoteInfo); i { case 0: return &v.state case 1: @@ -21582,7 +23143,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeidentifyConfig); i { + switch v := v.(*DateTime); i { case 0: return &v.state case 1: @@ -21594,7 +23155,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationErrorHandling); i { + switch v := v.(*DeidentifyConfig); i { case 0: return &v.state case 1: @@ -21606,7 +23167,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrimitiveTransformation); i { + switch v := v.(*ImageTransformations); i { case 0: return &v.state case 1: @@ -21618,7 +23179,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimePartConfig); i { + switch v := v.(*TransformationErrorHandling); i { case 0: return &v.state case 1: @@ -21630,7 +23191,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CryptoHashConfig); i { + switch v := v.(*PrimitiveTransformation); i { case 0: return &v.state case 1: @@ -21642,7 +23203,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CryptoDeterministicConfig); i { + switch v := v.(*TimePartConfig); i { case 0: return &v.state case 1: @@ -21654,7 +23215,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplaceValueConfig); i { + switch v := v.(*CryptoHashConfig); i { case 0: return &v.state case 1: @@ -21666,7 +23227,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplaceDictionaryConfig); i { + switch v := v.(*CryptoDeterministicConfig); i { case 0: return &v.state case 1: @@ -21678,7 +23239,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplaceWithInfoTypeConfig); i { + switch v := v.(*ReplaceValueConfig); i { case 0: return &v.state case 1: @@ -21690,7 +23251,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedactConfig); i { + switch v := v.(*ReplaceDictionaryConfig); i { case 0: return &v.state case 1: @@ -21702,7 +23263,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CharsToIgnore); i { + switch v := v.(*ReplaceWithInfoTypeConfig); i { case 0: return &v.state case 1: @@ -21714,7 +23275,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CharacterMaskConfig); i { + switch v := v.(*RedactConfig); i { case 0: return &v.state case 1: @@ -21726,7 +23287,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FixedSizeBucketingConfig); i { + switch v := v.(*CharsToIgnore); i { case 0: return &v.state case 1: @@ -21738,7 +23299,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketingConfig); i { + switch v := v.(*CharacterMaskConfig); i { case 0: return &v.state case 1: @@ -21750,7 +23311,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CryptoReplaceFfxFpeConfig); i { + switch v := v.(*FixedSizeBucketingConfig); i { case 0: return &v.state case 1: @@ -21762,7 +23323,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CryptoKey); i { + switch v := v.(*BucketingConfig); i { case 0: return &v.state case 1: @@ -21774,7 +23335,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransientCryptoKey); i { + switch v := v.(*CryptoReplaceFfxFpeConfig); i { case 0: return &v.state case 1: @@ -21786,7 +23347,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnwrappedCryptoKey); i { + switch v := v.(*CryptoKey); i { case 0: return &v.state case 1: @@ -21798,7 +23359,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KmsWrappedCryptoKey); i { + switch v := v.(*TransientCryptoKey); i { case 0: return &v.state case 1: @@ -21810,7 +23371,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DateShiftConfig); i { + switch v := v.(*UnwrappedCryptoKey); i { case 0: return &v.state case 1: @@ -21822,7 +23383,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InfoTypeTransformations); i { + switch v := v.(*KmsWrappedCryptoKey); i { case 0: return &v.state case 1: @@ -21834,7 +23395,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldTransformation); i { + switch v := v.(*DateShiftConfig); i { case 0: return &v.state case 1: @@ -21846,7 +23407,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecordTransformations); i { + switch v := v.(*InfoTypeTransformations); i { case 0: return &v.state case 1: @@ -21858,7 +23419,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecordSuppression); i { + switch v := v.(*FieldTransformation); i { case 0: return &v.state case 1: @@ -21870,7 +23431,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecordCondition); i { + switch v := v.(*RecordTransformations); i { case 0: return &v.state case 1: @@ -21882,7 +23443,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationOverview); i { + switch v := v.(*RecordSuppression); i { case 0: return &v.state case 1: @@ -21894,7 +23455,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransformationSummary); i { + switch v := v.(*RecordCondition); i { case 0: return &v.state case 1: @@ -21906,7 +23467,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Schedule); i { + switch v := v.(*TransformationOverview); i { case 0: return &v.state case 1: @@ -21918,7 +23479,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Manual); i { + switch v := v.(*TransformationSummary); i { case 0: return &v.state case 1: @@ -21930,7 +23491,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InspectTemplate); i { + switch v := v.(*TransformationDescription); i { case 0: return &v.state case 1: @@ -21942,7 +23503,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeidentifyTemplate); i { + switch v := v.(*TransformationDetails); i { case 0: return &v.state case 1: @@ -21954,7 +23515,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Error); i { + switch v := v.(*TransformationLocation); i { case 0: return &v.state case 1: @@ -21966,7 +23527,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JobTrigger); i { + switch v := v.(*RecordTransformation); i { case 0: return &v.state case 1: @@ -21978,7 +23539,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action); i { + switch v := v.(*TransformationResultStatus); i { case 0: return &v.state case 1: @@ -21990,7 +23551,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateInspectTemplateRequest); i { + switch v := v.(*TransformationDetailsStorageConfig); i { case 0: return &v.state case 1: @@ -22002,7 +23563,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateInspectTemplateRequest); i { + switch v := v.(*Schedule); i { case 0: return &v.state case 1: @@ -22014,7 +23575,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInspectTemplateRequest); i { + switch v := v.(*Manual); i { case 0: return &v.state case 1: @@ -22026,7 +23587,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInspectTemplatesRequest); i { + switch v := v.(*InspectTemplate); i { case 0: return &v.state case 1: @@ -22038,7 +23599,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInspectTemplatesResponse); i { + switch v := v.(*DeidentifyTemplate); i { case 0: return &v.state case 1: @@ -22050,7 +23611,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteInspectTemplateRequest); i { + switch v := v.(*Error); i { case 0: return &v.state case 1: @@ -22062,7 +23623,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateJobTriggerRequest); i { + switch v := v.(*JobTrigger); i { case 0: return &v.state case 1: @@ -22074,7 +23635,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActivateJobTriggerRequest); i { + switch v := v.(*Action); i { case 0: return &v.state case 1: @@ -22086,7 +23647,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateJobTriggerRequest); i { + switch v := v.(*TransformationConfig); i { case 0: return &v.state case 1: @@ -22098,7 +23659,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetJobTriggerRequest); i { + switch v := v.(*CreateInspectTemplateRequest); i { case 0: return &v.state case 1: @@ -22110,7 +23671,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateDlpJobRequest); i { + switch v := v.(*UpdateInspectTemplateRequest); i { case 0: return &v.state case 1: @@ -22122,7 +23683,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListJobTriggersRequest); i { + switch v := v.(*GetInspectTemplateRequest); i { case 0: return &v.state case 1: @@ -22134,6 +23695,114 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { } } file_google_privacy_dlp_v2_dlp_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListInspectTemplatesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListInspectTemplatesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteInspectTemplateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateJobTriggerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActivateJobTriggerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateJobTriggerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetJobTriggerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateDlpJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobTriggersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListJobTriggersResponse); i { case 0: return &v.state @@ -22145,7 +23814,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteJobTriggerRequest); i { case 0: return &v.state @@ -22157,7 +23826,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InspectJobConfig); i { case 0: return &v.state @@ -22169,7 +23838,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfileAction); i { case 0: return &v.state @@ -22181,7 +23850,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfileJobConfig); i { case 0: return &v.state @@ -22193,7 +23862,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfileLocation); i { case 0: return &v.state @@ -22205,7 +23874,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DlpJob); i { case 0: return &v.state @@ -22217,7 +23886,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDlpJobRequest); i { case 0: return &v.state @@ -22229,7 +23898,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDlpJobsRequest); i { case 0: return &v.state @@ -22241,7 +23910,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDlpJobsResponse); i { case 0: return &v.state @@ -22253,7 +23922,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancelDlpJobRequest); i { case 0: return &v.state @@ -22265,7 +23934,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FinishDlpJobRequest); i { case 0: return &v.state @@ -22277,7 +23946,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteDlpJobRequest); i { case 0: return &v.state @@ -22289,7 +23958,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateDeidentifyTemplateRequest); i { case 0: return &v.state @@ -22301,7 +23970,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateDeidentifyTemplateRequest); i { case 0: return &v.state @@ -22313,7 +23982,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDeidentifyTemplateRequest); i { case 0: return &v.state @@ -22325,7 +23994,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDeidentifyTemplatesRequest); i { case 0: return &v.state @@ -22337,7 +24006,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDeidentifyTemplatesResponse); i { case 0: return &v.state @@ -22349,7 +24018,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteDeidentifyTemplateRequest); i { case 0: return &v.state @@ -22361,7 +24030,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LargeCustomDictionaryConfig); i { case 0: return &v.state @@ -22373,7 +24042,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LargeCustomDictionaryStats); i { case 0: return &v.state @@ -22385,7 +24054,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoredInfoTypeConfig); i { case 0: return &v.state @@ -22397,7 +24066,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoredInfoTypeStats); i { case 0: return &v.state @@ -22409,7 +24078,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoredInfoTypeVersion); i { case 0: return &v.state @@ -22421,7 +24090,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoredInfoType); i { case 0: return &v.state @@ -22433,7 +24102,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateStoredInfoTypeRequest); i { case 0: return &v.state @@ -22445,7 +24114,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateStoredInfoTypeRequest); i { case 0: return &v.state @@ -22457,7 +24126,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetStoredInfoTypeRequest); i { case 0: return &v.state @@ -22469,7 +24138,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListStoredInfoTypesRequest); i { case 0: return &v.state @@ -22481,7 +24150,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListStoredInfoTypesResponse); i { case 0: return &v.state @@ -22493,7 +24162,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteStoredInfoTypeRequest); i { case 0: return &v.state @@ -22505,7 +24174,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HybridInspectJobTriggerRequest); i { case 0: return &v.state @@ -22517,7 +24186,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HybridInspectDlpJobRequest); i { case 0: return &v.state @@ -22529,7 +24198,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HybridContentItem); i { case 0: return &v.state @@ -22541,7 +24210,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HybridFindingDetails); i { case 0: return &v.state @@ -22553,7 +24222,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HybridInspectResponse); i { case 0: return &v.state @@ -22565,19 +24234,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SensitivityScore); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataRiskLevel); i { case 0: return &v.state @@ -22589,7 +24246,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfileConfigSnapshot); i { case 0: return &v.state @@ -22601,7 +24258,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TableDataProfile); i { case 0: return &v.state @@ -22613,7 +24270,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProfileStatus); i { case 0: return &v.state @@ -22625,7 +24282,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InfoTypeSummary); i { case 0: return &v.state @@ -22637,7 +24294,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtherInfoTypeSummary); i { case 0: return &v.state @@ -22649,7 +24306,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfilePubSubCondition); i { case 0: return &v.state @@ -22661,7 +24318,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfilePubSubMessage); i { case 0: return &v.state @@ -22673,7 +24330,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InspectConfig_FindingLimits); i { case 0: return &v.state @@ -22685,7 +24342,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InspectConfig_FindingLimits_InfoTypeLimit); i { case 0: return &v.state @@ -22697,7 +24354,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Table_Row); i { case 0: return &v.state @@ -22709,7 +24366,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RedactImageRequest_ImageRedactionConfig); i { case 0: return &v.state @@ -22721,7 +24378,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InspectDataSourceDetails_RequestedOptions); i { case 0: return &v.state @@ -22733,7 +24390,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InspectDataSourceDetails_Result); i { case 0: return &v.state @@ -22745,7 +24402,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatisticalTable_QuasiIdentifierField); i { case 0: return &v.state @@ -22757,7 +24414,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_NumericalStatsConfig); i { case 0: return &v.state @@ -22769,7 +24426,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_CategoricalStatsConfig); i { case 0: return &v.state @@ -22781,7 +24438,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_KAnonymityConfig); i { case 0: return &v.state @@ -22793,7 +24450,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_LDiversityConfig); i { case 0: return &v.state @@ -22805,7 +24462,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_KMapEstimationConfig); i { case 0: return &v.state @@ -22817,7 +24474,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_DeltaPresenceEstimationConfig); i { case 0: return &v.state @@ -22829,7 +24486,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_KMapEstimationConfig_TaggedField); i { case 0: return &v.state @@ -22841,7 +24498,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable); i { case 0: return &v.state @@ -22853,7 +24510,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField); i { case 0: return &v.state @@ -22865,7 +24522,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_NumericalStatsResult); i { case 0: return &v.state @@ -22877,7 +24534,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_CategoricalStatsResult); i { case 0: return &v.state @@ -22889,7 +24546,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_KAnonymityResult); i { case 0: return &v.state @@ -22901,7 +24558,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_LDiversityResult); i { case 0: return &v.state @@ -22913,7 +24570,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_KMapEstimationResult); i { case 0: return &v.state @@ -22925,7 +24582,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult); i { case 0: return &v.state @@ -22937,7 +24594,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_RequestedRiskAnalysisOptions); i { case 0: return &v.state @@ -22949,7 +24606,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket); i { case 0: return &v.state @@ -22961,7 +24618,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass); i { case 0: return &v.state @@ -22973,7 +24630,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket); i { case 0: return &v.state @@ -22985,7 +24642,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass); i { case 0: return &v.state @@ -22997,7 +24654,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket); i { case 0: return &v.state @@ -23009,7 +24666,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues); i { case 0: return &v.state @@ -23021,7 +24678,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket); i { case 0: return &v.state @@ -23033,7 +24690,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationQuasiIdValues); i { case 0: return &v.state @@ -23045,7 +24702,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_DeltaPresenceEstimationHistogramBucket); i { case 0: return &v.state @@ -23057,7 +24714,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DateTime_TimeZone); i { case 0: return &v.state @@ -23069,7 +24726,55 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransformations_ImageTransformation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransformations_ImageTransformation_SelectedInfoTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransformations_ImageTransformation_AllInfoTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransformations_ImageTransformation_AllText); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransformationErrorHandling_ThrowError); i { case 0: return &v.state @@ -23081,7 +24786,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransformationErrorHandling_LeaveUntransformed); i { case 0: return &v.state @@ -23093,7 +24798,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BucketingConfig_Bucket); i { case 0: return &v.state @@ -23105,7 +24810,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InfoTypeTransformations_InfoTypeTransformation); i { case 0: return &v.state @@ -23117,7 +24822,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecordCondition_Condition); i { case 0: return &v.state @@ -23129,7 +24834,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecordCondition_Conditions); i { case 0: return &v.state @@ -23141,7 +24846,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecordCondition_Expressions); i { case 0: return &v.state @@ -23153,7 +24858,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransformationSummary_SummaryResult); i { case 0: return &v.state @@ -23165,7 +24870,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobTrigger_Trigger); i { case 0: return &v.state @@ -23177,7 +24882,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_SaveFindings); i { case 0: return &v.state @@ -23189,7 +24894,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_PublishToPubSub); i { case 0: return &v.state @@ -23201,7 +24906,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_PublishSummaryToCscc); i { case 0: return &v.state @@ -23213,7 +24918,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_PublishFindingsToCloudDataCatalog); i { case 0: return &v.state @@ -23225,7 +24930,19 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Action_Deidentify); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_JobNotificationEmails); i { case 0: return &v.state @@ -23237,7 +24954,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_PublishToStackdriver); i { case 0: return &v.state @@ -23249,7 +24966,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfileAction_Export); i { case 0: return &v.state @@ -23261,7 +24978,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfileAction_PubSubNotification); i { case 0: return &v.state @@ -23273,7 +24990,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfilePubSubCondition_PubSubCondition); i { case 0: return &v.state @@ -23285,7 +25002,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { return nil } } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_dlp_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataProfilePubSubCondition_PubSubExpressions); i { case 0: return &v.state @@ -23329,12 +25046,12 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { (*InfoTypeCategory_IndustryCategory_)(nil), (*InfoTypeCategory_TypeCategory_)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[39].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[40].OneofWrappers = []interface{}{ (*QuasiId_InfoType)(nil), (*QuasiId_CustomTag)(nil), (*QuasiId_Inferred)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[41].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[42].OneofWrappers = []interface{}{ (*PrivacyMetric_NumericalStatsConfig_)(nil), (*PrivacyMetric_CategoricalStatsConfig_)(nil), (*PrivacyMetric_KAnonymityConfig_)(nil), @@ -23342,7 +25059,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { (*PrivacyMetric_KMapEstimationConfig_)(nil), (*PrivacyMetric_DeltaPresenceEstimationConfig_)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[42].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[43].OneofWrappers = []interface{}{ (*AnalyzeDataSourceRiskDetails_NumericalStatsResult_)(nil), (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_)(nil), (*AnalyzeDataSourceRiskDetails_KAnonymityResult_)(nil), @@ -23350,7 +25067,7 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_)(nil), (*AnalyzeDataSourceRiskDetails_DeltaPresenceEstimationResult_)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[44].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[45].OneofWrappers = []interface{}{ (*Value_IntegerValue)(nil), (*Value_FloatValue)(nil), (*Value_StringValue)(nil), @@ -23360,18 +25077,19 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { (*Value_DateValue)(nil), (*Value_DayOfWeekValue)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[45].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[46].OneofWrappers = []interface{}{ (*QuoteInfo_DateTime)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[47].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[48].OneofWrappers = []interface{}{ (*DeidentifyConfig_InfoTypeTransformations)(nil), (*DeidentifyConfig_RecordTransformations)(nil), + (*DeidentifyConfig_ImageTransformations)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[48].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[50].OneofWrappers = []interface{}{ (*TransformationErrorHandling_ThrowError_)(nil), (*TransformationErrorHandling_LeaveUntransformed_)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[49].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[51].OneofWrappers = []interface{}{ (*PrimitiveTransformation_ReplaceConfig)(nil), (*PrimitiveTransformation_RedactConfig)(nil), (*PrimitiveTransformation_CharacterMaskConfig)(nil), @@ -23385,89 +25103,105 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { (*PrimitiveTransformation_CryptoDeterministicConfig)(nil), (*PrimitiveTransformation_ReplaceDictionaryConfig)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[54].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[56].OneofWrappers = []interface{}{ (*ReplaceDictionaryConfig_WordList)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[57].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[59].OneofWrappers = []interface{}{ (*CharsToIgnore_CharactersToSkip)(nil), (*CharsToIgnore_CommonCharactersToIgnore)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[61].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[63].OneofWrappers = []interface{}{ (*CryptoReplaceFfxFpeConfig_CommonAlphabet)(nil), (*CryptoReplaceFfxFpeConfig_CustomAlphabet)(nil), (*CryptoReplaceFfxFpeConfig_Radix)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[62].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[64].OneofWrappers = []interface{}{ (*CryptoKey_Transient)(nil), (*CryptoKey_Unwrapped)(nil), (*CryptoKey_KmsWrapped)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[66].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[68].OneofWrappers = []interface{}{ (*DateShiftConfig_CryptoKey)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[68].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[70].OneofWrappers = []interface{}{ (*FieldTransformation_PrimitiveTransformation)(nil), (*FieldTransformation_InfoTypeTransformations)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[74].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[78].OneofWrappers = []interface{}{ + (*TransformationLocation_FindingId)(nil), + (*TransformationLocation_RecordTransformation)(nil), + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[81].OneofWrappers = []interface{}{ + (*TransformationDetailsStorageConfig_Table)(nil), + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[82].OneofWrappers = []interface{}{ (*Schedule_RecurrencePeriodDuration)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[79].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[87].OneofWrappers = []interface{}{ (*JobTrigger_InspectJob)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[80].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[88].OneofWrappers = []interface{}{ (*Action_SaveFindings_)(nil), (*Action_PubSub)(nil), (*Action_PublishSummaryToCscc_)(nil), (*Action_PublishFindingsToCloudDataCatalog_)(nil), + (*Action_Deidentify_)(nil), (*Action_JobNotificationEmails_)(nil), (*Action_PublishToStackdriver_)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[91].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[100].OneofWrappers = []interface{}{ (*CreateDlpJobRequest_InspectJob)(nil), (*CreateDlpJobRequest_RiskJob)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[96].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[105].OneofWrappers = []interface{}{ (*DataProfileAction_ExportData)(nil), (*DataProfileAction_PubSubNotification_)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[98].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[107].OneofWrappers = []interface{}{ (*DataProfileLocation_OrganizationId)(nil), (*DataProfileLocation_FolderId)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[99].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[108].OneofWrappers = []interface{}{ (*DlpJob_RiskDetails)(nil), (*DlpJob_InspectDetails)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[112].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[121].OneofWrappers = []interface{}{ (*LargeCustomDictionaryConfig_CloudStorageFileSet)(nil), (*LargeCustomDictionaryConfig_BigQueryField)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[114].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[123].OneofWrappers = []interface{}{ (*StoredInfoTypeConfig_LargeCustomDictionary)(nil), (*StoredInfoTypeConfig_Dictionary)(nil), (*StoredInfoTypeConfig_Regex)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[115].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[124].OneofWrappers = []interface{}{ (*StoredInfoTypeStats_LargeCustomDictionary)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[142].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[150].OneofWrappers = []interface{}{ (*RedactImageRequest_ImageRedactionConfig_InfoType)(nil), (*RedactImageRequest_ImageRedactionConfig_RedactAllText)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[152].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[160].OneofWrappers = []interface{}{ (*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType)(nil), (*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag)(nil), (*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[178].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[180].OneofWrappers = []interface{}{ + (*ImageTransformations_ImageTransformation_SelectedInfoTypes_)(nil), + (*ImageTransformations_ImageTransformation_AllInfoTypes_)(nil), + (*ImageTransformations_ImageTransformation_AllText_)(nil), + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[190].OneofWrappers = []interface{}{ (*RecordCondition_Expressions_Conditions)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[180].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[192].OneofWrappers = []interface{}{ (*JobTrigger_Trigger_Schedule)(nil), (*JobTrigger_Trigger_Manual)(nil), } - file_google_privacy_dlp_v2_dlp_proto_msgTypes[191].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_dlp_proto_msgTypes[197].OneofWrappers = []interface{}{ + (*Action_Deidentify_CloudStorageOutput)(nil), + } + file_google_privacy_dlp_v2_dlp_proto_msgTypes[204].OneofWrappers = []interface{}{ (*DataProfilePubSubCondition_PubSubCondition_MinimumRiskScore)(nil), (*DataProfilePubSubCondition_PubSubCondition_MinimumSensitivityScore)(nil), } @@ -23476,8 +25210,8 @@ func file_google_privacy_dlp_v2_dlp_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_privacy_dlp_v2_dlp_proto_rawDesc, - NumEnums: 28, - NumMessages: 193, + NumEnums: 30, + NumMessages: 206, NumExtensions: 0, NumServices: 1, }, @@ -23537,11 +25271,11 @@ type DlpServiceClient interface { // https://cloud.google.com/dlp/docs/pseudonymization#re-identification_in_free_text_code_example // to learn more. ReidentifyContent(ctx context.Context, in *ReidentifyContentRequest, opts ...grpc.CallOption) (*ReidentifyContentResponse, error) - // Returns a list of the sensitive information types that the DLP API + // Returns a list of the sensitive information types that DLP API // supports. See https://cloud.google.com/dlp/docs/infotypes-reference to // learn more. ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) - // Creates an InspectTemplate for re-using frequently used configuration + // Creates an InspectTemplate for reusing frequently used configuration // for inspecting content, images, and storage. // See https://cloud.google.com/dlp/docs/creating-templates to learn more. CreateInspectTemplate(ctx context.Context, in *CreateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) @@ -23557,7 +25291,7 @@ type DlpServiceClient interface { // Deletes an InspectTemplate. // See https://cloud.google.com/dlp/docs/creating-templates to learn more. DeleteInspectTemplate(ctx context.Context, in *DeleteInspectTemplateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - // Creates a DeidentifyTemplate for re-using frequently used configuration + // Creates a DeidentifyTemplate for reusing frequently used configuration // for de-identifying content, images, and storage. // See https://cloud.google.com/dlp/docs/creating-templates-deid to learn // more. @@ -23618,7 +25352,7 @@ type DlpServiceClient interface { // https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more. GetDlpJob(ctx context.Context, in *GetDlpJobRequest, opts ...grpc.CallOption) (*DlpJob, error) // Deletes a long-running DlpJob. This method indicates that the client is - // no longer interested in the DlpJob result. The job will be cancelled if + // no longer interested in the DlpJob result. The job will be canceled if // possible. // See https://cloud.google.com/dlp/docs/inspecting-storage and // https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more. @@ -24008,11 +25742,11 @@ type DlpServiceServer interface { // https://cloud.google.com/dlp/docs/pseudonymization#re-identification_in_free_text_code_example // to learn more. ReidentifyContent(context.Context, *ReidentifyContentRequest) (*ReidentifyContentResponse, error) - // Returns a list of the sensitive information types that the DLP API + // Returns a list of the sensitive information types that DLP API // supports. See https://cloud.google.com/dlp/docs/infotypes-reference to // learn more. ListInfoTypes(context.Context, *ListInfoTypesRequest) (*ListInfoTypesResponse, error) - // Creates an InspectTemplate for re-using frequently used configuration + // Creates an InspectTemplate for reusing frequently used configuration // for inspecting content, images, and storage. // See https://cloud.google.com/dlp/docs/creating-templates to learn more. CreateInspectTemplate(context.Context, *CreateInspectTemplateRequest) (*InspectTemplate, error) @@ -24028,7 +25762,7 @@ type DlpServiceServer interface { // Deletes an InspectTemplate. // See https://cloud.google.com/dlp/docs/creating-templates to learn more. DeleteInspectTemplate(context.Context, *DeleteInspectTemplateRequest) (*emptypb.Empty, error) - // Creates a DeidentifyTemplate for re-using frequently used configuration + // Creates a DeidentifyTemplate for reusing frequently used configuration // for de-identifying content, images, and storage. // See https://cloud.google.com/dlp/docs/creating-templates-deid to learn // more. @@ -24089,7 +25823,7 @@ type DlpServiceServer interface { // https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more. GetDlpJob(context.Context, *GetDlpJobRequest) (*DlpJob, error) // Deletes a long-running DlpJob. This method indicates that the client is - // no longer interested in the DlpJob result. The job will be cancelled if + // no longer interested in the DlpJob result. The job will be canceled if // possible. // See https://cloud.google.com/dlp/docs/inspecting-storage and // https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more. diff --git a/googleapis/privacy/dlp/v2/storage.pb.go b/googleapis/privacy/dlp/v2/storage.pb.go index 10adc3c3a..05ce7668b 100644 --- a/googleapis/privacy/dlp/v2/storage.pb.go +++ b/googleapis/privacy/dlp/v2/storage.pb.go @@ -24,6 +24,7 @@ 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" @@ -220,6 +221,67 @@ func (FileType) EnumDescriptor() ([]byte, []int) { return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{1} } +// Various score levels for resources. +type SensitivityScore_SensitivityScoreLevel int32 + +const ( + // Unused. + SensitivityScore_SENSITIVITY_SCORE_UNSPECIFIED SensitivityScore_SensitivityScoreLevel = 0 + // No sensitive information detected. Limited access. + SensitivityScore_SENSITIVITY_LOW SensitivityScore_SensitivityScoreLevel = 10 + // Medium risk - PII, potentially sensitive data, or fields with free-text + // data that are at higher risk of having intermittent sensitive data. + // Consider limiting access. + SensitivityScore_SENSITIVITY_MODERATE SensitivityScore_SensitivityScoreLevel = 20 + // High risk – SPII may be present. Exfiltration of data may lead to user + // data loss. Re-identification of users may be possible. Consider limiting + // usage and or removing SPII. + SensitivityScore_SENSITIVITY_HIGH SensitivityScore_SensitivityScoreLevel = 30 +) + +// Enum value maps for SensitivityScore_SensitivityScoreLevel. +var ( + SensitivityScore_SensitivityScoreLevel_name = map[int32]string{ + 0: "SENSITIVITY_SCORE_UNSPECIFIED", + 10: "SENSITIVITY_LOW", + 20: "SENSITIVITY_MODERATE", + 30: "SENSITIVITY_HIGH", + } + SensitivityScore_SensitivityScoreLevel_value = map[string]int32{ + "SENSITIVITY_SCORE_UNSPECIFIED": 0, + "SENSITIVITY_LOW": 10, + "SENSITIVITY_MODERATE": 20, + "SENSITIVITY_HIGH": 30, + } +) + +func (x SensitivityScore_SensitivityScoreLevel) Enum() *SensitivityScore_SensitivityScoreLevel { + p := new(SensitivityScore_SensitivityScoreLevel) + *p = x + return p +} + +func (x SensitivityScore_SensitivityScoreLevel) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SensitivityScore_SensitivityScoreLevel) Descriptor() protoreflect.EnumDescriptor { + return file_google_privacy_dlp_v2_storage_proto_enumTypes[2].Descriptor() +} + +func (SensitivityScore_SensitivityScoreLevel) Type() protoreflect.EnumType { + return &file_google_privacy_dlp_v2_storage_proto_enumTypes[2] +} + +func (x SensitivityScore_SensitivityScoreLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SensitivityScore_SensitivityScoreLevel.Descriptor instead. +func (SensitivityScore_SensitivityScoreLevel) EnumDescriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{1, 0} +} + type CustomInfoType_ExclusionType int32 const ( @@ -253,11 +315,11 @@ func (x CustomInfoType_ExclusionType) String() string { } func (CustomInfoType_ExclusionType) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_storage_proto_enumTypes[2].Descriptor() + return file_google_privacy_dlp_v2_storage_proto_enumTypes[3].Descriptor() } func (CustomInfoType_ExclusionType) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_storage_proto_enumTypes[2] + return &file_google_privacy_dlp_v2_storage_proto_enumTypes[3] } func (x CustomInfoType_ExclusionType) Number() protoreflect.EnumNumber { @@ -266,7 +328,7 @@ func (x CustomInfoType_ExclusionType) Number() protoreflect.EnumNumber { // Deprecated: Use CustomInfoType_ExclusionType.Descriptor instead. func (CustomInfoType_ExclusionType) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 0} } // How to sample bytes if not all bytes are scanned. Meaningful only when used @@ -308,11 +370,11 @@ func (x CloudStorageOptions_SampleMethod) String() string { } func (CloudStorageOptions_SampleMethod) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_storage_proto_enumTypes[3].Descriptor() + return file_google_privacy_dlp_v2_storage_proto_enumTypes[4].Descriptor() } func (CloudStorageOptions_SampleMethod) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_storage_proto_enumTypes[3] + return &file_google_privacy_dlp_v2_storage_proto_enumTypes[4] } func (x CloudStorageOptions_SampleMethod) Number() protoreflect.EnumNumber { @@ -321,7 +383,7 @@ func (x CloudStorageOptions_SampleMethod) Number() protoreflect.EnumNumber { // Deprecated: Use CloudStorageOptions_SampleMethod.Descriptor instead. func (CloudStorageOptions_SampleMethod) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{8, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{9, 0} } // How to sample rows if not all rows are scanned. Meaningful only when used @@ -364,11 +426,11 @@ func (x BigQueryOptions_SampleMethod) String() string { } func (BigQueryOptions_SampleMethod) Descriptor() protoreflect.EnumDescriptor { - return file_google_privacy_dlp_v2_storage_proto_enumTypes[4].Descriptor() + return file_google_privacy_dlp_v2_storage_proto_enumTypes[5].Descriptor() } func (BigQueryOptions_SampleMethod) Type() protoreflect.EnumType { - return &file_google_privacy_dlp_v2_storage_proto_enumTypes[4] + return &file_google_privacy_dlp_v2_storage_proto_enumTypes[5] } func (x BigQueryOptions_SampleMethod) Number() protoreflect.EnumNumber { @@ -377,7 +439,7 @@ func (x BigQueryOptions_SampleMethod) Number() protoreflect.EnumNumber { // Deprecated: Use BigQueryOptions_SampleMethod.Descriptor instead. func (BigQueryOptions_SampleMethod) EnumDescriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{11, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{12, 0} } // Type of information detected by the API. @@ -442,6 +504,56 @@ func (x *InfoType) GetVersion() string { return "" } +// Score is a summary of all elements in the data profile. +// A higher number means more sensitive. +type SensitivityScore struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The score applied to the resource. + Score SensitivityScore_SensitivityScoreLevel `protobuf:"varint,1,opt,name=score,proto3,enum=google.privacy.dlp.v2.SensitivityScore_SensitivityScoreLevel" json:"score,omitempty"` +} + +func (x *SensitivityScore) Reset() { + *x = SensitivityScore{} + if protoimpl.UnsafeEnabled { + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SensitivityScore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SensitivityScore) ProtoMessage() {} + +func (x *SensitivityScore) ProtoReflect() protoreflect.Message { + mi := &file_google_privacy_dlp_v2_storage_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 SensitivityScore.ProtoReflect.Descriptor instead. +func (*SensitivityScore) Descriptor() ([]byte, []int) { + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{1} +} + +func (x *SensitivityScore) GetScore() SensitivityScore_SensitivityScoreLevel { + if x != nil { + return x.Score + } + return SensitivityScore_SENSITIVITY_SCORE_UNSPECIFIED +} + // A reference to a StoredInfoType to use with scanning. type StoredType struct { state protoimpl.MessageState @@ -460,7 +572,7 @@ type StoredType struct { func (x *StoredType) Reset() { *x = StoredType{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[1] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -473,7 +585,7 @@ func (x *StoredType) String() string { func (*StoredType) ProtoMessage() {} func (x *StoredType) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[1] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -486,7 +598,7 @@ func (x *StoredType) ProtoReflect() protoreflect.Message { // Deprecated: Use StoredType.ProtoReflect.Descriptor instead. func (*StoredType) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{1} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2} } func (x *StoredType) GetName() string { @@ -540,7 +652,7 @@ type CustomInfoType struct { func (x *CustomInfoType) Reset() { *x = CustomInfoType{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[2] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -553,7 +665,7 @@ func (x *CustomInfoType) String() string { func (*CustomInfoType) ProtoMessage() {} func (x *CustomInfoType) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[2] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -566,7 +678,7 @@ func (x *CustomInfoType) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomInfoType.ProtoReflect.Descriptor instead. func (*CustomInfoType) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3} } func (x *CustomInfoType) GetInfoType() *InfoType { @@ -679,7 +791,7 @@ type FieldId struct { func (x *FieldId) Reset() { *x = FieldId{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[3] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -692,7 +804,7 @@ func (x *FieldId) String() string { func (*FieldId) ProtoMessage() {} func (x *FieldId) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[3] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -705,7 +817,7 @@ func (x *FieldId) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldId.ProtoReflect.Descriptor instead. func (*FieldId) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{4} } func (x *FieldId) GetName() string { @@ -735,7 +847,7 @@ type PartitionId struct { func (x *PartitionId) Reset() { *x = PartitionId{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[4] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -748,7 +860,7 @@ func (x *PartitionId) String() string { func (*PartitionId) ProtoMessage() {} func (x *PartitionId) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[4] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -761,7 +873,7 @@ func (x *PartitionId) ProtoReflect() protoreflect.Message { // Deprecated: Use PartitionId.ProtoReflect.Descriptor instead. func (*PartitionId) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{4} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{5} } func (x *PartitionId) GetProjectId() string { @@ -791,7 +903,7 @@ type KindExpression struct { func (x *KindExpression) Reset() { *x = KindExpression{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[5] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -804,7 +916,7 @@ func (x *KindExpression) String() string { func (*KindExpression) ProtoMessage() {} func (x *KindExpression) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[5] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -817,7 +929,7 @@ func (x *KindExpression) ProtoReflect() protoreflect.Message { // Deprecated: Use KindExpression.ProtoReflect.Descriptor instead. func (*KindExpression) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{5} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{6} } func (x *KindExpression) GetName() string { @@ -843,7 +955,7 @@ type DatastoreOptions struct { func (x *DatastoreOptions) Reset() { *x = DatastoreOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[6] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -856,7 +968,7 @@ func (x *DatastoreOptions) String() string { func (*DatastoreOptions) ProtoMessage() {} func (x *DatastoreOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[6] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -869,7 +981,7 @@ func (x *DatastoreOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use DatastoreOptions.ProtoReflect.Descriptor instead. func (*DatastoreOptions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{6} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{7} } func (x *DatastoreOptions) GetPartitionId() *PartitionId { @@ -948,7 +1060,7 @@ type CloudStorageRegexFileSet struct { func (x *CloudStorageRegexFileSet) Reset() { *x = CloudStorageRegexFileSet{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[7] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -961,7 +1073,7 @@ func (x *CloudStorageRegexFileSet) String() string { func (*CloudStorageRegexFileSet) ProtoMessage() {} func (x *CloudStorageRegexFileSet) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[7] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -974,7 +1086,7 @@ func (x *CloudStorageRegexFileSet) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudStorageRegexFileSet.ProtoReflect.Descriptor instead. func (*CloudStorageRegexFileSet) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{7} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{8} } func (x *CloudStorageRegexFileSet) GetBucketName() string { @@ -998,7 +1110,7 @@ func (x *CloudStorageRegexFileSet) GetExcludeRegex() []string { return nil } -// Options defining a file or a set of files within a Google Cloud Storage +// Options defining a file or a set of files within a Cloud Storage // bucket. type CloudStorageOptions struct { state protoimpl.MessageState @@ -1036,7 +1148,7 @@ type CloudStorageOptions struct { func (x *CloudStorageOptions) Reset() { *x = CloudStorageOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[8] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1049,7 +1161,7 @@ func (x *CloudStorageOptions) String() string { func (*CloudStorageOptions) ProtoMessage() {} func (x *CloudStorageOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[8] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1062,7 +1174,7 @@ func (x *CloudStorageOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudStorageOptions.ProtoReflect.Descriptor instead. func (*CloudStorageOptions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{8} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{9} } func (x *CloudStorageOptions) GetFileSet() *CloudStorageOptions_FileSet { @@ -1121,7 +1233,7 @@ type CloudStorageFileSet struct { func (x *CloudStorageFileSet) Reset() { *x = CloudStorageFileSet{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[9] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1134,7 +1246,7 @@ func (x *CloudStorageFileSet) String() string { func (*CloudStorageFileSet) ProtoMessage() {} func (x *CloudStorageFileSet) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[9] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1147,7 +1259,7 @@ func (x *CloudStorageFileSet) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudStorageFileSet.ProtoReflect.Descriptor instead. func (*CloudStorageFileSet) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{9} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{10} } func (x *CloudStorageFileSet) GetUrl() string { @@ -1171,7 +1283,7 @@ type CloudStoragePath struct { func (x *CloudStoragePath) Reset() { *x = CloudStoragePath{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[10] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1184,7 +1296,7 @@ func (x *CloudStoragePath) String() string { func (*CloudStoragePath) ProtoMessage() {} func (x *CloudStoragePath) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[10] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1197,7 +1309,7 @@ func (x *CloudStoragePath) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudStoragePath.ProtoReflect.Descriptor instead. func (*CloudStoragePath) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{10} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{11} } func (x *CloudStoragePath) GetPath() string { @@ -1243,7 +1355,7 @@ type BigQueryOptions struct { func (x *BigQueryOptions) Reset() { *x = BigQueryOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[11] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1256,7 +1368,7 @@ func (x *BigQueryOptions) String() string { func (*BigQueryOptions) ProtoMessage() {} func (x *BigQueryOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[11] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1269,7 +1381,7 @@ func (x *BigQueryOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use BigQueryOptions.ProtoReflect.Descriptor instead. func (*BigQueryOptions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{11} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{12} } func (x *BigQueryOptions) GetTableReference() *BigQueryTable { @@ -1340,7 +1452,7 @@ type StorageConfig struct { func (x *StorageConfig) Reset() { *x = StorageConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[12] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1353,7 +1465,7 @@ func (x *StorageConfig) String() string { func (*StorageConfig) ProtoMessage() {} func (x *StorageConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[12] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1366,7 +1478,7 @@ func (x *StorageConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageConfig.ProtoReflect.Descriptor instead. func (*StorageConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{12} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{13} } func (m *StorageConfig) GetType() isStorageConfig_Type { @@ -1421,7 +1533,7 @@ type StorageConfig_DatastoreOptions struct { } type StorageConfig_CloudStorageOptions struct { - // Google Cloud Storage options. + // Cloud Storage options. CloudStorageOptions *CloudStorageOptions `protobuf:"bytes,3,opt,name=cloud_storage_options,json=cloudStorageOptions,proto3,oneof"` } @@ -1484,7 +1596,7 @@ type HybridOptions struct { func (x *HybridOptions) Reset() { *x = HybridOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[13] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1497,7 +1609,7 @@ func (x *HybridOptions) String() string { func (*HybridOptions) ProtoMessage() {} func (x *HybridOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[13] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1510,7 +1622,7 @@ func (x *HybridOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use HybridOptions.ProtoReflect.Descriptor instead. func (*HybridOptions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{13} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{14} } func (x *HybridOptions) GetDescription() string { @@ -1560,7 +1672,7 @@ type BigQueryKey struct { func (x *BigQueryKey) Reset() { *x = BigQueryKey{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[14] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1573,7 +1685,7 @@ func (x *BigQueryKey) String() string { func (*BigQueryKey) ProtoMessage() {} func (x *BigQueryKey) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[14] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1586,7 +1698,7 @@ func (x *BigQueryKey) ProtoReflect() protoreflect.Message { // Deprecated: Use BigQueryKey.ProtoReflect.Descriptor instead. func (*BigQueryKey) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{14} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{15} } func (x *BigQueryKey) GetTableReference() *BigQueryTable { @@ -1616,7 +1728,7 @@ type DatastoreKey struct { func (x *DatastoreKey) Reset() { *x = DatastoreKey{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[15] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1629,7 +1741,7 @@ func (x *DatastoreKey) String() string { func (*DatastoreKey) ProtoMessage() {} func (x *DatastoreKey) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[15] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1642,7 +1754,7 @@ func (x *DatastoreKey) ProtoReflect() protoreflect.Message { // Deprecated: Use DatastoreKey.ProtoReflect.Descriptor instead. func (*DatastoreKey) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{15} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{16} } func (x *DatastoreKey) GetEntityKey() *Key { @@ -1680,7 +1792,7 @@ type Key struct { func (x *Key) Reset() { *x = Key{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[16] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1693,7 +1805,7 @@ func (x *Key) String() string { func (*Key) ProtoMessage() {} func (x *Key) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[16] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1706,7 +1818,7 @@ func (x *Key) ProtoReflect() protoreflect.Message { // Deprecated: Use Key.ProtoReflect.Descriptor instead. func (*Key) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{16} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{17} } func (x *Key) GetPartitionId() *PartitionId { @@ -1742,7 +1854,7 @@ type RecordKey struct { func (x *RecordKey) Reset() { *x = RecordKey{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[17] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1755,7 +1867,7 @@ func (x *RecordKey) String() string { func (*RecordKey) ProtoMessage() {} func (x *RecordKey) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[17] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1768,7 +1880,7 @@ func (x *RecordKey) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordKey.ProtoReflect.Descriptor instead. func (*RecordKey) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{17} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{18} } func (m *RecordKey) GetType() isRecordKey_Type { @@ -1837,7 +1949,7 @@ type BigQueryTable struct { func (x *BigQueryTable) Reset() { *x = BigQueryTable{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[18] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1850,7 +1962,7 @@ func (x *BigQueryTable) String() string { func (*BigQueryTable) ProtoMessage() {} func (x *BigQueryTable) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[18] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1863,7 +1975,7 @@ func (x *BigQueryTable) ProtoReflect() protoreflect.Message { // Deprecated: Use BigQueryTable.ProtoReflect.Descriptor instead. func (*BigQueryTable) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{18} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{19} } func (x *BigQueryTable) GetProjectId() string { @@ -1902,7 +2014,7 @@ type BigQueryField struct { func (x *BigQueryField) Reset() { *x = BigQueryField{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[19] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1915,7 +2027,7 @@ func (x *BigQueryField) String() string { func (*BigQueryField) ProtoMessage() {} func (x *BigQueryField) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[19] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1928,7 +2040,7 @@ func (x *BigQueryField) ProtoReflect() protoreflect.Message { // Deprecated: Use BigQueryField.ProtoReflect.Descriptor instead. func (*BigQueryField) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{19} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{20} } func (x *BigQueryField) GetTable() *BigQueryTable { @@ -1962,7 +2074,7 @@ type EntityId struct { func (x *EntityId) Reset() { *x = EntityId{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[20] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1975,7 +2087,7 @@ func (x *EntityId) String() string { func (*EntityId) ProtoMessage() {} func (x *EntityId) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[20] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1988,7 +2100,7 @@ func (x *EntityId) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityId.ProtoReflect.Descriptor instead. func (*EntityId) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{20} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{21} } func (x *EntityId) GetField() *FieldId { @@ -2014,7 +2126,7 @@ type TableOptions struct { func (x *TableOptions) Reset() { *x = TableOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[21] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2027,7 +2139,7 @@ func (x *TableOptions) String() string { func (*TableOptions) ProtoMessage() {} func (x *TableOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[21] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2040,7 +2152,7 @@ func (x *TableOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use TableOptions.ProtoReflect.Descriptor instead. func (*TableOptions) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{21} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{22} } func (x *TableOptions) GetIdentifyingFields() []*FieldId { @@ -2088,7 +2200,7 @@ type CustomInfoType_Dictionary struct { func (x *CustomInfoType_Dictionary) Reset() { *x = CustomInfoType_Dictionary{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[22] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2101,7 +2213,7 @@ func (x *CustomInfoType_Dictionary) String() string { func (*CustomInfoType_Dictionary) ProtoMessage() {} func (x *CustomInfoType_Dictionary) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[22] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2114,7 +2226,7 @@ func (x *CustomInfoType_Dictionary) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomInfoType_Dictionary.ProtoReflect.Descriptor instead. func (*CustomInfoType_Dictionary) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 0} } func (m *CustomInfoType_Dictionary) GetSource() isCustomInfoType_Dictionary_Source { @@ -2175,7 +2287,7 @@ type CustomInfoType_Regex struct { func (x *CustomInfoType_Regex) Reset() { *x = CustomInfoType_Regex{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[23] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2188,7 +2300,7 @@ func (x *CustomInfoType_Regex) String() string { func (*CustomInfoType_Regex) ProtoMessage() {} func (x *CustomInfoType_Regex) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[23] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2201,7 +2313,7 @@ func (x *CustomInfoType_Regex) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomInfoType_Regex.ProtoReflect.Descriptor instead. func (*CustomInfoType_Regex) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 1} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 1} } func (x *CustomInfoType_Regex) GetPattern() string { @@ -2235,7 +2347,7 @@ type CustomInfoType_SurrogateType struct { func (x *CustomInfoType_SurrogateType) Reset() { *x = CustomInfoType_SurrogateType{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[24] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2248,7 +2360,7 @@ func (x *CustomInfoType_SurrogateType) String() string { func (*CustomInfoType_SurrogateType) ProtoMessage() {} func (x *CustomInfoType_SurrogateType) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[24] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2261,7 +2373,7 @@ func (x *CustomInfoType_SurrogateType) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomInfoType_SurrogateType.ProtoReflect.Descriptor instead. func (*CustomInfoType_SurrogateType) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 2} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 2} } // Deprecated; use `InspectionRuleSet` instead. Rule for modifying a @@ -2282,7 +2394,7 @@ type CustomInfoType_DetectionRule struct { func (x *CustomInfoType_DetectionRule) Reset() { *x = CustomInfoType_DetectionRule{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[25] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2295,7 +2407,7 @@ func (x *CustomInfoType_DetectionRule) String() string { func (*CustomInfoType_DetectionRule) ProtoMessage() {} func (x *CustomInfoType_DetectionRule) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[25] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2308,7 +2420,7 @@ func (x *CustomInfoType_DetectionRule) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomInfoType_DetectionRule.ProtoReflect.Descriptor instead. func (*CustomInfoType_DetectionRule) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 3} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 3} } func (m *CustomInfoType_DetectionRule) GetType() isCustomInfoType_DetectionRule_Type { @@ -2351,7 +2463,7 @@ type CustomInfoType_Dictionary_WordList struct { func (x *CustomInfoType_Dictionary_WordList) Reset() { *x = CustomInfoType_Dictionary_WordList{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[26] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2364,7 +2476,7 @@ func (x *CustomInfoType_Dictionary_WordList) String() string { func (*CustomInfoType_Dictionary_WordList) ProtoMessage() {} func (x *CustomInfoType_Dictionary_WordList) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[26] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2377,7 +2489,7 @@ func (x *CustomInfoType_Dictionary_WordList) ProtoReflect() protoreflect.Message // Deprecated: Use CustomInfoType_Dictionary_WordList.ProtoReflect.Descriptor instead. func (*CustomInfoType_Dictionary_WordList) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 0, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 0, 0} } func (x *CustomInfoType_Dictionary_WordList) GetWords() []string { @@ -2407,7 +2519,7 @@ type CustomInfoType_DetectionRule_Proximity struct { func (x *CustomInfoType_DetectionRule_Proximity) Reset() { *x = CustomInfoType_DetectionRule_Proximity{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[27] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2420,7 +2532,7 @@ func (x *CustomInfoType_DetectionRule_Proximity) String() string { func (*CustomInfoType_DetectionRule_Proximity) ProtoMessage() {} func (x *CustomInfoType_DetectionRule_Proximity) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[27] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2433,7 +2545,7 @@ func (x *CustomInfoType_DetectionRule_Proximity) ProtoReflect() protoreflect.Mes // Deprecated: Use CustomInfoType_DetectionRule_Proximity.ProtoReflect.Descriptor instead. func (*CustomInfoType_DetectionRule_Proximity) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 3, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 3, 0} } func (x *CustomInfoType_DetectionRule_Proximity) GetWindowBefore() int32 { @@ -2467,7 +2579,7 @@ type CustomInfoType_DetectionRule_LikelihoodAdjustment struct { func (x *CustomInfoType_DetectionRule_LikelihoodAdjustment) Reset() { *x = CustomInfoType_DetectionRule_LikelihoodAdjustment{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[28] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2480,7 +2592,7 @@ func (x *CustomInfoType_DetectionRule_LikelihoodAdjustment) String() string { func (*CustomInfoType_DetectionRule_LikelihoodAdjustment) ProtoMessage() {} func (x *CustomInfoType_DetectionRule_LikelihoodAdjustment) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[28] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2493,7 +2605,7 @@ func (x *CustomInfoType_DetectionRule_LikelihoodAdjustment) ProtoReflect() proto // Deprecated: Use CustomInfoType_DetectionRule_LikelihoodAdjustment.ProtoReflect.Descriptor instead. func (*CustomInfoType_DetectionRule_LikelihoodAdjustment) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 3, 1} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 3, 1} } func (m *CustomInfoType_DetectionRule_LikelihoodAdjustment) GetAdjustment() isCustomInfoType_DetectionRule_LikelihoodAdjustment_Adjustment { @@ -2574,7 +2686,7 @@ type CustomInfoType_DetectionRule_HotwordRule struct { func (x *CustomInfoType_DetectionRule_HotwordRule) Reset() { *x = CustomInfoType_DetectionRule_HotwordRule{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[29] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2587,7 +2699,7 @@ func (x *CustomInfoType_DetectionRule_HotwordRule) String() string { func (*CustomInfoType_DetectionRule_HotwordRule) ProtoMessage() {} func (x *CustomInfoType_DetectionRule_HotwordRule) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[29] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2600,7 +2712,7 @@ func (x *CustomInfoType_DetectionRule_HotwordRule) ProtoReflect() protoreflect.M // Deprecated: Use CustomInfoType_DetectionRule_HotwordRule.ProtoReflect.Descriptor instead. func (*CustomInfoType_DetectionRule_HotwordRule) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{2, 3, 2} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{3, 3, 2} } func (x *CustomInfoType_DetectionRule_HotwordRule) GetHotwordRegex() *CustomInfoType_Regex { @@ -2649,7 +2761,7 @@ type CloudStorageOptions_FileSet struct { func (x *CloudStorageOptions_FileSet) Reset() { *x = CloudStorageOptions_FileSet{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[30] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2662,7 +2774,7 @@ func (x *CloudStorageOptions_FileSet) String() string { func (*CloudStorageOptions_FileSet) ProtoMessage() {} func (x *CloudStorageOptions_FileSet) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[30] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2675,7 +2787,7 @@ func (x *CloudStorageOptions_FileSet) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudStorageOptions_FileSet.ProtoReflect.Descriptor instead. func (*CloudStorageOptions_FileSet) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{8, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{9, 0} } func (x *CloudStorageOptions_FileSet) GetUrl() string { @@ -2693,7 +2805,7 @@ func (x *CloudStorageOptions_FileSet) GetRegexFileSet() *CloudStorageRegexFileSe } // Configuration of the timespan of the items to include in scanning. -// Currently only supported when inspecting Google Cloud Storage and BigQuery. +// Currently only supported when inspecting Cloud Storage and BigQuery. type StorageConfig_TimespanConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2708,7 +2820,8 @@ type StorageConfig_TimespanConfig struct { // Specification of the field containing the timestamp of scanned items. // Used for data sources like Datastore and BigQuery. // - // For BigQuery: + // For BigQuery + // // If this value is not specified and the table was modified between the // given start and end times, the entire table will be scanned. If this // value is specified, then rows are filtered based on the given start and @@ -2717,23 +2830,40 @@ type StorageConfig_TimespanConfig struct { // Valid data types of the provided BigQuery column are: `INTEGER`, `DATE`, // `TIMESTAMP`, and `DATETIME`. // - // For Datastore: + // If your BigQuery table is [partitioned at ingestion + // time](https://cloud.google.com/bigquery/docs/partitioned-tables#ingestion_time), + // you can use any of the following pseudo-columns as your timestamp field. + // When used with Cloud DLP, these pseudo-column names are case sensitive. + // + // + // + // For Datastore + // // If this value is specified, then entities are filtered based on the given // start and end times. If an entity does not contain the provided timestamp // property or contains empty or invalid values, then it is included. // Valid data types of the provided timestamp property are: `TIMESTAMP`. + // + // See the + // [known issue](https://cloud.google.com/dlp/docs/known-issues#bq-timespan) + // related to this operation. TimestampField *FieldId `protobuf:"bytes,3,opt,name=timestamp_field,json=timestampField,proto3" json:"timestamp_field,omitempty"` // When the job is started by a JobTrigger we will automatically figure out // a valid start_time to avoid scanning files that have not been modified // since the last time the JobTrigger executed. This will be based on the - // time of the execution of the last run of the JobTrigger. + // time of the execution of the last run of the JobTrigger or the timespan + // end_time used in the last run of the JobTrigger. EnableAutoPopulationOfTimespanConfig bool `protobuf:"varint,4,opt,name=enable_auto_population_of_timespan_config,json=enableAutoPopulationOfTimespanConfig,proto3" json:"enable_auto_population_of_timespan_config,omitempty"` } func (x *StorageConfig_TimespanConfig) Reset() { *x = StorageConfig_TimespanConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[31] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2746,7 +2876,7 @@ func (x *StorageConfig_TimespanConfig) String() string { func (*StorageConfig_TimespanConfig) ProtoMessage() {} func (x *StorageConfig_TimespanConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[31] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2759,7 +2889,7 @@ func (x *StorageConfig_TimespanConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageConfig_TimespanConfig.ProtoReflect.Descriptor instead. func (*StorageConfig_TimespanConfig) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{12, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{13, 0} } func (x *StorageConfig_TimespanConfig) GetStartTime() *timestamppb.Timestamp { @@ -2816,7 +2946,7 @@ type Key_PathElement struct { func (x *Key_PathElement) Reset() { *x = Key_PathElement{} if protoimpl.UnsafeEnabled { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[33] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2829,7 +2959,7 @@ func (x *Key_PathElement) String() string { func (*Key_PathElement) ProtoMessage() {} func (x *Key_PathElement) ProtoReflect() protoreflect.Message { - mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[33] + mi := &file_google_privacy_dlp_v2_storage_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2842,7 +2972,7 @@ func (x *Key_PathElement) ProtoReflect() protoreflect.Message { // Deprecated: Use Key_PathElement.ProtoReflect.Descriptor instead. func (*Key_PathElement) Descriptor() ([]byte, []int) { - return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{16, 0} + return file_google_privacy_dlp_v2_storage_proto_rawDescGZIP(), []int{17, 0} } func (x *Key_PathElement) GetKind() string { @@ -2902,395 +3032,412 @@ var file_google_privacy_dlp_v2_storage_proto_rawDesc = []byte{ 0x0a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 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, 0x38, 0x0a, - 0x08, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 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, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe1, 0x0d, 0x0a, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, - 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, - 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x6c, - 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x52, 0x0a, - 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x12, 0x52, 0x0a, 0x0a, 0x64, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, - 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x43, - 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, - 0x67, 0x65, 0x78, 0x12, 0x5c, 0x0a, 0x0e, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x2e, 0x53, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x0d, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 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, 0x38, 0x0a, 0x08, 0x49, 0x6e, 0x66, 0x6f, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x53, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x64, 0x65, 0x74, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0e, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, - 0x12, 0x58, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7f, 0x0a, 0x15, + 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, + 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x4e, 0x53, + 0x49, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x0a, 0x12, 0x18, 0x0a, + 0x14, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x52, 0x41, 0x54, 0x45, 0x10, 0x14, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x4e, 0x53, 0x49, + 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x1e, 0x22, 0x5d, 0x0a, + 0x0a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 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, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe1, 0x0d, 0x0a, + 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, + 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, + 0x68, 0x6f, 0x6f, 0x64, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, + 0x12, 0x52, 0x0a, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x72, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x2e, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x08, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x12, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, 0x48, - 0x00, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, - 0x61, 0x74, 0x68, 0x1a, 0x20, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x77, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, - 0x46, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x1a, 0x0f, 0x0a, 0x0d, 0x53, 0x75, 0x72, 0x72, 0x6f, - 0x67, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xba, 0x05, 0x0a, 0x0d, 0x44, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x64, 0x0a, 0x0c, 0x68, 0x6f, - 0x74, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x48, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, - 0x65, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, - 0x1a, 0x53, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, - 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x41, 0x66, 0x74, 0x65, 0x72, 0x1a, 0xa7, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, - 0x68, 0x6f, 0x6f, 0x64, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, - 0x0a, 0x10, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, - 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x66, - 0x69, 0x78, 0x65, 0x64, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x12, 0x31, - 0x0a, 0x13, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6c, 0x69, 0x6b, 0x65, 0x6c, - 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x12, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, - 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x1a, - 0xbb, 0x02, 0x0a, 0x0b, 0x48, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, - 0x50, 0x0a, 0x0d, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, + 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x5c, 0x0a, 0x0e, 0x73, 0x75, 0x72, + 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x53, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x67, + 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x48, + 0x00, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5c, 0x0a, + 0x0f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x52, 0x65, - 0x67, 0x65, 0x78, 0x52, 0x0c, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x67, 0x65, - 0x78, 0x12, 0x5b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, - 0x69, 0x74, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x12, 0x7d, - 0x0a, 0x15, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x5f, 0x61, 0x64, 0x6a, - 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, - 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, - 0x6c, 0x65, 0x2e, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x41, 0x64, 0x6a, - 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x14, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, - 0x6f, 0x6f, 0x64, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x06, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x44, 0x45, - 0x10, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1d, 0x0a, 0x07, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x0b, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x0e, 0x4b, 0x69, - 0x6e, 0x64, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x94, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, - 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x18, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x46, 0x69, 0x6c, - 0x65, 0x53, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x22, - 0xe1, 0x04, 0x0a, 0x13, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0e, 0x64, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x78, 0x63, 0x6c, 0x75, + 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x58, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, - 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x66, - 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x62, 0x79, 0x74, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x1c, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, - 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x66, 0x69, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, + 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x2e, 0x57, 0x6f, 0x72, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x57, 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x50, 0x61, 0x74, 0x68, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, 0x1a, 0x20, 0x0a, 0x08, 0x57, 0x6f, 0x72, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x46, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x1a, 0x0f, 0x0a, + 0x0d, 0x53, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xba, + 0x05, 0x0a, 0x0d, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x64, 0x0a, 0x0c, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x48, 0x6f, 0x74, 0x77, + 0x6f, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x74, 0x77, 0x6f, + 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x1a, 0x53, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, + 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x62, 0x65, + 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x41, 0x66, 0x74, 0x65, 0x72, 0x1a, 0xa7, 0x01, 0x0a, 0x14, + 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x10, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x6c, 0x69, + 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x1a, 0x72, 0x0a, 0x07, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x67, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x67, - 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x41, 0x4d, - 0x50, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, - 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x10, 0x02, 0x22, 0x27, 0x0a, 0x13, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x26, 0x0a, 0x10, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x22, 0xb2, 0x04, 0x0a, 0x0f, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x49, 0x64, 0x52, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x6f, 0x77, 0x73, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x10, 0x72, 0x6f, 0x77, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, + 0x64, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, + 0x68, 0x6f, 0x6f, 0x64, 0x12, 0x31, 0x0a, 0x13, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x48, 0x00, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6b, + 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x61, 0x64, 0x6a, 0x75, 0x73, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0xbb, 0x02, 0x0a, 0x0b, 0x48, 0x6f, 0x74, 0x77, 0x6f, 0x72, + 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, + 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x0c, 0x68, 0x6f, 0x74, 0x77, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x5b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x69, + 0x6d, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, - 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x47, 0x0a, - 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x47, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, - 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, + 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x2e, + 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x69, + 0x6d, 0x69, 0x74, 0x79, 0x12, 0x7d, 0x0a, 0x15, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, + 0x6f, 0x64, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, + 0x6f, 0x6f, 0x64, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x14, 0x6c, + 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x0d, 0x45, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, + 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, + 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, + 0x58, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x10, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x1d, 0x0a, 0x07, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x4f, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, + 0x22, 0x24, 0x0a, 0x0e, 0x4b, 0x69, 0x6e, 0x64, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x85, 0x01, + 0x0a, 0x18, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, + 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x52, 0x65, 0x67, 0x65, 0x78, 0x22, 0xe1, 0x04, 0x0a, 0x13, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, + 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, + 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, + 0x53, 0x65, 0x74, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x14, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x3e, 0x0a, + 0x1c, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x18, 0x62, 0x79, 0x74, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x50, + 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, + 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x5c, 0x0a, + 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0c, 0x73, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x1a, 0x72, 0x0a, 0x07, 0x46, + 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, + 0x74, 0x52, 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x41, 0x4e, 0x44, 0x4f, - 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x02, 0x22, 0xfb, 0x05, 0x0a, 0x0d, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x56, 0x0a, 0x11, 0x64, - 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, - 0x00, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x15, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, - 0x52, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x62, 0x69, 0x67, 0x5f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x67, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x0e, 0x68, - 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, - 0x69, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x79, 0x62, - 0x72, 0x69, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x0f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xa4, 0x02, 0x0a, 0x0e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x73, - 0x74, 0x61, 0x72, 0x74, 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, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 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, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x47, 0x0a, - 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x57, 0x0a, 0x29, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x24, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x66, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xbf, 0x02, 0x0a, 0x0d, 0x48, 0x79, 0x62, 0x72, - 0x69, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x1b, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x18, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, - 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, - 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7b, 0x0a, 0x0b, 0x42, 0x69, 0x67, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x0f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x6f, 0x77, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, - 0x76, 0x32, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, - 0x79, 0x22, 0xde, 0x01, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x3a, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, - 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4b, 0x65, 0x79, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x54, 0x0a, 0x0b, - 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, - 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x69, 0x64, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4b, 0x65, 0x79, - 0x12, 0x4a, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x02, 0x22, 0x27, 0x0a, 0x13, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x22, 0x26, 0x0a, 0x10, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xb2, 0x04, 0x0a, 0x0f, 0x42, + 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, + 0x0a, 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0c, - 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0d, - 0x62, 0x69, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x69, 0x67, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x0d, 0x42, - 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x64, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3a, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4d, 0x0a, + 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x72, 0x6f, 0x77, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, + 0x6f, 0x77, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x6f, 0x77, 0x73, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x12, 0x47, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x0e, 0x65, 0x78, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x47, 0x0a, 0x0f, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x0c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, + 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x10, 0x0a, + 0x0c, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x02, 0x22, + 0xfb, 0x05, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x56, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x15, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x62, + 0x69, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, - 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x40, 0x0a, 0x08, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x5d, 0x0a, 0x0c, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, + 0x52, 0x0f, 0x62, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x4d, 0x0a, 0x0e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, + 0x00, 0x52, 0x0d, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x5c, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xa4, + 0x02, 0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 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, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 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, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x0e, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x57, 0x0a, 0x29, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x24, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x6f, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xbf, 0x02, + 0x0a, 0x0d, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3d, 0x0a, 0x1b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x73, + 0x12, 0x48, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x7b, 0x0a, 0x0b, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x4d, + 0x0a, 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x79, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2a, 0x74, 0x0a, 0x0a, 0x4c, 0x69, - 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x49, 0x4b, 0x45, - 0x4c, 0x49, 0x48, 0x4f, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x4c, - 0x49, 0x4b, 0x45, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x4e, 0x4c, 0x49, 0x4b, - 0x45, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x4f, 0x53, 0x53, 0x49, 0x42, 0x4c, - 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x49, 0x4b, 0x45, 0x4c, 0x59, 0x10, 0x04, 0x12, - 0x0f, 0x0a, 0x0b, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x4c, 0x59, 0x10, 0x05, - 0x2a, 0x9a, 0x01, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, - 0x15, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x49, 0x4e, 0x41, - 0x52, 0x59, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x45, 0x58, - 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, - 0x45, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x05, 0x12, 0x07, 0x0a, - 0x03, 0x50, 0x44, 0x46, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x56, 0x52, 0x4f, 0x10, 0x07, - 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, 0x56, 0x10, 0x08, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x53, 0x56, - 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x10, 0x0b, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x43, 0x45, 0x4c, 0x10, 0x0c, 0x42, 0xa8, 0x01, - 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x42, 0x0a, 0x44, 0x6c, 0x70, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2f, 0x64, 0x6c, 0x70, 0x2f, 0x76, 0x32, 0x3b, - 0x64, 0x6c, 0x70, 0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x44, 0x6c, 0x70, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x6c, 0x70, 0x5c, 0x56, 0x32, 0xea, - 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, - 0x3a, 0x44, 0x6c, 0x70, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x72, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x0c, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x22, 0xde, 0x01, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, + 0x45, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x4b, 0x65, 0x79, + 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x1a, 0x54, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x4a, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, + 0x65, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, + 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0d, 0x62, 0x69, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, + 0x0b, 0x62, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, + 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x22, 0x68, 0x0a, 0x0d, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x0d, + 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3a, 0x0a, + 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, + 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, 0x32, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, + 0x40, 0x0a, 0x08, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, + 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x22, 0x5d, 0x0a, 0x0c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, + 0x6c, 0x70, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x11, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x2a, 0x74, 0x0a, 0x0a, 0x4c, 0x69, 0x6b, 0x65, 0x6c, 0x69, 0x68, 0x6f, 0x6f, 0x64, 0x12, 0x1a, + 0x0a, 0x16, 0x4c, 0x49, 0x4b, 0x45, 0x4c, 0x49, 0x48, 0x4f, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x45, + 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x4c, 0x49, 0x4b, 0x45, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x55, 0x4e, 0x4c, 0x49, 0x4b, 0x45, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x50, + 0x4f, 0x53, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x49, 0x4b, + 0x45, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x49, + 0x4b, 0x45, 0x4c, 0x59, 0x10, 0x05, 0x2a, 0x9a, 0x01, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, + 0x0a, 0x0b, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, + 0x0d, 0x0a, 0x09, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x09, + 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x4f, 0x52, + 0x44, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x44, 0x46, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, + 0x41, 0x56, 0x52, 0x4f, 0x10, 0x07, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, 0x56, 0x10, 0x08, 0x12, + 0x07, 0x0a, 0x03, 0x54, 0x53, 0x56, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x57, 0x45, + 0x52, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x0b, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x43, 0x45, + 0x4c, 0x10, 0x0c, 0x42, 0xa8, 0x01, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2e, 0x64, 0x6c, 0x70, 0x2e, 0x76, + 0x32, 0x42, 0x0a, 0x44, 0x6c, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x01, 0x5a, + 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, + 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x2f, 0x64, + 0x6c, 0x70, 0x2f, 0x76, 0x32, 0x3b, 0x64, 0x6c, 0x70, 0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x6c, 0x70, 0x2e, 0x56, 0x32, 0xca, + 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, + 0x6c, 0x70, 0x5c, 0x56, 0x32, 0xea, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x6c, 0x70, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3305,103 +3452,106 @@ func file_google_privacy_dlp_v2_storage_proto_rawDescGZIP() []byte { return file_google_privacy_dlp_v2_storage_proto_rawDescData } -var file_google_privacy_dlp_v2_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_google_privacy_dlp_v2_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_google_privacy_dlp_v2_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_google_privacy_dlp_v2_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_google_privacy_dlp_v2_storage_proto_goTypes = []interface{}{ - (Likelihood)(0), // 0: google.privacy.dlp.v2.Likelihood - (FileType)(0), // 1: google.privacy.dlp.v2.FileType - (CustomInfoType_ExclusionType)(0), // 2: google.privacy.dlp.v2.CustomInfoType.ExclusionType - (CloudStorageOptions_SampleMethod)(0), // 3: google.privacy.dlp.v2.CloudStorageOptions.SampleMethod - (BigQueryOptions_SampleMethod)(0), // 4: google.privacy.dlp.v2.BigQueryOptions.SampleMethod - (*InfoType)(nil), // 5: google.privacy.dlp.v2.InfoType - (*StoredType)(nil), // 6: google.privacy.dlp.v2.StoredType - (*CustomInfoType)(nil), // 7: google.privacy.dlp.v2.CustomInfoType - (*FieldId)(nil), // 8: google.privacy.dlp.v2.FieldId - (*PartitionId)(nil), // 9: google.privacy.dlp.v2.PartitionId - (*KindExpression)(nil), // 10: google.privacy.dlp.v2.KindExpression - (*DatastoreOptions)(nil), // 11: google.privacy.dlp.v2.DatastoreOptions - (*CloudStorageRegexFileSet)(nil), // 12: google.privacy.dlp.v2.CloudStorageRegexFileSet - (*CloudStorageOptions)(nil), // 13: google.privacy.dlp.v2.CloudStorageOptions - (*CloudStorageFileSet)(nil), // 14: google.privacy.dlp.v2.CloudStorageFileSet - (*CloudStoragePath)(nil), // 15: google.privacy.dlp.v2.CloudStoragePath - (*BigQueryOptions)(nil), // 16: google.privacy.dlp.v2.BigQueryOptions - (*StorageConfig)(nil), // 17: google.privacy.dlp.v2.StorageConfig - (*HybridOptions)(nil), // 18: google.privacy.dlp.v2.HybridOptions - (*BigQueryKey)(nil), // 19: google.privacy.dlp.v2.BigQueryKey - (*DatastoreKey)(nil), // 20: google.privacy.dlp.v2.DatastoreKey - (*Key)(nil), // 21: google.privacy.dlp.v2.Key - (*RecordKey)(nil), // 22: google.privacy.dlp.v2.RecordKey - (*BigQueryTable)(nil), // 23: google.privacy.dlp.v2.BigQueryTable - (*BigQueryField)(nil), // 24: google.privacy.dlp.v2.BigQueryField - (*EntityId)(nil), // 25: google.privacy.dlp.v2.EntityId - (*TableOptions)(nil), // 26: google.privacy.dlp.v2.TableOptions - (*CustomInfoType_Dictionary)(nil), // 27: google.privacy.dlp.v2.CustomInfoType.Dictionary - (*CustomInfoType_Regex)(nil), // 28: google.privacy.dlp.v2.CustomInfoType.Regex - (*CustomInfoType_SurrogateType)(nil), // 29: google.privacy.dlp.v2.CustomInfoType.SurrogateType - (*CustomInfoType_DetectionRule)(nil), // 30: google.privacy.dlp.v2.CustomInfoType.DetectionRule - (*CustomInfoType_Dictionary_WordList)(nil), // 31: google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList - (*CustomInfoType_DetectionRule_Proximity)(nil), // 32: google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity - (*CustomInfoType_DetectionRule_LikelihoodAdjustment)(nil), // 33: google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment - (*CustomInfoType_DetectionRule_HotwordRule)(nil), // 34: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule - (*CloudStorageOptions_FileSet)(nil), // 35: google.privacy.dlp.v2.CloudStorageOptions.FileSet - (*StorageConfig_TimespanConfig)(nil), // 36: google.privacy.dlp.v2.StorageConfig.TimespanConfig - nil, // 37: google.privacy.dlp.v2.HybridOptions.LabelsEntry - (*Key_PathElement)(nil), // 38: google.privacy.dlp.v2.Key.PathElement - (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp + (Likelihood)(0), // 0: google.privacy.dlp.v2.Likelihood + (FileType)(0), // 1: google.privacy.dlp.v2.FileType + (SensitivityScore_SensitivityScoreLevel)(0), // 2: google.privacy.dlp.v2.SensitivityScore.SensitivityScoreLevel + (CustomInfoType_ExclusionType)(0), // 3: google.privacy.dlp.v2.CustomInfoType.ExclusionType + (CloudStorageOptions_SampleMethod)(0), // 4: google.privacy.dlp.v2.CloudStorageOptions.SampleMethod + (BigQueryOptions_SampleMethod)(0), // 5: google.privacy.dlp.v2.BigQueryOptions.SampleMethod + (*InfoType)(nil), // 6: google.privacy.dlp.v2.InfoType + (*SensitivityScore)(nil), // 7: google.privacy.dlp.v2.SensitivityScore + (*StoredType)(nil), // 8: google.privacy.dlp.v2.StoredType + (*CustomInfoType)(nil), // 9: google.privacy.dlp.v2.CustomInfoType + (*FieldId)(nil), // 10: google.privacy.dlp.v2.FieldId + (*PartitionId)(nil), // 11: google.privacy.dlp.v2.PartitionId + (*KindExpression)(nil), // 12: google.privacy.dlp.v2.KindExpression + (*DatastoreOptions)(nil), // 13: google.privacy.dlp.v2.DatastoreOptions + (*CloudStorageRegexFileSet)(nil), // 14: google.privacy.dlp.v2.CloudStorageRegexFileSet + (*CloudStorageOptions)(nil), // 15: google.privacy.dlp.v2.CloudStorageOptions + (*CloudStorageFileSet)(nil), // 16: google.privacy.dlp.v2.CloudStorageFileSet + (*CloudStoragePath)(nil), // 17: google.privacy.dlp.v2.CloudStoragePath + (*BigQueryOptions)(nil), // 18: google.privacy.dlp.v2.BigQueryOptions + (*StorageConfig)(nil), // 19: google.privacy.dlp.v2.StorageConfig + (*HybridOptions)(nil), // 20: google.privacy.dlp.v2.HybridOptions + (*BigQueryKey)(nil), // 21: google.privacy.dlp.v2.BigQueryKey + (*DatastoreKey)(nil), // 22: google.privacy.dlp.v2.DatastoreKey + (*Key)(nil), // 23: google.privacy.dlp.v2.Key + (*RecordKey)(nil), // 24: google.privacy.dlp.v2.RecordKey + (*BigQueryTable)(nil), // 25: google.privacy.dlp.v2.BigQueryTable + (*BigQueryField)(nil), // 26: google.privacy.dlp.v2.BigQueryField + (*EntityId)(nil), // 27: google.privacy.dlp.v2.EntityId + (*TableOptions)(nil), // 28: google.privacy.dlp.v2.TableOptions + (*CustomInfoType_Dictionary)(nil), // 29: google.privacy.dlp.v2.CustomInfoType.Dictionary + (*CustomInfoType_Regex)(nil), // 30: google.privacy.dlp.v2.CustomInfoType.Regex + (*CustomInfoType_SurrogateType)(nil), // 31: google.privacy.dlp.v2.CustomInfoType.SurrogateType + (*CustomInfoType_DetectionRule)(nil), // 32: google.privacy.dlp.v2.CustomInfoType.DetectionRule + (*CustomInfoType_Dictionary_WordList)(nil), // 33: google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList + (*CustomInfoType_DetectionRule_Proximity)(nil), // 34: google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity + (*CustomInfoType_DetectionRule_LikelihoodAdjustment)(nil), // 35: google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment + (*CustomInfoType_DetectionRule_HotwordRule)(nil), // 36: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule + (*CloudStorageOptions_FileSet)(nil), // 37: google.privacy.dlp.v2.CloudStorageOptions.FileSet + (*StorageConfig_TimespanConfig)(nil), // 38: google.privacy.dlp.v2.StorageConfig.TimespanConfig + nil, // 39: google.privacy.dlp.v2.HybridOptions.LabelsEntry + (*Key_PathElement)(nil), // 40: google.privacy.dlp.v2.Key.PathElement + (*timestamppb.Timestamp)(nil), // 41: google.protobuf.Timestamp } var file_google_privacy_dlp_v2_storage_proto_depIdxs = []int32{ - 39, // 0: google.privacy.dlp.v2.StoredType.create_time:type_name -> google.protobuf.Timestamp - 5, // 1: google.privacy.dlp.v2.CustomInfoType.info_type:type_name -> google.privacy.dlp.v2.InfoType - 0, // 2: google.privacy.dlp.v2.CustomInfoType.likelihood:type_name -> google.privacy.dlp.v2.Likelihood - 27, // 3: google.privacy.dlp.v2.CustomInfoType.dictionary:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary - 28, // 4: google.privacy.dlp.v2.CustomInfoType.regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex - 29, // 5: google.privacy.dlp.v2.CustomInfoType.surrogate_type:type_name -> google.privacy.dlp.v2.CustomInfoType.SurrogateType - 6, // 6: google.privacy.dlp.v2.CustomInfoType.stored_type:type_name -> google.privacy.dlp.v2.StoredType - 30, // 7: google.privacy.dlp.v2.CustomInfoType.detection_rules:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule - 2, // 8: google.privacy.dlp.v2.CustomInfoType.exclusion_type:type_name -> google.privacy.dlp.v2.CustomInfoType.ExclusionType - 9, // 9: google.privacy.dlp.v2.DatastoreOptions.partition_id:type_name -> google.privacy.dlp.v2.PartitionId - 10, // 10: google.privacy.dlp.v2.DatastoreOptions.kind:type_name -> google.privacy.dlp.v2.KindExpression - 35, // 11: google.privacy.dlp.v2.CloudStorageOptions.file_set:type_name -> google.privacy.dlp.v2.CloudStorageOptions.FileSet - 1, // 12: google.privacy.dlp.v2.CloudStorageOptions.file_types:type_name -> google.privacy.dlp.v2.FileType - 3, // 13: google.privacy.dlp.v2.CloudStorageOptions.sample_method:type_name -> google.privacy.dlp.v2.CloudStorageOptions.SampleMethod - 23, // 14: google.privacy.dlp.v2.BigQueryOptions.table_reference:type_name -> google.privacy.dlp.v2.BigQueryTable - 8, // 15: google.privacy.dlp.v2.BigQueryOptions.identifying_fields:type_name -> google.privacy.dlp.v2.FieldId - 4, // 16: google.privacy.dlp.v2.BigQueryOptions.sample_method:type_name -> google.privacy.dlp.v2.BigQueryOptions.SampleMethod - 8, // 17: google.privacy.dlp.v2.BigQueryOptions.excluded_fields:type_name -> google.privacy.dlp.v2.FieldId - 8, // 18: google.privacy.dlp.v2.BigQueryOptions.included_fields:type_name -> google.privacy.dlp.v2.FieldId - 11, // 19: google.privacy.dlp.v2.StorageConfig.datastore_options:type_name -> google.privacy.dlp.v2.DatastoreOptions - 13, // 20: google.privacy.dlp.v2.StorageConfig.cloud_storage_options:type_name -> google.privacy.dlp.v2.CloudStorageOptions - 16, // 21: google.privacy.dlp.v2.StorageConfig.big_query_options:type_name -> google.privacy.dlp.v2.BigQueryOptions - 18, // 22: google.privacy.dlp.v2.StorageConfig.hybrid_options:type_name -> google.privacy.dlp.v2.HybridOptions - 36, // 23: google.privacy.dlp.v2.StorageConfig.timespan_config:type_name -> google.privacy.dlp.v2.StorageConfig.TimespanConfig - 37, // 24: google.privacy.dlp.v2.HybridOptions.labels:type_name -> google.privacy.dlp.v2.HybridOptions.LabelsEntry - 26, // 25: google.privacy.dlp.v2.HybridOptions.table_options:type_name -> google.privacy.dlp.v2.TableOptions - 23, // 26: google.privacy.dlp.v2.BigQueryKey.table_reference:type_name -> google.privacy.dlp.v2.BigQueryTable - 21, // 27: google.privacy.dlp.v2.DatastoreKey.entity_key:type_name -> google.privacy.dlp.v2.Key - 9, // 28: google.privacy.dlp.v2.Key.partition_id:type_name -> google.privacy.dlp.v2.PartitionId - 38, // 29: google.privacy.dlp.v2.Key.path:type_name -> google.privacy.dlp.v2.Key.PathElement - 20, // 30: google.privacy.dlp.v2.RecordKey.datastore_key:type_name -> google.privacy.dlp.v2.DatastoreKey - 19, // 31: google.privacy.dlp.v2.RecordKey.big_query_key:type_name -> google.privacy.dlp.v2.BigQueryKey - 23, // 32: google.privacy.dlp.v2.BigQueryField.table:type_name -> google.privacy.dlp.v2.BigQueryTable - 8, // 33: google.privacy.dlp.v2.BigQueryField.field:type_name -> google.privacy.dlp.v2.FieldId - 8, // 34: google.privacy.dlp.v2.EntityId.field:type_name -> google.privacy.dlp.v2.FieldId - 8, // 35: google.privacy.dlp.v2.TableOptions.identifying_fields:type_name -> google.privacy.dlp.v2.FieldId - 31, // 36: google.privacy.dlp.v2.CustomInfoType.Dictionary.word_list:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList - 15, // 37: google.privacy.dlp.v2.CustomInfoType.Dictionary.cloud_storage_path:type_name -> google.privacy.dlp.v2.CloudStoragePath - 34, // 38: google.privacy.dlp.v2.CustomInfoType.DetectionRule.hotword_rule:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule - 0, // 39: google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment.fixed_likelihood:type_name -> google.privacy.dlp.v2.Likelihood - 28, // 40: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule.hotword_regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex - 32, // 41: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule.proximity:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity - 33, // 42: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule.likelihood_adjustment:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment - 12, // 43: google.privacy.dlp.v2.CloudStorageOptions.FileSet.regex_file_set:type_name -> google.privacy.dlp.v2.CloudStorageRegexFileSet - 39, // 44: google.privacy.dlp.v2.StorageConfig.TimespanConfig.start_time:type_name -> google.protobuf.Timestamp - 39, // 45: google.privacy.dlp.v2.StorageConfig.TimespanConfig.end_time:type_name -> google.protobuf.Timestamp - 8, // 46: google.privacy.dlp.v2.StorageConfig.TimespanConfig.timestamp_field:type_name -> google.privacy.dlp.v2.FieldId - 47, // [47:47] is the sub-list for method output_type - 47, // [47:47] is the sub-list for method input_type - 47, // [47:47] is the sub-list for extension type_name - 47, // [47:47] is the sub-list for extension extendee - 0, // [0:47] is the sub-list for field type_name + 2, // 0: google.privacy.dlp.v2.SensitivityScore.score:type_name -> google.privacy.dlp.v2.SensitivityScore.SensitivityScoreLevel + 41, // 1: google.privacy.dlp.v2.StoredType.create_time:type_name -> google.protobuf.Timestamp + 6, // 2: google.privacy.dlp.v2.CustomInfoType.info_type:type_name -> google.privacy.dlp.v2.InfoType + 0, // 3: google.privacy.dlp.v2.CustomInfoType.likelihood:type_name -> google.privacy.dlp.v2.Likelihood + 29, // 4: google.privacy.dlp.v2.CustomInfoType.dictionary:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary + 30, // 5: google.privacy.dlp.v2.CustomInfoType.regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex + 31, // 6: google.privacy.dlp.v2.CustomInfoType.surrogate_type:type_name -> google.privacy.dlp.v2.CustomInfoType.SurrogateType + 8, // 7: google.privacy.dlp.v2.CustomInfoType.stored_type:type_name -> google.privacy.dlp.v2.StoredType + 32, // 8: google.privacy.dlp.v2.CustomInfoType.detection_rules:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule + 3, // 9: google.privacy.dlp.v2.CustomInfoType.exclusion_type:type_name -> google.privacy.dlp.v2.CustomInfoType.ExclusionType + 11, // 10: google.privacy.dlp.v2.DatastoreOptions.partition_id:type_name -> google.privacy.dlp.v2.PartitionId + 12, // 11: google.privacy.dlp.v2.DatastoreOptions.kind:type_name -> google.privacy.dlp.v2.KindExpression + 37, // 12: google.privacy.dlp.v2.CloudStorageOptions.file_set:type_name -> google.privacy.dlp.v2.CloudStorageOptions.FileSet + 1, // 13: google.privacy.dlp.v2.CloudStorageOptions.file_types:type_name -> google.privacy.dlp.v2.FileType + 4, // 14: google.privacy.dlp.v2.CloudStorageOptions.sample_method:type_name -> google.privacy.dlp.v2.CloudStorageOptions.SampleMethod + 25, // 15: google.privacy.dlp.v2.BigQueryOptions.table_reference:type_name -> google.privacy.dlp.v2.BigQueryTable + 10, // 16: google.privacy.dlp.v2.BigQueryOptions.identifying_fields:type_name -> google.privacy.dlp.v2.FieldId + 5, // 17: google.privacy.dlp.v2.BigQueryOptions.sample_method:type_name -> google.privacy.dlp.v2.BigQueryOptions.SampleMethod + 10, // 18: google.privacy.dlp.v2.BigQueryOptions.excluded_fields:type_name -> google.privacy.dlp.v2.FieldId + 10, // 19: google.privacy.dlp.v2.BigQueryOptions.included_fields:type_name -> google.privacy.dlp.v2.FieldId + 13, // 20: google.privacy.dlp.v2.StorageConfig.datastore_options:type_name -> google.privacy.dlp.v2.DatastoreOptions + 15, // 21: google.privacy.dlp.v2.StorageConfig.cloud_storage_options:type_name -> google.privacy.dlp.v2.CloudStorageOptions + 18, // 22: google.privacy.dlp.v2.StorageConfig.big_query_options:type_name -> google.privacy.dlp.v2.BigQueryOptions + 20, // 23: google.privacy.dlp.v2.StorageConfig.hybrid_options:type_name -> google.privacy.dlp.v2.HybridOptions + 38, // 24: google.privacy.dlp.v2.StorageConfig.timespan_config:type_name -> google.privacy.dlp.v2.StorageConfig.TimespanConfig + 39, // 25: google.privacy.dlp.v2.HybridOptions.labels:type_name -> google.privacy.dlp.v2.HybridOptions.LabelsEntry + 28, // 26: google.privacy.dlp.v2.HybridOptions.table_options:type_name -> google.privacy.dlp.v2.TableOptions + 25, // 27: google.privacy.dlp.v2.BigQueryKey.table_reference:type_name -> google.privacy.dlp.v2.BigQueryTable + 23, // 28: google.privacy.dlp.v2.DatastoreKey.entity_key:type_name -> google.privacy.dlp.v2.Key + 11, // 29: google.privacy.dlp.v2.Key.partition_id:type_name -> google.privacy.dlp.v2.PartitionId + 40, // 30: google.privacy.dlp.v2.Key.path:type_name -> google.privacy.dlp.v2.Key.PathElement + 22, // 31: google.privacy.dlp.v2.RecordKey.datastore_key:type_name -> google.privacy.dlp.v2.DatastoreKey + 21, // 32: google.privacy.dlp.v2.RecordKey.big_query_key:type_name -> google.privacy.dlp.v2.BigQueryKey + 25, // 33: google.privacy.dlp.v2.BigQueryField.table:type_name -> google.privacy.dlp.v2.BigQueryTable + 10, // 34: google.privacy.dlp.v2.BigQueryField.field:type_name -> google.privacy.dlp.v2.FieldId + 10, // 35: google.privacy.dlp.v2.EntityId.field:type_name -> google.privacy.dlp.v2.FieldId + 10, // 36: google.privacy.dlp.v2.TableOptions.identifying_fields:type_name -> google.privacy.dlp.v2.FieldId + 33, // 37: google.privacy.dlp.v2.CustomInfoType.Dictionary.word_list:type_name -> google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList + 17, // 38: google.privacy.dlp.v2.CustomInfoType.Dictionary.cloud_storage_path:type_name -> google.privacy.dlp.v2.CloudStoragePath + 36, // 39: google.privacy.dlp.v2.CustomInfoType.DetectionRule.hotword_rule:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule + 0, // 40: google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment.fixed_likelihood:type_name -> google.privacy.dlp.v2.Likelihood + 30, // 41: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule.hotword_regex:type_name -> google.privacy.dlp.v2.CustomInfoType.Regex + 34, // 42: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule.proximity:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity + 35, // 43: google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule.likelihood_adjustment:type_name -> google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment + 14, // 44: google.privacy.dlp.v2.CloudStorageOptions.FileSet.regex_file_set:type_name -> google.privacy.dlp.v2.CloudStorageRegexFileSet + 41, // 45: google.privacy.dlp.v2.StorageConfig.TimespanConfig.start_time:type_name -> google.protobuf.Timestamp + 41, // 46: google.privacy.dlp.v2.StorageConfig.TimespanConfig.end_time:type_name -> google.protobuf.Timestamp + 10, // 47: google.privacy.dlp.v2.StorageConfig.TimespanConfig.timestamp_field:type_name -> google.privacy.dlp.v2.FieldId + 48, // [48:48] is the sub-list for method output_type + 48, // [48:48] is the sub-list for method input_type + 48, // [48:48] is the sub-list for extension type_name + 48, // [48:48] is the sub-list for extension extendee + 0, // [0:48] is the sub-list for field type_name } func init() { file_google_privacy_dlp_v2_storage_proto_init() } @@ -3423,7 +3573,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StoredType); i { + switch v := v.(*SensitivityScore); i { case 0: return &v.state case 1: @@ -3435,7 +3585,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType); i { + switch v := v.(*StoredType); i { case 0: return &v.state case 1: @@ -3447,7 +3597,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldId); i { + switch v := v.(*CustomInfoType); i { case 0: return &v.state case 1: @@ -3459,7 +3609,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PartitionId); i { + switch v := v.(*FieldId); i { case 0: return &v.state case 1: @@ -3471,7 +3621,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KindExpression); i { + switch v := v.(*PartitionId); i { case 0: return &v.state case 1: @@ -3483,7 +3633,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatastoreOptions); i { + switch v := v.(*KindExpression); i { case 0: return &v.state case 1: @@ -3495,7 +3645,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudStorageRegexFileSet); i { + switch v := v.(*DatastoreOptions); i { case 0: return &v.state case 1: @@ -3507,7 +3657,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudStorageOptions); i { + switch v := v.(*CloudStorageRegexFileSet); i { case 0: return &v.state case 1: @@ -3519,7 +3669,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudStorageFileSet); i { + switch v := v.(*CloudStorageOptions); i { case 0: return &v.state case 1: @@ -3531,7 +3681,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudStoragePath); i { + switch v := v.(*CloudStorageFileSet); i { case 0: return &v.state case 1: @@ -3543,7 +3693,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BigQueryOptions); i { + switch v := v.(*CloudStoragePath); i { case 0: return &v.state case 1: @@ -3555,7 +3705,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageConfig); i { + switch v := v.(*BigQueryOptions); i { case 0: return &v.state case 1: @@ -3567,7 +3717,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HybridOptions); i { + switch v := v.(*StorageConfig); i { case 0: return &v.state case 1: @@ -3579,7 +3729,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BigQueryKey); i { + switch v := v.(*HybridOptions); i { case 0: return &v.state case 1: @@ -3591,7 +3741,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatastoreKey); i { + switch v := v.(*BigQueryKey); i { case 0: return &v.state case 1: @@ -3603,7 +3753,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Key); i { + switch v := v.(*DatastoreKey); i { case 0: return &v.state case 1: @@ -3615,7 +3765,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecordKey); i { + switch v := v.(*Key); i { case 0: return &v.state case 1: @@ -3627,7 +3777,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BigQueryTable); i { + switch v := v.(*RecordKey); i { case 0: return &v.state case 1: @@ -3639,7 +3789,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BigQueryField); i { + switch v := v.(*BigQueryTable); i { case 0: return &v.state case 1: @@ -3651,7 +3801,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EntityId); i { + switch v := v.(*BigQueryField); i { case 0: return &v.state case 1: @@ -3663,7 +3813,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TableOptions); i { + switch v := v.(*EntityId); i { case 0: return &v.state case 1: @@ -3675,7 +3825,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_Dictionary); i { + switch v := v.(*TableOptions); i { case 0: return &v.state case 1: @@ -3687,7 +3837,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_Regex); i { + switch v := v.(*CustomInfoType_Dictionary); i { case 0: return &v.state case 1: @@ -3699,7 +3849,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_SurrogateType); i { + switch v := v.(*CustomInfoType_Regex); i { case 0: return &v.state case 1: @@ -3711,7 +3861,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_DetectionRule); i { + switch v := v.(*CustomInfoType_SurrogateType); i { case 0: return &v.state case 1: @@ -3723,7 +3873,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_Dictionary_WordList); i { + switch v := v.(*CustomInfoType_DetectionRule); i { case 0: return &v.state case 1: @@ -3735,7 +3885,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_DetectionRule_Proximity); i { + switch v := v.(*CustomInfoType_Dictionary_WordList); i { case 0: return &v.state case 1: @@ -3747,7 +3897,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_DetectionRule_LikelihoodAdjustment); i { + switch v := v.(*CustomInfoType_DetectionRule_Proximity); i { case 0: return &v.state case 1: @@ -3759,7 +3909,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomInfoType_DetectionRule_HotwordRule); i { + switch v := v.(*CustomInfoType_DetectionRule_LikelihoodAdjustment); i { case 0: return &v.state case 1: @@ -3771,7 +3921,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudStorageOptions_FileSet); i { + switch v := v.(*CustomInfoType_DetectionRule_HotwordRule); i { case 0: return &v.state case 1: @@ -3783,6 +3933,18 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } file_google_privacy_dlp_v2_storage_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CloudStorageOptions_FileSet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_privacy_dlp_v2_storage_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StorageConfig_TimespanConfig); i { case 0: return &v.state @@ -3794,7 +3956,7 @@ func file_google_privacy_dlp_v2_storage_proto_init() { return nil } } - file_google_privacy_dlp_v2_storage_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_google_privacy_dlp_v2_storage_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Key_PathElement); i { case 0: return &v.state @@ -3807,34 +3969,34 @@ func file_google_privacy_dlp_v2_storage_proto_init() { } } } - file_google_privacy_dlp_v2_storage_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_storage_proto_msgTypes[3].OneofWrappers = []interface{}{ (*CustomInfoType_Dictionary_)(nil), (*CustomInfoType_Regex_)(nil), (*CustomInfoType_SurrogateType_)(nil), (*CustomInfoType_StoredType)(nil), } - file_google_privacy_dlp_v2_storage_proto_msgTypes[12].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_storage_proto_msgTypes[13].OneofWrappers = []interface{}{ (*StorageConfig_DatastoreOptions)(nil), (*StorageConfig_CloudStorageOptions)(nil), (*StorageConfig_BigQueryOptions)(nil), (*StorageConfig_HybridOptions)(nil), } - file_google_privacy_dlp_v2_storage_proto_msgTypes[17].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_storage_proto_msgTypes[18].OneofWrappers = []interface{}{ (*RecordKey_DatastoreKey)(nil), (*RecordKey_BigQueryKey)(nil), } - file_google_privacy_dlp_v2_storage_proto_msgTypes[22].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_storage_proto_msgTypes[23].OneofWrappers = []interface{}{ (*CustomInfoType_Dictionary_WordList_)(nil), (*CustomInfoType_Dictionary_CloudStoragePath)(nil), } - file_google_privacy_dlp_v2_storage_proto_msgTypes[25].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_storage_proto_msgTypes[26].OneofWrappers = []interface{}{ (*CustomInfoType_DetectionRule_HotwordRule_)(nil), } - file_google_privacy_dlp_v2_storage_proto_msgTypes[28].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_storage_proto_msgTypes[29].OneofWrappers = []interface{}{ (*CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood)(nil), (*CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood)(nil), } - file_google_privacy_dlp_v2_storage_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_google_privacy_dlp_v2_storage_proto_msgTypes[34].OneofWrappers = []interface{}{ (*Key_PathElement_Id)(nil), (*Key_PathElement_Name)(nil), } @@ -3843,8 +4005,8 @@ func file_google_privacy_dlp_v2_storage_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_privacy_dlp_v2_storage_proto_rawDesc, - NumEnums: 5, - NumMessages: 34, + NumEnums: 6, + NumMessages: 35, NumExtensions: 0, NumServices: 0, }, diff --git a/regen.txt b/regen.txt index 4a75a7f82..4971d2711 100644 --- a/regen.txt +++ b/regen.txt @@ -1 +1 @@ -b47cf72d1d598e5c6318a96a9ffd989f64562817 \ No newline at end of file +de76e031906133e3dbb166468c8c5945fff98528 \ No newline at end of file