diff --git a/go.sum b/go.sum index be29463c..e9d2c2b1 100644 --- a/go.sum +++ b/go.sum @@ -221,16 +221,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/sysdiglabs/agent-kilt/pkg v0.0.0-20231124131820-71542fa7267c h1:4EX48ZtM2h5cZ8b7IlOS6eMTranmUyAaM7aZ2fOw8no= -github.com/sysdiglabs/agent-kilt/pkg v0.0.0-20231124131820-71542fa7267c/go.mod h1:jxZJUWMw4eK8W9kyWeU0sJulx1KyEaIi6oZx4ATLobI= -github.com/sysdiglabs/agent-kilt/pkg v0.0.0-20231207110334-1d6c07239b4c h1:VmKvTs0e7mmA+9QGIcTBZHkfyNwE5xFZIJ7UWWW86Vs= -github.com/sysdiglabs/agent-kilt/pkg v0.0.0-20231207110334-1d6c07239b4c/go.mod h1:CTFbnFzGunvQCZKkewsx/XLSchikz9pHIq715Ao90Bw= github.com/sysdiglabs/agent-kilt/pkg v0.0.0-20240201123620-2272de6dee9f h1:2DsK+LfZ4oFOKg+hJ7VdYkYBOPLQhm2S3WYRG9sKjg4= github.com/sysdiglabs/agent-kilt/pkg v0.0.0-20240201123620-2272de6dee9f/go.mod h1:CTFbnFzGunvQCZKkewsx/XLSchikz9pHIq715Ao90Bw= -github.com/sysdiglabs/agent-kilt/runtimes/cloudformation v0.0.0-20231124134841-96a4feb9adb9 h1:VWoep4GtewewjvveMxpvMUeJYMAnqj/mxH3rnFMpQr0= -github.com/sysdiglabs/agent-kilt/runtimes/cloudformation v0.0.0-20231124134841-96a4feb9adb9/go.mod h1:ISt5TFdTW97q10cNZt3gpv8ejVSCuDrJGAu4CNZJcFw= -github.com/sysdiglabs/agent-kilt/runtimes/cloudformation v0.0.0-20231207110334-1d6c07239b4c h1:hCF6/JBSV0ovF9RfMKMUiROeNzlLtnMWjW5MSbcwA2Q= -github.com/sysdiglabs/agent-kilt/runtimes/cloudformation v0.0.0-20231207110334-1d6c07239b4c/go.mod h1:iJjZCFs4hKceZHVCFFfU+s46VfBfST6L6/oB4aHzu1s= github.com/sysdiglabs/agent-kilt/runtimes/cloudformation v0.0.0-20240201123620-2272de6dee9f h1:AJSUyLqKhSW+wrMnHcg2+8j/KG2++KwbRKzl+gwz6vk= github.com/sysdiglabs/agent-kilt/runtimes/cloudformation v0.0.0-20240201123620-2272de6dee9f/go.mod h1:iJjZCFs4hKceZHVCFFfU+s46VfBfST6L6/oB4aHzu1s= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= @@ -312,8 +304,6 @@ golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/sysdig/internal/client/v2/cloudauth/go/cloud_account.pb.go b/sysdig/internal/client/v2/cloudauth/go/cloud_account.pb.go index e9355e7e..90779468 100644 --- a/sysdig/internal/client/v2/cloudauth/go/cloud_account.pb.go +++ b/sysdig/internal/client/v2/cloudauth/go/cloud_account.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v4.25.1 +// protoc-gen-go v1.32.0 +// protoc v4.25.3 // source: cloud_account.proto package draiosproto @@ -10,6 +10,8 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" descriptorpb "google.golang.org/protobuf/types/descriptorpb" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" @@ -140,6 +142,64 @@ func (Feature) EnumDescriptor() ([]byte, []int) { return file_cloud_account_proto_rawDescGZIP(), []int{1} } +type ValidationResult int32 + +const ( + ValidationResult_VALIDATION_RESULT_UNSPECIFIED ValidationResult = 0 + ValidationResult_VALIDATION_RESULT_UNKNOWN ValidationResult = 1 // unable to derive validation result (non error) + ValidationResult_VALIDATION_RESULT_SUCCESS ValidationResult = 2 // no failing validation steps + ValidationResult_VALIDATION_RESULT_FAILURE ValidationResult = 3 // at leat one validation step failed + ValidationResult_VALIDATION_RESULT_PARTIAL_FAILURE ValidationResult = 4 // functioning elements exist, but not all that are enabled + ValidationResult_VALIDATION_RESULT_UNIMPLEMENTED ValidationResult = 5 // validation not implemented +) + +// Enum value maps for ValidationResult. +var ( + ValidationResult_name = map[int32]string{ + 0: "VALIDATION_RESULT_UNSPECIFIED", + 1: "VALIDATION_RESULT_UNKNOWN", + 2: "VALIDATION_RESULT_SUCCESS", + 3: "VALIDATION_RESULT_FAILURE", + 4: "VALIDATION_RESULT_PARTIAL_FAILURE", + 5: "VALIDATION_RESULT_UNIMPLEMENTED", + } + ValidationResult_value = map[string]int32{ + "VALIDATION_RESULT_UNSPECIFIED": 0, + "VALIDATION_RESULT_UNKNOWN": 1, + "VALIDATION_RESULT_SUCCESS": 2, + "VALIDATION_RESULT_FAILURE": 3, + "VALIDATION_RESULT_PARTIAL_FAILURE": 4, + "VALIDATION_RESULT_UNIMPLEMENTED": 5, + } +) + +func (x ValidationResult) Enum() *ValidationResult { + p := new(ValidationResult) + *p = x + return p +} + +func (x ValidationResult) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ValidationResult) Descriptor() protoreflect.EnumDescriptor { + return file_cloud_account_proto_enumTypes[2].Descriptor() +} + +func (ValidationResult) Type() protoreflect.EnumType { + return &file_cloud_account_proto_enumTypes[2] +} + +func (x ValidationResult) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ValidationResult.Descriptor instead. +func (ValidationResult) EnumDescriptor() ([]byte, []int) { + return file_cloud_account_proto_rawDescGZIP(), []int{2} +} + // Component enumerates all available component types type Component int32 @@ -189,11 +249,11 @@ func (x Component) String() string { } func (Component) Descriptor() protoreflect.EnumDescriptor { - return file_cloud_account_proto_enumTypes[2].Descriptor() + return file_cloud_account_proto_enumTypes[3].Descriptor() } func (Component) Type() protoreflect.EnumType { - return &file_cloud_account_proto_enumTypes[2] + return &file_cloud_account_proto_enumTypes[3] } func (x Component) Number() protoreflect.EnumNumber { @@ -202,7 +262,7 @@ func (x Component) Number() protoreflect.EnumNumber { // Deprecated: Use Component.Descriptor instead. func (Component) EnumDescriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{2} + return file_cloud_account_proto_rawDescGZIP(), []int{3} } // CloudAccount captures a snapshot of basic metadata fields associated with a cloud. @@ -225,6 +285,7 @@ type CloudAccount struct { Components []*AccountComponent `protobuf:"bytes,12,rep,name=components,proto3" json:"components,omitempty"` // string identifiers of installed components Virtual bool `protobuf:"varint,13,opt,name=virtual,proto3" json:"virtual,omitempty"` // virtual accounts are symbolic, representing accounts owned by a foreign system ProviderTenantId string `protobuf:"bytes,14,opt,name=provider_tenant_id,json=providerTenantId,proto3" json:"provider_tenant_id,omitempty"` // cloud provider's tenant identifier, one in the same as CloudOrganization.provider_id + Validation *Validation `protobuf:"bytes,15,opt,name=validation,proto3" json:"validation,omitempty"` // validation state of the account } func (x *CloudAccount) Reset() { @@ -357,6 +418,13 @@ func (x *CloudAccount) GetProviderTenantId() string { return "" } +func (x *CloudAccount) GetValidation() *Validation { + if x != nil { + return x.Validation + } + return nil +} + type AccountFeatures struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -447,6 +515,8 @@ type AccountFeature struct { Available bool `protobuf:"varint,3,opt,name=available,proto3" json:"available,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Components []string `protobuf:"bytes,5,rep,name=components,proto3" json:"components,omitempty"` // string identifiers of components associated with the feature + Validation *Validation `protobuf:"bytes,6,opt,name=validation,proto3" json:"validation,omitempty"` + Flags map[string]string `protobuf:"bytes,7,rep,name=flags,proto3" json:"flags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // feature specific flags } func (x *AccountFeature) Reset() { @@ -516,6 +586,336 @@ func (x *AccountFeature) GetComponents() []string { return nil } +func (x *AccountFeature) GetValidation() *Validation { + if x != nil { + return x.Validation + } + return nil +} + +func (x *AccountFeature) GetFlags() map[string]string { + if x != nil { + return x.Flags + } + return nil +} + +type ValidationStep struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Duration *durationpb.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"` + Error *ValidationError `protobuf:"bytes,3,opt,name=error,proto3,oneof" json:"error,omitempty"` +} + +func (x *ValidationStep) Reset() { + *x = ValidationStep{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_account_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidationStep) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidationStep) ProtoMessage() {} + +func (x *ValidationStep) ProtoReflect() protoreflect.Message { + mi := &file_cloud_account_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 ValidationStep.ProtoReflect.Descriptor instead. +func (*ValidationStep) Descriptor() ([]byte, []int) { + return file_cloud_account_proto_rawDescGZIP(), []int{3} +} + +func (x *ValidationStep) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ValidationStep) GetDuration() *durationpb.Duration { + if x != nil { + return x.Duration + } + return nil +} + +func (x *ValidationStep) GetError() *ValidationError { + if x != nil { + return x.Error + } + return nil +} + +type ValidationError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + Detail *structpb.Value `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` +} + +func (x *ValidationError) Reset() { + *x = ValidationError{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_account_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidationError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidationError) ProtoMessage() {} + +func (x *ValidationError) ProtoReflect() protoreflect.Message { + mi := &file_cloud_account_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 ValidationError.ProtoReflect.Descriptor instead. +func (*ValidationError) Descriptor() ([]byte, []int) { + return file_cloud_account_proto_rawDescGZIP(), []int{4} +} + +func (x *ValidationError) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *ValidationError) GetDetail() *structpb.Value { + if x != nil { + return x.Detail + } + return nil +} + +type Validation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result ValidationResult `protobuf:"varint,1,opt,name=result,proto3,enum=draiosproto.ValidationResult" json:"result,omitempty"` + Timestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Steps []*ValidationStep `protobuf:"bytes,3,rep,name=steps,proto3" json:"steps,omitempty"` +} + +func (x *Validation) Reset() { + *x = Validation{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_account_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Validation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Validation) ProtoMessage() {} + +func (x *Validation) ProtoReflect() protoreflect.Message { + mi := &file_cloud_account_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 Validation.ProtoReflect.Descriptor instead. +func (*Validation) Descriptor() ([]byte, []int) { + return file_cloud_account_proto_rawDescGZIP(), []int{5} +} + +func (x *Validation) GetResult() ValidationResult { + if x != nil { + return x.Result + } + return ValidationResult_VALIDATION_RESULT_UNSPECIFIED +} + +func (x *Validation) GetTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *Validation) GetSteps() []*ValidationStep { + if x != nil { + return x.Steps + } + return nil +} + +type CloudOrganization struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ManagementAccountId string `protobuf:"bytes,3,opt,name=management_account_id,json=managementAccountId,proto3" json:"management_account_id,omitempty"` + Accounts []*CloudAccount `protobuf:"bytes,4,rep,name=accounts,proto3" json:"accounts,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ProviderId string `protobuf:"bytes,7,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` // cloud provider's organization identifier + Provider Provider `protobuf:"varint,8,opt,name=provider,proto3,enum=draiosproto.Provider" json:"provider,omitempty"` // cloud provider type + CustomerId uint64 `protobuf:"varint,9,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` // the associated customer id + OrganizationalUnitIds []string `protobuf:"bytes,10,rep,name=organizational_unit_ids,json=organizationalUnitIds,proto3" json:"organizational_unit_ids,omitempty"` // an optional sub OU to target for the organization + ProviderAlias string `protobuf:"bytes,11,opt,name=provider_alias,json=providerAlias,proto3" json:"provider_alias,omitempty"` // cloud provider's organization alias + Validation *Validation `protobuf:"bytes,12,opt,name=validation,proto3" json:"validation,omitempty"` // validation state of the organization +} + +func (x *CloudOrganization) Reset() { + *x = CloudOrganization{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_account_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CloudOrganization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudOrganization) ProtoMessage() {} + +func (x *CloudOrganization) ProtoReflect() protoreflect.Message { + mi := &file_cloud_account_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 CloudOrganization.ProtoReflect.Descriptor instead. +func (*CloudOrganization) Descriptor() ([]byte, []int) { + return file_cloud_account_proto_rawDescGZIP(), []int{6} +} + +func (x *CloudOrganization) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *CloudOrganization) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CloudOrganization) GetManagementAccountId() string { + if x != nil { + return x.ManagementAccountId + } + return "" +} + +func (x *CloudOrganization) GetAccounts() []*CloudAccount { + if x != nil { + return x.Accounts + } + return nil +} + +func (x *CloudOrganization) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CloudOrganization) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CloudOrganization) GetProviderId() string { + if x != nil { + return x.ProviderId + } + return "" +} + +func (x *CloudOrganization) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +func (x *CloudOrganization) GetCustomerId() uint64 { + if x != nil { + return x.CustomerId + } + return 0 +} + +func (x *CloudOrganization) GetOrganizationalUnitIds() []string { + if x != nil { + return x.OrganizationalUnitIds + } + return nil +} + +func (x *CloudOrganization) GetProviderAlias() string { + if x != nil { + return x.ProviderAlias + } + return "" +} + +func (x *CloudOrganization) GetValidation() *Validation { + if x != nil { + return x.Validation + } + return nil +} + // FeatureComponents enumerates all components available to a feature type FeatureComponents struct { state protoimpl.MessageState @@ -534,7 +934,7 @@ type FeatureComponents struct { func (x *FeatureComponents) Reset() { *x = FeatureComponents{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[3] + mi := &file_cloud_account_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -547,7 +947,7 @@ func (x *FeatureComponents) String() string { func (*FeatureComponents) ProtoMessage() {} func (x *FeatureComponents) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[3] + mi := &file_cloud_account_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -560,7 +960,7 @@ func (x *FeatureComponents) ProtoReflect() protoreflect.Message { // Deprecated: Use FeatureComponents.ProtoReflect.Descriptor instead. func (*FeatureComponents) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{3} + return file_cloud_account_proto_rawDescGZIP(), []int{7} } func (x *FeatureComponents) GetCloudConnector() *AccountComponent { @@ -618,12 +1018,12 @@ type AccountComponent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Type Component `protobuf:"varint,1,opt,name=type,proto3,enum=draiosproto.Component" json:"type,omitempty"` - Instance string `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ValidatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=validated_at,json=validatedAt,proto3" json:"validated_at,omitempty"` + Type Component `protobuf:"varint,1,opt,name=type,proto3,enum=draiosproto.Component" json:"type,omitempty"` + Instance string `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Validation *Validation `protobuf:"bytes,8,opt,name=validation,proto3" json:"validation,omitempty"` // Types that are assignable to Metadata: // // *AccountComponent_CloudConnectorMetadata @@ -639,7 +1039,7 @@ type AccountComponent struct { func (x *AccountComponent) Reset() { *x = AccountComponent{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[4] + mi := &file_cloud_account_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -652,7 +1052,7 @@ func (x *AccountComponent) String() string { func (*AccountComponent) ProtoMessage() {} func (x *AccountComponent) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[4] + mi := &file_cloud_account_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -665,7 +1065,7 @@ func (x *AccountComponent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountComponent.ProtoReflect.Descriptor instead. func (*AccountComponent) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{4} + return file_cloud_account_proto_rawDescGZIP(), []int{8} } func (x *AccountComponent) GetType() Component { @@ -703,9 +1103,9 @@ func (x *AccountComponent) GetUpdatedAt() *timestamppb.Timestamp { return nil } -func (x *AccountComponent) GetValidatedAt() *timestamppb.Timestamp { +func (x *AccountComponent) GetValidation() *Validation { if x != nil { - return x.ValidatedAt + return x.Validation } return nil } @@ -829,7 +1229,7 @@ type CloudConnectorMetadata struct { func (x *CloudConnectorMetadata) Reset() { *x = CloudConnectorMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[5] + mi := &file_cloud_account_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -842,7 +1242,7 @@ func (x *CloudConnectorMetadata) String() string { func (*CloudConnectorMetadata) ProtoMessage() {} func (x *CloudConnectorMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[5] + mi := &file_cloud_account_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -855,7 +1255,7 @@ func (x *CloudConnectorMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudConnectorMetadata.ProtoReflect.Descriptor instead. func (*CloudConnectorMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{5} + return file_cloud_account_proto_rawDescGZIP(), []int{9} } func (m *CloudConnectorMetadata) GetProvider() isCloudConnectorMetadata_Provider { @@ -925,7 +1325,7 @@ type TrustedRoleMetadata struct { func (x *TrustedRoleMetadata) Reset() { *x = TrustedRoleMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[6] + mi := &file_cloud_account_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -938,7 +1338,7 @@ func (x *TrustedRoleMetadata) String() string { func (*TrustedRoleMetadata) ProtoMessage() {} func (x *TrustedRoleMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[6] + mi := &file_cloud_account_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -951,7 +1351,7 @@ func (x *TrustedRoleMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use TrustedRoleMetadata.ProtoReflect.Descriptor instead. func (*TrustedRoleMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{6} + return file_cloud_account_proto_rawDescGZIP(), []int{10} } func (m *TrustedRoleMetadata) GetProvider() isTrustedRoleMetadata_Provider { @@ -1020,7 +1420,7 @@ type EventBridgeMetadata struct { func (x *EventBridgeMetadata) Reset() { *x = EventBridgeMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[7] + mi := &file_cloud_account_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1033,7 +1433,7 @@ func (x *EventBridgeMetadata) String() string { func (*EventBridgeMetadata) ProtoMessage() {} func (x *EventBridgeMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[7] + mi := &file_cloud_account_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1046,7 +1446,7 @@ func (x *EventBridgeMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use EventBridgeMetadata.ProtoReflect.Descriptor instead. func (*EventBridgeMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{7} + return file_cloud_account_proto_rawDescGZIP(), []int{11} } func (m *EventBridgeMetadata) GetProvider() isEventBridgeMetadata_Provider { @@ -1103,7 +1503,7 @@ type ServicePrincipalMetadata struct { func (x *ServicePrincipalMetadata) Reset() { *x = ServicePrincipalMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[8] + mi := &file_cloud_account_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1116,7 +1516,7 @@ func (x *ServicePrincipalMetadata) String() string { func (*ServicePrincipalMetadata) ProtoMessage() {} func (x *ServicePrincipalMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[8] + mi := &file_cloud_account_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1129,7 +1529,7 @@ func (x *ServicePrincipalMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use ServicePrincipalMetadata.ProtoReflect.Descriptor instead. func (*ServicePrincipalMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{8} + return file_cloud_account_proto_rawDescGZIP(), []int{12} } func (m *ServicePrincipalMetadata) GetProvider() isServicePrincipalMetadata_Provider { @@ -1182,7 +1582,8 @@ func (*ServicePrincipalMetadata_Okta_) isServicePrincipalMetadata_Provider() {} func (*ServicePrincipalMetadata_Azure_) isServicePrincipalMetadata_Provider() {} -// WebhookDatasourceMetadata captures the metadata associated with a webhook integration that forwards data from the customer's premises to us, segmented by provider type +// WebhookDatasourceMetadata captures the metadata associated with a webhook integration, segmented by provider type. +// a webhook integration is a event push model initiated by the provider over HTTP POST requests. type WebhookDatasourceMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1199,7 +1600,7 @@ type WebhookDatasourceMetadata struct { func (x *WebhookDatasourceMetadata) Reset() { *x = WebhookDatasourceMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[9] + mi := &file_cloud_account_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1212,7 +1613,7 @@ func (x *WebhookDatasourceMetadata) String() string { func (*WebhookDatasourceMetadata) ProtoMessage() {} func (x *WebhookDatasourceMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[9] + mi := &file_cloud_account_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1225,7 +1626,7 @@ func (x *WebhookDatasourceMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use WebhookDatasourceMetadata.ProtoReflect.Descriptor instead. func (*WebhookDatasourceMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{9} + return file_cloud_account_proto_rawDescGZIP(), []int{13} } func (m *WebhookDatasourceMetadata) GetProvider() isWebhookDatasourceMetadata_Provider { @@ -1293,7 +1694,7 @@ type CryptoKeyMetadata struct { func (x *CryptoKeyMetadata) Reset() { *x = CryptoKeyMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[10] + mi := &file_cloud_account_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1306,7 +1707,7 @@ func (x *CryptoKeyMetadata) String() string { func (*CryptoKeyMetadata) ProtoMessage() {} func (x *CryptoKeyMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[10] + mi := &file_cloud_account_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1319,7 +1720,7 @@ func (x *CryptoKeyMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoKeyMetadata.ProtoReflect.Descriptor instead. func (*CryptoKeyMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{10} + return file_cloud_account_proto_rawDescGZIP(), []int{14} } func (m *CryptoKeyMetadata) GetProvider() isCryptoKeyMetadata_Provider { @@ -1361,7 +1762,7 @@ type CloudLogsMetadata struct { func (x *CloudLogsMetadata) Reset() { *x = CloudLogsMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[11] + mi := &file_cloud_account_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1374,7 +1775,7 @@ func (x *CloudLogsMetadata) String() string { func (*CloudLogsMetadata) ProtoMessage() {} func (x *CloudLogsMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[11] + mi := &file_cloud_account_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1387,7 +1788,7 @@ func (x *CloudLogsMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudLogsMetadata.ProtoReflect.Descriptor instead. func (*CloudLogsMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{11} + return file_cloud_account_proto_rawDescGZIP(), []int{15} } func (m *CloudLogsMetadata) GetProvider() isCloudLogsMetadata_Provider { @@ -1423,7 +1824,7 @@ type CloudConnectorMetadata_AWS struct { func (x *CloudConnectorMetadata_AWS) Reset() { *x = CloudConnectorMetadata_AWS{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[12] + mi := &file_cloud_account_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1436,7 +1837,7 @@ func (x *CloudConnectorMetadata_AWS) String() string { func (*CloudConnectorMetadata_AWS) ProtoMessage() {} func (x *CloudConnectorMetadata_AWS) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[12] + mi := &file_cloud_account_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1449,7 +1850,7 @@ func (x *CloudConnectorMetadata_AWS) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudConnectorMetadata_AWS.ProtoReflect.Descriptor instead. func (*CloudConnectorMetadata_AWS) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{5, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{9, 0} } type CloudConnectorMetadata_Azure struct { @@ -1461,7 +1862,7 @@ type CloudConnectorMetadata_Azure struct { func (x *CloudConnectorMetadata_Azure) Reset() { *x = CloudConnectorMetadata_Azure{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[13] + mi := &file_cloud_account_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1474,7 +1875,7 @@ func (x *CloudConnectorMetadata_Azure) String() string { func (*CloudConnectorMetadata_Azure) ProtoMessage() {} func (x *CloudConnectorMetadata_Azure) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[13] + mi := &file_cloud_account_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1487,7 +1888,7 @@ func (x *CloudConnectorMetadata_Azure) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudConnectorMetadata_Azure.ProtoReflect.Descriptor instead. func (*CloudConnectorMetadata_Azure) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{5, 1} + return file_cloud_account_proto_rawDescGZIP(), []int{9, 1} } type CloudConnectorMetadata_GCP struct { @@ -1499,7 +1900,7 @@ type CloudConnectorMetadata_GCP struct { func (x *CloudConnectorMetadata_GCP) Reset() { *x = CloudConnectorMetadata_GCP{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[14] + mi := &file_cloud_account_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1512,7 +1913,7 @@ func (x *CloudConnectorMetadata_GCP) String() string { func (*CloudConnectorMetadata_GCP) ProtoMessage() {} func (x *CloudConnectorMetadata_GCP) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[14] + mi := &file_cloud_account_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1525,7 +1926,7 @@ func (x *CloudConnectorMetadata_GCP) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudConnectorMetadata_GCP.ProtoReflect.Descriptor instead. func (*CloudConnectorMetadata_GCP) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{5, 2} + return file_cloud_account_proto_rawDescGZIP(), []int{9, 2} } type TrustedRoleMetadata_AWS struct { @@ -1539,7 +1940,7 @@ type TrustedRoleMetadata_AWS struct { func (x *TrustedRoleMetadata_AWS) Reset() { *x = TrustedRoleMetadata_AWS{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[15] + mi := &file_cloud_account_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1552,7 +1953,7 @@ func (x *TrustedRoleMetadata_AWS) String() string { func (*TrustedRoleMetadata_AWS) ProtoMessage() {} func (x *TrustedRoleMetadata_AWS) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[15] + mi := &file_cloud_account_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1565,7 +1966,7 @@ func (x *TrustedRoleMetadata_AWS) ProtoReflect() protoreflect.Message { // Deprecated: Use TrustedRoleMetadata_AWS.ProtoReflect.Descriptor instead. func (*TrustedRoleMetadata_AWS) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{6, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{10, 0} } func (x *TrustedRoleMetadata_AWS) GetRoleName() string { @@ -1586,7 +1987,7 @@ type TrustedRoleMetadata_GCP struct { func (x *TrustedRoleMetadata_GCP) Reset() { *x = TrustedRoleMetadata_GCP{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[16] + mi := &file_cloud_account_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1599,7 +2000,7 @@ func (x *TrustedRoleMetadata_GCP) String() string { func (*TrustedRoleMetadata_GCP) ProtoMessage() {} func (x *TrustedRoleMetadata_GCP) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[16] + mi := &file_cloud_account_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1612,7 +2013,7 @@ func (x *TrustedRoleMetadata_GCP) ProtoReflect() protoreflect.Message { // Deprecated: Use TrustedRoleMetadata_GCP.ProtoReflect.Descriptor instead. func (*TrustedRoleMetadata_GCP) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{6, 1} + return file_cloud_account_proto_rawDescGZIP(), []int{10, 1} } func (x *TrustedRoleMetadata_GCP) GetRoleName() string { @@ -1633,7 +2034,7 @@ type TrustedRoleMetadata_Azure struct { func (x *TrustedRoleMetadata_Azure) Reset() { *x = TrustedRoleMetadata_Azure{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[17] + mi := &file_cloud_account_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1646,7 +2047,7 @@ func (x *TrustedRoleMetadata_Azure) String() string { func (*TrustedRoleMetadata_Azure) ProtoMessage() {} func (x *TrustedRoleMetadata_Azure) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[17] + mi := &file_cloud_account_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1659,7 +2060,7 @@ func (x *TrustedRoleMetadata_Azure) ProtoReflect() protoreflect.Message { // Deprecated: Use TrustedRoleMetadata_Azure.ProtoReflect.Descriptor instead. func (*TrustedRoleMetadata_Azure) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{6, 2} + return file_cloud_account_proto_rawDescGZIP(), []int{10, 2} } func (x *TrustedRoleMetadata_Azure) GetRoleName() string { @@ -1681,7 +2082,7 @@ type EventBridgeMetadata_AWS struct { func (x *EventBridgeMetadata_AWS) Reset() { *x = EventBridgeMetadata_AWS{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[18] + mi := &file_cloud_account_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1694,7 +2095,7 @@ func (x *EventBridgeMetadata_AWS) String() string { func (*EventBridgeMetadata_AWS) ProtoMessage() {} func (x *EventBridgeMetadata_AWS) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[18] + mi := &file_cloud_account_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1707,7 +2108,7 @@ func (x *EventBridgeMetadata_AWS) ProtoReflect() protoreflect.Message { // Deprecated: Use EventBridgeMetadata_AWS.ProtoReflect.Descriptor instead. func (*EventBridgeMetadata_AWS) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{7, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{11, 0} } func (x *EventBridgeMetadata_AWS) GetRoleName() string { @@ -1735,7 +2136,7 @@ type EventBridgeMetadata_Azure struct { func (x *EventBridgeMetadata_Azure) Reset() { *x = EventBridgeMetadata_Azure{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[19] + mi := &file_cloud_account_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +2149,7 @@ func (x *EventBridgeMetadata_Azure) String() string { func (*EventBridgeMetadata_Azure) ProtoMessage() {} func (x *EventBridgeMetadata_Azure) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[19] + mi := &file_cloud_account_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +2162,7 @@ func (x *EventBridgeMetadata_Azure) ProtoReflect() protoreflect.Message { // Deprecated: Use EventBridgeMetadata_Azure.ProtoReflect.Descriptor instead. func (*EventBridgeMetadata_Azure) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{7, 1} + return file_cloud_account_proto_rawDescGZIP(), []int{11, 1} } func (x *EventBridgeMetadata_Azure) GetEventHubMetadata() *EventBridgeMetadata_Azure_EventHubMetadata { @@ -1784,7 +2185,7 @@ type EventBridgeMetadata_Azure_EventHubMetadata struct { func (x *EventBridgeMetadata_Azure_EventHubMetadata) Reset() { *x = EventBridgeMetadata_Azure_EventHubMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[20] + mi := &file_cloud_account_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1797,7 +2198,7 @@ func (x *EventBridgeMetadata_Azure_EventHubMetadata) String() string { func (*EventBridgeMetadata_Azure_EventHubMetadata) ProtoMessage() {} func (x *EventBridgeMetadata_Azure_EventHubMetadata) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[20] + mi := &file_cloud_account_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1810,7 +2211,7 @@ func (x *EventBridgeMetadata_Azure_EventHubMetadata) ProtoReflect() protoreflect // Deprecated: Use EventBridgeMetadata_Azure_EventHubMetadata.ProtoReflect.Descriptor instead. func (*EventBridgeMetadata_Azure_EventHubMetadata) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{7, 1, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{11, 1, 0} } func (x *EventBridgeMetadata_Azure_EventHubMetadata) GetEventHubName() string { @@ -1839,13 +2240,15 @@ type ServicePrincipalMetadata_GCP struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key *ServicePrincipalMetadata_GCP_Key `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key *ServicePrincipalMetadata_GCP_Key `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + WorkloadIdentityFederation *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation `protobuf:"bytes,2,opt,name=workload_identity_federation,json=workloadIdentityFederation,proto3" json:"workload_identity_federation,omitempty"` + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` } func (x *ServicePrincipalMetadata_GCP) Reset() { *x = ServicePrincipalMetadata_GCP{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[21] + mi := &file_cloud_account_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1858,7 +2261,7 @@ func (x *ServicePrincipalMetadata_GCP) String() string { func (*ServicePrincipalMetadata_GCP) ProtoMessage() {} func (x *ServicePrincipalMetadata_GCP) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[21] + mi := &file_cloud_account_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1871,7 +2274,7 @@ func (x *ServicePrincipalMetadata_GCP) ProtoReflect() protoreflect.Message { // Deprecated: Use ServicePrincipalMetadata_GCP.ProtoReflect.Descriptor instead. func (*ServicePrincipalMetadata_GCP) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{8, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{12, 0} } func (x *ServicePrincipalMetadata_GCP) GetKey() *ServicePrincipalMetadata_GCP_Key { @@ -1881,6 +2284,20 @@ func (x *ServicePrincipalMetadata_GCP) GetKey() *ServicePrincipalMetadata_GCP_Ke return nil } +func (x *ServicePrincipalMetadata_GCP) GetWorkloadIdentityFederation() *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation { + if x != nil { + return x.WorkloadIdentityFederation + } + return nil +} + +func (x *ServicePrincipalMetadata_GCP) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + type ServicePrincipalMetadata_Okta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1892,7 +2309,7 @@ type ServicePrincipalMetadata_Okta struct { func (x *ServicePrincipalMetadata_Okta) Reset() { *x = ServicePrincipalMetadata_Okta{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[22] + mi := &file_cloud_account_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1905,7 +2322,7 @@ func (x *ServicePrincipalMetadata_Okta) String() string { func (*ServicePrincipalMetadata_Okta) ProtoMessage() {} func (x *ServicePrincipalMetadata_Okta) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[22] + mi := &file_cloud_account_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1918,7 +2335,7 @@ func (x *ServicePrincipalMetadata_Okta) ProtoReflect() protoreflect.Message { // Deprecated: Use ServicePrincipalMetadata_Okta.ProtoReflect.Descriptor instead. func (*ServicePrincipalMetadata_Okta) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{8, 1} + return file_cloud_account_proto_rawDescGZIP(), []int{12, 1} } func (x *ServicePrincipalMetadata_Okta) GetOauthApp() *ServicePrincipalMetadata_Okta_OAuthApp { @@ -1939,7 +2356,7 @@ type ServicePrincipalMetadata_Azure struct { func (x *ServicePrincipalMetadata_Azure) Reset() { *x = ServicePrincipalMetadata_Azure{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[23] + mi := &file_cloud_account_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1952,7 +2369,7 @@ func (x *ServicePrincipalMetadata_Azure) String() string { func (*ServicePrincipalMetadata_Azure) ProtoMessage() {} func (x *ServicePrincipalMetadata_Azure) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[23] + mi := &file_cloud_account_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1965,7 +2382,7 @@ func (x *ServicePrincipalMetadata_Azure) ProtoReflect() protoreflect.Message { // Deprecated: Use ServicePrincipalMetadata_Azure.ProtoReflect.Descriptor instead. func (*ServicePrincipalMetadata_Azure) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{8, 2} + return file_cloud_account_proto_rawDescGZIP(), []int{12, 2} } func (x *ServicePrincipalMetadata_Azure) GetActiveDirectoryServicePrincipal() *ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal { @@ -1990,12 +2407,13 @@ type ServicePrincipalMetadata_GCP_Key struct { TokenUri string `protobuf:"bytes,8,opt,name=token_uri,json=tokenUri,proto3" json:"token_uri,omitempty"` AuthProviderX509CertUrl string `protobuf:"bytes,9,opt,name=auth_provider_x509_cert_url,json=authProviderX509CertUrl,proto3" json:"auth_provider_x509_cert_url,omitempty"` ClientX509CertUrl string `protobuf:"bytes,10,opt,name=client_x509_cert_url,json=clientX509CertUrl,proto3" json:"client_x509_cert_url,omitempty"` + UniverseDomain string `protobuf:"bytes,11,opt,name=universe_domain,json=universeDomain,proto3" json:"universe_domain,omitempty"` } func (x *ServicePrincipalMetadata_GCP_Key) Reset() { *x = ServicePrincipalMetadata_GCP_Key{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[24] + mi := &file_cloud_account_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2008,7 +2426,7 @@ func (x *ServicePrincipalMetadata_GCP_Key) String() string { func (*ServicePrincipalMetadata_GCP_Key) ProtoMessage() {} func (x *ServicePrincipalMetadata_GCP_Key) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[24] + mi := &file_cloud_account_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2021,7 +2439,7 @@ func (x *ServicePrincipalMetadata_GCP_Key) ProtoReflect() protoreflect.Message { // Deprecated: Use ServicePrincipalMetadata_GCP_Key.ProtoReflect.Descriptor instead. func (*ServicePrincipalMetadata_GCP_Key) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{8, 0, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{12, 0, 0} } func (x *ServicePrincipalMetadata_GCP_Key) GetType() string { @@ -2042,54 +2460,124 @@ func (x *ServicePrincipalMetadata_GCP_Key) GetPrivateKeyId() string { if x != nil { return x.PrivateKeyId } - return "" + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetPrivateKey() string { + if x != nil { + return x.PrivateKey + } + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetClientEmail() string { + if x != nil { + return x.ClientEmail + } + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetAuthUri() string { + if x != nil { + return x.AuthUri + } + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetTokenUri() string { + if x != nil { + return x.TokenUri + } + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetAuthProviderX509CertUrl() string { + if x != nil { + return x.AuthProviderX509CertUrl + } + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetClientX509CertUrl() string { + if x != nil { + return x.ClientX509CertUrl + } + return "" +} + +func (x *ServicePrincipalMetadata_GCP_Key) GetUniverseDomain() string { + if x != nil { + return x.UniverseDomain + } + return "" +} + +type ServicePrincipalMetadata_GCP_WorkloadIdentityFederation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PoolId string `protobuf:"bytes,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + PoolProviderId string `protobuf:"bytes,2,opt,name=pool_provider_id,json=poolProviderId,proto3" json:"pool_provider_id,omitempty"` + ProjectNumber string `protobuf:"bytes,3,opt,name=project_number,json=projectNumber,proto3" json:"project_number,omitempty"` +} + +func (x *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) Reset() { + *x = ServicePrincipalMetadata_GCP_WorkloadIdentityFederation{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_account_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (x *ServicePrincipalMetadata_GCP_Key) GetPrivateKey() string { - if x != nil { - return x.PrivateKey - } - return "" +func (x *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ServicePrincipalMetadata_GCP_Key) GetClientEmail() string { - if x != nil { - return x.ClientEmail - } - return "" -} +func (*ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) ProtoMessage() {} -func (x *ServicePrincipalMetadata_GCP_Key) GetClientId() string { - if x != nil { - return x.ClientId +func (x *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) ProtoReflect() protoreflect.Message { + mi := &file_cloud_account_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ServicePrincipalMetadata_GCP_Key) GetAuthUri() string { - if x != nil { - return x.AuthUri - } - return "" +// Deprecated: Use ServicePrincipalMetadata_GCP_WorkloadIdentityFederation.ProtoReflect.Descriptor instead. +func (*ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) Descriptor() ([]byte, []int) { + return file_cloud_account_proto_rawDescGZIP(), []int{12, 0, 1} } -func (x *ServicePrincipalMetadata_GCP_Key) GetTokenUri() string { +func (x *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) GetPoolId() string { if x != nil { - return x.TokenUri + return x.PoolId } return "" } -func (x *ServicePrincipalMetadata_GCP_Key) GetAuthProviderX509CertUrl() string { +func (x *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) GetPoolProviderId() string { if x != nil { - return x.AuthProviderX509CertUrl + return x.PoolProviderId } return "" } -func (x *ServicePrincipalMetadata_GCP_Key) GetClientX509CertUrl() string { +func (x *ServicePrincipalMetadata_GCP_WorkloadIdentityFederation) GetProjectNumber() string { if x != nil { - return x.ClientX509CertUrl + return x.ProjectNumber } return "" } @@ -2099,7 +2587,6 @@ type ServicePrincipalMetadata_Okta_OAuthApp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IngestionId string `protobuf:"bytes,1,opt,name=ingestion_id,json=ingestionId,proto3" json:"ingestion_id,omitempty"` OktaUrl string `protobuf:"bytes,2,opt,name=okta_url,json=oktaUrl,proto3" json:"okta_url,omitempty"` ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` ClientSecret string `protobuf:"bytes,4,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` @@ -2108,7 +2595,7 @@ type ServicePrincipalMetadata_Okta_OAuthApp struct { func (x *ServicePrincipalMetadata_Okta_OAuthApp) Reset() { *x = ServicePrincipalMetadata_Okta_OAuthApp{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[25] + mi := &file_cloud_account_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2121,7 +2608,7 @@ func (x *ServicePrincipalMetadata_Okta_OAuthApp) String() string { func (*ServicePrincipalMetadata_Okta_OAuthApp) ProtoMessage() {} func (x *ServicePrincipalMetadata_Okta_OAuthApp) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[25] + mi := &file_cloud_account_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2134,14 +2621,7 @@ func (x *ServicePrincipalMetadata_Okta_OAuthApp) ProtoReflect() protoreflect.Mes // Deprecated: Use ServicePrincipalMetadata_Okta_OAuthApp.ProtoReflect.Descriptor instead. func (*ServicePrincipalMetadata_Okta_OAuthApp) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{8, 1, 0} -} - -func (x *ServicePrincipalMetadata_Okta_OAuthApp) GetIngestionId() string { - if x != nil { - return x.IngestionId - } - return "" + return file_cloud_account_proto_rawDescGZIP(), []int{12, 1, 0} } func (x *ServicePrincipalMetadata_Okta_OAuthApp) GetOktaUrl() string { @@ -2185,7 +2665,7 @@ type ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal struct { func (x *ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal) Reset() { *x = ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[26] + mi := &file_cloud_account_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2198,7 +2678,7 @@ func (x *ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal) String( func (*ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal) ProtoMessage() {} func (x *ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[26] + mi := &file_cloud_account_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +2691,7 @@ func (x *ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal) ProtoRe // Deprecated: Use ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal.ProtoReflect.Descriptor instead. func (*ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{8, 2, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{12, 2, 0} } func (x *ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal) GetAccountEnabled() bool { @@ -2281,7 +2761,7 @@ type WebhookDatasourceMetadata_Okta struct { func (x *WebhookDatasourceMetadata_Okta) Reset() { *x = WebhookDatasourceMetadata_Okta{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[27] + mi := &file_cloud_account_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2294,7 +2774,7 @@ func (x *WebhookDatasourceMetadata_Okta) String() string { func (*WebhookDatasourceMetadata_Okta) ProtoMessage() {} func (x *WebhookDatasourceMetadata_Okta) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[27] + mi := &file_cloud_account_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2307,7 +2787,7 @@ func (x *WebhookDatasourceMetadata_Okta) ProtoReflect() protoreflect.Message { // Deprecated: Use WebhookDatasourceMetadata_Okta.ProtoReflect.Descriptor instead. func (*WebhookDatasourceMetadata_Okta) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{9, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{13, 0} } func (x *WebhookDatasourceMetadata_Okta) GetWebhookDatasource() *WebhookDatasourceMetadata_Okta_WebhookDatasource { @@ -2328,7 +2808,7 @@ type WebhookDatasourceMetadata_Github struct { func (x *WebhookDatasourceMetadata_Github) Reset() { *x = WebhookDatasourceMetadata_Github{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[28] + mi := &file_cloud_account_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2341,7 +2821,7 @@ func (x *WebhookDatasourceMetadata_Github) String() string { func (*WebhookDatasourceMetadata_Github) ProtoMessage() {} func (x *WebhookDatasourceMetadata_Github) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[28] + mi := &file_cloud_account_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2354,7 +2834,7 @@ func (x *WebhookDatasourceMetadata_Github) ProtoReflect() protoreflect.Message { // Deprecated: Use WebhookDatasourceMetadata_Github.ProtoReflect.Descriptor instead. func (*WebhookDatasourceMetadata_Github) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{9, 1} + return file_cloud_account_proto_rawDescGZIP(), []int{13, 1} } func (x *WebhookDatasourceMetadata_Github) GetWebhookDatasource() *WebhookDatasourceMetadata_Github_WebhookDatasource { @@ -2375,7 +2855,7 @@ type WebhookDatasourceMetadata_Gcp struct { func (x *WebhookDatasourceMetadata_Gcp) Reset() { *x = WebhookDatasourceMetadata_Gcp{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[29] + mi := &file_cloud_account_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2388,7 +2868,7 @@ func (x *WebhookDatasourceMetadata_Gcp) String() string { func (*WebhookDatasourceMetadata_Gcp) ProtoMessage() {} func (x *WebhookDatasourceMetadata_Gcp) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[29] + mi := &file_cloud_account_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2401,7 +2881,7 @@ func (x *WebhookDatasourceMetadata_Gcp) ProtoReflect() protoreflect.Message { // Deprecated: Use WebhookDatasourceMetadata_Gcp.ProtoReflect.Descriptor instead. func (*WebhookDatasourceMetadata_Gcp) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{9, 2} + return file_cloud_account_proto_rawDescGZIP(), []int{13, 2} } func (x *WebhookDatasourceMetadata_Gcp) GetWebhookDatasource() *WebhookDatasourceMetadata_Gcp_WebhookDatasource { @@ -2425,7 +2905,7 @@ type WebhookDatasourceMetadata_Okta_WebhookDatasource struct { func (x *WebhookDatasourceMetadata_Okta_WebhookDatasource) Reset() { *x = WebhookDatasourceMetadata_Okta_WebhookDatasource{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[30] + mi := &file_cloud_account_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2438,7 +2918,7 @@ func (x *WebhookDatasourceMetadata_Okta_WebhookDatasource) String() string { func (*WebhookDatasourceMetadata_Okta_WebhookDatasource) ProtoMessage() {} func (x *WebhookDatasourceMetadata_Okta_WebhookDatasource) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[30] + mi := &file_cloud_account_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2451,7 +2931,7 @@ func (x *WebhookDatasourceMetadata_Okta_WebhookDatasource) ProtoReflect() protor // Deprecated: Use WebhookDatasourceMetadata_Okta_WebhookDatasource.ProtoReflect.Descriptor instead. func (*WebhookDatasourceMetadata_Okta_WebhookDatasource) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{9, 0, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{13, 0, 0} } func (x *WebhookDatasourceMetadata_Okta_WebhookDatasource) GetHookId() string { @@ -2496,7 +2976,7 @@ type WebhookDatasourceMetadata_Github_WebhookDatasource struct { func (x *WebhookDatasourceMetadata_Github_WebhookDatasource) Reset() { *x = WebhookDatasourceMetadata_Github_WebhookDatasource{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[31] + mi := &file_cloud_account_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2509,7 +2989,7 @@ func (x *WebhookDatasourceMetadata_Github_WebhookDatasource) String() string { func (*WebhookDatasourceMetadata_Github_WebhookDatasource) ProtoMessage() {} func (x *WebhookDatasourceMetadata_Github_WebhookDatasource) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[31] + mi := &file_cloud_account_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2522,7 +3002,7 @@ func (x *WebhookDatasourceMetadata_Github_WebhookDatasource) ProtoReflect() prot // Deprecated: Use WebhookDatasourceMetadata_Github_WebhookDatasource.ProtoReflect.Descriptor instead. func (*WebhookDatasourceMetadata_Github_WebhookDatasource) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{9, 1, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{13, 1, 0} } func (x *WebhookDatasourceMetadata_Github_WebhookDatasource) GetHookId() int64 { @@ -2557,12 +3037,17 @@ type WebhookDatasourceMetadata_Gcp_WebhookDatasource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + PubsubTopicName string `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName,proto3" json:"pubsub_topic_name,omitempty"` + SinkName string `protobuf:"bytes,2,opt,name=sink_name,json=sinkName,proto3" json:"sink_name,omitempty"` + PushSubscriptionName string `protobuf:"bytes,3,opt,name=push_subscription_name,json=pushSubscriptionName,proto3" json:"push_subscription_name,omitempty"` + PushEndpoint string `protobuf:"bytes,4,opt,name=push_endpoint,json=pushEndpoint,proto3" json:"push_endpoint,omitempty"` } func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) Reset() { *x = WebhookDatasourceMetadata_Gcp_WebhookDatasource{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[32] + mi := &file_cloud_account_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2575,7 +3060,7 @@ func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) String() string { func (*WebhookDatasourceMetadata_Gcp_WebhookDatasource) ProtoMessage() {} func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[32] + mi := &file_cloud_account_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2588,7 +3073,35 @@ func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) ProtoReflect() protore // Deprecated: Use WebhookDatasourceMetadata_Gcp_WebhookDatasource.ProtoReflect.Descriptor instead. func (*WebhookDatasourceMetadata_Gcp_WebhookDatasource) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{9, 2, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{13, 2, 0} +} + +func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) GetPubsubTopicName() string { + if x != nil { + return x.PubsubTopicName + } + return "" +} + +func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) GetSinkName() string { + if x != nil { + return x.SinkName + } + return "" +} + +func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) GetPushSubscriptionName() string { + if x != nil { + return x.PushSubscriptionName + } + return "" +} + +func (x *WebhookDatasourceMetadata_Gcp_WebhookDatasource) GetPushEndpoint() string { + if x != nil { + return x.PushEndpoint + } + return "" } type CryptoKeyMetadata_AWS struct { @@ -2602,7 +3115,7 @@ type CryptoKeyMetadata_AWS struct { func (x *CryptoKeyMetadata_AWS) Reset() { *x = CryptoKeyMetadata_AWS{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[33] + mi := &file_cloud_account_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2615,7 +3128,7 @@ func (x *CryptoKeyMetadata_AWS) String() string { func (*CryptoKeyMetadata_AWS) ProtoMessage() {} func (x *CryptoKeyMetadata_AWS) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[33] + mi := &file_cloud_account_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2628,7 +3141,7 @@ func (x *CryptoKeyMetadata_AWS) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoKeyMetadata_AWS.ProtoReflect.Descriptor instead. func (*CryptoKeyMetadata_AWS) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{10, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{14, 0} } func (x *CryptoKeyMetadata_AWS) GetKms() *CryptoKeyMetadata_AWS_KMS { @@ -2650,7 +3163,7 @@ type CryptoKeyMetadata_AWS_KMS struct { func (x *CryptoKeyMetadata_AWS_KMS) Reset() { *x = CryptoKeyMetadata_AWS_KMS{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[34] + mi := &file_cloud_account_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2663,7 +3176,7 @@ func (x *CryptoKeyMetadata_AWS_KMS) String() string { func (*CryptoKeyMetadata_AWS_KMS) ProtoMessage() {} func (x *CryptoKeyMetadata_AWS_KMS) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[34] + mi := &file_cloud_account_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2676,7 +3189,7 @@ func (x *CryptoKeyMetadata_AWS_KMS) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoKeyMetadata_AWS_KMS.ProtoReflect.Descriptor instead. func (*CryptoKeyMetadata_AWS_KMS) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{10, 0, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{14, 0, 0} } func (x *CryptoKeyMetadata_AWS_KMS) GetAlias() string { @@ -2704,7 +3217,7 @@ type CloudLogsMetadata_AWS struct { func (x *CloudLogsMetadata_AWS) Reset() { *x = CloudLogsMetadata_AWS{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[35] + mi := &file_cloud_account_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2717,7 +3230,7 @@ func (x *CloudLogsMetadata_AWS) String() string { func (*CloudLogsMetadata_AWS) ProtoMessage() {} func (x *CloudLogsMetadata_AWS) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[35] + mi := &file_cloud_account_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2730,7 +3243,7 @@ func (x *CloudLogsMetadata_AWS) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudLogsMetadata_AWS.ProtoReflect.Descriptor instead. func (*CloudLogsMetadata_AWS) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{11, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{15, 0} } func (x *CloudLogsMetadata_AWS) GetCloudtrailS3Bucket() *CloudLogsMetadata_AWS_CloudTrailS3Bucket { @@ -2755,7 +3268,7 @@ type CloudLogsMetadata_AWS_CloudTrailS3Bucket struct { func (x *CloudLogsMetadata_AWS_CloudTrailS3Bucket) Reset() { *x = CloudLogsMetadata_AWS_CloudTrailS3Bucket{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_account_proto_msgTypes[36] + mi := &file_cloud_account_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2768,7 +3281,7 @@ func (x *CloudLogsMetadata_AWS_CloudTrailS3Bucket) String() string { func (*CloudLogsMetadata_AWS_CloudTrailS3Bucket) ProtoMessage() {} func (x *CloudLogsMetadata_AWS_CloudTrailS3Bucket) ProtoReflect() protoreflect.Message { - mi := &file_cloud_account_proto_msgTypes[36] + mi := &file_cloud_account_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2781,7 +3294,7 @@ func (x *CloudLogsMetadata_AWS_CloudTrailS3Bucket) ProtoReflect() protoreflect.M // Deprecated: Use CloudLogsMetadata_AWS_CloudTrailS3Bucket.ProtoReflect.Descriptor instead. func (*CloudLogsMetadata_AWS_CloudTrailS3Bucket) Descriptor() ([]byte, []int) { - return file_cloud_account_proto_rawDescGZIP(), []int{11, 0, 0} + return file_cloud_account_proto_rawDescGZIP(), []int{15, 0, 0} } func (x *CloudLogsMetadata_AWS_CloudTrailS3Bucket) GetBucketArn() string { @@ -2843,273 +3356,363 @@ var file_cloud_account_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 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, 0xc6, 0x04, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, - 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x07, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x72, 0x61, + 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, 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, 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, 0xff, 0x04, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, + 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, + 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, + 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x12, 0x2c, + 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x0a, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbe, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x17, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x0a, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, - 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xbe, - 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x12, 0x53, 0x0a, 0x17, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x52, 0x15, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, - 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x15, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x75, 0x72, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x52, 0x13, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x50, 0x6f, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x5b, 0x0a, 0x1b, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x15, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, + 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, + 0x0a, 0x15, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x19, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x15, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, + 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x5b, 0x0a, 0x1b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x52, 0x13, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x57, 0x0a, 0x19, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, - 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x17, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x22, - 0xcd, 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x14, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x22, - 0x99, 0x05, 0x0a, 0x11, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, - 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0c, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x02, - 0x52, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x4f, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6e, - 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, - 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x03, 0x52, 0x10, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x51, 0x0a, 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x04, 0x52, 0x11, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, - 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x05, 0x52, 0x09, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, + 0x65, 0x52, 0x19, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x15, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x06, 0x52, 0x09, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, - 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xc1, 0x07, 0x0a, 0x10, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, - 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x57, 0x0a, + 0x19, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x6c, 0x65, 0x73, + 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x17, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x63, + 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0xfe, 0x02, 0x0a, 0x0e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x72, 0x61, + 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3c, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x1a, 0x38, 0x0a, + 0x0a, 0x46, 0x6c, 0x61, 0x67, 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, 0x9e, 0x01, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, + 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 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, 0x52, 0x08, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5b, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0x06, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xb0, 0x01, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x38, 0x0a, 0x09, 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, 0x0b, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5f, 0x0a, 0x18, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x72, 0x61, 0x69, - 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x15, 0x74, 0x72, 0x75, 0x73, - 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x56, 0x0a, 0x15, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x13, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x65, 0x0a, 0x1a, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, - 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, - 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x68, 0x0a, 0x1b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x19, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x13, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, - 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x13, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, - 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0a, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, - 0xf8, 0x01, 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x03, 0x61, 0x77, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, - 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, - 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x03, 0x67, 0x63, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, + 0x70, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x22, 0xa5, 0x04, 0x0a, 0x11, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, + 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x49, 0x64, 0x73, + 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x72, + 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x99, 0x05, 0x0a, 0x11, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, + 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0c, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, + 0x02, 0x52, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x4f, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, + 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x03, 0x52, 0x10, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x51, 0x0a, 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x04, 0x52, + 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x72, 0x61, 0x69, + 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x05, 0x52, 0x09, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, + 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, 0x06, 0x52, 0x09, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, + 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xc1, 0x07, 0x0a, + 0x10, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x18, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x15, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, + 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x15, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x72, 0x61, + 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x65, 0x0a, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, + 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x68, 0x0a, 0x1b, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x19, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x13, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x11, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, + 0x22, 0xf8, 0x01, 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x03, 0x61, + 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, + 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, + 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, - 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x1a, 0x05, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x1a, 0x07, - 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x1a, 0x05, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x42, 0x0a, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xc3, 0x02, 0x0a, 0x13, 0x54, + 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x03, 0x67, + 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, + 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, + 0x50, 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x1a, 0x05, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x1a, + 0x07, 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x1a, 0x05, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x42, + 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xc3, 0x02, 0x0a, 0x13, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, - 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x41, 0x57, 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x3e, 0x0a, 0x05, - 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x72, - 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, - 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, - 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x38, 0x0a, 0x03, - 0x67, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x72, 0x61, 0x69, - 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, - 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x48, - 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x1a, 0x22, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x12, 0x1b, 0x0a, - 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x22, 0x0a, 0x03, 0x47, 0x43, - 0x50, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x24, - 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x22, 0xdf, 0x03, 0x0a, 0x13, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, - 0x77, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, - 0x72, 0x65, 0x1a, 0x3f, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x1a, 0x80, 0x02, 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x65, 0x0a, - 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x64, 0x72, 0x61, 0x69, - 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, - 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0x8f, 0x01, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, - 0x62, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x2e, 0x0a, 0x13, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x22, 0xd5, 0x0b, 0x0a, 0x18, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, - 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x3d, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, - 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, 0x40, - 0x0a, 0x04, 0x6f, 0x6b, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, - 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x6b, 0x74, 0x61, - 0x12, 0x43, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, - 0x61, 0x7a, 0x75, 0x72, 0x65, 0x1a, 0xcf, 0x03, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x12, 0x3f, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x72, 0x61, - 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x47, 0x43, 0x50, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x86, + 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x3e, 0x0a, + 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, + 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x38, 0x0a, + 0x03, 0x67, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x72, 0x61, + 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, + 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, + 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x1a, 0x22, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x12, 0x1b, + 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x22, 0x0a, 0x03, 0x47, + 0x43, 0x50, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, + 0x24, 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x22, 0xdf, 0x03, 0x0a, 0x13, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x77, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x48, 0x00, 0x52, 0x03, + 0x61, 0x77, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x1a, 0x3f, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x80, 0x02, 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x65, + 0x0a, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x64, 0x72, 0x61, + 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x8f, 0x01, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x22, 0x97, 0x0e, 0x0a, 0x18, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x3d, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, + 0x40, 0x0a, 0x04, 0x6f, 0x6b, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x6b, 0x74, + 0x61, 0x12, 0x43, 0x0a, 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, + 0x05, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x1a, 0xa0, 0x06, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x12, 0x3f, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x72, + 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x86, 0x01, 0x0a, 0x1c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, + 0x50, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0xaf, 0x03, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, @@ -3134,203 +3737,237 @@ var file_cloud_account_proto_rawDesc = []byte{ 0x65, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x58, 0x35, 0x30, 0x39, - 0x43, 0x65, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x1a, 0x85, 0x02, 0x0a, 0x04, 0x4f, 0x6b, 0x74, 0x61, - 0x12, 0x50, 0x0a, 0x09, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, - 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x2e, - 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x52, 0x08, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, - 0x70, 0x70, 0x1a, 0xaa, 0x01, 0x0a, 0x08, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x12, - 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6b, 0x74, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x6b, 0x74, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x2b, 0x0a, - 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x43, 0x65, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x69, 0x76, 0x65, + 0x72, 0x73, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x1a, 0x86, 0x01, 0x0a, 0x1a, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x6f, 0x6f, 0x6c, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6f, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0xf6, 0x01, 0x0a, 0x04, 0x4f, 0x6b, + 0x74, 0x61, 0x12, 0x50, 0x0a, 0x09, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6b, 0x74, + 0x61, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x52, 0x08, 0x6f, 0x61, 0x75, 0x74, + 0x68, 0x41, 0x70, 0x70, 0x1a, 0x9b, 0x01, 0x0a, 0x08, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x70, + 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6b, 0x74, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x6b, 0x74, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x2b, 0x0a, 0x09, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0e, 0x8a, 0xb5, 0x18, 0x0a, 0x41, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x52, + 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0d, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x8a, 0xb5, 0x18, 0x0a, 0x41, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, - 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0d, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0e, 0x8a, 0xb5, 0x18, 0x0a, 0x41, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, - 0x4d, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, - 0x8c, 0x04, 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x22, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, + 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x1a, 0x8c, 0x04, 0x0a, 0x05, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0x98, 0x01, 0x0a, + 0x22, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, + 0x70, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x64, 0x72, 0x61, 0x69, + 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x52, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, + 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x1a, 0xe7, 0x02, 0x0a, 0x1f, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, + 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x5f, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x70, 0x70, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, - 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, - 0x75, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x52, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, - 0x69, 0x70, 0x61, 0x6c, 0x1a, 0xe7, 0x02, 0x0a, 0x1f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, - 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x70, 0x70, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x70, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, - 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x36, 0x0a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6e, - 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xbd, 0x07, 0x0a, 0x19, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x04, 0x6f, 0x6b, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xe2, 0x08, + 0x0a, 0x19, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x04, 0x6f, + 0x6b, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x72, 0x61, 0x69, + 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x6b, 0x74, 0x61, 0x12, 0x47, + 0x0a, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x48, 0x00, 0x52, + 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0x3e, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x63, 0x70, + 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x1a, 0x95, 0x02, 0x0a, 0x04, 0x4f, 0x6b, 0x74, 0x61, + 0x12, 0x6c, 0x0a, 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x64, + 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x11, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x9e, + 0x01, 0x0a, 0x11, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x6b, 0x74, 0x61, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0e, 0x6f, 0x6b, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, + 0xa5, 0x02, 0x0a, 0x06, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0x6e, 0x0a, 0x12, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, - 0x6b, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x6b, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x06, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x72, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xaa, 0x01, 0x0a, 0x11, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x67, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, + 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x14, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0xac, 0x02, 0x0a, 0x03, 0x47, 0x63, 0x70, 0x12, + 0x6b, 0x0a, 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x48, 0x00, 0x52, 0x06, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x12, 0x3e, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x63, 0x70, 0x48, 0x00, 0x52, - 0x03, 0x67, 0x63, 0x70, 0x1a, 0x95, 0x02, 0x0a, 0x04, 0x4f, 0x6b, 0x74, 0x61, 0x12, 0x6c, 0x0a, - 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x64, 0x72, 0x61, 0x69, - 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x9e, 0x01, 0x0a, 0x11, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, - 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x55, - 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x6b, 0x74, 0x61, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x6b, - 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0xa5, 0x02, 0x0a, - 0x06, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0x6e, 0x0a, 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xaa, 0x01, 0x0a, 0x11, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x17, 0x0a, - 0x07, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, - 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x67, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x34, - 0x0a, 0x16, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x87, 0x01, 0x0a, 0x03, 0x47, 0x63, 0x70, 0x12, 0x6b, 0x0a, 0x12, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, - 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x47, 0x63, 0x70, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x13, 0x0a, 0x11, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0a, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xcf, 0x01, 0x0a, 0x11, 0x43, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x36, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, - 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x1a, 0x76, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x12, - 0x38, 0x0a, 0x03, 0x6b, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, - 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, - 0x2e, 0x4b, 0x4d, 0x53, 0x52, 0x03, 0x6b, 0x6d, 0x73, 0x1a, 0x35, 0x0a, 0x03, 0x4b, 0x4d, 0x53, - 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, - 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x85, 0x03, 0x0a, - 0x11, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x36, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x41, 0x57, 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, 0x1a, 0xab, 0x02, 0x0a, 0x03, 0x41, - 0x57, 0x53, 0x12, 0x67, 0x0a, 0x14, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x74, 0x72, 0x61, 0x69, 0x6c, - 0x5f, 0x73, 0x33, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x41, 0x57, 0x53, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x53, - 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x74, 0x72, - 0x61, 0x69, 0x6c, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0xba, 0x01, 0x0a, 0x12, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x72, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x0b, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, - 0x8a, 0xb5, 0x18, 0x0a, 0x41, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x52, 0x0a, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, - 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2a, 0x84, 0x01, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, - 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x57, 0x53, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, - 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x47, 0x43, - 0x50, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, - 0x4f, 0x4b, 0x54, 0x41, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, - 0x45, 0x52, 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x10, 0x05, 0x2a, 0xdd, 0x01, 0x0a, 0x07, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x45, 0x41, 0x54, 0x55, - 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x23, 0x0a, 0x1f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, - 0x52, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x41, 0x54, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, - 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, - 0x4f, 0x53, 0x54, 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x46, 0x45, 0x41, 0x54, - 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, - 0x49, 0x54, 0x59, 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, - 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x4e, - 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, - 0x43, 0x53, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, - 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4c, 0x45, 0x53, 0x53, - 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x2a, 0xf4, 0x01, 0x0a, 0x09, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, - 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, - 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, - 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x03, 0x12, - 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x43, - 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, - 0x5f, 0x50, 0x52, 0x49, 0x4e, 0x43, 0x49, 0x50, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, - 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, - 0x4b, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x05, 0x12, 0x18, - 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x59, 0x50, - 0x54, 0x4f, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, - 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x47, 0x53, - 0x10, 0x07, 0x3a, 0x3f, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xd1, 0x86, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x56, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, - 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x42, 0x10, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x48, 0x01, 0x5a, 0x25, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, - 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x61, 0x2e, 0x47, 0x63, 0x70, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xb7, 0x01, 0x0a, + 0x11, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, + 0x75, 0x62, 0x73, 0x75, 0x62, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x73, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, + 0x75, 0x73, 0x68, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x75, 0x73, + 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x22, 0xcf, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, 0x77, 0x73, + 0x1a, 0x76, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x12, 0x38, 0x0a, 0x03, 0x6b, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x2e, 0x4b, 0x4d, 0x53, 0x52, 0x03, 0x6b, 0x6d, + 0x73, 0x1a, 0x35, 0x0a, 0x03, 0x4b, 0x4d, 0x53, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x22, 0x85, 0x03, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, + 0x67, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x03, 0x61, 0x77, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x48, 0x00, 0x52, 0x03, 0x61, + 0x77, 0x73, 0x1a, 0xab, 0x02, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x12, 0x67, 0x0a, 0x14, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x73, 0x33, 0x5f, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, + 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x67, 0x73, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, + 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x53, 0x33, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x1a, 0xba, 0x01, 0x0a, 0x12, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x54, 0x72, 0x61, + 0x69, 0x6c, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x12, 0x2f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x8a, 0xb5, 0x18, 0x0a, 0x41, 0x45, 0x53, 0x32, + 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2a, 0x84, 0x01, 0x0a, + 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, + 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, + 0x41, 0x57, 0x53, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, + 0x52, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, + 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x50, + 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4b, 0x54, 0x41, 0x10, 0x04, 0x12, 0x13, + 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, + 0x42, 0x10, 0x05, 0x2a, 0xdd, 0x01, 0x0a, 0x07, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x17, 0x0a, 0x13, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x46, 0x45, 0x41, 0x54, + 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x41, + 0x54, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x21, 0x0a, + 0x1d, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x55, 0x52, 0x45, 0x10, 0x02, + 0x12, 0x27, 0x0a, 0x23, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, + 0x52, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x45, 0x41, + 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x4f, + 0x55, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, + 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, + 0x47, 0x45, 0x4e, 0x54, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x4e, 0x49, 0x4e, + 0x47, 0x10, 0x05, 0x2a, 0xde, 0x01, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, + 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x56, 0x41, + 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, + 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x56, 0x41, 0x4c, + 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x50, 0x41, + 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, + 0x23, 0x0a, 0x1f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, + 0x45, 0x44, 0x10, 0x05, 0x2a, 0xf4, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, + 0x19, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, + 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, + 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, + 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x50, + 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x4e, 0x43, 0x49, + 0x50, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, + 0x4e, 0x54, 0x5f, 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, 0x4f, + 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x59, 0x50, 0x54, 0x4f, 0x5f, 0x4b, 0x45, 0x59, 0x10, + 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x43, + 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x07, 0x3a, 0x3f, 0x0a, 0x0a, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd1, 0x86, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x56, 0x0a, 0x19, + 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x01, 0x5a, 0x25, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x61, 0x75, + 0x74, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3345,114 +3982,138 @@ func file_cloud_account_proto_rawDescGZIP() []byte { return file_cloud_account_proto_rawDescData } -var file_cloud_account_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_cloud_account_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_cloud_account_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_cloud_account_proto_msgTypes = make([]protoimpl.MessageInfo, 43) var file_cloud_account_proto_goTypes = []interface{}{ - (Provider)(0), // 0: draiosproto.Provider - (Feature)(0), // 1: draiosproto.Feature - (Component)(0), // 2: draiosproto.Component - (*CloudAccount)(nil), // 3: draiosproto.CloudAccount - (*AccountFeatures)(nil), // 4: draiosproto.AccountFeatures - (*AccountFeature)(nil), // 5: draiosproto.AccountFeature - (*FeatureComponents)(nil), // 6: draiosproto.FeatureComponents - (*AccountComponent)(nil), // 7: draiosproto.AccountComponent - (*CloudConnectorMetadata)(nil), // 8: draiosproto.CloudConnectorMetadata - (*TrustedRoleMetadata)(nil), // 9: draiosproto.TrustedRoleMetadata - (*EventBridgeMetadata)(nil), // 10: draiosproto.EventBridgeMetadata - (*ServicePrincipalMetadata)(nil), // 11: draiosproto.ServicePrincipalMetadata - (*WebhookDatasourceMetadata)(nil), // 12: draiosproto.WebhookDatasourceMetadata - (*CryptoKeyMetadata)(nil), // 13: draiosproto.CryptoKeyMetadata - (*CloudLogsMetadata)(nil), // 14: draiosproto.CloudLogsMetadata - (*CloudConnectorMetadata_AWS)(nil), // 15: draiosproto.CloudConnectorMetadata.AWS - (*CloudConnectorMetadata_Azure)(nil), // 16: draiosproto.CloudConnectorMetadata.Azure - (*CloudConnectorMetadata_GCP)(nil), // 17: draiosproto.CloudConnectorMetadata.GCP - (*TrustedRoleMetadata_AWS)(nil), // 18: draiosproto.TrustedRoleMetadata.AWS - (*TrustedRoleMetadata_GCP)(nil), // 19: draiosproto.TrustedRoleMetadata.GCP - (*TrustedRoleMetadata_Azure)(nil), // 20: draiosproto.TrustedRoleMetadata.Azure - (*EventBridgeMetadata_AWS)(nil), // 21: draiosproto.EventBridgeMetadata.AWS - (*EventBridgeMetadata_Azure)(nil), // 22: draiosproto.EventBridgeMetadata.Azure - (*EventBridgeMetadata_Azure_EventHubMetadata)(nil), // 23: draiosproto.EventBridgeMetadata.Azure.EventHubMetadata - (*ServicePrincipalMetadata_GCP)(nil), // 24: draiosproto.ServicePrincipalMetadata.GCP - (*ServicePrincipalMetadata_Okta)(nil), // 25: draiosproto.ServicePrincipalMetadata.Okta - (*ServicePrincipalMetadata_Azure)(nil), // 26: draiosproto.ServicePrincipalMetadata.Azure - (*ServicePrincipalMetadata_GCP_Key)(nil), // 27: draiosproto.ServicePrincipalMetadata.GCP.Key - (*ServicePrincipalMetadata_Okta_OAuthApp)(nil), // 28: draiosproto.ServicePrincipalMetadata.Okta.OAuthApp - (*ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal)(nil), // 29: draiosproto.ServicePrincipalMetadata.Azure.ActiveDirectoryServicePrincipal - (*WebhookDatasourceMetadata_Okta)(nil), // 30: draiosproto.WebhookDatasourceMetadata.Okta - (*WebhookDatasourceMetadata_Github)(nil), // 31: draiosproto.WebhookDatasourceMetadata.Github - (*WebhookDatasourceMetadata_Gcp)(nil), // 32: draiosproto.WebhookDatasourceMetadata.Gcp - (*WebhookDatasourceMetadata_Okta_WebhookDatasource)(nil), // 33: draiosproto.WebhookDatasourceMetadata.Okta.WebhookDatasource - (*WebhookDatasourceMetadata_Github_WebhookDatasource)(nil), // 34: draiosproto.WebhookDatasourceMetadata.Github.WebhookDatasource - (*WebhookDatasourceMetadata_Gcp_WebhookDatasource)(nil), // 35: draiosproto.WebhookDatasourceMetadata.Gcp.WebhookDatasource - (*CryptoKeyMetadata_AWS)(nil), // 36: draiosproto.CryptoKeyMetadata.AWS - (*CryptoKeyMetadata_AWS_KMS)(nil), // 37: draiosproto.CryptoKeyMetadata.AWS.KMS - (*CloudLogsMetadata_AWS)(nil), // 38: draiosproto.CloudLogsMetadata.AWS - (*CloudLogsMetadata_AWS_CloudTrailS3Bucket)(nil), // 39: draiosproto.CloudLogsMetadata.AWS.CloudTrailS3Bucket - (*timestamppb.Timestamp)(nil), // 40: google.protobuf.Timestamp - (*descriptorpb.FieldOptions)(nil), // 41: google.protobuf.FieldOptions + (Provider)(0), // 0: draiosproto.Provider + (Feature)(0), // 1: draiosproto.Feature + (ValidationResult)(0), // 2: draiosproto.ValidationResult + (Component)(0), // 3: draiosproto.Component + (*CloudAccount)(nil), // 4: draiosproto.CloudAccount + (*AccountFeatures)(nil), // 5: draiosproto.AccountFeatures + (*AccountFeature)(nil), // 6: draiosproto.AccountFeature + (*ValidationStep)(nil), // 7: draiosproto.ValidationStep + (*ValidationError)(nil), // 8: draiosproto.ValidationError + (*Validation)(nil), // 9: draiosproto.Validation + (*CloudOrganization)(nil), // 10: draiosproto.CloudOrganization + (*FeatureComponents)(nil), // 11: draiosproto.FeatureComponents + (*AccountComponent)(nil), // 12: draiosproto.AccountComponent + (*CloudConnectorMetadata)(nil), // 13: draiosproto.CloudConnectorMetadata + (*TrustedRoleMetadata)(nil), // 14: draiosproto.TrustedRoleMetadata + (*EventBridgeMetadata)(nil), // 15: draiosproto.EventBridgeMetadata + (*ServicePrincipalMetadata)(nil), // 16: draiosproto.ServicePrincipalMetadata + (*WebhookDatasourceMetadata)(nil), // 17: draiosproto.WebhookDatasourceMetadata + (*CryptoKeyMetadata)(nil), // 18: draiosproto.CryptoKeyMetadata + (*CloudLogsMetadata)(nil), // 19: draiosproto.CloudLogsMetadata + nil, // 20: draiosproto.AccountFeature.FlagsEntry + (*CloudConnectorMetadata_AWS)(nil), // 21: draiosproto.CloudConnectorMetadata.AWS + (*CloudConnectorMetadata_Azure)(nil), // 22: draiosproto.CloudConnectorMetadata.Azure + (*CloudConnectorMetadata_GCP)(nil), // 23: draiosproto.CloudConnectorMetadata.GCP + (*TrustedRoleMetadata_AWS)(nil), // 24: draiosproto.TrustedRoleMetadata.AWS + (*TrustedRoleMetadata_GCP)(nil), // 25: draiosproto.TrustedRoleMetadata.GCP + (*TrustedRoleMetadata_Azure)(nil), // 26: draiosproto.TrustedRoleMetadata.Azure + (*EventBridgeMetadata_AWS)(nil), // 27: draiosproto.EventBridgeMetadata.AWS + (*EventBridgeMetadata_Azure)(nil), // 28: draiosproto.EventBridgeMetadata.Azure + (*EventBridgeMetadata_Azure_EventHubMetadata)(nil), // 29: draiosproto.EventBridgeMetadata.Azure.EventHubMetadata + (*ServicePrincipalMetadata_GCP)(nil), // 30: draiosproto.ServicePrincipalMetadata.GCP + (*ServicePrincipalMetadata_Okta)(nil), // 31: draiosproto.ServicePrincipalMetadata.Okta + (*ServicePrincipalMetadata_Azure)(nil), // 32: draiosproto.ServicePrincipalMetadata.Azure + (*ServicePrincipalMetadata_GCP_Key)(nil), // 33: draiosproto.ServicePrincipalMetadata.GCP.Key + (*ServicePrincipalMetadata_GCP_WorkloadIdentityFederation)(nil), // 34: draiosproto.ServicePrincipalMetadata.GCP.WorkloadIdentityFederation + (*ServicePrincipalMetadata_Okta_OAuthApp)(nil), // 35: draiosproto.ServicePrincipalMetadata.Okta.OAuthApp + (*ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal)(nil), // 36: draiosproto.ServicePrincipalMetadata.Azure.ActiveDirectoryServicePrincipal + (*WebhookDatasourceMetadata_Okta)(nil), // 37: draiosproto.WebhookDatasourceMetadata.Okta + (*WebhookDatasourceMetadata_Github)(nil), // 38: draiosproto.WebhookDatasourceMetadata.Github + (*WebhookDatasourceMetadata_Gcp)(nil), // 39: draiosproto.WebhookDatasourceMetadata.Gcp + (*WebhookDatasourceMetadata_Okta_WebhookDatasource)(nil), // 40: draiosproto.WebhookDatasourceMetadata.Okta.WebhookDatasource + (*WebhookDatasourceMetadata_Github_WebhookDatasource)(nil), // 41: draiosproto.WebhookDatasourceMetadata.Github.WebhookDatasource + (*WebhookDatasourceMetadata_Gcp_WebhookDatasource)(nil), // 42: draiosproto.WebhookDatasourceMetadata.Gcp.WebhookDatasource + (*CryptoKeyMetadata_AWS)(nil), // 43: draiosproto.CryptoKeyMetadata.AWS + (*CryptoKeyMetadata_AWS_KMS)(nil), // 44: draiosproto.CryptoKeyMetadata.AWS.KMS + (*CloudLogsMetadata_AWS)(nil), // 45: draiosproto.CloudLogsMetadata.AWS + (*CloudLogsMetadata_AWS_CloudTrailS3Bucket)(nil), // 46: draiosproto.CloudLogsMetadata.AWS.CloudTrailS3Bucket + (*timestamppb.Timestamp)(nil), // 47: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 48: google.protobuf.Duration + (*structpb.Value)(nil), // 49: google.protobuf.Value + (*descriptorpb.FieldOptions)(nil), // 50: google.protobuf.FieldOptions } var file_cloud_account_proto_depIdxs = []int32{ 0, // 0: draiosproto.CloudAccount.provider:type_name -> draiosproto.Provider - 4, // 1: draiosproto.CloudAccount.feature:type_name -> draiosproto.AccountFeatures - 40, // 2: draiosproto.CloudAccount.created_at:type_name -> google.protobuf.Timestamp - 40, // 3: draiosproto.CloudAccount.updated_at:type_name -> google.protobuf.Timestamp - 7, // 4: draiosproto.CloudAccount.components:type_name -> draiosproto.AccountComponent - 5, // 5: draiosproto.AccountFeatures.secure_threat_detection:type_name -> draiosproto.AccountFeature - 5, // 6: draiosproto.AccountFeatures.secure_config_posture:type_name -> draiosproto.AccountFeature - 5, // 7: draiosproto.AccountFeatures.secure_identity_entitlement:type_name -> draiosproto.AccountFeature - 5, // 8: draiosproto.AccountFeatures.monitor_cloud_metrics:type_name -> draiosproto.AccountFeature - 5, // 9: draiosproto.AccountFeatures.secure_agentless_scanning:type_name -> draiosproto.AccountFeature - 1, // 10: draiosproto.AccountFeature.type:type_name -> draiosproto.Feature - 40, // 11: draiosproto.AccountFeature.created_at:type_name -> google.protobuf.Timestamp - 7, // 12: draiosproto.FeatureComponents.cloud_connector:type_name -> draiosproto.AccountComponent - 7, // 13: draiosproto.FeatureComponents.event_bridge:type_name -> draiosproto.AccountComponent - 7, // 14: draiosproto.FeatureComponents.trusted_role:type_name -> draiosproto.AccountComponent - 7, // 15: draiosproto.FeatureComponents.service_principal:type_name -> draiosproto.AccountComponent - 7, // 16: draiosproto.FeatureComponents.webhook_datasource:type_name -> draiosproto.AccountComponent - 7, // 17: draiosproto.FeatureComponents.crypto_key:type_name -> draiosproto.AccountComponent - 7, // 18: draiosproto.FeatureComponents.cloud_logs:type_name -> draiosproto.AccountComponent - 2, // 19: draiosproto.AccountComponent.type:type_name -> draiosproto.Component - 40, // 20: draiosproto.AccountComponent.created_at:type_name -> google.protobuf.Timestamp - 40, // 21: draiosproto.AccountComponent.updated_at:type_name -> google.protobuf.Timestamp - 40, // 22: draiosproto.AccountComponent.validated_at:type_name -> google.protobuf.Timestamp - 8, // 23: draiosproto.AccountComponent.cloud_connector_metadata:type_name -> draiosproto.CloudConnectorMetadata - 9, // 24: draiosproto.AccountComponent.trusted_role_metadata:type_name -> draiosproto.TrustedRoleMetadata - 10, // 25: draiosproto.AccountComponent.event_bridge_metadata:type_name -> draiosproto.EventBridgeMetadata - 11, // 26: draiosproto.AccountComponent.service_principal_metadata:type_name -> draiosproto.ServicePrincipalMetadata - 12, // 27: draiosproto.AccountComponent.webhook_datasource_metadata:type_name -> draiosproto.WebhookDatasourceMetadata - 13, // 28: draiosproto.AccountComponent.crypto_key_metadata:type_name -> draiosproto.CryptoKeyMetadata - 14, // 29: draiosproto.AccountComponent.cloud_logs_metadata:type_name -> draiosproto.CloudLogsMetadata - 15, // 30: draiosproto.CloudConnectorMetadata.aws:type_name -> draiosproto.CloudConnectorMetadata.AWS - 16, // 31: draiosproto.CloudConnectorMetadata.azure:type_name -> draiosproto.CloudConnectorMetadata.Azure - 17, // 32: draiosproto.CloudConnectorMetadata.gcp:type_name -> draiosproto.CloudConnectorMetadata.GCP - 18, // 33: draiosproto.TrustedRoleMetadata.aws:type_name -> draiosproto.TrustedRoleMetadata.AWS - 20, // 34: draiosproto.TrustedRoleMetadata.azure:type_name -> draiosproto.TrustedRoleMetadata.Azure - 19, // 35: draiosproto.TrustedRoleMetadata.gcp:type_name -> draiosproto.TrustedRoleMetadata.GCP - 21, // 36: draiosproto.EventBridgeMetadata.aws:type_name -> draiosproto.EventBridgeMetadata.AWS - 22, // 37: draiosproto.EventBridgeMetadata.azure:type_name -> draiosproto.EventBridgeMetadata.Azure - 24, // 38: draiosproto.ServicePrincipalMetadata.gcp:type_name -> draiosproto.ServicePrincipalMetadata.GCP - 25, // 39: draiosproto.ServicePrincipalMetadata.okta:type_name -> draiosproto.ServicePrincipalMetadata.Okta - 26, // 40: draiosproto.ServicePrincipalMetadata.azure:type_name -> draiosproto.ServicePrincipalMetadata.Azure - 30, // 41: draiosproto.WebhookDatasourceMetadata.okta:type_name -> draiosproto.WebhookDatasourceMetadata.Okta - 31, // 42: draiosproto.WebhookDatasourceMetadata.github:type_name -> draiosproto.WebhookDatasourceMetadata.Github - 32, // 43: draiosproto.WebhookDatasourceMetadata.gcp:type_name -> draiosproto.WebhookDatasourceMetadata.Gcp - 36, // 44: draiosproto.CryptoKeyMetadata.aws:type_name -> draiosproto.CryptoKeyMetadata.AWS - 38, // 45: draiosproto.CloudLogsMetadata.aws:type_name -> draiosproto.CloudLogsMetadata.AWS - 23, // 46: draiosproto.EventBridgeMetadata.Azure.event_hub_metadata:type_name -> draiosproto.EventBridgeMetadata.Azure.EventHubMetadata - 27, // 47: draiosproto.ServicePrincipalMetadata.GCP.key:type_name -> draiosproto.ServicePrincipalMetadata.GCP.Key - 28, // 48: draiosproto.ServicePrincipalMetadata.Okta.oauth_app:type_name -> draiosproto.ServicePrincipalMetadata.Okta.OAuthApp - 29, // 49: draiosproto.ServicePrincipalMetadata.Azure.active_directory_service_principal:type_name -> draiosproto.ServicePrincipalMetadata.Azure.ActiveDirectoryServicePrincipal - 33, // 50: draiosproto.WebhookDatasourceMetadata.Okta.webhook_datasource:type_name -> draiosproto.WebhookDatasourceMetadata.Okta.WebhookDatasource - 34, // 51: draiosproto.WebhookDatasourceMetadata.Github.webhook_datasource:type_name -> draiosproto.WebhookDatasourceMetadata.Github.WebhookDatasource - 35, // 52: draiosproto.WebhookDatasourceMetadata.Gcp.webhook_datasource:type_name -> draiosproto.WebhookDatasourceMetadata.Gcp.WebhookDatasource - 37, // 53: draiosproto.CryptoKeyMetadata.AWS.kms:type_name -> draiosproto.CryptoKeyMetadata.AWS.KMS - 39, // 54: draiosproto.CloudLogsMetadata.AWS.cloudtrail_s3_bucket:type_name -> draiosproto.CloudLogsMetadata.AWS.CloudTrailS3Bucket - 41, // 55: draiosproto.encryption:extendee -> google.protobuf.FieldOptions - 56, // [56:56] is the sub-list for method output_type - 56, // [56:56] is the sub-list for method input_type - 56, // [56:56] is the sub-list for extension type_name - 55, // [55:56] is the sub-list for extension extendee - 0, // [0:55] is the sub-list for field type_name + 5, // 1: draiosproto.CloudAccount.feature:type_name -> draiosproto.AccountFeatures + 47, // 2: draiosproto.CloudAccount.created_at:type_name -> google.protobuf.Timestamp + 47, // 3: draiosproto.CloudAccount.updated_at:type_name -> google.protobuf.Timestamp + 12, // 4: draiosproto.CloudAccount.components:type_name -> draiosproto.AccountComponent + 9, // 5: draiosproto.CloudAccount.validation:type_name -> draiosproto.Validation + 6, // 6: draiosproto.AccountFeatures.secure_threat_detection:type_name -> draiosproto.AccountFeature + 6, // 7: draiosproto.AccountFeatures.secure_config_posture:type_name -> draiosproto.AccountFeature + 6, // 8: draiosproto.AccountFeatures.secure_identity_entitlement:type_name -> draiosproto.AccountFeature + 6, // 9: draiosproto.AccountFeatures.monitor_cloud_metrics:type_name -> draiosproto.AccountFeature + 6, // 10: draiosproto.AccountFeatures.secure_agentless_scanning:type_name -> draiosproto.AccountFeature + 1, // 11: draiosproto.AccountFeature.type:type_name -> draiosproto.Feature + 47, // 12: draiosproto.AccountFeature.created_at:type_name -> google.protobuf.Timestamp + 9, // 13: draiosproto.AccountFeature.validation:type_name -> draiosproto.Validation + 20, // 14: draiosproto.AccountFeature.flags:type_name -> draiosproto.AccountFeature.FlagsEntry + 48, // 15: draiosproto.ValidationStep.duration:type_name -> google.protobuf.Duration + 8, // 16: draiosproto.ValidationStep.error:type_name -> draiosproto.ValidationError + 49, // 17: draiosproto.ValidationError.detail:type_name -> google.protobuf.Value + 2, // 18: draiosproto.Validation.result:type_name -> draiosproto.ValidationResult + 47, // 19: draiosproto.Validation.timestamp:type_name -> google.protobuf.Timestamp + 7, // 20: draiosproto.Validation.steps:type_name -> draiosproto.ValidationStep + 4, // 21: draiosproto.CloudOrganization.accounts:type_name -> draiosproto.CloudAccount + 47, // 22: draiosproto.CloudOrganization.created_at:type_name -> google.protobuf.Timestamp + 47, // 23: draiosproto.CloudOrganization.updated_at:type_name -> google.protobuf.Timestamp + 0, // 24: draiosproto.CloudOrganization.provider:type_name -> draiosproto.Provider + 9, // 25: draiosproto.CloudOrganization.validation:type_name -> draiosproto.Validation + 12, // 26: draiosproto.FeatureComponents.cloud_connector:type_name -> draiosproto.AccountComponent + 12, // 27: draiosproto.FeatureComponents.event_bridge:type_name -> draiosproto.AccountComponent + 12, // 28: draiosproto.FeatureComponents.trusted_role:type_name -> draiosproto.AccountComponent + 12, // 29: draiosproto.FeatureComponents.service_principal:type_name -> draiosproto.AccountComponent + 12, // 30: draiosproto.FeatureComponents.webhook_datasource:type_name -> draiosproto.AccountComponent + 12, // 31: draiosproto.FeatureComponents.crypto_key:type_name -> draiosproto.AccountComponent + 12, // 32: draiosproto.FeatureComponents.cloud_logs:type_name -> draiosproto.AccountComponent + 3, // 33: draiosproto.AccountComponent.type:type_name -> draiosproto.Component + 47, // 34: draiosproto.AccountComponent.created_at:type_name -> google.protobuf.Timestamp + 47, // 35: draiosproto.AccountComponent.updated_at:type_name -> google.protobuf.Timestamp + 9, // 36: draiosproto.AccountComponent.validation:type_name -> draiosproto.Validation + 13, // 37: draiosproto.AccountComponent.cloud_connector_metadata:type_name -> draiosproto.CloudConnectorMetadata + 14, // 38: draiosproto.AccountComponent.trusted_role_metadata:type_name -> draiosproto.TrustedRoleMetadata + 15, // 39: draiosproto.AccountComponent.event_bridge_metadata:type_name -> draiosproto.EventBridgeMetadata + 16, // 40: draiosproto.AccountComponent.service_principal_metadata:type_name -> draiosproto.ServicePrincipalMetadata + 17, // 41: draiosproto.AccountComponent.webhook_datasource_metadata:type_name -> draiosproto.WebhookDatasourceMetadata + 18, // 42: draiosproto.AccountComponent.crypto_key_metadata:type_name -> draiosproto.CryptoKeyMetadata + 19, // 43: draiosproto.AccountComponent.cloud_logs_metadata:type_name -> draiosproto.CloudLogsMetadata + 21, // 44: draiosproto.CloudConnectorMetadata.aws:type_name -> draiosproto.CloudConnectorMetadata.AWS + 22, // 45: draiosproto.CloudConnectorMetadata.azure:type_name -> draiosproto.CloudConnectorMetadata.Azure + 23, // 46: draiosproto.CloudConnectorMetadata.gcp:type_name -> draiosproto.CloudConnectorMetadata.GCP + 24, // 47: draiosproto.TrustedRoleMetadata.aws:type_name -> draiosproto.TrustedRoleMetadata.AWS + 26, // 48: draiosproto.TrustedRoleMetadata.azure:type_name -> draiosproto.TrustedRoleMetadata.Azure + 25, // 49: draiosproto.TrustedRoleMetadata.gcp:type_name -> draiosproto.TrustedRoleMetadata.GCP + 27, // 50: draiosproto.EventBridgeMetadata.aws:type_name -> draiosproto.EventBridgeMetadata.AWS + 28, // 51: draiosproto.EventBridgeMetadata.azure:type_name -> draiosproto.EventBridgeMetadata.Azure + 30, // 52: draiosproto.ServicePrincipalMetadata.gcp:type_name -> draiosproto.ServicePrincipalMetadata.GCP + 31, // 53: draiosproto.ServicePrincipalMetadata.okta:type_name -> draiosproto.ServicePrincipalMetadata.Okta + 32, // 54: draiosproto.ServicePrincipalMetadata.azure:type_name -> draiosproto.ServicePrincipalMetadata.Azure + 37, // 55: draiosproto.WebhookDatasourceMetadata.okta:type_name -> draiosproto.WebhookDatasourceMetadata.Okta + 38, // 56: draiosproto.WebhookDatasourceMetadata.github:type_name -> draiosproto.WebhookDatasourceMetadata.Github + 39, // 57: draiosproto.WebhookDatasourceMetadata.gcp:type_name -> draiosproto.WebhookDatasourceMetadata.Gcp + 43, // 58: draiosproto.CryptoKeyMetadata.aws:type_name -> draiosproto.CryptoKeyMetadata.AWS + 45, // 59: draiosproto.CloudLogsMetadata.aws:type_name -> draiosproto.CloudLogsMetadata.AWS + 29, // 60: draiosproto.EventBridgeMetadata.Azure.event_hub_metadata:type_name -> draiosproto.EventBridgeMetadata.Azure.EventHubMetadata + 33, // 61: draiosproto.ServicePrincipalMetadata.GCP.key:type_name -> draiosproto.ServicePrincipalMetadata.GCP.Key + 34, // 62: draiosproto.ServicePrincipalMetadata.GCP.workload_identity_federation:type_name -> draiosproto.ServicePrincipalMetadata.GCP.WorkloadIdentityFederation + 35, // 63: draiosproto.ServicePrincipalMetadata.Okta.oauth_app:type_name -> draiosproto.ServicePrincipalMetadata.Okta.OAuthApp + 36, // 64: draiosproto.ServicePrincipalMetadata.Azure.active_directory_service_principal:type_name -> draiosproto.ServicePrincipalMetadata.Azure.ActiveDirectoryServicePrincipal + 40, // 65: draiosproto.WebhookDatasourceMetadata.Okta.webhook_datasource:type_name -> draiosproto.WebhookDatasourceMetadata.Okta.WebhookDatasource + 41, // 66: draiosproto.WebhookDatasourceMetadata.Github.webhook_datasource:type_name -> draiosproto.WebhookDatasourceMetadata.Github.WebhookDatasource + 42, // 67: draiosproto.WebhookDatasourceMetadata.Gcp.webhook_datasource:type_name -> draiosproto.WebhookDatasourceMetadata.Gcp.WebhookDatasource + 44, // 68: draiosproto.CryptoKeyMetadata.AWS.kms:type_name -> draiosproto.CryptoKeyMetadata.AWS.KMS + 46, // 69: draiosproto.CloudLogsMetadata.AWS.cloudtrail_s3_bucket:type_name -> draiosproto.CloudLogsMetadata.AWS.CloudTrailS3Bucket + 50, // 70: draiosproto.encryption:extendee -> google.protobuf.FieldOptions + 71, // [71:71] is the sub-list for method output_type + 71, // [71:71] is the sub-list for method input_type + 71, // [71:71] is the sub-list for extension type_name + 70, // [70:71] is the sub-list for extension extendee + 0, // [0:70] is the sub-list for field type_name } func init() { file_cloud_account_proto_init() } @@ -3498,7 +4159,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FeatureComponents); i { + switch v := v.(*ValidationStep); i { case 0: return &v.state case 1: @@ -3510,7 +4171,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountComponent); i { + switch v := v.(*ValidationError); i { case 0: return &v.state case 1: @@ -3522,7 +4183,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudConnectorMetadata); i { + switch v := v.(*Validation); i { case 0: return &v.state case 1: @@ -3534,7 +4195,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrustedRoleMetadata); i { + switch v := v.(*CloudOrganization); i { case 0: return &v.state case 1: @@ -3546,7 +4207,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventBridgeMetadata); i { + switch v := v.(*FeatureComponents); i { case 0: return &v.state case 1: @@ -3558,7 +4219,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServicePrincipalMetadata); i { + switch v := v.(*AccountComponent); i { case 0: return &v.state case 1: @@ -3570,7 +4231,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebhookDatasourceMetadata); i { + switch v := v.(*CloudConnectorMetadata); i { case 0: return &v.state case 1: @@ -3582,7 +4243,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CryptoKeyMetadata); i { + switch v := v.(*TrustedRoleMetadata); i { case 0: return &v.state case 1: @@ -3594,7 +4255,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudLogsMetadata); i { + switch v := v.(*EventBridgeMetadata); i { case 0: return &v.state case 1: @@ -3606,7 +4267,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudConnectorMetadata_AWS); i { + switch v := v.(*ServicePrincipalMetadata); i { case 0: return &v.state case 1: @@ -3618,7 +4279,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudConnectorMetadata_Azure); i { + switch v := v.(*WebhookDatasourceMetadata); i { case 0: return &v.state case 1: @@ -3630,7 +4291,7 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudConnectorMetadata_GCP); i { + switch v := v.(*CryptoKeyMetadata); i { case 0: return &v.state case 1: @@ -3642,6 +4303,54 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CloudLogsMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_account_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CloudConnectorMetadata_AWS); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_account_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CloudConnectorMetadata_Azure); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_account_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CloudConnectorMetadata_GCP); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_account_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrustedRoleMetadata_AWS); i { case 0: return &v.state @@ -3653,7 +4362,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrustedRoleMetadata_GCP); i { case 0: return &v.state @@ -3665,7 +4374,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrustedRoleMetadata_Azure); i { case 0: return &v.state @@ -3677,7 +4386,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EventBridgeMetadata_AWS); i { case 0: return &v.state @@ -3689,7 +4398,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EventBridgeMetadata_Azure); i { case 0: return &v.state @@ -3701,7 +4410,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EventBridgeMetadata_Azure_EventHubMetadata); i { case 0: return &v.state @@ -3713,7 +4422,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServicePrincipalMetadata_GCP); i { case 0: return &v.state @@ -3725,7 +4434,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServicePrincipalMetadata_Okta); i { case 0: return &v.state @@ -3737,7 +4446,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServicePrincipalMetadata_Azure); i { case 0: return &v.state @@ -3749,7 +4458,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServicePrincipalMetadata_GCP_Key); i { case 0: return &v.state @@ -3761,7 +4470,19 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ServicePrincipalMetadata_GCP_WorkloadIdentityFederation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_account_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServicePrincipalMetadata_Okta_OAuthApp); i { case 0: return &v.state @@ -3773,7 +4494,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal); i { case 0: return &v.state @@ -3785,7 +4506,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WebhookDatasourceMetadata_Okta); i { case 0: return &v.state @@ -3797,7 +4518,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WebhookDatasourceMetadata_Github); i { case 0: return &v.state @@ -3809,7 +4530,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WebhookDatasourceMetadata_Gcp); i { case 0: return &v.state @@ -3821,7 +4542,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WebhookDatasourceMetadata_Okta_WebhookDatasource); i { case 0: return &v.state @@ -3833,7 +4554,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WebhookDatasourceMetadata_Github_WebhookDatasource); i { case 0: return &v.state @@ -3845,7 +4566,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WebhookDatasourceMetadata_Gcp_WebhookDatasource); i { case 0: return &v.state @@ -3857,7 +4578,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CryptoKeyMetadata_AWS); i { case 0: return &v.state @@ -3869,7 +4590,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CryptoKeyMetadata_AWS_KMS); i { case 0: return &v.state @@ -3881,7 +4602,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CloudLogsMetadata_AWS); i { case 0: return &v.state @@ -3893,7 +4614,7 @@ func file_cloud_account_proto_init() { return nil } } - file_cloud_account_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_cloud_account_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CloudLogsMetadata_AWS_CloudTrailS3Bucket); i { case 0: return &v.state @@ -3907,7 +4628,8 @@ func file_cloud_account_proto_init() { } } file_cloud_account_proto_msgTypes[3].OneofWrappers = []interface{}{} - file_cloud_account_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_cloud_account_proto_msgTypes[8].OneofWrappers = []interface{}{ (*AccountComponent_CloudConnectorMetadata)(nil), (*AccountComponent_TrustedRoleMetadata)(nil), (*AccountComponent_EventBridgeMetadata)(nil), @@ -3916,34 +4638,34 @@ func file_cloud_account_proto_init() { (*AccountComponent_CryptoKeyMetadata)(nil), (*AccountComponent_CloudLogsMetadata)(nil), } - file_cloud_account_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[9].OneofWrappers = []interface{}{ (*CloudConnectorMetadata_Aws)(nil), (*CloudConnectorMetadata_Azure_)(nil), (*CloudConnectorMetadata_Gcp)(nil), } - file_cloud_account_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[10].OneofWrappers = []interface{}{ (*TrustedRoleMetadata_Aws)(nil), (*TrustedRoleMetadata_Azure_)(nil), (*TrustedRoleMetadata_Gcp)(nil), } - file_cloud_account_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[11].OneofWrappers = []interface{}{ (*EventBridgeMetadata_Aws)(nil), (*EventBridgeMetadata_Azure_)(nil), } - file_cloud_account_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[12].OneofWrappers = []interface{}{ (*ServicePrincipalMetadata_Gcp)(nil), (*ServicePrincipalMetadata_Okta_)(nil), (*ServicePrincipalMetadata_Azure_)(nil), } - file_cloud_account_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[13].OneofWrappers = []interface{}{ (*WebhookDatasourceMetadata_Okta_)(nil), (*WebhookDatasourceMetadata_Github_)(nil), (*WebhookDatasourceMetadata_Gcp_)(nil), } - file_cloud_account_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[14].OneofWrappers = []interface{}{ (*CryptoKeyMetadata_Aws)(nil), } - file_cloud_account_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_cloud_account_proto_msgTypes[15].OneofWrappers = []interface{}{ (*CloudLogsMetadata_Aws)(nil), } type x struct{} @@ -3951,8 +4673,8 @@ func file_cloud_account_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cloud_account_proto_rawDesc, - NumEnums: 3, - NumMessages: 37, + NumEnums: 4, + NumMessages: 43, NumExtensions: 1, NumServices: 0, }, diff --git a/sysdig/internal/client/v2/cloudauth/go/cloud_organization.pb.go b/sysdig/internal/client/v2/cloudauth/go/cloud_organization.pb.go deleted file mode 100644 index a4c73217..00000000 --- a/sysdig/internal/client/v2/cloudauth/go/cloud_organization.pb.go +++ /dev/null @@ -1,269 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc v4.25.0 -// source: cloud_organization.proto - -package draiosproto - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -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) -) - -type CloudOrganization struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ManagementAccountId string `protobuf:"bytes,3,opt,name=management_account_id,json=managementAccountId,proto3" json:"management_account_id,omitempty"` - Accounts []*CloudAccount `protobuf:"bytes,4,rep,name=accounts,proto3" json:"accounts,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ProviderId string `protobuf:"bytes,7,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` // cloud provider's organization identifier - Provider Provider `protobuf:"varint,8,opt,name=provider,proto3,enum=draiosproto.Provider" json:"provider,omitempty"` // cloud provider type - CustomerId uint64 `protobuf:"varint,9,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"` // the associated customer id - OrganizationalUnitIds []string `protobuf:"bytes,10,rep,name=organizational_unit_ids,json=organizationalUnitIds,proto3" json:"organizational_unit_ids,omitempty"` // an optional sub OU to target for the organization - ProviderAlias string `protobuf:"bytes,11,opt,name=provider_alias,json=providerAlias,proto3" json:"provider_alias,omitempty"` // cloud provider's organization alias -} - -func (x *CloudOrganization) Reset() { - *x = CloudOrganization{} - if protoimpl.UnsafeEnabled { - mi := &file_cloud_organization_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CloudOrganization) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CloudOrganization) ProtoMessage() {} - -func (x *CloudOrganization) ProtoReflect() protoreflect.Message { - mi := &file_cloud_organization_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 CloudOrganization.ProtoReflect.Descriptor instead. -func (*CloudOrganization) Descriptor() ([]byte, []int) { - return file_cloud_organization_proto_rawDescGZIP(), []int{0} -} - -func (x *CloudOrganization) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *CloudOrganization) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CloudOrganization) GetManagementAccountId() string { - if x != nil { - return x.ManagementAccountId - } - return "" -} - -func (x *CloudOrganization) GetAccounts() []*CloudAccount { - if x != nil { - return x.Accounts - } - return nil -} - -func (x *CloudOrganization) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *CloudOrganization) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *CloudOrganization) GetProviderId() string { - if x != nil { - return x.ProviderId - } - return "" -} - -func (x *CloudOrganization) GetProvider() Provider { - if x != nil { - return x.Provider - } - return Provider_PROVIDER_UNSPECIFIED -} - -func (x *CloudOrganization) GetCustomerId() uint64 { - if x != nil { - return x.CustomerId - } - return 0 -} - -func (x *CloudOrganization) GetOrganizationalUnitIds() []string { - if x != nil { - return x.OrganizationalUnitIds - } - return nil -} - -func (x *CloudOrganization) GetProviderAlias() string { - if x != nil { - return x.ProviderAlias - } - return "" -} - -var File_cloud_organization_proto protoreflect.FileDescriptor - -var file_cloud_organization_proto_rawDesc = []byte{ - 0x0a, 0x18, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x64, 0x72, 0x61, 0x69, - 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 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, 0xec, 0x03, - 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x64, 0x72, - 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x36, 0x0a, - 0x17, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, - 0x75, 0x6e, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x6e, - 0x69, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x5b, 0x0a, 0x19, - 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x72, 0x61, 0x69, 0x6f, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x15, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x41, 0x75, 0x74, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x01, 0x5a, 0x25, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x64, 0x72, - 0x61, 0x69, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_cloud_organization_proto_rawDescOnce sync.Once - file_cloud_organization_proto_rawDescData = file_cloud_organization_proto_rawDesc -) - -func file_cloud_organization_proto_rawDescGZIP() []byte { - file_cloud_organization_proto_rawDescOnce.Do(func() { - file_cloud_organization_proto_rawDescData = protoimpl.X.CompressGZIP(file_cloud_organization_proto_rawDescData) - }) - return file_cloud_organization_proto_rawDescData -} - -var file_cloud_organization_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_cloud_organization_proto_goTypes = []interface{}{ - (*CloudOrganization)(nil), // 0: draiosproto.CloudOrganization - (*CloudAccount)(nil), // 1: draiosproto.CloudAccount - (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp - (Provider)(0), // 3: draiosproto.Provider -} -var file_cloud_organization_proto_depIdxs = []int32{ - 1, // 0: draiosproto.CloudOrganization.accounts:type_name -> draiosproto.CloudAccount - 2, // 1: draiosproto.CloudOrganization.created_at:type_name -> google.protobuf.Timestamp - 2, // 2: draiosproto.CloudOrganization.updated_at:type_name -> google.protobuf.Timestamp - 3, // 3: draiosproto.CloudOrganization.provider:type_name -> draiosproto.Provider - 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_cloud_organization_proto_init() } -func file_cloud_organization_proto_init() { - if File_cloud_organization_proto != nil { - return - } - file_cloud_account_proto_init() - if !protoimpl.UnsafeEnabled { - file_cloud_organization_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudOrganization); 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_cloud_organization_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_cloud_organization_proto_goTypes, - DependencyIndexes: file_cloud_organization_proto_depIdxs, - MessageInfos: file_cloud_organization_proto_msgTypes, - }.Build() - File_cloud_organization_proto = out.File - file_cloud_organization_proto_rawDesc = nil - file_cloud_organization_proto_goTypes = nil - file_cloud_organization_proto_depIdxs = nil -} diff --git a/sysdig/resource_sysdig_secure_cloud_auth_account.go b/sysdig/resource_sysdig_secure_cloud_auth_account.go index fe1dde87..f79abcdd 100644 --- a/sysdig/resource_sysdig_secure_cloud_auth_account.go +++ b/sysdig/resource_sysdig_secure_cloud_auth_account.go @@ -3,7 +3,7 @@ package sysdig import ( "bytes" "context" - b64 "encoding/base64" + "encoding/base64" "encoding/json" "errors" "fmt" @@ -11,12 +11,13 @@ import ( "strings" "time" + v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2" + cloudauth "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2/cloudauth/go" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - - v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2" - cloudauth "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2/cloudauth/go" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/reflect/protoreflect" ) func resourceSysdigSecureCloudauthAccount() *schema.Resource { @@ -152,7 +153,7 @@ func resourceSysdigSecureCloudauthAccount() *schema.Resource { Elem: accountFeatures, }, SchemaComponent: { - Type: schema.TypeList, + Type: schema.TypeSet, Optional: true, Elem: accountComponents, }, @@ -322,8 +323,9 @@ func setAccountFeature(accountFeatures *cloudauth.AccountFeatures, fieldName str This helper function aggregates the account features object that will be used in the cloudauthAccountFromResourceData() function */ -func constructAccountFeatures(accountFeatures *cloudauth.AccountFeatures, featureData interface{}) *cloudauth.AccountFeatures { - featureMap := convertSchemaSetToMap(featureData.(*schema.Set)) +func constructAccountFeatures(data *schema.ResourceData) *cloudauth.AccountFeatures { + accountFeatures := &cloudauth.AccountFeatures{} + featureMap := convertSchemaSetToMap(data.Get(SchemaFeature).(*schema.Set)) for name, value := range featureMap { if featureValues := value.(*schema.Set).List(); len(featureValues) > 0 { @@ -355,12 +357,13 @@ func constructAccountFeatures(accountFeatures *cloudauth.AccountFeatures, featur This helper function aggregates the account components list that will be used in the cloudauthAccountFromResourceData() function */ -func constructAccountComponents(accountComponents []*cloudauth.AccountComponent, data *schema.ResourceData) []*cloudauth.AccountComponent { - provider := data.Get(SchemaCloudProviderType).(string) +func constructAccountComponents(data *schema.ResourceData) []*cloudauth.AccountComponent { + accountComponents := []*cloudauth.AccountComponent{} - for _, rc := range data.Get(SchemaComponent).([]interface{}) { + for _, rc := range data.Get(SchemaComponent).(*schema.Set).List() { resourceComponent := rc.(map[string]interface{}) component := &cloudauth.AccountComponent{} + var err error for key, value := range resourceComponent { if value != nil && value.(string) != "" { @@ -370,118 +373,53 @@ func constructAccountComponents(accountComponents []*cloudauth.AccountComponent, case SchemaInstance: component.Instance = value.(string) case SchemaCloudConnectorMetadata: - component.Metadata = &cloudauth.AccountComponent_CloudConnectorMetadata{ - CloudConnectorMetadata: &cloudauth.CloudConnectorMetadata{}, - } + component.Metadata = &cloudauth.AccountComponent_CloudConnectorMetadata{CloudConnectorMetadata: &cloudauth.CloudConnectorMetadata{}} + err = protojson.Unmarshal([]byte(value.(string)), component.GetCloudConnectorMetadata()) case SchemaTrustedRoleMetadata: - // TODO: Make it more generic than just for GCP - if provider == cloudauth.Provider_PROVIDER_GCP.String() { - component.Metadata = &cloudauth.AccountComponent_TrustedRoleMetadata{ - TrustedRoleMetadata: &cloudauth.TrustedRoleMetadata{ - Provider: &cloudauth.TrustedRoleMetadata_Gcp{ - Gcp: &cloudauth.TrustedRoleMetadata_GCP{ - RoleName: value.(string), - }, - }, - }, - } - } + component.Metadata = &cloudauth.AccountComponent_TrustedRoleMetadata{TrustedRoleMetadata: &cloudauth.TrustedRoleMetadata{}} + err = protojson.Unmarshal([]byte(value.(string)), component.GetTrustedRoleMetadata()) case SchemaEventBridgeMetadata: - if provider == cloudauth.Provider_PROVIDER_AZURE.String() { - eventBridgeMetadata := parseResourceMetadataJson(value.(string)) - eventHubMetadata, ok := eventBridgeMetadata["azure"].(map[string]interface{})["event_hub_metadata"].(map[string]interface{}) - - if !ok { - fmt.Printf("Resource input for component metadata for provider %s is invalid and not as expected", provider) - break - } - - component.Metadata = &cloudauth.AccountComponent_EventBridgeMetadata{ - EventBridgeMetadata: &cloudauth.EventBridgeMetadata{ - Provider: &cloudauth.EventBridgeMetadata_Azure_{ - Azure: &cloudauth.EventBridgeMetadata_Azure{ - EventHubMetadata: &cloudauth.EventBridgeMetadata_Azure_EventHubMetadata{ - EventHubName: eventHubMetadata["event_hub_name"].(string), - EventHubNamespace: eventHubMetadata["event_hub_namespace"].(string), - ConsumerGroup: eventHubMetadata["consumer_group"].(string), - }, - }, - }, - }, - } - } else { - component.Metadata = &cloudauth.AccountComponent_EventBridgeMetadata{ - EventBridgeMetadata: &cloudauth.EventBridgeMetadata{}, - } - } + component.Metadata = &cloudauth.AccountComponent_EventBridgeMetadata{EventBridgeMetadata: &cloudauth.EventBridgeMetadata{}} + err = protojson.Unmarshal([]byte(value.(string)), component.GetEventBridgeMetadata()) case SchemaServicePrincipalMetadata: - // TODO: Make it more generic than just for GCP - servicePrincipalMetadata := parseResourceMetadataJson(value.(string)) - - if provider == cloudauth.Provider_PROVIDER_GCP.String() { - encodedServicePrincipalGcpKey, ok := servicePrincipalMetadata["gcp"].(map[string]interface{})["key"].(string) - if !ok { - fmt.Printf("Resource input for component metadata for provider %s is invalid and not as expected", provider) - break - } - servicePrincipalGcpKey := decodeServicePrincipalKeyToMap(encodedServicePrincipalGcpKey) - component.Metadata = &cloudauth.AccountComponent_ServicePrincipalMetadata{ - ServicePrincipalMetadata: &cloudauth.ServicePrincipalMetadata{ - Provider: &cloudauth.ServicePrincipalMetadata_Gcp{ - Gcp: &cloudauth.ServicePrincipalMetadata_GCP{ - Key: &cloudauth.ServicePrincipalMetadata_GCP_Key{ - Type: servicePrincipalGcpKey["type"], - ProjectId: servicePrincipalGcpKey["project_id"], - PrivateKeyId: servicePrincipalGcpKey["private_key_id"], - PrivateKey: servicePrincipalGcpKey["private_key"], - ClientEmail: servicePrincipalGcpKey["client_email"], - ClientId: servicePrincipalGcpKey["client_id"], - AuthUri: servicePrincipalGcpKey["auth_uri"], - TokenUri: servicePrincipalGcpKey["token_uri"], - AuthProviderX509CertUrl: servicePrincipalGcpKey["auth_provider_x509_cert_url"], - ClientX509CertUrl: servicePrincipalGcpKey["client_x509_cert_url"], + component.Metadata = &cloudauth.AccountComponent_ServicePrincipalMetadata{ServicePrincipalMetadata: &cloudauth.ServicePrincipalMetadata{}} + err = protojson.Unmarshal([]byte(value.(string)), component.GetServicePrincipalMetadata()) + if data.Get(SchemaCloudProviderType).(string) == cloudauth.Provider_PROVIDER_GCP.String() { + spGcp := &internalServicePrincipalMetadata{} + err = json.Unmarshal([]byte(value.(string)), spGcp) + if len(spGcp.Gcp.Key) >= 0 { + var spGcpKeyBytes []byte + spGcpKeyBytes, err = base64.StdEncoding.DecodeString(spGcp.Gcp.Key) + if err != nil { + diag.FromErr(err) + } + spGcpKey := &cloudauth.ServicePrincipalMetadata_GCP_Key{} + err = json.Unmarshal(spGcpKeyBytes, spGcpKey) + component.Metadata = &cloudauth.AccountComponent_ServicePrincipalMetadata{ + ServicePrincipalMetadata: &cloudauth.ServicePrincipalMetadata{ + Provider: &cloudauth.ServicePrincipalMetadata_Gcp{ + Gcp: &cloudauth.ServicePrincipalMetadata_GCP{ + Key: spGcpKey, + WorkloadIdentityFederation: spGcp.Gcp.WorkloadIdentityFederation, + Email: spGcp.Gcp.Email, }, }, }, - }, - } - } else if provider == cloudauth.Provider_PROVIDER_AZURE.String() { - servicePrincipalAzureKey, ok := servicePrincipalMetadata["azure"].(map[string]interface{})["active_directory_service_principal"].(map[string]interface{}) - - if !ok { - fmt.Printf("Resource input for component metadata for provider %s is invalid and not as expected", provider) - break - } - - component.Metadata = &cloudauth.AccountComponent_ServicePrincipalMetadata{ - ServicePrincipalMetadata: &cloudauth.ServicePrincipalMetadata{ - Provider: &cloudauth.ServicePrincipalMetadata_Azure_{ - Azure: &cloudauth.ServicePrincipalMetadata_Azure{ - ActiveDirectoryServicePrincipal: &cloudauth.ServicePrincipalMetadata_Azure_ActiveDirectoryServicePrincipal{ - AccountEnabled: servicePrincipalAzureKey["account_enabled"].(bool), - AppDisplayName: servicePrincipalAzureKey["app_display_name"].(string), - AppId: servicePrincipalAzureKey["app_id"].(string), - AppOwnerOrganizationId: servicePrincipalAzureKey["app_owner_organization_id"].(string), - DisplayName: servicePrincipalAzureKey["display_name"].(string), - Id: servicePrincipalAzureKey["id"].(string), - }, - }, - }, - }, + } } } case SchemaWebhookDatasourceMetadata: - component.Metadata = &cloudauth.AccountComponent_WebhookDatasourceMetadata{ - WebhookDatasourceMetadata: &cloudauth.WebhookDatasourceMetadata{}, - } + component.Metadata = &cloudauth.AccountComponent_WebhookDatasourceMetadata{WebhookDatasourceMetadata: &cloudauth.WebhookDatasourceMetadata{}} + err = protojson.Unmarshal([]byte(value.(string)), component.GetWebhookDatasourceMetadata()) case SchemaCryptoKeyMetadata: - component.Metadata = &cloudauth.AccountComponent_CryptoKeyMetadata{ - CryptoKeyMetadata: &cloudauth.CryptoKeyMetadata{}, - } + component.Metadata = &cloudauth.AccountComponent_CryptoKeyMetadata{CryptoKeyMetadata: &cloudauth.CryptoKeyMetadata{}} + err = protojson.Unmarshal([]byte(value.(string)), component.GetCryptoKeyMetadata()) case SchemaCloudLogsMetadata: - component.Metadata = &cloudauth.AccountComponent_CloudLogsMetadata{ - CloudLogsMetadata: &cloudauth.CloudLogsMetadata{}, - } + component.Metadata = &cloudauth.AccountComponent_CloudLogsMetadata{CloudLogsMetadata: &cloudauth.CloudLogsMetadata{}} + err = protojson.Unmarshal([]byte(value.(string)), component.GetCloudLogsMetadata()) + } + if err != nil { + diag.FromErr(err) } } } @@ -491,63 +429,15 @@ func constructAccountComponents(accountComponents []*cloudauth.AccountComponent, return accountComponents } -/* -This helper function parses the provided component resource metadata in opaque Json string format into a map -*/ -func parseResourceMetadataJson(value string) map[string]interface{} { - var metadataJSON map[string]interface{} - err := json.Unmarshal([]byte(value), &metadataJSON) - if err != nil { - fmt.Printf("Failed to parse component metadata: %v", err) - return nil - } - - return metadataJSON -} - -/* -This helper function decodes the base64 encoded Service Principal Key obtained from cloud -and parses it from Json format into a map -*/ -func decodeServicePrincipalKeyToMap(encodedKey string) map[string]string { - bytesData, err := b64.StdEncoding.DecodeString(encodedKey) - if err != nil { - fmt.Printf("Failed to decode service principal key: %v", err) - return nil - } - var privateKeyMap map[string]string - err = json.Unmarshal(bytesData, &privateKeyMap) - if err != nil { - fmt.Printf("Failed to parse service principal key: %v", err) - return nil - } - - return privateKeyMap -} - -/* -This helper function encodes the Service Principal Key returned by Sysdig -and returns a base64 encoded string -*/ -func encodeServicePrincipalKey(key []byte) string { - encodedKey := b64.StdEncoding.EncodeToString(key) - return encodedKey -} - func cloudauthAccountFromResourceData(data *schema.ResourceData) *v2.CloudauthAccountSecure { - accountComponents := constructAccountComponents([]*cloudauth.AccountComponent{}, data) - - featureData := data.Get(SchemaFeature) - accountFeatures := constructAccountFeatures(&cloudauth.AccountFeatures{}, featureData) - return &v2.CloudauthAccountSecure{ CloudAccount: cloudauth.CloudAccount{ Enabled: data.Get(SchemaEnabled).(bool), OrganizationId: data.Get(SchemaOrganizationIDKey).(string), ProviderId: data.Get(SchemaCloudProviderId).(string), Provider: cloudauth.Provider(cloudauth.Provider_value[data.Get(SchemaCloudProviderType).(string)]), - Components: accountComponents, - Feature: accountFeatures, + Components: constructAccountComponents(data), + Feature: constructAccountFeatures(data), ProviderTenantId: data.Get(SchemaCloudProviderTenantId).(string), ProviderAlias: data.Get(SchemaCloudProviderAlias).(string), }, @@ -608,157 +498,86 @@ func featureToResourceData(features *cloudauth.AccountFeatures) []interface{} { This helper function converts the components data from []*cloudauth.AccountComponent to resource data schema. This is needed to set the value in cloudauthAccountToResourceData(). */ -func componentsToResourceData(components []*cloudauth.AccountComponent, dataComponentsOrder []string) []map[string]interface{} { - - allComponents := make(map[string]interface{}) - for _, comp := range components { - componentBlock := map[string]interface{}{} - - componentBlock[SchemaType] = comp.Type.String() - componentBlock[SchemaInstance] = comp.Instance - - metadata := comp.GetMetadata() - if metadata != nil { - switch metadata.(type) { - case *cloudauth.AccountComponent_ServicePrincipalMetadata: - provider := metadata.(*cloudauth.AccountComponent_ServicePrincipalMetadata).ServicePrincipalMetadata.GetProvider() - // TODO: Make it more generic than just for GCP - if providerKey, ok := provider.(*cloudauth.ServicePrincipalMetadata_Gcp); ok { - // convert key struct to jsonified key with all the expected fields - jsonifiedKey := struct { - Type string `json:"type"` - ProjectId string `json:"project_id"` - PrivateKeyId string `json:"private_key_id"` - PrivateKey string `json:"private_key"` - ClientEmail string `json:"client_email"` - ClientId string `json:"client_id"` - AuthUri string `json:"auth_uri"` - TokenUri string `json:"token_uri"` - AuthProviderX509CertUrl string `json:"auth_provider_x509_cert_url"` - ClientX509CertUrl string `json:"client_x509_cert_url"` - UniverseDomain string `json:"universe_domain"` - }{ - Type: providerKey.Gcp.GetKey().GetType(), - ProjectId: providerKey.Gcp.GetKey().GetProjectId(), - PrivateKeyId: providerKey.Gcp.GetKey().GetPrivateKeyId(), - PrivateKey: providerKey.Gcp.GetKey().GetPrivateKey(), - ClientEmail: providerKey.Gcp.GetKey().GetClientEmail(), - ClientId: providerKey.Gcp.GetKey().GetClientId(), - AuthUri: providerKey.Gcp.GetKey().GetAuthUri(), - TokenUri: providerKey.Gcp.GetKey().GetTokenUri(), - AuthProviderX509CertUrl: providerKey.Gcp.GetKey().GetAuthProviderX509CertUrl(), - ClientX509CertUrl: providerKey.Gcp.GetKey().GetClientX509CertUrl(), - UniverseDomain: "googleapis.com", - } - bytesKey, err := json.Marshal(jsonifiedKey) - if err != nil { - fmt.Printf("Failed to populate %s: %v", SchemaServicePrincipalMetadata, err) - break - } - - // update the json with proper indentation - var out bytes.Buffer - if err := json.Indent(&out, bytesKey, "", " "); err != nil { - fmt.Printf("Failed to populate %s: %v", SchemaServicePrincipalMetadata, err) - break - } - out.WriteByte('\n') - - // encode the key to base64 and add to the component block - schemaData, err := json.Marshal(map[string]interface{}{ - "gcp": map[string]interface{}{ - "key": encodeServicePrincipalKey(out.Bytes()), - }, - }) - if err != nil { - fmt.Printf("Failed to populate %s: %v", SchemaServicePrincipalMetadata, err) - break - } - - componentBlock[SchemaServicePrincipalMetadata] = string(schemaData) - } - - if providerKey, ok := provider.(*cloudauth.ServicePrincipalMetadata_Azure_); ok { - schemaData, err := json.Marshal(map[string]interface{}{ - "azure": map[string]interface{}{ - "active_directory_service_principal": map[string]interface{}{ - "account_enabled": providerKey.Azure.GetActiveDirectoryServicePrincipal().GetAccountEnabled(), - "app_display_name": providerKey.Azure.GetActiveDirectoryServicePrincipal().GetAppDisplayName(), - "app_id": providerKey.Azure.GetActiveDirectoryServicePrincipal().GetAppId(), - "app_owner_organization_id": providerKey.Azure.GetActiveDirectoryServicePrincipal().GetAppOwnerOrganizationId(), - "display_name": providerKey.Azure.GetActiveDirectoryServicePrincipal().GetDisplayName(), - "id": providerKey.Azure.GetActiveDirectoryServicePrincipal().GetId(), - }, - }, - }) +func componentsToResourceData(components []*cloudauth.AccountComponent) []map[string]interface{} { + resourceList := []map[string]interface{}{} + for _, component := range components { + resourceData := map[string]interface{}{} + resourceData[SchemaType] = component.GetType().String() + resourceData[SchemaInstance] = component.GetInstance() + + switch component.GetType() { + case cloudauth.Component_COMPONENT_CLOUD_CONNECTOR: + resourceData[SchemaCloudConnectorMetadata] = getComponentMetadataString(component.GetCloudConnectorMetadata()) + case cloudauth.Component_COMPONENT_TRUSTED_ROLE: + resourceData[SchemaTrustedRoleMetadata] = getComponentMetadataString(component.GetTrustedRoleMetadata()) + case cloudauth.Component_COMPONENT_EVENT_BRIDGE: + resourceData[SchemaEventBridgeMetadata] = getComponentMetadataString(component.GetEventBridgeMetadata()) + case cloudauth.Component_COMPONENT_SERVICE_PRINCIPAL: + // XXX: handle GCP specially because keys are base64 encoded + if component.GetServicePrincipalMetadata().GetGcp() != nil { + gcpKeyBytes := []byte{} + if component.GetServicePrincipalMetadata().GetGcp().GetKey() != nil { + var err error + gcpKeyBytes, err = protojson.MarshalOptions{UseProtoNames: true}.Marshal(component.GetServicePrincipalMetadata().GetGcp().GetKey()) if err != nil { - fmt.Printf("Failed to populate %s: %v", SchemaServicePrincipalMetadata, err) - break + diag.FromErr(err) } - - componentBlock[SchemaServicePrincipalMetadata] = string(schemaData) + var gcpKeyBytesBuffer bytes.Buffer + json.Indent(&gcpKeyBytesBuffer, gcpKeyBytes, "", " ") + gcpKeyBytes = append(gcpKeyBytesBuffer.Bytes(), '\n') } - case *cloudauth.AccountComponent_EventBridgeMetadata: - provider := metadata.(*cloudauth.AccountComponent_EventBridgeMetadata).EventBridgeMetadata.GetProvider() - - if providerKey, ok := provider.(*cloudauth.EventBridgeMetadata_Azure_); ok { - schemaData, err := json.Marshal(map[string]interface{}{ - "azure": map[string]interface{}{ - "event_hub_metadata": map[string]interface{}{ - "event_hub_name": providerKey.Azure.GetEventHubMetadata().GetEventHubName(), - "event_hub_namespace": providerKey.Azure.GetEventHubMetadata().GetEventHubNamespace(), - "consumer_group": providerKey.Azure.GetEventHubMetadata().GetConsumerGroup(), - }, - }, - }) - if err != nil { - fmt.Printf("Failed to populate %s: %v", SchemaEventBridgeMetadata, err) - break - } - - componentBlock[SchemaEventBridgeMetadata] = string(schemaData) + spGcpBytes, err := json.Marshal(&internalServicePrincipalMetadata{ + Gcp: &internalServicePrincipalMetadata_GCP{ + Key: base64.StdEncoding.EncodeToString(gcpKeyBytes), + WorkloadIdentityFederation: component.GetServicePrincipalMetadata().GetGcp().GetWorkloadIdentityFederation(), + Email: component.GetServicePrincipalMetadata().GetGcp().GetEmail(), + }, + }) + if err != nil { + diag.FromErr(err) } + resourceData[SchemaServicePrincipalMetadata] = string(spGcpBytes) + } else { + resourceData[SchemaServicePrincipalMetadata] = getComponentMetadataString(component.GetServicePrincipalMetadata()) } + case cloudauth.Component_COMPONENT_WEBHOOK_DATASOURCE: + resourceData[SchemaWebhookDatasourceMetadata] = getComponentMetadataString(component.GetWebhookDatasourceMetadata()) + case cloudauth.Component_COMPONENT_CRYPTO_KEY: + resourceData[SchemaCryptoKeyMetadata] = getComponentMetadataString(component.GetCryptoKeyMetadata()) + case cloudauth.Component_COMPONENT_CLOUD_LOGS: + resourceData[SchemaCloudLogsMetadata] = getComponentMetadataString(component.GetCloudLogsMetadata()) } - - allComponents[comp.Instance] = componentBlock + resourceList = append(resourceList, resourceData) } - // In the resource data, SchemaComponent field is a list of component sets[] / block - // Hence we need to return this uber level list in same order to cloudauthAccountToResourceData - componentsList := []map[string]interface{}{} - - if len(allComponents) > 0 { - - // add the component blocks in same order to maintain ordering - // note-request; why is this needed? - if len(dataComponentsOrder) > 0 { - for _, c := range dataComponentsOrder { - componentItem := allComponents[c].(map[string]interface{}) - componentsList = append(componentsList, componentItem) - } - return componentsList - } - - // if no ordering is provided, return all components in any order - for _, c := range allComponents { - componentItem := c.(map[string]interface{}) - componentsList = append(componentsList, componentItem) - } - return componentsList - - } + return resourceList +} - return nil +// internal type redefintion for GCP service principals. +// This exists because in terraform, the key is originally provided in the form of a base64 encoded json string +type internalServicePrincipalMetadata_GCP struct { + Key string `json:"key,omitempty"` // base64 encoded + WorkloadIdentityFederation *cloudauth.ServicePrincipalMetadata_GCP_WorkloadIdentityFederation `json:"workload_identity_federation,omitempty"` + Email string `json:"email,omitempty"` +} +type internalServicePrincipalMetadata struct { + Gcp *internalServicePrincipalMetadata_GCP `json:"gcp,omitempty"` } -func getResourceComponentsOrder(dataComponents interface{}) []string { - var dataComponentsOrder []string - for _, rc := range dataComponents.([]interface{}) { - resourceComponent := rc.(map[string]interface{}) - dataComponentsOrder = append(dataComponentsOrder, resourceComponent[SchemaInstance].(string)) +func getComponentMetadataString(message protoreflect.ProtoMessage) string { + // marshal through protojson get correct snake case keys + protoJsonMessage, err := protojson.MarshalOptions{UseProtoNames: true}.Marshal(message) + if err != nil { + diag.FromErr(err) + } + // re-marshal through encoding/json to get consistent key ordering, avoiding diff errors with TF internals + metadataMap := make(map[string]interface{}) + json.Unmarshal(protoJsonMessage, &metadataMap) + jsonMessage, err := json.Marshal(metadataMap) + if err != nil { + diag.FromErr(err) } - return dataComponentsOrder + return string(jsonMessage) } func cloudauthAccountToResourceData(data *schema.ResourceData, cloudAccount *v2.CloudauthAccountSecure) error { @@ -787,8 +606,8 @@ func cloudauthAccountToResourceData(data *schema.ResourceData, cloudAccount *v2. return err } - dataComponentsOrder := getResourceComponentsOrder(data.Get(SchemaComponent)) - err = data.Set(SchemaComponent, componentsToResourceData(cloudAccount.Components, dataComponentsOrder)) + // dataComponentsOrder := getResourceComponentsOrder(data.Get(SchemaComponent)) + err = data.Set(SchemaComponent, componentsToResourceData(cloudAccount.GetComponents())) if err != nil { return err } diff --git a/sysdig/resource_sysdig_secure_cloud_auth_account_test.go b/sysdig/resource_sysdig_secure_cloud_auth_account_test.go index c4457079..47345c21 100644 --- a/sysdig/resource_sysdig_secure_cloud_auth_account_test.go +++ b/sysdig/resource_sysdig_secure_cloud_auth_account_test.go @@ -7,6 +7,7 @@ import ( b64 "encoding/base64" "encoding/json" "fmt" + "math/rand" "os" "testing" @@ -314,3 +315,129 @@ func secureAzureCloudAuthAccountWithFCThreatDetection(accountID string) string { } }`, accountID, randomTenantId) } + +func TestAccAWSSecureCloudAccountFCThreatDetection(t *testing.T) { + accountID := fmt.Sprintf("%012d", rand.Intn(99999999999)) + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + if v := os.Getenv("SYSDIG_SECURE_API_TOKEN"); v == "" { + t.Fatal("SYSDIG_SECURE_API_TOKEN must be set for acceptance tests") + } + }, + ProviderFactories: map[string]func() (*schema.Provider, error){ + "sysdig": func() (*schema.Provider, error) { + return sysdig.Provider(), nil + }, + }, + Steps: []resource.TestStep{ + { + Config: fmt.Sprintf(` + resource "sysdig_secure_cloud_auth_account" "aws_account_%s" { + enabled = true + provider_id = "%s" + provider_type = "PROVIDER_AWS" + + feature { + + secure_threat_detection { + enabled = true + components = ["COMPONENT_EVENT_BRIDGE/secure-runtime"] + } + } + component { + type = "COMPONENT_EVENT_BRIDGE" + instance = "secure-runtime" + event_bridge_metadata = jsonencode({ + aws = { + role_name = "sysdig-secure-events-ezsz" + rule_name = "sysdig-secure-events-ezsz" + } + }) + } + }`, accountID, accountID), + }, + { + ResourceName: fmt.Sprintf("sysdig_secure_cloud_auth_account.aws_account_%s", accountID), + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccAWSSecureCloudAccountFCCSPM(t *testing.T) { + accountID := fmt.Sprintf("%012d", rand.Intn(99999999999)) + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + if v := os.Getenv("SYSDIG_SECURE_API_TOKEN"); v == "" { + t.Fatal("SYSDIG_SECURE_API_TOKEN must be set for acceptance tests") + } + }, + ProviderFactories: map[string]func() (*schema.Provider, error){ + "sysdig": func() (*schema.Provider, error) { + return sysdig.Provider(), nil + }, + }, + Steps: []resource.TestStep{ + { + Config: fmt.Sprintf(` + resource "sysdig_secure_cloud_auth_account" "aws_account_%s" { + enabled = true + provider_id = "%s" + provider_type = "PROVIDER_AWS" + + feature { + + secure_config_posture { + enabled = true + components = ["COMPONENT_TRUSTED_ROLE/secure-posture"] + } + + secure_agentless_scanning { + enabled = true + components = ["COMPONENT_TRUSTED_ROLE/secure-scanning", "COMPONENT_CRYPTO_KEY/secure-scanning"] + } + } + component { + type = "COMPONENT_TRUSTED_ROLE" + instance = "secure-scanning" + trusted_role_metadata = jsonencode({ + aws = { + role_name = "sysdig-secure-scanning-ob1o" + } + }) + } + component { + type = "COMPONENT_CRYPTO_KEY" + instance = "secure-scanning" + crypto_key_metadata = jsonencode({ + aws = { + kms = { + alias = "alias/sysdig-secure-scanning-ob1o" + regions = [ + "us-east-1", + "us-west-2", + ] + } + } + }) + } + component { + type = "COMPONENT_TRUSTED_ROLE" + instance = "secure-posture" + trusted_role_metadata = jsonencode({ + aws = { + role_name = "sysdig-secure-bu1k" + } + }) + } + }`, accountID, accountID), + }, + { + ResourceName: fmt.Sprintf("sysdig_secure_cloud_auth_account.aws_account_%s", accountID), + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +}