From c07687fdc761c308b5afc218885be795221aadde Mon Sep 17 00:00:00 2001 From: Gero Posmyk-Leinemann Date: Tue, 18 Feb 2025 10:11:56 +0000 Subject: [PATCH 1/3] [api, server, dashboard] Cleanup UpdateOrganizationSettings API Tool: gitpod/catfood.gitpod.cloud --- .../update-org-settings-mutation.ts | 2 +- .../service/json-rpc-organization-client.ts | 81 +- .../dashboard/src/teams/TeamOnboarding.tsx | 3 +- .../src/typeorm/entity/db-team-settings.ts | 18 +- .../src/teams-projects-protocol.ts | 10 +- .../public-api/gitpod/v1/organization.proto | 15 +- .../public-api/go/v1/organization.pb.go | 901 +++++++++--------- .../publicapi/v1/OrganizationOuterClass.java | 744 +++++++++------ .../src/public-api-converter.ts | 51 +- .../src/gitpod/v1/organization_pb.ts | 40 +- .../src/api/organization-service-api.ts | 121 +-- .../src/orgs/organization-service.spec.db.ts | 14 +- .../src/orgs/organization-service.spec.ts | 14 + .../server/src/orgs/organization-service.ts | 34 +- 14 files changed, 1126 insertions(+), 922 deletions(-) diff --git a/components/dashboard/src/data/organizations/update-org-settings-mutation.ts b/components/dashboard/src/data/organizations/update-org-settings-mutation.ts index 0bdd2c2cf210ba..b015d321f4c254 100644 --- a/components/dashboard/src/data/organizations/update-org-settings-mutation.ts +++ b/components/dashboard/src/data/organizations/update-org-settings-mutation.ts @@ -28,7 +28,7 @@ export const useUpdateOrgSettingsMutation = () => { return useMutation({ mutationFn: async (partialUpdate) => { - const update: PartialMessage = { + const update: UpdateOrganizationSettingsArgs = { ...partialUpdate, }; update.organizationId = organizationId; diff --git a/components/dashboard/src/service/json-rpc-organization-client.ts b/components/dashboard/src/service/json-rpc-organization-client.ts index 0dca7d96431252..f48c35f6627a25 100644 --- a/components/dashboard/src/service/json-rpc-organization-client.ts +++ b/components/dashboard/src/service/json-rpc-organization-client.ts @@ -4,7 +4,7 @@ * See License.AGPL.txt in the project root for license information. */ -import { PartialMessage } from "@bufbuild/protobuf"; +import { PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { CallOptions, PromiseClient } from "@connectrpc/connect"; import { OrganizationService } from "@gitpod/public-api/lib/gitpod/v1/organization_connect"; import { @@ -41,7 +41,6 @@ import { import { getGitpodService } from "./service"; import { converter } from "./public-api"; import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; -import { OrgMemberRole, RoleRestrictions } from "@gitpod/gitpod-protocol"; export class JsonRpcOrganizationClient implements PromiseClient { async createOrganization( @@ -228,56 +227,62 @@ export class JsonRpcOrganizationClient implements PromiseClient = { - workspaceSharingDisabled: request?.workspaceSharingDisabled, - defaultWorkspaceImage: request?.defaultWorkspaceImage, - allowedWorkspaceClasses: request?.allowedWorkspaceClasses, - restrictedEditorNames: request?.restrictedEditorNames, - defaultRole: request?.defaultRole, - }; - if (request.updatePinnedEditorVersions) { - update.pinnedEditorVersions = request.pinnedEditorVersions; - } else if (request.pinnedEditorVersions && Object.keys(request.pinnedEditorVersions).length > 0) { + + if ( + request.restrictedEditorNames && + request.restrictedEditorNames.length > 0 && + !request.updateRestrictedEditorNames + ) { throw new ApplicationError( ErrorCodes.BAD_REQUEST, - "updatePinnedEditorVersions is required to be true to update pinnedEditorVersions", + "updateRestrictedEditorNames is required to be true to update restrictedEditorNames", ); } - if (request.updateRestrictedEditorNames) { - update.restrictedEditorNames = request.restrictedEditorNames; - } else if (request.restrictedEditorNames && request.restrictedEditorNames.length > 0) { + + if ( + request.allowedWorkspaceClasses && + request.allowedWorkspaceClasses.length > 0 && + !request.updateAllowedWorkspaceClasses + ) { throw new ApplicationError( ErrorCodes.BAD_REQUEST, - "updateRestrictedEditorNames is required to be true to update restrictedEditorNames", + "updateAllowedWorkspaceClasses is required to be true to update allowedWorkspaceClasses", ); } - const roleRestrictions: RoleRestrictions = {}; - if (request.updateRoleRestrictions) { - for (const roleRestriction of request?.roleRestrictions ?? []) { - if (!roleRestriction.role) { - throw new ApplicationError(ErrorCodes.BAD_REQUEST, "role is required"); - } - const role = converter.fromOrgMemberRole(roleRestriction.role); - const permissions = roleRestriction?.permissions?.map((p) => converter.fromOrganizationPermission(p)); - roleRestrictions[role] = permissions; - } - } else if (request.roleRestrictions && Object.keys(request.roleRestrictions).length > 0) { + if ( + request.pinnedEditorVersions && + Object.keys(request.pinnedEditorVersions).length > 0 && + !request.updatePinnedEditorVersions + ) { throw new ApplicationError( ErrorCodes.BAD_REQUEST, - "updateRoleRestrictions is required to be true to update roleRestrictions", + "updatePinnedEditorVersions is required to be true to update pinnedEditorVersions", ); } - await getGitpodService().server.updateOrgSettings(request.organizationId, { - ...update, - defaultRole: request.defaultRole as OrgMemberRole, - timeoutSettings: { - inactivity: converter.toDurationStringOpt(request.timeoutSettings?.inactivity), - denyUserTimeouts: request.timeoutSettings?.denyUserTimeouts, - }, - roleRestrictions, - }); + if (request.roleRestrictions && request.roleRestrictions.length > 0 && !request.updateRoleRestrictions) { + throw new ApplicationError( + ErrorCodes.BAD_REQUEST, + "updateRoleRestrictions is required to be true when updating roleRestrictions", + ); + } + if ( + request.onboardingSettings?.recommendedRepositories && + request.onboardingSettings.recommendedRepositories.length > 0 && + !request.onboardingSettings.updateRecommendedRepositories + ) { + throw new ApplicationError( + ErrorCodes.BAD_REQUEST, + "recommendedRepositories can only be set when updateRecommendedRepositories is true", + ); + } + + // gpl: We accept the little bit of uncertainty here because a) the partial/not-partial mismatch is only about + // technical/private fields and b) this path should not be exercised anymore anyway. + const update = converter.fromOrganizationSettings(request as PlainMessage); + + await getGitpodService().server.updateOrgSettings(request.organizationId, update); return new UpdateOrganizationSettingsResponse(); } } diff --git a/components/dashboard/src/teams/TeamOnboarding.tsx b/components/dashboard/src/teams/TeamOnboarding.tsx index 25626d0c8c6de2..d5c9d676774878 100644 --- a/components/dashboard/src/teams/TeamOnboarding.tsx +++ b/components/dashboard/src/teams/TeamOnboarding.tsx @@ -54,7 +54,6 @@ export default function TeamOnboardingPage() { } try { await updateTeamSettings.mutateAsync({ - ...settings, ...newSettings, }); toast("Organization settings updated"); @@ -66,7 +65,7 @@ export default function TeamOnboardingPage() { console.error(error); } }, - [updateTeamSettings, org?.id, isOwner, settings, toast], + [updateTeamSettings, org?.id, isOwner, toast], ); const handleUpdateInternalLink = useCallback( diff --git a/components/gitpod-db/src/typeorm/entity/db-team-settings.ts b/components/gitpod-db/src/typeorm/entity/db-team-settings.ts index 4d986e695a0c1f..fafa540a8af5fc 100644 --- a/components/gitpod-db/src/typeorm/entity/db-team-settings.ts +++ b/components/gitpod-db/src/typeorm/entity/db-team-settings.ts @@ -25,34 +25,34 @@ export class DBOrgSettings implements OrganizationSettings { workspaceSharingDisabled?: boolean; @Column("varchar", { nullable: true }) - defaultWorkspaceImage?: string | null; + defaultWorkspaceImage?: string; @Column("json", { nullable: true }) - allowedWorkspaceClasses?: string[] | null; + allowedWorkspaceClasses?: string[]; @Column("json", { nullable: true }) - pinnedEditorVersions?: { [key: string]: string } | null; + pinnedEditorVersions?: { [key: string]: string }; @Column("json", { nullable: true }) - restrictedEditorNames?: string[] | null; + restrictedEditorNames?: string[]; @Column("varchar", { nullable: true }) - defaultRole?: OrgMemberRole | undefined; + defaultRole?: OrgMemberRole; @Column("json", { nullable: true }) - timeoutSettings?: TimeoutSettings | undefined; + timeoutSettings?: TimeoutSettings; @Column("json", { nullable: true }) - roleRestrictions?: RoleRestrictions | undefined; + roleRestrictions?: RoleRestrictions; @Column({ type: "int", default: 0 }) maxParallelRunningWorkspaces: number; @Column("json", { nullable: true }) - onboardingSettings?: OnboardingSettings | undefined; + onboardingSettings?: OnboardingSettings; @Column({ type: "boolean", default: false }) - annotateGitCommits?: boolean | undefined; + annotateGitCommits?: boolean; @Column() deleted: boolean; diff --git a/components/gitpod-protocol/src/teams-projects-protocol.ts b/components/gitpod-protocol/src/teams-projects-protocol.ts index 228e025d1f5f21..8933e4c8f73d21 100644 --- a/components/gitpod-protocol/src/teams-projects-protocol.ts +++ b/components/gitpod-protocol/src/teams-projects-protocol.ts @@ -221,15 +221,15 @@ export interface Organization { export interface OrganizationSettings { workspaceSharingDisabled?: boolean; - // null or empty string to reset to default - defaultWorkspaceImage?: string | null; + // undefined or empty string to reset to default + defaultWorkspaceImage?: string; // empty array to allow all kind of workspace classes - allowedWorkspaceClasses?: string[] | null; + allowedWorkspaceClasses?: string[]; - pinnedEditorVersions?: { [key: string]: string } | null; + pinnedEditorVersions?: { [key: string]: string }; - restrictedEditorNames?: string[] | null; + restrictedEditorNames?: string[]; // what role new members will get, default is "member" defaultRole?: OrgMemberRole; diff --git a/components/public-api/gitpod/v1/organization.proto b/components/public-api/gitpod/v1/organization.proto index fa0a96e8a815bd..aec4e6d31f34d7 100644 --- a/components/public-api/gitpod/v1/organization.proto +++ b/components/public-api/gitpod/v1/organization.proto @@ -85,21 +85,22 @@ message OnboardingSettings { optional WelcomeMessage welcome_message = 4; } +// KEEP ALIGNED WITH OrganizationSettings shape below!!! message OrganizationSettings { - bool workspace_sharing_disabled = 1; - string default_workspace_image = 2; + optional bool workspace_sharing_disabled = 1; + optional string default_workspace_image = 2; repeated string allowed_workspace_classes = 3; repeated string restricted_editor_names = 4; map pinned_editor_versions = 5; - string default_role = 6; - TimeoutSettings timeout_settings = 7; + optional string default_role = 6; + optional TimeoutSettings timeout_settings = 7; repeated RoleRestrictionEntry role_restrictions = 8; // max_parallel_running_workspaces is the maximum number of workspaces that a // single user can run in parallel. 0 resets to the default, which depends on // the org plan - int32 max_parallel_running_workspaces = 9; - OnboardingSettings onboarding_settings = 10; - bool annotate_git_commits = 11; + optional int32 max_parallel_running_workspaces = 9; + optional OnboardingSettings onboarding_settings = 10; + optional bool annotate_git_commits = 11; } service OrganizationService { diff --git a/components/public-api/go/v1/organization.pb.go b/components/public-api/go/v1/organization.pb.go index e385d82cb51efb..8724ff3db2c3e5 100644 --- a/components/public-api/go/v1/organization.pb.go +++ b/components/public-api/go/v1/organization.pb.go @@ -479,25 +479,26 @@ func (x *OnboardingSettings) GetWelcomeMessage() *OnboardingSettings_WelcomeMess return nil } +// KEEP ALIGNED WITH OrganizationSettings shape below!!! type OrganizationSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WorkspaceSharingDisabled bool `protobuf:"varint,1,opt,name=workspace_sharing_disabled,json=workspaceSharingDisabled,proto3" json:"workspace_sharing_disabled,omitempty"` - DefaultWorkspaceImage string `protobuf:"bytes,2,opt,name=default_workspace_image,json=defaultWorkspaceImage,proto3" json:"default_workspace_image,omitempty"` + WorkspaceSharingDisabled *bool `protobuf:"varint,1,opt,name=workspace_sharing_disabled,json=workspaceSharingDisabled,proto3,oneof" json:"workspace_sharing_disabled,omitempty"` + DefaultWorkspaceImage *string `protobuf:"bytes,2,opt,name=default_workspace_image,json=defaultWorkspaceImage,proto3,oneof" json:"default_workspace_image,omitempty"` AllowedWorkspaceClasses []string `protobuf:"bytes,3,rep,name=allowed_workspace_classes,json=allowedWorkspaceClasses,proto3" json:"allowed_workspace_classes,omitempty"` RestrictedEditorNames []string `protobuf:"bytes,4,rep,name=restricted_editor_names,json=restrictedEditorNames,proto3" json:"restricted_editor_names,omitempty"` PinnedEditorVersions map[string]string `protobuf:"bytes,5,rep,name=pinned_editor_versions,json=pinnedEditorVersions,proto3" json:"pinned_editor_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - DefaultRole string `protobuf:"bytes,6,opt,name=default_role,json=defaultRole,proto3" json:"default_role,omitempty"` - TimeoutSettings *TimeoutSettings `protobuf:"bytes,7,opt,name=timeout_settings,json=timeoutSettings,proto3" json:"timeout_settings,omitempty"` + DefaultRole *string `protobuf:"bytes,6,opt,name=default_role,json=defaultRole,proto3,oneof" json:"default_role,omitempty"` + TimeoutSettings *TimeoutSettings `protobuf:"bytes,7,opt,name=timeout_settings,json=timeoutSettings,proto3,oneof" json:"timeout_settings,omitempty"` RoleRestrictions []*RoleRestrictionEntry `protobuf:"bytes,8,rep,name=role_restrictions,json=roleRestrictions,proto3" json:"role_restrictions,omitempty"` // max_parallel_running_workspaces is the maximum number of workspaces that a // single user can run in parallel. 0 resets to the default, which depends on // the org plan - MaxParallelRunningWorkspaces int32 `protobuf:"varint,9,opt,name=max_parallel_running_workspaces,json=maxParallelRunningWorkspaces,proto3" json:"max_parallel_running_workspaces,omitempty"` - OnboardingSettings *OnboardingSettings `protobuf:"bytes,10,opt,name=onboarding_settings,json=onboardingSettings,proto3" json:"onboarding_settings,omitempty"` - AnnotateGitCommits bool `protobuf:"varint,11,opt,name=annotate_git_commits,json=annotateGitCommits,proto3" json:"annotate_git_commits,omitempty"` + MaxParallelRunningWorkspaces *int32 `protobuf:"varint,9,opt,name=max_parallel_running_workspaces,json=maxParallelRunningWorkspaces,proto3,oneof" json:"max_parallel_running_workspaces,omitempty"` + OnboardingSettings *OnboardingSettings `protobuf:"bytes,10,opt,name=onboarding_settings,json=onboardingSettings,proto3,oneof" json:"onboarding_settings,omitempty"` + AnnotateGitCommits *bool `protobuf:"varint,11,opt,name=annotate_git_commits,json=annotateGitCommits,proto3,oneof" json:"annotate_git_commits,omitempty"` } func (x *OrganizationSettings) Reset() { @@ -533,15 +534,15 @@ func (*OrganizationSettings) Descriptor() ([]byte, []int) { } func (x *OrganizationSettings) GetWorkspaceSharingDisabled() bool { - if x != nil { - return x.WorkspaceSharingDisabled + if x != nil && x.WorkspaceSharingDisabled != nil { + return *x.WorkspaceSharingDisabled } return false } func (x *OrganizationSettings) GetDefaultWorkspaceImage() string { - if x != nil { - return x.DefaultWorkspaceImage + if x != nil && x.DefaultWorkspaceImage != nil { + return *x.DefaultWorkspaceImage } return "" } @@ -568,8 +569,8 @@ func (x *OrganizationSettings) GetPinnedEditorVersions() map[string]string { } func (x *OrganizationSettings) GetDefaultRole() string { - if x != nil { - return x.DefaultRole + if x != nil && x.DefaultRole != nil { + return *x.DefaultRole } return "" } @@ -589,8 +590,8 @@ func (x *OrganizationSettings) GetRoleRestrictions() []*RoleRestrictionEntry { } func (x *OrganizationSettings) GetMaxParallelRunningWorkspaces() int32 { - if x != nil { - return x.MaxParallelRunningWorkspaces + if x != nil && x.MaxParallelRunningWorkspaces != nil { + return *x.MaxParallelRunningWorkspaces } return 0 } @@ -603,8 +604,8 @@ func (x *OrganizationSettings) GetOnboardingSettings() *OnboardingSettings { } func (x *OrganizationSettings) GetAnnotateGitCommits() bool { - if x != nil { - return x.AnnotateGitCommits + if x != nil && x.AnnotateGitCommits != nil { + return *x.AnnotateGitCommits } return false } @@ -2392,457 +2393,470 @@ var file_gitpod_v1_organization_proto_rawDesc = []byte{ 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x65, 0x6c, - 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xbb, 0x06, 0x0a, + 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x94, 0x08, 0x0a, 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x6f, 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, - 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x6f, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, - 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, - 0x4e, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x12, 0x6f, 0x6e, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x30, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, + 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x15, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, + 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x16, 0x70, 0x69, 0x6e, + 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, + 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, + 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x03, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4c, + 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4a, 0x0a, 0x1f, + 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, 0x75, 0x6e, + 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, 0x61, + 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, + 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x73, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 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, 0x90, 0x01, 0x0a, 0x27, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x01, - 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, - 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x22, 0x66, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, - 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x64, 0x65, 0x6e, 0x79, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x10, 0x64, 0x65, 0x6e, 0x79, 0x55, 0x73, 0x65, 0x72, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, - 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x73, 0x22, 0xfd, 0x0b, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 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, 0x42, 0x1d, 0x0a, + 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x22, + 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, + 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x66, 0x0a, 0x19, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x41, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, - 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x01, + 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x31, 0x0a, 0x12, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, + 0x10, 0x64, 0x65, 0x6e, 0x79, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x22, 0xfd, 0x0b, 0x0a, 0x21, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x1a, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, 0x0a, + 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1b, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, - 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7c, - 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x69, 0x6e, - 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, - 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x1d, + 0x61, 0x6d, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7c, 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x6e, 0x65, + 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, + 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x1a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, + 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, + 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x0f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3d, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, + 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x06, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4a, + 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, 0x61, + 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x13, 0x6f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x08, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x35, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, + 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x0a, 0x52, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, + 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 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, 0x42, 0x1d, 0x0a, + 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, + 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, - 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6e, - 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x48, 0x05, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, - 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, - 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x53, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x08, 0x52, - 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, - 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, - 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0a, 0x52, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, - 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 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, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, - 0x21, 0x0a, 0x1f, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x69, - 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x23, 0x0a, 0x21, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x22, 0x61, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x22, 0x49, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, - 0x2f, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x59, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, - 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xda, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, - 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, - 0x45, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x4c, - 0x4c, 0x10, 0x02, 0x22, 0x99, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, + 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x22, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x49, 0x0a, + 0x1e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2f, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x44, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0x48, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x17, 0x4a, 0x6f, - 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x4a, 0x6f, - 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x4d, 0x0a, 0x22, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xda, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x05, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, + 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, + 0x09, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0x99, 0x01, 0x0a, + 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, - 0x0a, 0x23, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x1e, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1c, + 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x20, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x21, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x17, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x22, 0x52, 0x65, 0x73, 0x65, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x23, 0x52, 0x65, 0x73, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x01, + 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xa2, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, - 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x22, 0x63, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, + 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x94, 0x01, 0x0a, 0x10, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x21, - 0x0a, 0x1d, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1c, - 0x0a, 0x18, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, - 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, - 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x03, - 0x2a, 0x74, 0x0a, 0x16, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, - 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x31, 0x0a, 0x2d, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x52, 0x42, 0x49, 0x54, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x53, 0x10, 0x01, 0x32, 0xbe, 0x0c, 0x0a, 0x13, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, - 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x63, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x1f, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x22, + 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2a, 0x94, 0x01, 0x0a, 0x10, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x52, + 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x4d, + 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, + 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x74, 0x0a, 0x16, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x31, 0x0a, 0x2d, + 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, + 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x52, + 0x42, 0x49, 0x54, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x10, 0x01, 0x32, + 0xbe, 0x0c, 0x0a, 0x13, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x63, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, + 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, + 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, + 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, - 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, + 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x75, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x75, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, + 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x55, 0x70, + 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, + 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, + 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3404,6 +3418,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[3].OneofWrappers = []interface{}{} + file_gitpod_v1_organization_proto_msgTypes[4].OneofWrappers = []interface{}{} file_gitpod_v1_organization_proto_msgTypes[7].OneofWrappers = []interface{}{} file_gitpod_v1_organization_proto_msgTypes[9].OneofWrappers = []interface{}{} file_gitpod_v1_organization_proto_msgTypes[10].OneofWrappers = []interface{}{} diff --git a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java index 3e290e7d288491..ee4da1b2ddc732 100644 --- a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java +++ b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java @@ -6006,18 +6006,28 @@ public interface OrganizationSettingsOrBuilder extends com.google.protobuf.MessageOrBuilder { /** - * bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * @return Whether the workspaceSharingDisabled field is set. + */ + boolean hasWorkspaceSharingDisabled(); + /** + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; * @return The workspaceSharingDisabled. */ boolean getWorkspaceSharingDisabled(); /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * @return Whether the defaultWorkspaceImage field is set. + */ + boolean hasDefaultWorkspaceImage(); + /** + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @return The defaultWorkspaceImage. */ java.lang.String getDefaultWorkspaceImage(); /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @return The bytes for defaultWorkspaceImage. */ com.google.protobuf.ByteString @@ -6108,29 +6118,34 @@ java.lang.String getPinnedEditorVersionsOrThrow( java.lang.String key); /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; + * @return Whether the defaultRole field is set. + */ + boolean hasDefaultRole(); + /** + * optional string default_role = 6 [json_name = "defaultRole"]; * @return The defaultRole. */ java.lang.String getDefaultRole(); /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; * @return The bytes for defaultRole. */ com.google.protobuf.ByteString getDefaultRoleBytes(); /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; * @return Whether the timeoutSettings field is set. */ boolean hasTimeoutSettings(); /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; * @return The timeoutSettings. */ io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings getTimeoutSettings(); /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder getTimeoutSettingsOrBuilder(); @@ -6165,33 +6180,53 @@ io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getR * the org plan * * - * int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * @return Whether the maxParallelRunningWorkspaces field is set. + */ + boolean hasMaxParallelRunningWorkspaces(); + /** + *
+     * max_parallel_running_workspaces is the maximum number of workspaces that a
+     * single user can run in parallel. 0 resets to the default, which depends on
+     * the org plan
+     * 
+ * + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; * @return The maxParallelRunningWorkspaces. */ int getMaxParallelRunningWorkspaces(); /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; * @return Whether the onboardingSettings field is set. */ boolean hasOnboardingSettings(); /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; * @return The onboardingSettings. */ io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings getOnboardingSettings(); /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder getOnboardingSettingsOrBuilder(); /** - * bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * @return Whether the annotateGitCommits field is set. + */ + boolean hasAnnotateGitCommits(); + /** + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; * @return The annotateGitCommits. */ boolean getAnnotateGitCommits(); } /** + *
+   * KEEP ALIGNED WITH OrganizationSettings shape below!!!
+   * 
+ * * Protobuf type {@code gitpod.v1.OrganizationSettings} */ public static final class OrganizationSettings extends @@ -6251,7 +6286,15 @@ protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldRefl public static final int WORKSPACE_SHARING_DISABLED_FIELD_NUMBER = 1; private boolean workspaceSharingDisabled_ = false; /** - * bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * @return Whether the workspaceSharingDisabled field is set. + */ + @java.lang.Override + public boolean hasWorkspaceSharingDisabled() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; * @return The workspaceSharingDisabled. */ @java.lang.Override @@ -6263,7 +6306,15 @@ public boolean getWorkspaceSharingDisabled() { @SuppressWarnings("serial") private volatile java.lang.Object defaultWorkspaceImage_ = ""; /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * @return Whether the defaultWorkspaceImage field is set. + */ + @java.lang.Override + public boolean hasDefaultWorkspaceImage() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @return The defaultWorkspaceImage. */ @java.lang.Override @@ -6280,7 +6331,7 @@ public java.lang.String getDefaultWorkspaceImage() { } } /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @return The bytes for defaultWorkspaceImage. */ @java.lang.Override @@ -6455,7 +6506,15 @@ public java.lang.String getPinnedEditorVersionsOrThrow( @SuppressWarnings("serial") private volatile java.lang.Object defaultRole_ = ""; /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; + * @return Whether the defaultRole field is set. + */ + @java.lang.Override + public boolean hasDefaultRole() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * optional string default_role = 6 [json_name = "defaultRole"]; * @return The defaultRole. */ @java.lang.Override @@ -6472,7 +6531,7 @@ public java.lang.String getDefaultRole() { } } /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; * @return The bytes for defaultRole. */ @java.lang.Override @@ -6493,15 +6552,15 @@ public java.lang.String getDefaultRole() { public static final int TIMEOUT_SETTINGS_FIELD_NUMBER = 7; private io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings timeoutSettings_; /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; * @return Whether the timeoutSettings field is set. */ @java.lang.Override public boolean hasTimeoutSettings() { - return ((bitField0_ & 0x00000001) != 0); + return ((bitField0_ & 0x00000008) != 0); } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; * @return The timeoutSettings. */ @java.lang.Override @@ -6509,7 +6568,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings getTimeoutS return timeoutSettings_ == null ? io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.getDefaultInstance() : timeoutSettings_; } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ @java.lang.Override public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder getTimeoutSettingsOrBuilder() { @@ -6566,7 +6625,21 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuild * the org plan * * - * int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * @return Whether the maxParallelRunningWorkspaces field is set. + */ + @java.lang.Override + public boolean hasMaxParallelRunningWorkspaces() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + *
+     * max_parallel_running_workspaces is the maximum number of workspaces that a
+     * single user can run in parallel. 0 resets to the default, which depends on
+     * the org plan
+     * 
+ * + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; * @return The maxParallelRunningWorkspaces. */ @java.lang.Override @@ -6577,15 +6650,15 @@ public int getMaxParallelRunningWorkspaces() { public static final int ONBOARDING_SETTINGS_FIELD_NUMBER = 10; private io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings onboardingSettings_; /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; * @return Whether the onboardingSettings field is set. */ @java.lang.Override public boolean hasOnboardingSettings() { - return ((bitField0_ & 0x00000002) != 0); + return ((bitField0_ & 0x00000020) != 0); } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; * @return The onboardingSettings. */ @java.lang.Override @@ -6593,7 +6666,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings getOnboa return onboardingSettings_ == null ? io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.getDefaultInstance() : onboardingSettings_; } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ @java.lang.Override public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder getOnboardingSettingsOrBuilder() { @@ -6603,7 +6676,15 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder public static final int ANNOTATE_GIT_COMMITS_FIELD_NUMBER = 11; private boolean annotateGitCommits_ = false; /** - * bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * @return Whether the annotateGitCommits field is set. + */ + @java.lang.Override + public boolean hasAnnotateGitCommits() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; * @return The annotateGitCommits. */ @java.lang.Override @@ -6625,10 +6706,10 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (workspaceSharingDisabled_ != false) { + if (((bitField0_ & 0x00000001) != 0)) { output.writeBool(1, workspaceSharingDisabled_); } - if (!com.google.protobuf.GeneratedMessage.isStringEmpty(defaultWorkspaceImage_)) { + if (((bitField0_ & 0x00000002) != 0)) { com.google.protobuf.GeneratedMessage.writeString(output, 2, defaultWorkspaceImage_); } for (int i = 0; i < allowedWorkspaceClasses_.size(); i++) { @@ -6643,22 +6724,22 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) internalGetPinnedEditorVersions(), PinnedEditorVersionsDefaultEntryHolder.defaultEntry, 5); - if (!com.google.protobuf.GeneratedMessage.isStringEmpty(defaultRole_)) { + if (((bitField0_ & 0x00000004) != 0)) { com.google.protobuf.GeneratedMessage.writeString(output, 6, defaultRole_); } - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { output.writeMessage(7, getTimeoutSettings()); } for (int i = 0; i < roleRestrictions_.size(); i++) { output.writeMessage(8, roleRestrictions_.get(i)); } - if (maxParallelRunningWorkspaces_ != 0) { + if (((bitField0_ & 0x00000010) != 0)) { output.writeInt32(9, maxParallelRunningWorkspaces_); } - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000020) != 0)) { output.writeMessage(10, getOnboardingSettings()); } - if (annotateGitCommits_ != false) { + if (((bitField0_ & 0x00000040) != 0)) { output.writeBool(11, annotateGitCommits_); } getUnknownFields().writeTo(output); @@ -6670,11 +6751,11 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; - if (workspaceSharingDisabled_ != false) { + if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream .computeBoolSize(1, workspaceSharingDisabled_); } - if (!com.google.protobuf.GeneratedMessage.isStringEmpty(defaultWorkspaceImage_)) { + if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.GeneratedMessage.computeStringSize(2, defaultWorkspaceImage_); } { @@ -6703,10 +6784,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(5, pinnedEditorVersions__); } - if (!com.google.protobuf.GeneratedMessage.isStringEmpty(defaultRole_)) { + if (((bitField0_ & 0x00000004) != 0)) { size += com.google.protobuf.GeneratedMessage.computeStringSize(6, defaultRole_); } - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(7, getTimeoutSettings()); } @@ -6714,15 +6795,15 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(8, roleRestrictions_.get(i)); } - if (maxParallelRunningWorkspaces_ != 0) { + if (((bitField0_ & 0x00000010) != 0)) { size += com.google.protobuf.CodedOutputStream .computeInt32Size(9, maxParallelRunningWorkspaces_); } - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000020) != 0)) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(10, getOnboardingSettings()); } - if (annotateGitCommits_ != false) { + if (((bitField0_ & 0x00000040) != 0)) { size += com.google.protobuf.CodedOutputStream .computeBoolSize(11, annotateGitCommits_); } @@ -6741,18 +6822,27 @@ public boolean equals(final java.lang.Object obj) { } io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings other = (io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings) obj; - if (getWorkspaceSharingDisabled() - != other.getWorkspaceSharingDisabled()) return false; - if (!getDefaultWorkspaceImage() - .equals(other.getDefaultWorkspaceImage())) return false; + if (hasWorkspaceSharingDisabled() != other.hasWorkspaceSharingDisabled()) return false; + if (hasWorkspaceSharingDisabled()) { + if (getWorkspaceSharingDisabled() + != other.getWorkspaceSharingDisabled()) return false; + } + if (hasDefaultWorkspaceImage() != other.hasDefaultWorkspaceImage()) return false; + if (hasDefaultWorkspaceImage()) { + if (!getDefaultWorkspaceImage() + .equals(other.getDefaultWorkspaceImage())) return false; + } if (!getAllowedWorkspaceClassesList() .equals(other.getAllowedWorkspaceClassesList())) return false; if (!getRestrictedEditorNamesList() .equals(other.getRestrictedEditorNamesList())) return false; if (!internalGetPinnedEditorVersions().equals( other.internalGetPinnedEditorVersions())) return false; - if (!getDefaultRole() - .equals(other.getDefaultRole())) return false; + if (hasDefaultRole() != other.hasDefaultRole()) return false; + if (hasDefaultRole()) { + if (!getDefaultRole() + .equals(other.getDefaultRole())) return false; + } if (hasTimeoutSettings() != other.hasTimeoutSettings()) return false; if (hasTimeoutSettings()) { if (!getTimeoutSettings() @@ -6760,15 +6850,21 @@ public boolean equals(final java.lang.Object obj) { } if (!getRoleRestrictionsList() .equals(other.getRoleRestrictionsList())) return false; - if (getMaxParallelRunningWorkspaces() - != other.getMaxParallelRunningWorkspaces()) return false; + if (hasMaxParallelRunningWorkspaces() != other.hasMaxParallelRunningWorkspaces()) return false; + if (hasMaxParallelRunningWorkspaces()) { + if (getMaxParallelRunningWorkspaces() + != other.getMaxParallelRunningWorkspaces()) return false; + } if (hasOnboardingSettings() != other.hasOnboardingSettings()) return false; if (hasOnboardingSettings()) { if (!getOnboardingSettings() .equals(other.getOnboardingSettings())) return false; } - if (getAnnotateGitCommits() - != other.getAnnotateGitCommits()) return false; + if (hasAnnotateGitCommits() != other.hasAnnotateGitCommits()) return false; + if (hasAnnotateGitCommits()) { + if (getAnnotateGitCommits() + != other.getAnnotateGitCommits()) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -6780,11 +6876,15 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + WORKSPACE_SHARING_DISABLED_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getWorkspaceSharingDisabled()); - hash = (37 * hash) + DEFAULT_WORKSPACE_IMAGE_FIELD_NUMBER; - hash = (53 * hash) + getDefaultWorkspaceImage().hashCode(); + if (hasWorkspaceSharingDisabled()) { + hash = (37 * hash) + WORKSPACE_SHARING_DISABLED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getWorkspaceSharingDisabled()); + } + if (hasDefaultWorkspaceImage()) { + hash = (37 * hash) + DEFAULT_WORKSPACE_IMAGE_FIELD_NUMBER; + hash = (53 * hash) + getDefaultWorkspaceImage().hashCode(); + } if (getAllowedWorkspaceClassesCount() > 0) { hash = (37 * hash) + ALLOWED_WORKSPACE_CLASSES_FIELD_NUMBER; hash = (53 * hash) + getAllowedWorkspaceClassesList().hashCode(); @@ -6797,8 +6897,10 @@ public int hashCode() { hash = (37 * hash) + PINNED_EDITOR_VERSIONS_FIELD_NUMBER; hash = (53 * hash) + internalGetPinnedEditorVersions().hashCode(); } - hash = (37 * hash) + DEFAULT_ROLE_FIELD_NUMBER; - hash = (53 * hash) + getDefaultRole().hashCode(); + if (hasDefaultRole()) { + hash = (37 * hash) + DEFAULT_ROLE_FIELD_NUMBER; + hash = (53 * hash) + getDefaultRole().hashCode(); + } if (hasTimeoutSettings()) { hash = (37 * hash) + TIMEOUT_SETTINGS_FIELD_NUMBER; hash = (53 * hash) + getTimeoutSettings().hashCode(); @@ -6807,15 +6909,19 @@ public int hashCode() { hash = (37 * hash) + ROLE_RESTRICTIONS_FIELD_NUMBER; hash = (53 * hash) + getRoleRestrictionsList().hashCode(); } - hash = (37 * hash) + MAX_PARALLEL_RUNNING_WORKSPACES_FIELD_NUMBER; - hash = (53 * hash) + getMaxParallelRunningWorkspaces(); + if (hasMaxParallelRunningWorkspaces()) { + hash = (37 * hash) + MAX_PARALLEL_RUNNING_WORKSPACES_FIELD_NUMBER; + hash = (53 * hash) + getMaxParallelRunningWorkspaces(); + } if (hasOnboardingSettings()) { hash = (37 * hash) + ONBOARDING_SETTINGS_FIELD_NUMBER; hash = (53 * hash) + getOnboardingSettings().hashCode(); } - hash = (37 * hash) + ANNOTATE_GIT_COMMITS_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getAnnotateGitCommits()); + if (hasAnnotateGitCommits()) { + hash = (37 * hash) + ANNOTATE_GIT_COMMITS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getAnnotateGitCommits()); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -6914,6 +7020,10 @@ protected Builder newBuilderForType( return builder; } /** + *
+     * KEEP ALIGNED WITH OrganizationSettings shape below!!!
+     * 
+ * * Protobuf type {@code gitpod.v1.OrganizationSettings} */ public static final class Builder extends @@ -7050,11 +7160,14 @@ private void buildPartialRepeatedFields(io.gitpod.publicapi.v1.OrganizationOuter private void buildPartial0(io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings result) { int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { result.workspaceSharingDisabled_ = workspaceSharingDisabled_; + to_bitField0_ |= 0x00000001; } if (((from_bitField0_ & 0x00000002) != 0)) { result.defaultWorkspaceImage_ = defaultWorkspaceImage_; + to_bitField0_ |= 0x00000002; } if (((from_bitField0_ & 0x00000004) != 0)) { allowedWorkspaceClasses_.makeImmutable(); @@ -7070,25 +7183,27 @@ private void buildPartial0(io.gitpod.publicapi.v1.OrganizationOuterClass.Organiz } if (((from_bitField0_ & 0x00000020) != 0)) { result.defaultRole_ = defaultRole_; + to_bitField0_ |= 0x00000004; } - int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000040) != 0)) { result.timeoutSettings_ = timeoutSettingsBuilder_ == null ? timeoutSettings_ : timeoutSettingsBuilder_.build(); - to_bitField0_ |= 0x00000001; + to_bitField0_ |= 0x00000008; } if (((from_bitField0_ & 0x00000100) != 0)) { result.maxParallelRunningWorkspaces_ = maxParallelRunningWorkspaces_; + to_bitField0_ |= 0x00000010; } if (((from_bitField0_ & 0x00000200) != 0)) { result.onboardingSettings_ = onboardingSettingsBuilder_ == null ? onboardingSettings_ : onboardingSettingsBuilder_.build(); - to_bitField0_ |= 0x00000002; + to_bitField0_ |= 0x00000020; } if (((from_bitField0_ & 0x00000400) != 0)) { result.annotateGitCommits_ = annotateGitCommits_; + to_bitField0_ |= 0x00000040; } result.bitField0_ |= to_bitField0_; } @@ -7105,10 +7220,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { public Builder mergeFrom(io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings other) { if (other == io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings.getDefaultInstance()) return this; - if (other.getWorkspaceSharingDisabled() != false) { + if (other.hasWorkspaceSharingDisabled()) { setWorkspaceSharingDisabled(other.getWorkspaceSharingDisabled()); } - if (!other.getDefaultWorkspaceImage().isEmpty()) { + if (other.hasDefaultWorkspaceImage()) { defaultWorkspaceImage_ = other.defaultWorkspaceImage_; bitField0_ |= 0x00000002; onChanged(); @@ -7136,7 +7251,7 @@ public Builder mergeFrom(io.gitpod.publicapi.v1.OrganizationOuterClass.Organizat internalGetMutablePinnedEditorVersions().mergeFrom( other.internalGetPinnedEditorVersions()); bitField0_ |= 0x00000010; - if (!other.getDefaultRole().isEmpty()) { + if (other.hasDefaultRole()) { defaultRole_ = other.defaultRole_; bitField0_ |= 0x00000020; onChanged(); @@ -7170,13 +7285,13 @@ public Builder mergeFrom(io.gitpod.publicapi.v1.OrganizationOuterClass.Organizat } } } - if (other.getMaxParallelRunningWorkspaces() != 0) { + if (other.hasMaxParallelRunningWorkspaces()) { setMaxParallelRunningWorkspaces(other.getMaxParallelRunningWorkspaces()); } if (other.hasOnboardingSettings()) { mergeOnboardingSettings(other.getOnboardingSettings()); } - if (other.getAnnotateGitCommits() != false) { + if (other.hasAnnotateGitCommits()) { setAnnotateGitCommits(other.getAnnotateGitCommits()); } this.mergeUnknownFields(other.getUnknownFields()); @@ -7297,7 +7412,15 @@ public Builder mergeFrom( private boolean workspaceSharingDisabled_ ; /** - * bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * @return Whether the workspaceSharingDisabled field is set. + */ + @java.lang.Override + public boolean hasWorkspaceSharingDisabled() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; * @return The workspaceSharingDisabled. */ @java.lang.Override @@ -7305,7 +7428,7 @@ public boolean getWorkspaceSharingDisabled() { return workspaceSharingDisabled_; } /** - * bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; * @param value The workspaceSharingDisabled to set. * @return This builder for chaining. */ @@ -7317,7 +7440,7 @@ public Builder setWorkspaceSharingDisabled(boolean value) { return this; } /** - * bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; + * optional bool workspace_sharing_disabled = 1 [json_name = "workspaceSharingDisabled"]; * @return This builder for chaining. */ public Builder clearWorkspaceSharingDisabled() { @@ -7329,7 +7452,14 @@ public Builder clearWorkspaceSharingDisabled() { private java.lang.Object defaultWorkspaceImage_ = ""; /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * @return Whether the defaultWorkspaceImage field is set. + */ + public boolean hasDefaultWorkspaceImage() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @return The defaultWorkspaceImage. */ public java.lang.String getDefaultWorkspaceImage() { @@ -7345,7 +7475,7 @@ public java.lang.String getDefaultWorkspaceImage() { } } /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @return The bytes for defaultWorkspaceImage. */ public com.google.protobuf.ByteString @@ -7362,7 +7492,7 @@ public java.lang.String getDefaultWorkspaceImage() { } } /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @param value The defaultWorkspaceImage to set. * @return This builder for chaining. */ @@ -7375,7 +7505,7 @@ public Builder setDefaultWorkspaceImage( return this; } /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @return This builder for chaining. */ public Builder clearDefaultWorkspaceImage() { @@ -7385,7 +7515,7 @@ public Builder clearDefaultWorkspaceImage() { return this; } /** - * string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; + * optional string default_workspace_image = 2 [json_name = "defaultWorkspaceImage"]; * @param value The bytes for defaultWorkspaceImage to set. * @return This builder for chaining. */ @@ -7750,7 +7880,14 @@ public Builder putAllPinnedEditorVersions( private java.lang.Object defaultRole_ = ""; /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; + * @return Whether the defaultRole field is set. + */ + public boolean hasDefaultRole() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + * optional string default_role = 6 [json_name = "defaultRole"]; * @return The defaultRole. */ public java.lang.String getDefaultRole() { @@ -7766,7 +7903,7 @@ public java.lang.String getDefaultRole() { } } /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; * @return The bytes for defaultRole. */ public com.google.protobuf.ByteString @@ -7783,7 +7920,7 @@ public java.lang.String getDefaultRole() { } } /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; * @param value The defaultRole to set. * @return This builder for chaining. */ @@ -7796,7 +7933,7 @@ public Builder setDefaultRole( return this; } /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; * @return This builder for chaining. */ public Builder clearDefaultRole() { @@ -7806,7 +7943,7 @@ public Builder clearDefaultRole() { return this; } /** - * string default_role = 6 [json_name = "defaultRole"]; + * optional string default_role = 6 [json_name = "defaultRole"]; * @param value The bytes for defaultRole to set. * @return This builder for chaining. */ @@ -7824,14 +7961,14 @@ public Builder setDefaultRoleBytes( private com.google.protobuf.SingleFieldBuilder< io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings, io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder> timeoutSettingsBuilder_; /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; * @return Whether the timeoutSettings field is set. */ public boolean hasTimeoutSettings() { return ((bitField0_ & 0x00000040) != 0); } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; * @return The timeoutSettings. */ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings getTimeoutSettings() { @@ -7842,7 +7979,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings getTimeoutS } } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ public Builder setTimeoutSettings(io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings value) { if (timeoutSettingsBuilder_ == null) { @@ -7858,7 +7995,7 @@ public Builder setTimeoutSettings(io.gitpod.publicapi.v1.OrganizationOuterClass. return this; } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ public Builder setTimeoutSettings( io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.Builder builderForValue) { @@ -7872,7 +8009,7 @@ public Builder setTimeoutSettings( return this; } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ public Builder mergeTimeoutSettings(io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings value) { if (timeoutSettingsBuilder_ == null) { @@ -7893,7 +8030,7 @@ public Builder mergeTimeoutSettings(io.gitpod.publicapi.v1.OrganizationOuterClas return this; } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ public Builder clearTimeoutSettings() { bitField0_ = (bitField0_ & ~0x00000040); @@ -7906,7 +8043,7 @@ public Builder clearTimeoutSettings() { return this; } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.Builder getTimeoutSettingsBuilder() { bitField0_ |= 0x00000040; @@ -7914,7 +8051,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.Builder get return getTimeoutSettingsFieldBuilder().getBuilder(); } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder getTimeoutSettingsOrBuilder() { if (timeoutSettingsBuilder_ != null) { @@ -7925,7 +8062,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder ge } } /** - * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; + * optional .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ private com.google.protobuf.SingleFieldBuilder< io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings, io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder> @@ -8189,7 +8326,21 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builde * the org plan * * - * int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * @return Whether the maxParallelRunningWorkspaces field is set. + */ + @java.lang.Override + public boolean hasMaxParallelRunningWorkspaces() { + return ((bitField0_ & 0x00000100) != 0); + } + /** + *
+       * max_parallel_running_workspaces is the maximum number of workspaces that a
+       * single user can run in parallel. 0 resets to the default, which depends on
+       * the org plan
+       * 
+ * + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; * @return The maxParallelRunningWorkspaces. */ @java.lang.Override @@ -8203,7 +8354,7 @@ public int getMaxParallelRunningWorkspaces() { * the org plan * * - * int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; * @param value The maxParallelRunningWorkspaces to set. * @return This builder for chaining. */ @@ -8221,7 +8372,7 @@ public Builder setMaxParallelRunningWorkspaces(int value) { * the org plan * * - * int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; + * optional int32 max_parallel_running_workspaces = 9 [json_name = "maxParallelRunningWorkspaces"]; * @return This builder for chaining. */ public Builder clearMaxParallelRunningWorkspaces() { @@ -8235,14 +8386,14 @@ public Builder clearMaxParallelRunningWorkspaces() { private com.google.protobuf.SingleFieldBuilder< io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings, io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder> onboardingSettingsBuilder_; /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; * @return Whether the onboardingSettings field is set. */ public boolean hasOnboardingSettings() { return ((bitField0_ & 0x00000200) != 0); } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; * @return The onboardingSettings. */ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings getOnboardingSettings() { @@ -8253,7 +8404,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings getOnboa } } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ public Builder setOnboardingSettings(io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings value) { if (onboardingSettingsBuilder_ == null) { @@ -8269,7 +8420,7 @@ public Builder setOnboardingSettings(io.gitpod.publicapi.v1.OrganizationOuterCla return this; } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ public Builder setOnboardingSettings( io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.Builder builderForValue) { @@ -8283,7 +8434,7 @@ public Builder setOnboardingSettings( return this; } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ public Builder mergeOnboardingSettings(io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings value) { if (onboardingSettingsBuilder_ == null) { @@ -8304,7 +8455,7 @@ public Builder mergeOnboardingSettings(io.gitpod.publicapi.v1.OrganizationOuterC return this; } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ public Builder clearOnboardingSettings() { bitField0_ = (bitField0_ & ~0x00000200); @@ -8317,7 +8468,7 @@ public Builder clearOnboardingSettings() { return this; } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.Builder getOnboardingSettingsBuilder() { bitField0_ |= 0x00000200; @@ -8325,7 +8476,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.Builder return getOnboardingSettingsFieldBuilder().getBuilder(); } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder getOnboardingSettingsOrBuilder() { if (onboardingSettingsBuilder_ != null) { @@ -8336,7 +8487,7 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder } } /** - * .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; + * optional .gitpod.v1.OnboardingSettings onboarding_settings = 10 [json_name = "onboardingSettings"]; */ private com.google.protobuf.SingleFieldBuilder< io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings, io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder> @@ -8354,7 +8505,15 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettingsOrBuilder private boolean annotateGitCommits_ ; /** - * bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * @return Whether the annotateGitCommits field is set. + */ + @java.lang.Override + public boolean hasAnnotateGitCommits() { + return ((bitField0_ & 0x00000400) != 0); + } + /** + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; * @return The annotateGitCommits. */ @java.lang.Override @@ -8362,7 +8521,7 @@ public boolean getAnnotateGitCommits() { return annotateGitCommits_; } /** - * bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; * @param value The annotateGitCommits to set. * @return This builder for chaining. */ @@ -8374,7 +8533,7 @@ public Builder setAnnotateGitCommits(boolean value) { return this; } /** - * bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; + * optional bool annotate_git_commits = 11 [json_name = "annotateGitCommits"]; * @return This builder for chaining. */ public Builder clearAnnotateGitCommits() { @@ -31373,187 +31532,192 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.DeleteOrganizationMemberRes "\n\n\010_messageB\025\n\023_featured_member_idB&\n$_f" + "eatured_member_resolved_avatar_urlB\020\n\016_i" + "nternal_linkB\"\n _update_recommended_repo" + - "sitoriesB\022\n\020_welcome_message\"\273\006\n\024Organiz" + - "ationSettings\022<\n\032workspace_sharing_disab" + - "led\030\001 \001(\010R\030workspaceSharingDisabled\0226\n\027d" + - "efault_workspace_image\030\002 \001(\tR\025defaultWor" + - "kspaceImage\022:\n\031allowed_workspace_classes" + - "\030\003 \003(\tR\027allowedWorkspaceClasses\0226\n\027restr" + - "icted_editor_names\030\004 \003(\tR\025restrictedEdit" + - "orNames\022o\n\026pinned_editor_versions\030\005 \003(\0132" + - "9.gitpod.v1.OrganizationSettings.PinnedE" + - "ditorVersionsEntryR\024pinnedEditorVersions" + - "\022!\n\014default_role\030\006 \001(\tR\013defaultRole\022E\n\020t" + - "imeout_settings\030\007 \001(\0132\032.gitpod.v1.Timeou" + - "tSettingsR\017timeoutSettings\022L\n\021role_restr" + - "ictions\030\010 \003(\0132\037.gitpod.v1.RoleRestrictio" + - "nEntryR\020roleRestrictions\022E\n\037max_parallel" + - "_running_workspaces\030\t \001(\005R\034maxParallelRu" + - "nningWorkspaces\022N\n\023onboarding_settings\030\n" + - " \001(\0132\035.gitpod.v1.OnboardingSettingsR\022onb" + - "oardingSettings\0220\n\024annotate_git_commits\030" + - "\013 \001(\010R\022annotateGitCommits\032G\n\031PinnedEdito" + - "rVersionsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005valu" + - "e\030\002 \001(\tR\005value:\0028\001\"\220\001\n\'ListOrganizationW" + - "orkspaceClassesRequest\022<\n\npagination\030\001 \001" + - "(\0132\034.gitpod.v1.PaginationRequestR\npagina" + - "tion\022\'\n\017organization_id\030\002 \001(\tR\016organizat" + - "ionId\"\261\001\n(ListOrganizationWorkspaceClass" + - "esResponse\022=\n\npagination\030\001 \001(\0132\035.gitpod." + - "v1.PaginationResponseR\npagination\022F\n\021wor" + - "kspace_classes\030\002 \003(\0132\031.gitpod.v1.Workspa" + - "ceClassR\020workspaceClasses\"f\n\031UpdateOrgan" + - "izationRequest\022\'\n\017organization_id\030\001 \001(\tR" + - "\016organizationId\022\027\n\004name\030\002 \001(\tH\000R\004name\210\001\001" + - "B\007\n\005_name\"Y\n\032UpdateOrganizationResponse\022" + - ";\n\014organization\030\001 \001(\0132\027.gitpod.v1.Organi" + - "zationR\014organization\"\252\001\n\017TimeoutSettings" + - "\022>\n\ninactivity\030\001 \001(\0132\031.google.protobuf.D" + - "urationH\000R\ninactivity\210\001\001\0221\n\022deny_user_ti" + - "meouts\030\002 \001(\010H\001R\020denyUserTimeouts\210\001\001B\r\n\013_" + - "inactivityB\025\n\023_deny_user_timeouts\"\375\013\n!Up" + - "dateOrganizationSettingsRequest\022\'\n\017organ" + - "ization_id\030\001 \001(\tR\016organizationId\022A\n\032work" + - "space_sharing_disabled\030\003 \001(\010H\000R\030workspac" + - "eSharingDisabled\210\001\001\022;\n\027default_workspace" + - "_image\030\004 \001(\tH\001R\025defaultWorkspaceImage\210\001\001" + - "\022:\n\031allowed_workspace_classes\030\005 \003(\tR\027all" + - "owedWorkspaceClasses\0226\n\027restricted_edito" + - "r_names\030\006 \003(\tR\025restrictedEditorNames\022H\n\036" + - "update_restricted_editor_names\030\007 \001(\010H\002R\033" + - "updateRestrictedEditorNames\210\001\001\022|\n\026pinned" + - "_editor_versions\030\010 \003(\0132F.gitpod.v1.Updat" + - "eOrganizationSettingsRequest.PinnedEdito" + - "rVersionsEntryR\024pinnedEditorVersions\022F\n\035" + - "update_pinned_editor_versions\030\t \001(\010H\003R\032u" + - "pdatePinnedEditorVersions\210\001\001\022&\n\014default_" + - "role\030\n \001(\tH\004R\013defaultRole\210\001\001\022J\n\020timeout_" + - "settings\030\013 \001(\0132\032.gitpod.v1.TimeoutSettin" + - "gsH\005R\017timeoutSettings\210\001\001\022L\n\021role_restric" + - "tions\030\014 \003(\0132\037.gitpod.v1.RoleRestrictionE" + - "ntryR\020roleRestrictions\022=\n\030update_role_re" + - "strictions\030\r \001(\010H\006R\026updateRoleRestrictio" + - "ns\210\001\001\022J\n\037max_parallel_running_workspaces" + - "\030\017 \001(\005H\007R\034maxParallelRunningWorkspaces\210\001" + - "\001\022S\n\023onboarding_settings\030\020 \001(\0132\035.gitpod." + - "v1.OnboardingSettingsH\010R\022onboardingSetti" + - "ngs\210\001\001\0225\n\024annotate_git_commits\030\021 \001(\010H\tR\022" + - "annotateGitCommits\210\001\001\022L\n update_allowed_" + - "workspace_classes\030\022 \001(\010H\nR\035updateAllowed" + - "WorkspaceClasses\210\001\001\032G\n\031PinnedEditorVersi" + - "onsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(" + - "\tR\005value:\0028\001B\035\n\033_workspace_sharing_disab" + - "ledB\032\n\030_default_workspace_imageB!\n\037_upda" + - "te_restricted_editor_namesB \n\036_update_pi" + - "nned_editor_versionsB\017\n\r_default_roleB\023\n" + - "\021_timeout_settingsB\033\n\031_update_role_restr" + - "ictionsB\"\n _max_parallel_running_workspa" + - "cesB\026\n\024_onboarding_settingsB\027\n\025_annotate" + - "_git_commitsB#\n!_update_allowed_workspac" + - "e_classes\"a\n\"UpdateOrganizationSettingsR" + - "esponse\022;\n\010settings\030\001 \001(\0132\037.gitpod.v1.Or" + - "ganizationSettingsR\010settings\"I\n\036GetOrgan" + - "izationSettingsRequest\022\'\n\017organization_i" + - "d\030\001 \001(\tR\016organizationId\"^\n\037GetOrganizati" + - "onSettingsResponse\022;\n\010settings\030\001 \001(\0132\037.g" + - "itpod.v1.OrganizationSettingsR\010settings\"" + - "/\n\031CreateOrganizationRequest\022\022\n\004name\030\001 \001" + - "(\tR\004name\"Y\n\032CreateOrganizationResponse\022;" + - "\n\014organization\030\001 \001(\0132\027.gitpod.v1.Organiz" + - "ationR\014organization\"A\n\026GetOrganizationRe" + - "quest\022\'\n\017organization_id\030\001 \001(\tR\016organiza" + - "tionId\"V\n\027GetOrganizationResponse\022;\n\014org" + - "anization\030\001 \001(\0132\027.gitpod.v1.Organization" + - "R\014organization\"\332\001\n\030ListOrganizationsRequ" + - "est\022<\n\npagination\030\001 \001(\0132\034.gitpod.v1.Pagi" + - "nationRequestR\npagination\022?\n\005scope\030\002 \001(\016" + - "2).gitpod.v1.ListOrganizationsRequest.Sc" + - "opeR\005scope\"?\n\005Scope\022\025\n\021SCOPE_UNSPECIFIED" + - "\020\000\022\020\n\014SCOPE_MEMBER\020\001\022\r\n\tSCOPE_ALL\020\002\"\231\001\n\031" + - "ListOrganizationsResponse\022=\n\rorganizatio" + - "ns\030\001 \003(\0132\027.gitpod.v1.OrganizationR\rorgan" + - "izations\022=\n\npagination\030\002 \001(\0132\035.gitpod.v1" + - ".PaginationResponseR\npagination\"D\n\031Delet" + - "eOrganizationRequest\022\'\n\017organization_id\030" + - "\001 \001(\tR\016organizationId\"\034\n\032DeleteOrganizat" + - "ionResponse\"K\n GetOrganizationInvitation" + - "Request\022\'\n\017organization_id\030\001 \001(\tR\016organi" + - "zationId\"H\n!GetOrganizationInvitationRes" + - "ponse\022#\n\rinvitation_id\030\001 \001(\tR\014invitation" + - "Id\">\n\027JoinOrganizationRequest\022#\n\rinvitat" + - "ion_id\030\001 \001(\tR\014invitationId\"C\n\030JoinOrgani" + - "zationResponse\022\'\n\017organization_id\030\001 \001(\tR" + - "\016organizationId\"M\n\"ResetOrganizationInvi" + - "tationRequest\022\'\n\017organization_id\030\001 \001(\tR\016" + - "organizationId\"J\n#ResetOrganizationInvit" + - "ationResponse\022#\n\rinvitation_id\030\001 \001(\tR\014in" + - "vitationId\"\207\001\n\036ListOrganizationMembersRe" + - "quest\022\'\n\017organization_id\030\001 \001(\tR\016organiza" + - "tionId\022<\n\npagination\030\002 \001(\0132\034.gitpod.v1.P" + - "aginationRequestR\npagination\"\231\001\n\037ListOrg" + - "anizationMembersResponse\0227\n\007members\030\001 \003(" + - "\0132\035.gitpod.v1.OrganizationMemberR\007member" + - "s\022=\n\npagination\030\002 \001(\0132\035.gitpod.v1.Pagina" + - "tionResponseR\npagination\"\242\001\n\037UpdateOrgan" + - "izationMemberRequest\022\'\n\017organization_id\030" + - "\001 \001(\tR\016organizationId\022\027\n\007user_id\030\002 \001(\tR\006" + - "userId\0224\n\004role\030\003 \001(\0162\033.gitpod.v1.Organiz" + - "ationRoleH\000R\004role\210\001\001B\007\n\005_role\"Y\n UpdateO" + - "rganizationMemberResponse\0225\n\006member\030\001 \001(" + - "\0132\035.gitpod.v1.OrganizationMemberR\006member" + - "\"c\n\037DeleteOrganizationMemberRequest\022\'\n\017o" + - "rganization_id\030\001 \001(\tR\016organizationId\022\027\n\007" + - "user_id\030\002 \001(\tR\006userId\"\"\n DeleteOrganizat" + - "ionMemberResponse*\224\001\n\020OrganizationRole\022!" + - "\n\035ORGANIZATION_ROLE_UNSPECIFIED\020\000\022\033\n\027ORG" + - "ANIZATION_ROLE_OWNER\020\001\022\034\n\030ORGANIZATION_R" + - "OLE_MEMBER\020\002\022\"\n\036ORGANIZATION_ROLE_COLLAB" + - "ORATOR\020\003*t\n\026OrganizationPermission\022\'\n#OR" + - "GANIZATION_PERMISSION_UNSPECIFIED\020\000\0221\n-O" + - "RGANIZATION_PERMISSION_START_ARBITRARY_R" + - "EPOS\020\0012\276\014\n\023OrganizationService\022c\n\022Create" + - "Organization\022$.gitpod.v1.CreateOrganizat" + - "ionRequest\032%.gitpod.v1.CreateOrganizatio" + - "nResponse\"\000\022Z\n\017GetOrganization\022!.gitpod." + - "v1.GetOrganizationRequest\032\".gitpod.v1.Ge" + - "tOrganizationResponse\"\000\022c\n\022UpdateOrganiz" + - "ation\022$.gitpod.v1.UpdateOrganizationRequ" + - "est\032%.gitpod.v1.UpdateOrganizationRespon" + - "se\"\000\022`\n\021ListOrganizations\022#.gitpod.v1.Li" + - "stOrganizationsRequest\032$.gitpod.v1.ListO" + - "rganizationsResponse\"\000\022c\n\022DeleteOrganiza" + - "tion\022$.gitpod.v1.DeleteOrganizationReque" + - "st\032%.gitpod.v1.DeleteOrganizationRespons" + - "e\"\000\022x\n\031GetOrganizationInvitation\022+.gitpo" + - "d.v1.GetOrganizationInvitationRequest\032,." + - "gitpod.v1.GetOrganizationInvitationRespo" + - "nse\"\000\022]\n\020JoinOrganization\022\".gitpod.v1.Jo" + - "inOrganizationRequest\032#.gitpod.v1.JoinOr" + - "ganizationResponse\"\000\022~\n\033ResetOrganizatio" + - "nInvitation\022-.gitpod.v1.ResetOrganizatio" + - "nInvitationRequest\032..gitpod.v1.ResetOrga" + - "nizationInvitationResponse\"\000\022r\n\027ListOrga" + - "nizationMembers\022).gitpod.v1.ListOrganiza" + - "tionMembersRequest\032*.gitpod.v1.ListOrgan" + - "izationMembersResponse\"\000\022u\n\030UpdateOrgani" + - "zationMember\022*.gitpod.v1.UpdateOrganizat" + - "ionMemberRequest\032+.gitpod.v1.UpdateOrgan" + - "izationMemberResponse\"\000\022u\n\030DeleteOrganiz" + - "ationMember\022*.gitpod.v1.DeleteOrganizati" + - "onMemberRequest\032+.gitpod.v1.DeleteOrgani" + - "zationMemberResponse\"\000\022r\n\027GetOrganizatio" + - "nSettings\022).gitpod.v1.GetOrganizationSet" + - "tingsRequest\032*.gitpod.v1.GetOrganization" + - "SettingsResponse\"\000\022{\n\032UpdateOrganization" + - "Settings\022,.gitpod.v1.UpdateOrganizationS" + - "ettingsRequest\032-.gitpod.v1.UpdateOrganiz" + - "ationSettingsResponse\"\000\022\215\001\n ListOrganiza" + - "tionWorkspaceClasses\0222.gitpod.v1.ListOrg" + - "anizationWorkspaceClassesRequest\0323.gitpo" + - "d.v1.ListOrganizationWorkspaceClassesRes" + - "ponse\"\000BQ\n\026io.gitpod.publicapi.v1Z7githu" + - "b.com/gitpod-io/gitpod/components/public" + - "-api/go/v1b\006proto3" + "sitoriesB\022\n\020_welcome_message\"\224\010\n\024Organiz" + + "ationSettings\022A\n\032workspace_sharing_disab" + + "led\030\001 \001(\010H\000R\030workspaceSharingDisabled\210\001\001" + + "\022;\n\027default_workspace_image\030\002 \001(\tH\001R\025def" + + "aultWorkspaceImage\210\001\001\022:\n\031allowed_workspa" + + "ce_classes\030\003 \003(\tR\027allowedWorkspaceClasse" + + "s\0226\n\027restricted_editor_names\030\004 \003(\tR\025rest" + + "rictedEditorNames\022o\n\026pinned_editor_versi" + + "ons\030\005 \003(\01329.gitpod.v1.OrganizationSettin" + + "gs.PinnedEditorVersionsEntryR\024pinnedEdit" + + "orVersions\022&\n\014default_role\030\006 \001(\tH\002R\013defa" + + "ultRole\210\001\001\022J\n\020timeout_settings\030\007 \001(\0132\032.g" + + "itpod.v1.TimeoutSettingsH\003R\017timeoutSetti" + + "ngs\210\001\001\022L\n\021role_restrictions\030\010 \003(\0132\037.gitp" + + "od.v1.RoleRestrictionEntryR\020roleRestrict" + + "ions\022J\n\037max_parallel_running_workspaces\030" + + "\t \001(\005H\004R\034maxParallelRunningWorkspaces\210\001\001" + + "\022S\n\023onboarding_settings\030\n \001(\0132\035.gitpod.v" + + "1.OnboardingSettingsH\005R\022onboardingSettin" + + "gs\210\001\001\0225\n\024annotate_git_commits\030\013 \001(\010H\006R\022a" + + "nnotateGitCommits\210\001\001\032G\n\031PinnedEditorVers" + + "ionsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001" + + "(\tR\005value:\0028\001B\035\n\033_workspace_sharing_disa" + + "bledB\032\n\030_default_workspace_imageB\017\n\r_def" + + "ault_roleB\023\n\021_timeout_settingsB\"\n _max_p" + + "arallel_running_workspacesB\026\n\024_onboardin" + + "g_settingsB\027\n\025_annotate_git_commits\"\220\001\n\'" + + "ListOrganizationWorkspaceClassesRequest\022" + + "<\n\npagination\030\001 \001(\0132\034.gitpod.v1.Paginati" + + "onRequestR\npagination\022\'\n\017organization_id" + + "\030\002 \001(\tR\016organizationId\"\261\001\n(ListOrganizat" + + "ionWorkspaceClassesResponse\022=\n\npaginatio" + + "n\030\001 \001(\0132\035.gitpod.v1.PaginationResponseR\n" + + "pagination\022F\n\021workspace_classes\030\002 \003(\0132\031." + + "gitpod.v1.WorkspaceClassR\020workspaceClass" + + "es\"f\n\031UpdateOrganizationRequest\022\'\n\017organ" + + "ization_id\030\001 \001(\tR\016organizationId\022\027\n\004name" + + "\030\002 \001(\tH\000R\004name\210\001\001B\007\n\005_name\"Y\n\032UpdateOrga" + + "nizationResponse\022;\n\014organization\030\001 \001(\0132\027" + + ".gitpod.v1.OrganizationR\014organization\"\252\001" + + "\n\017TimeoutSettings\022>\n\ninactivity\030\001 \001(\0132\031." + + "google.protobuf.DurationH\000R\ninactivity\210\001" + + "\001\0221\n\022deny_user_timeouts\030\002 \001(\010H\001R\020denyUse" + + "rTimeouts\210\001\001B\r\n\013_inactivityB\025\n\023_deny_use" + + "r_timeouts\"\375\013\n!UpdateOrganizationSetting" + + "sRequest\022\'\n\017organization_id\030\001 \001(\tR\016organ" + + "izationId\022A\n\032workspace_sharing_disabled\030" + + "\003 \001(\010H\000R\030workspaceSharingDisabled\210\001\001\022;\n\027" + + "default_workspace_image\030\004 \001(\tH\001R\025default" + + "WorkspaceImage\210\001\001\022:\n\031allowed_workspace_c" + + "lasses\030\005 \003(\tR\027allowedWorkspaceClasses\0226\n" + + "\027restricted_editor_names\030\006 \003(\tR\025restrict" + + "edEditorNames\022H\n\036update_restricted_edito" + + "r_names\030\007 \001(\010H\002R\033updateRestrictedEditorN" + + "ames\210\001\001\022|\n\026pinned_editor_versions\030\010 \003(\0132" + + "F.gitpod.v1.UpdateOrganizationSettingsRe" + + "quest.PinnedEditorVersionsEntryR\024pinnedE" + + "ditorVersions\022F\n\035update_pinned_editor_ve" + + "rsions\030\t \001(\010H\003R\032updatePinnedEditorVersio" + + "ns\210\001\001\022&\n\014default_role\030\n \001(\tH\004R\013defaultRo" + + "le\210\001\001\022J\n\020timeout_settings\030\013 \001(\0132\032.gitpod" + + ".v1.TimeoutSettingsH\005R\017timeoutSettings\210\001" + + "\001\022L\n\021role_restrictions\030\014 \003(\0132\037.gitpod.v1" + + ".RoleRestrictionEntryR\020roleRestrictions\022" + + "=\n\030update_role_restrictions\030\r \001(\010H\006R\026upd" + + "ateRoleRestrictions\210\001\001\022J\n\037max_parallel_r" + + "unning_workspaces\030\017 \001(\005H\007R\034maxParallelRu" + + "nningWorkspaces\210\001\001\022S\n\023onboarding_setting" + + "s\030\020 \001(\0132\035.gitpod.v1.OnboardingSettingsH\010" + + "R\022onboardingSettings\210\001\001\0225\n\024annotate_git_" + + "commits\030\021 \001(\010H\tR\022annotateGitCommits\210\001\001\022L" + + "\n update_allowed_workspace_classes\030\022 \001(\010" + + "H\nR\035updateAllowedWorkspaceClasses\210\001\001\032G\n\031" + + "PinnedEditorVersionsEntry\022\020\n\003key\030\001 \001(\tR\003" + + "key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001B\035\n\033_worksp" + + "ace_sharing_disabledB\032\n\030_default_workspa" + + "ce_imageB!\n\037_update_restricted_editor_na" + + "mesB \n\036_update_pinned_editor_versionsB\017\n" + + "\r_default_roleB\023\n\021_timeout_settingsB\033\n\031_" + + "update_role_restrictionsB\"\n _max_paralle" + + "l_running_workspacesB\026\n\024_onboarding_sett" + + "ingsB\027\n\025_annotate_git_commitsB#\n!_update" + + "_allowed_workspace_classes\"a\n\"UpdateOrga" + + "nizationSettingsResponse\022;\n\010settings\030\001 \001" + + "(\0132\037.gitpod.v1.OrganizationSettingsR\010set" + + "tings\"I\n\036GetOrganizationSettingsRequest\022" + + "\'\n\017organization_id\030\001 \001(\tR\016organizationId" + + "\"^\n\037GetOrganizationSettingsResponse\022;\n\010s" + + "ettings\030\001 \001(\0132\037.gitpod.v1.OrganizationSe" + + "ttingsR\010settings\"/\n\031CreateOrganizationRe" + + "quest\022\022\n\004name\030\001 \001(\tR\004name\"Y\n\032CreateOrgan" + + "izationResponse\022;\n\014organization\030\001 \001(\0132\027." + + "gitpod.v1.OrganizationR\014organization\"A\n\026" + + "GetOrganizationRequest\022\'\n\017organization_i" + + "d\030\001 \001(\tR\016organizationId\"V\n\027GetOrganizati" + + "onResponse\022;\n\014organization\030\001 \001(\0132\027.gitpo" + + "d.v1.OrganizationR\014organization\"\332\001\n\030List" + + "OrganizationsRequest\022<\n\npagination\030\001 \001(\013" + + "2\034.gitpod.v1.PaginationRequestR\npaginati" + + "on\022?\n\005scope\030\002 \001(\0162).gitpod.v1.ListOrgani" + + "zationsRequest.ScopeR\005scope\"?\n\005Scope\022\025\n\021" + + "SCOPE_UNSPECIFIED\020\000\022\020\n\014SCOPE_MEMBER\020\001\022\r\n" + + "\tSCOPE_ALL\020\002\"\231\001\n\031ListOrganizationsRespon" + + "se\022=\n\rorganizations\030\001 \003(\0132\027.gitpod.v1.Or" + + "ganizationR\rorganizations\022=\n\npagination\030" + + "\002 \001(\0132\035.gitpod.v1.PaginationResponseR\npa" + + "gination\"D\n\031DeleteOrganizationRequest\022\'\n" + + "\017organization_id\030\001 \001(\tR\016organizationId\"\034" + + "\n\032DeleteOrganizationResponse\"K\n GetOrgan" + + "izationInvitationRequest\022\'\n\017organization" + + "_id\030\001 \001(\tR\016organizationId\"H\n!GetOrganiza" + + "tionInvitationResponse\022#\n\rinvitation_id\030" + + "\001 \001(\tR\014invitationId\">\n\027JoinOrganizationR" + + "equest\022#\n\rinvitation_id\030\001 \001(\tR\014invitatio" + + "nId\"C\n\030JoinOrganizationResponse\022\'\n\017organ" + + "ization_id\030\001 \001(\tR\016organizationId\"M\n\"Rese" + + "tOrganizationInvitationRequest\022\'\n\017organi" + + "zation_id\030\001 \001(\tR\016organizationId\"J\n#Reset" + + "OrganizationInvitationResponse\022#\n\rinvita" + + "tion_id\030\001 \001(\tR\014invitationId\"\207\001\n\036ListOrga" + + "nizationMembersRequest\022\'\n\017organization_i" + + "d\030\001 \001(\tR\016organizationId\022<\n\npagination\030\002 " + + "\001(\0132\034.gitpod.v1.PaginationRequestR\npagin" + + "ation\"\231\001\n\037ListOrganizationMembersRespons" + + "e\0227\n\007members\030\001 \003(\0132\035.gitpod.v1.Organizat" + + "ionMemberR\007members\022=\n\npagination\030\002 \001(\0132\035" + + ".gitpod.v1.PaginationResponseR\npaginatio" + + "n\"\242\001\n\037UpdateOrganizationMemberRequest\022\'\n" + + "\017organization_id\030\001 \001(\tR\016organizationId\022\027" + + "\n\007user_id\030\002 \001(\tR\006userId\0224\n\004role\030\003 \001(\0162\033." + + "gitpod.v1.OrganizationRoleH\000R\004role\210\001\001B\007\n" + + "\005_role\"Y\n UpdateOrganizationMemberRespon" + + "se\0225\n\006member\030\001 \001(\0132\035.gitpod.v1.Organizat" + + "ionMemberR\006member\"c\n\037DeleteOrganizationM" + + "emberRequest\022\'\n\017organization_id\030\001 \001(\tR\016o" + + "rganizationId\022\027\n\007user_id\030\002 \001(\tR\006userId\"\"" + + "\n DeleteOrganizationMemberResponse*\224\001\n\020O" + + "rganizationRole\022!\n\035ORGANIZATION_ROLE_UNS" + + "PECIFIED\020\000\022\033\n\027ORGANIZATION_ROLE_OWNER\020\001\022" + + "\034\n\030ORGANIZATION_ROLE_MEMBER\020\002\022\"\n\036ORGANIZ" + + "ATION_ROLE_COLLABORATOR\020\003*t\n\026Organizatio" + + "nPermission\022\'\n#ORGANIZATION_PERMISSION_U" + + "NSPECIFIED\020\000\0221\n-ORGANIZATION_PERMISSION_" + + "START_ARBITRARY_REPOS\020\0012\276\014\n\023Organization" + + "Service\022c\n\022CreateOrganization\022$.gitpod.v" + + "1.CreateOrganizationRequest\032%.gitpod.v1." + + "CreateOrganizationResponse\"\000\022Z\n\017GetOrgan" + + "ization\022!.gitpod.v1.GetOrganizationReque" + + "st\032\".gitpod.v1.GetOrganizationResponse\"\000" + + "\022c\n\022UpdateOrganization\022$.gitpod.v1.Updat" + + "eOrganizationRequest\032%.gitpod.v1.UpdateO" + + "rganizationResponse\"\000\022`\n\021ListOrganizatio" + + "ns\022#.gitpod.v1.ListOrganizationsRequest\032" + + "$.gitpod.v1.ListOrganizationsResponse\"\000\022" + + "c\n\022DeleteOrganization\022$.gitpod.v1.Delete" + + "OrganizationRequest\032%.gitpod.v1.DeleteOr" + + "ganizationResponse\"\000\022x\n\031GetOrganizationI" + + "nvitation\022+.gitpod.v1.GetOrganizationInv" + + "itationRequest\032,.gitpod.v1.GetOrganizati" + + "onInvitationResponse\"\000\022]\n\020JoinOrganizati" + + "on\022\".gitpod.v1.JoinOrganizationRequest\032#" + + ".gitpod.v1.JoinOrganizationResponse\"\000\022~\n" + + "\033ResetOrganizationInvitation\022-.gitpod.v1" + + ".ResetOrganizationInvitationRequest\032..gi" + + "tpod.v1.ResetOrganizationInvitationRespo" + + "nse\"\000\022r\n\027ListOrganizationMembers\022).gitpo" + + "d.v1.ListOrganizationMembersRequest\032*.gi" + + "tpod.v1.ListOrganizationMembersResponse\"" + + "\000\022u\n\030UpdateOrganizationMember\022*.gitpod.v" + + "1.UpdateOrganizationMemberRequest\032+.gitp" + + "od.v1.UpdateOrganizationMemberResponse\"\000" + + "\022u\n\030DeleteOrganizationMember\022*.gitpod.v1" + + ".DeleteOrganizationMemberRequest\032+.gitpo" + + "d.v1.DeleteOrganizationMemberResponse\"\000\022" + + "r\n\027GetOrganizationSettings\022).gitpod.v1.G" + + "etOrganizationSettingsRequest\032*.gitpod.v" + + "1.GetOrganizationSettingsResponse\"\000\022{\n\032U" + + "pdateOrganizationSettings\022,.gitpod.v1.Up" + + "dateOrganizationSettingsRequest\032-.gitpod" + + ".v1.UpdateOrganizationSettingsResponse\"\000" + + "\022\215\001\n ListOrganizationWorkspaceClasses\0222." + + "gitpod.v1.ListOrganizationWorkspaceClass" + + "esRequest\0323.gitpod.v1.ListOrganizationWo" + + "rkspaceClassesResponse\"\000BQ\n\026io.gitpod.pu" + + "blicapi.v1Z7github.com/gitpod-io/gitpod/" + + "components/public-api/go/v1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/components/public-api/typescript-common/src/public-api-converter.ts b/components/public-api/typescript-common/src/public-api-converter.ts index 89e61f4aad7554..a991914158f0be 100644 --- a/components/public-api/typescript-common/src/public-api-converter.ts +++ b/components/public-api/typescript-common/src/public-api-converter.ts @@ -6,7 +6,7 @@ import "reflect-metadata"; -import { Duration, PartialMessage, Timestamp, toPlainMessage } from "@bufbuild/protobuf"; +import { Duration, PartialMessage, PlainMessage, Timestamp, toPlainMessage } from "@bufbuild/protobuf"; import { Code, ConnectError } from "@connectrpc/connect"; import { GitpodServer } from "@gitpod/gitpod-protocol"; import { BlockedRepository as ProtocolBlockedRepository } from "@gitpod/gitpod-protocol/lib/blocked-repositories-protocol"; @@ -126,6 +126,7 @@ import { OrganizationSettings, RoleRestrictionEntry, TimeoutSettings, + UpdateOrganizationSettingsRequest, } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { Prebuild, @@ -188,6 +189,8 @@ import { InvalidGitpodYMLError, RepositoryNotFoundError, UnauthorizedRepositoryA const URL = require("url").URL || window.URL; export type PartialConfiguration = DeepPartial & Pick; +// Because we use duplicate types in the proto (*sight*), we use this type to unify handling of both (which use fields with the same names) +type PlainOrganizationSettings = Omit, "organizationId">; /** * Converter between gRPC and JSON-RPC types. @@ -1059,7 +1062,45 @@ export class PublicAPIConverter { } } - fromTimeoutSettings(timeoutSettings: TimeoutSettings): TimeoutSettingsProtocol { + fromOrganizationSettings(settings: PlainOrganizationSettings): OrganizationSettingsProtocol { + const result: OrganizationSettingsProtocol = { + workspaceSharingDisabled: settings.workspaceSharingDisabled, + defaultWorkspaceImage: settings.defaultWorkspaceImage, + annotateGitCommits: settings.annotateGitCommits, + maxParallelRunningWorkspaces: settings.maxParallelRunningWorkspaces, + }; + + if (settings.updateRestrictedEditorNames) { + result.restrictedEditorNames = settings.restrictedEditorNames; + } + + if (settings.updateAllowedWorkspaceClasses) { + result.allowedWorkspaceClasses = settings.allowedWorkspaceClasses; + } + + if (settings.updatePinnedEditorVersions) { + result.pinnedEditorVersions = settings.pinnedEditorVersions; + } + + if (settings.defaultRole) { + result.defaultRole = this.fromOrgMemberRoleString(settings.defaultRole); + } + + if (settings.timeoutSettings) { + result.timeoutSettings = this.fromTimeoutSettings(settings.timeoutSettings); + } + + if (settings.updateRoleRestrictions) { + result.roleRestrictions = this.fromRoleRestrictions(settings.roleRestrictions); + } + + if (settings.onboardingSettings) { + result.onboardingSettings = this.fromOnboardingSettings(settings.onboardingSettings); + } + return result; + } + + fromTimeoutSettings(timeoutSettings: PlainMessage): TimeoutSettingsProtocol { const result: TimeoutSettingsProtocol = { denyUserTimeouts: timeoutSettings.denyUserTimeouts, }; @@ -1069,7 +1110,7 @@ export class PublicAPIConverter { return result; } - fromRoleRestrictions(roleRestrictions: RoleRestrictionEntry[]): RoleRestrictions { + fromRoleRestrictions(roleRestrictions: PlainMessage[]): RoleRestrictions { const result: RoleRestrictions = {}; for (const roleRestriction of roleRestrictions) { const role = this.fromOrgMemberRole(roleRestriction.role); @@ -1079,7 +1120,7 @@ export class PublicAPIConverter { return result; } - fromOnboardingSettings(onboardingSettings: OnboardingSettings): OnboardingSettingsProtocol { + fromOnboardingSettings(onboardingSettings: PlainMessage): OnboardingSettingsProtocol { const result: OnboardingSettingsProtocol = { internalLink: onboardingSettings.internalLink, }; @@ -1095,7 +1136,7 @@ export class PublicAPIConverter { return result; } - fromWelcomeMessage(welcomeMessage: OnboardingSettings_WelcomeMessage): WelcomeMessageProtocol { + fromWelcomeMessage(welcomeMessage: PlainMessage): WelcomeMessageProtocol { return { enabled: welcomeMessage.enabled, message: welcomeMessage.message, diff --git a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts index 60d5a61577963c..da027d797ed81a 100644 --- a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts @@ -380,18 +380,20 @@ export class OnboardingSettings_WelcomeMessage extends Message { /** - * @generated from field: bool workspace_sharing_disabled = 1; + * @generated from field: optional bool workspace_sharing_disabled = 1; */ - workspaceSharingDisabled = false; + workspaceSharingDisabled?: boolean; /** - * @generated from field: string default_workspace_image = 2; + * @generated from field: optional string default_workspace_image = 2; */ - defaultWorkspaceImage = ""; + defaultWorkspaceImage?: string; /** * @generated from field: repeated string allowed_workspace_classes = 3; @@ -409,12 +411,12 @@ export class OrganizationSettings extends Message { pinnedEditorVersions: { [key: string]: string } = {}; /** - * @generated from field: string default_role = 6; + * @generated from field: optional string default_role = 6; */ - defaultRole = ""; + defaultRole?: string; /** - * @generated from field: gitpod.v1.TimeoutSettings timeout_settings = 7; + * @generated from field: optional gitpod.v1.TimeoutSettings timeout_settings = 7; */ timeoutSettings?: TimeoutSettings; @@ -428,19 +430,19 @@ export class OrganizationSettings extends Message { * single user can run in parallel. 0 resets to the default, which depends on * the org plan * - * @generated from field: int32 max_parallel_running_workspaces = 9; + * @generated from field: optional int32 max_parallel_running_workspaces = 9; */ - maxParallelRunningWorkspaces = 0; + maxParallelRunningWorkspaces?: number; /** - * @generated from field: gitpod.v1.OnboardingSettings onboarding_settings = 10; + * @generated from field: optional gitpod.v1.OnboardingSettings onboarding_settings = 10; */ onboardingSettings?: OnboardingSettings; /** - * @generated from field: bool annotate_git_commits = 11; + * @generated from field: optional bool annotate_git_commits = 11; */ - annotateGitCommits = false; + annotateGitCommits?: boolean; constructor(data?: PartialMessage) { super(); @@ -450,17 +452,17 @@ export class OrganizationSettings extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "gitpod.v1.OrganizationSettings"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "workspace_sharing_disabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 2, name: "default_workspace_image", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 1, name: "workspace_sharing_disabled", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + { no: 2, name: "default_workspace_image", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 3, name: "allowed_workspace_classes", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, { no: 4, name: "restricted_editor_names", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, { no: 5, name: "pinned_editor_versions", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, - { no: 6, name: "default_role", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 7, name: "timeout_settings", kind: "message", T: TimeoutSettings }, + { no: 6, name: "default_role", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 7, name: "timeout_settings", kind: "message", T: TimeoutSettings, opt: true }, { no: 8, name: "role_restrictions", kind: "message", T: RoleRestrictionEntry, repeated: true }, - { no: 9, name: "max_parallel_running_workspaces", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, - { no: 10, name: "onboarding_settings", kind: "message", T: OnboardingSettings }, - { no: 11, name: "annotate_git_commits", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 9, name: "max_parallel_running_workspaces", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true }, + { no: 10, name: "onboarding_settings", kind: "message", T: OnboardingSettings, opt: true }, + { no: 11, name: "annotate_git_commits", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): OrganizationSettings { diff --git a/components/server/src/api/organization-service-api.ts b/components/server/src/api/organization-service-api.ts index 506fe33a9fee22..9b31a9f1421926 100644 --- a/components/server/src/api/organization-service-api.ts +++ b/components/server/src/api/organization-service-api.ts @@ -40,12 +40,11 @@ import { } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { PublicAPIConverter } from "@gitpod/public-api-common/lib/public-api-converter"; import { OrganizationService } from "../orgs/organization-service"; -import { OrganizationSettings as ProtocolOrganizationSettings } from "@gitpod/gitpod-protocol"; +import { OrganizationSettings } from "@gitpod/gitpod-protocol"; import { PaginationResponse } from "@gitpod/public-api/lib/gitpod/v1/pagination_pb"; import { validate as uuidValidate } from "uuid"; import { ctxUserId } from "../util/request-context"; import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; -import { EntitlementService } from "../billing/entitlement-service"; @injectable() export class OrganizationServiceAPI implements ServiceImpl { @@ -54,8 +53,6 @@ export class OrganizationServiceAPI implements ServiceImpl = {}; - if (req.updateRestrictedEditorNames) { - update.restrictedEditorNames = req.restrictedEditorNames; - } else if (req.restrictedEditorNames.length > 0) { + if (req.restrictedEditorNames.length > 0 && !req.updateRestrictedEditorNames) { throw new ApplicationError( ErrorCodes.BAD_REQUEST, "updateRestrictedEditorNames is required to be true to update restrictedEditorNames", ); } - if (!req.updateAllowedWorkspaceClasses && req.allowedWorkspaceClasses.length > 0) { + if (req.allowedWorkspaceClasses.length > 0 && !req.updateAllowedWorkspaceClasses) { throw new ApplicationError( ErrorCodes.BAD_REQUEST, "updateAllowedWorkspaceClasses is required to be true to update allowedWorkspaceClasses", ); } - if (req.updateAllowedWorkspaceClasses) { - update.allowedWorkspaceClasses = req.allowedWorkspaceClasses; - } - - if (typeof req.workspaceSharingDisabled === "boolean") { - update.workspaceSharingDisabled = req.workspaceSharingDisabled; - } - if (typeof req.defaultWorkspaceImage === "string") { - update.defaultWorkspaceImage = req.defaultWorkspaceImage; - } - if (req.updatePinnedEditorVersions) { - update.pinnedEditorVersions = req.pinnedEditorVersions; - } - if (typeof req.defaultRole === "string" && req.defaultRole !== "") { - switch (req.defaultRole) { - case "owner": - case "member": - case "collaborator": - update.defaultRole = req.defaultRole; - break; - default: - throw new ApplicationError(ErrorCodes.BAD_REQUEST, "invalid defaultRole"); - } - } - if (typeof req.timeoutSettings?.denyUserTimeouts === "boolean") { - update.timeoutSettings = update.timeoutSettings || {}; - update.timeoutSettings.denyUserTimeouts = req.timeoutSettings.denyUserTimeouts; - } - if (typeof req.timeoutSettings?.inactivity === "object") { - update.timeoutSettings = update.timeoutSettings || {}; - update.timeoutSettings.inactivity = this.apiConverter.toDurationString(req.timeoutSettings.inactivity); + if ( + req.pinnedEditorVersions && + Object.keys(req.pinnedEditorVersions).length > 0 && + !req.updatePinnedEditorVersions + ) { + throw new ApplicationError( + ErrorCodes.BAD_REQUEST, + "updatePinnedEditorVersions is required to be true to update pinnedEditorVersions", + ); } if (req.roleRestrictions.length > 0 && !req.updateRoleRestrictions) { @@ -313,63 +285,32 @@ export class OrganizationServiceAPI implements ServiceImpl - this.apiConverter.fromOrganizationPermission(p), - ); - update.roleRestrictions[role] = permissions; - } - } - - if (typeof req.maxParallelRunningWorkspaces === "number") { - if (req.maxParallelRunningWorkspaces < 0) { - throw new ApplicationError(ErrorCodes.BAD_REQUEST, "maxParallelRunningWorkspaces must be >= 0"); - } - const maxAllowance = await this.entitlementService.getMaxParallelWorkspaces( - ctxUserId(), - req.organizationId, + if ( + req.onboardingSettings && + req.onboardingSettings.recommendedRepositories.length > 0 && + !req.onboardingSettings.updateRecommendedRepositories + ) { + throw new ApplicationError( + ErrorCodes.BAD_REQUEST, + "recommendedRepositories can only be set when updateRecommendedRepositories is true", ); - if (maxAllowance && req.maxParallelRunningWorkspaces > maxAllowance) { - throw new ApplicationError( - ErrorCodes.BAD_REQUEST, - `maxParallelRunningWorkspaces must be <= ${maxAllowance}`, - ); - } - if (!Number.isInteger(req.maxParallelRunningWorkspaces)) { - throw new ApplicationError(ErrorCodes.BAD_REQUEST, "maxParallelRunningWorkspaces must be an integer"); - } - - update.maxParallelRunningWorkspaces = req.maxParallelRunningWorkspaces; } - if (req.onboardingSettings) { - update.onboardingSettings = this.apiConverter.fromOnboardingSettings(req.onboardingSettings); - - if ( - !req.onboardingSettings.updateRecommendedRepositories && - req.onboardingSettings.recommendedRepositories.length > 0 - ) { - throw new ApplicationError( - ErrorCodes.BAD_REQUEST, - "recommendedRepositories can only be set when updateRecommendedRepositories is true", - ); + // convert to internal type, mapping any errors to BAD_REQUEST as it's only doing conversions anyway + let update: OrganizationSettings; + try { + update = this.apiConverter.fromOrganizationSettings(req); + } catch (err) { + let msg = "conversion error"; + if (err.message) { + msg += ": " + err.message; } + throw new ApplicationError(ErrorCodes.BAD_REQUEST, msg); } - if (req.annotateGitCommits !== undefined) { - update.annotateGitCommits = req.annotateGitCommits; - } - - if (Object.keys(update).length === 0) { - throw new ApplicationError(ErrorCodes.BAD_REQUEST, "nothing to update"); - } - - const settings = await this.orgService.updateSettings(ctxUserId(), req.organizationId, update); + const updatedSettings = await this.orgService.updateSettings(ctxUserId(), req.organizationId, update); return new UpdateOrganizationSettingsResponse({ - settings: this.apiConverter.toOrganizationSettings(settings), + settings: this.apiConverter.toOrganizationSettings(updatedSettings), }); } } diff --git a/components/server/src/orgs/organization-service.spec.db.ts b/components/server/src/orgs/organization-service.spec.db.ts index 73f6b8509472ca..7f4a01664c9e35 100644 --- a/components/server/src/orgs/organization-service.spec.db.ts +++ b/components/server/src/orgs/organization-service.spec.db.ts @@ -445,9 +445,10 @@ describe("OrganizationService", async () => { } await assertUpdateSettings( - "empty allowed workspace classes should allow all (null)", + "empty allowed workspace classes should allow all ([])", { allowedWorkspaceClasses: [] }, { + allowedWorkspaceClasses: [], workspaceSharingDisabled: true, defaultWorkspaceImage: "ubuntu", }, @@ -468,10 +469,19 @@ describe("OrganizationService", async () => { "should reset default workspace image", { defaultWorkspaceImage: "" }, { + allowedWorkspaceClasses: [], workspaceSharingDisabled: true, + defaultWorkspaceImage: "", + }, + ); + await assertUpdateSettings( + "should enable workspace sharing", + { workspaceSharingDisabled: false }, + { + allowedWorkspaceClasses: [], + defaultWorkspaceImage: "", }, ); - await assertUpdateSettings("should enable workspace sharing", { workspaceSharingDisabled: false }, {}); }); it("org-owned users can't create new organizations", async () => { diff --git a/components/server/src/orgs/organization-service.spec.ts b/components/server/src/orgs/organization-service.spec.ts index cec702b6a28413..ca65a98c16876b 100644 --- a/components/server/src/orgs/organization-service.spec.ts +++ b/components/server/src/orgs/organization-service.spec.ts @@ -20,6 +20,10 @@ import { IDEService } from "../ide-service"; import { StripeService } from "../billing/stripe-service"; import { UsageService } from "./usage-service"; import { UserAuthentication } from "../user/user-authentication"; +import { EntitlementService, EntitlementServiceImpl } from "../billing/entitlement-service"; +import { EntitlementServiceUBP, LazyOrganizationService } from "../billing/entitlement-service-ubp"; +import { BillingModes } from "../billing/billing-mode"; +import { VerificationService } from "../auth/verification-service"; const expect = chai.expect; @@ -79,6 +83,16 @@ describe("OrganizationService", async () => { container.bind(StripeService).toConstantValue({} as any as StripeService); container.bind(UsageService).toConstantValue({} as any as UsageService); container.bind(UserAuthentication).toConstantValue({} as any as UserAuthentication); + container.bind(EntitlementServiceUBP).toSelf().inSingletonScope(); + container.bind(EntitlementServiceImpl).toSelf().inSingletonScope(); + container.bind(EntitlementService).to(EntitlementServiceImpl).inSingletonScope(); + container.bind(BillingModes).toSelf().inSingletonScope(); + container.bind(VerificationService).toSelf().inSingletonScope(); + container.bind(LazyOrganizationService).toFactory((ctx) => { + return () => { + return ctx.container.get(OrganizationService); + }; + }); os = container.get(OrganizationService); }); diff --git a/components/server/src/orgs/organization-service.ts b/components/server/src/orgs/organization-service.ts index 687bb5b24a850b..c02a072d63970d 100644 --- a/components/server/src/orgs/organization-service.ts +++ b/components/server/src/orgs/organization-service.ts @@ -37,6 +37,7 @@ import { CostCenter_BillingStrategy } from "@gitpod/gitpod-protocol/lib/usage"; import { CreateUserParams, UserAuthentication } from "../user/user-authentication"; import isURL from "validator/lib/isURL"; import { merge } from "ts-deepmerge"; +import { EntitlementService } from "../billing/entitlement-service"; @injectable() export class OrganizationService { @@ -54,6 +55,7 @@ export class OrganizationService { @inject(DefaultWorkspaceImageValidator) private readonly validateDefaultWorkspaceImage: DefaultWorkspaceImageValidator, @inject(UserAuthentication) private readonly userAuthentication: UserAuthentication, + @inject(EntitlementService) private readonly entitlementService: EntitlementService, ) {} async listOrganizations( @@ -491,20 +493,17 @@ export class OrganizationService { settings: Partial, ): Promise { await this.auth.checkPermissionOnOrganization(userId, "write_settings", orgId); + if (typeof settings.defaultWorkspaceImage === "string") { const defaultWorkspaceImage = settings.defaultWorkspaceImage.trim(); if (defaultWorkspaceImage) { await this.validateDefaultWorkspaceImage(userId, defaultWorkspaceImage, orgId); - settings = { ...settings, defaultWorkspaceImage }; - } else { - settings = { ...settings, defaultWorkspaceImage: null }; } + settings = { ...settings, defaultWorkspaceImage }; } + if (settings.allowedWorkspaceClasses) { - if (settings.allowedWorkspaceClasses.length === 0) { - // Pass an empty array to allow all workspace classes - settings.allowedWorkspaceClasses = null; - } else { + if (settings.allowedWorkspaceClasses.length > 0) { const allClasses = await this.installationService.getInstallationWorkspaceClasses(userId); const availableClasses = allClasses.filter((e) => settings.allowedWorkspaceClasses!.includes(e.id)); if (availableClasses.length !== settings.allowedWorkspaceClasses.length) { @@ -551,6 +550,22 @@ export class OrganizationService { } } + if (settings.maxParallelRunningWorkspaces !== undefined) { + if (settings.maxParallelRunningWorkspaces < 0) { + throw new ApplicationError(ErrorCodes.BAD_REQUEST, "maxParallelRunningWorkspaces must be >= 0"); + } + const maxAllowance = await this.entitlementService.getMaxParallelWorkspaces(userId, orgId); + if (maxAllowance && settings.maxParallelRunningWorkspaces > maxAllowance) { + throw new ApplicationError( + ErrorCodes.BAD_REQUEST, + `maxParallelRunningWorkspaces must be <= ${maxAllowance}`, + ); + } + if (!Number.isInteger(settings.maxParallelRunningWorkspaces)) { + throw new ApplicationError(ErrorCodes.BAD_REQUEST, "maxParallelRunningWorkspaces must be an integer"); + } + } + if (settings.onboardingSettings) { if (settings.onboardingSettings.internalLink) { if (settings.onboardingSettings.internalLink.length > 255) { @@ -664,10 +679,7 @@ export class OrganizationService { result.defaultRole = settings.defaultRole; } if (settings.timeoutSettings) { - result.timeoutSettings = { - denyUserTimeouts: settings.timeoutSettings?.denyUserTimeouts, - inactivity: settings.timeoutSettings?.inactivity, - }; + result.timeoutSettings = settings.timeoutSettings; } if (settings.roleRestrictions) { result.roleRestrictions = settings.roleRestrictions; From d829633fd65e23bcc3f4d0925d841a3dd74a14fd Mon Sep 17 00:00:00 2001 From: Gero Posmyk-Leinemann Date: Tue, 25 Feb 2025 11:32:38 +0000 Subject: [PATCH 2/3] Org settings partial updates improvements (#20626) Tool: gitpod/catfood.gitpod.cloud --- .../data/organizations/org-settings-query.ts | 2 +- .../suggested-repositories-query.ts | 10 +- .../update-org-settings-mutation.ts | 19 +- .../dashboard/src/teams/TeamOnboarding.tsx | 4 +- .../teams/onboarding/OrgMemberAvatarInput.tsx | 2 +- .../WelcomeMessageConfigurationField.tsx | 14 +- .../teams/onboarding/WelcomeMessageEditor.tsx | 7 +- .../public-api/gitpod/v1/organization.proto | 2 +- .../public-api/go/v1/organization.pb.go | 931 +++++++++--------- .../publicapi/v1/OrganizationOuterClass.java | 482 ++++----- .../src/public-api-converter.ts | 17 +- .../src/gitpod/v1/organization_pb.ts | 6 +- .../src/api/organization-service-api.ts | 2 +- .../server/src/orgs/organization-service.ts | 65 +- 14 files changed, 816 insertions(+), 747 deletions(-) diff --git a/components/dashboard/src/data/organizations/org-settings-query.ts b/components/dashboard/src/data/organizations/org-settings-query.ts index 20ecee4ddb7e1c..67de693218ba5e 100644 --- a/components/dashboard/src/data/organizations/org-settings-query.ts +++ b/components/dashboard/src/data/organizations/org-settings-query.ts @@ -36,6 +36,6 @@ export function useOrgSettingsQuery() { ); } -function getQueryKey(organizationId?: string) { +export function getQueryKey(organizationId?: string) { return ["getOrganizationSettings", organizationId || "undefined"]; } diff --git a/components/dashboard/src/data/organizations/suggested-repositories-query.ts b/components/dashboard/src/data/organizations/suggested-repositories-query.ts index c7117f588890b0..c44e033e7d7613 100644 --- a/components/dashboard/src/data/organizations/suggested-repositories-query.ts +++ b/components/dashboard/src/data/organizations/suggested-repositories-query.ts @@ -6,11 +6,12 @@ import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useCallback } from "react"; -import { configurationClient, organizationClient } from "../../service/public-api"; +import { configurationClient } from "../../service/public-api"; import { useCurrentOrg } from "./orgs-query"; import { SuggestedRepository } from "@gitpod/public-api/lib/gitpod/v1/scm_pb"; import { PlainMessage } from "@bufbuild/protobuf"; import { Configuration } from "@gitpod/public-api/lib/gitpod/v1/configuration_pb"; +import { useOrgSettingsQuery } from "./org-settings-query"; export function useOrgRepoSuggestionsInvalidator() { const organizationId = useCurrentOrg().data?.id; @@ -27,13 +28,12 @@ export type SuggestedOrgRepository = PlainMessage & { export function useOrgSuggestedRepos() { const organizationId = useCurrentOrg().data?.id; + const orgSettings = useOrgSettingsQuery(); + const query = useQuery( getQueryKey(organizationId), async () => { - const response = await organizationClient.getOrganizationSettings({ - organizationId, - }); - const repos = response.settings?.onboardingSettings?.recommendedRepositories ?? []; + const repos = orgSettings.data?.onboardingSettings?.recommendedRepositories ?? []; const suggestions: SuggestedOrgRepository[] = []; for (const configurationId of repos) { diff --git a/components/dashboard/src/data/organizations/update-org-settings-mutation.ts b/components/dashboard/src/data/organizations/update-org-settings-mutation.ts index b015d321f4c254..7a43f1281a840b 100644 --- a/components/dashboard/src/data/organizations/update-org-settings-mutation.ts +++ b/components/dashboard/src/data/organizations/update-org-settings-mutation.ts @@ -4,8 +4,8 @@ * See License.AGPL.txt in the project root for license information. */ -import { useMutation } from "@tanstack/react-query"; -import { useOrgSettingsQueryInvalidator } from "./org-settings-query"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { getQueryKey, useOrgSettingsQueryInvalidator } from "./org-settings-query"; import { useCurrentOrg } from "./orgs-query"; import { organizationClient } from "../../service/public-api"; import { @@ -24,6 +24,8 @@ export const useUpdateOrgSettingsMutation = () => { const invalidateOrgSettings = useOrgSettingsQueryInvalidator(); const invalidateWorkspaceClasses = useOrgWorkspaceClassesQueryInvalidator(); const invalidateOrgRepoSuggestions = useOrgRepoSuggestionsInvalidator(); + + const queryClient = useQueryClient(); const organizationId = org?.id ?? ""; return useMutation({ @@ -44,13 +46,18 @@ export const useUpdateOrgSettingsMutation = () => { } } - const settings = await organizationClient.updateOrganizationSettings(update); - return settings.settings!; + const { settings } = await organizationClient.updateOrganizationSettings(update); + return settings!; }, - onSuccess: () => { - invalidateOrgSettings(); + onSuccess: (settings) => { invalidateWorkspaceClasses(); invalidateOrgRepoSuggestions(); + + if (settings) { + queryClient.setQueryData(getQueryKey(organizationId), settings); + } else { + invalidateOrgSettings(); + } }, onError: (err) => { if (!ErrorCode.isUserError((err as any)?.["code"])) { diff --git a/components/dashboard/src/teams/TeamOnboarding.tsx b/components/dashboard/src/teams/TeamOnboarding.tsx index d5c9d676774878..42d6be1ac8eaef 100644 --- a/components/dashboard/src/teams/TeamOnboarding.tsx +++ b/components/dashboard/src/teams/TeamOnboarding.tsx @@ -53,9 +53,7 @@ export default function TeamOnboardingPage() { throw new Error("no organization settings change permission"); } try { - await updateTeamSettings.mutateAsync({ - ...newSettings, - }); + await updateTeamSettings.mutateAsync(newSettings); toast("Organization settings updated"); } catch (error) { if (options?.throwMutateError) { diff --git a/components/dashboard/src/teams/onboarding/OrgMemberAvatarInput.tsx b/components/dashboard/src/teams/onboarding/OrgMemberAvatarInput.tsx index b9a712efb7cb6d..41a717e42d7cbb 100644 --- a/components/dashboard/src/teams/onboarding/OrgMemberAvatarInput.tsx +++ b/components/dashboard/src/teams/onboarding/OrgMemberAvatarInput.tsx @@ -26,7 +26,7 @@ export const OrgMemberAvatarInput = ({ settings, setFeaturedMemberId }: Props) = const handleSelectionChange = useCallback( (selectedId: string) => { const member = members?.find((m) => m.userId === selectedId); - setFeaturedMemberId(selectedId || undefined); + setFeaturedMemberId(selectedId); setAvatarUrl(member?.avatarUrl); }, [members, setFeaturedMemberId], diff --git a/components/dashboard/src/teams/onboarding/WelcomeMessageConfigurationField.tsx b/components/dashboard/src/teams/onboarding/WelcomeMessageConfigurationField.tsx index 35c02bd18afaec..278556a1411f5a 100644 --- a/components/dashboard/src/teams/onboarding/WelcomeMessageConfigurationField.tsx +++ b/components/dashboard/src/teams/onboarding/WelcomeMessageConfigurationField.tsx @@ -4,8 +4,6 @@ * See License.AGPL.txt in the project root for license information. */ -import { PlainMessage } from "@bufbuild/protobuf"; -import type { OnboardingSettings_WelcomeMessage } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { SwitchInputField } from "@podkit/switch/Switch"; import { Heading3, Subheading } from "@podkit/typography/Headings"; import { useCallback, useState } from "react"; @@ -40,20 +38,20 @@ export const WelcomeMessageConfigurationField = ({ handleUpdateTeamSettings }: P const [welcomeMessageEditorOpen, setWelcomeMessageEditorOpen] = useState(false); const handleUpdateWelcomeMessage = useCallback( - async (newSettings: PlainMessage, options?: UpdateTeamSettingsOptions) => { + async ( + newSettings: NonNullable["welcomeMessage"], + options?: UpdateTeamSettingsOptions, + ) => { await handleUpdateTeamSettings( { onboardingSettings: { - welcomeMessage: { - ...settings?.onboardingSettings?.welcomeMessage, - ...newSettings, - }, + welcomeMessage: newSettings, }, }, options, ); }, - [handleUpdateTeamSettings, settings?.onboardingSettings?.welcomeMessage], + [handleUpdateTeamSettings], ); return ( diff --git a/components/dashboard/src/teams/onboarding/WelcomeMessageEditor.tsx b/components/dashboard/src/teams/onboarding/WelcomeMessageEditor.tsx index a75f70dd02ecda..912fa079ee190a 100644 --- a/components/dashboard/src/teams/onboarding/WelcomeMessageEditor.tsx +++ b/components/dashboard/src/teams/onboarding/WelcomeMessageEditor.tsx @@ -4,7 +4,6 @@ * See License.AGPL.txt in the project root for license information. */ -import { PlainMessage } from "@bufbuild/protobuf"; import type { OnboardingSettings_WelcomeMessage } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { Button } from "@podkit/buttons/Button"; import { LoadingButton } from "@podkit/buttons/LoadingButton"; @@ -17,6 +16,7 @@ import { TextInput } from "../../components/forms/TextInputField"; import { UpdateTeamSettingsOptions } from "../TeamOnboarding"; import { OrgMemberAvatarInput } from "./OrgMemberAvatarInput"; import { gitpodWelcomeSubheading } from "./WelcomeMessageConfigurationField"; +import { UpdateOrganizationSettingsArgs } from "../../data/organizations/update-org-settings-mutation"; type Props = { settings: OnboardingSettings_WelcomeMessage | undefined; @@ -24,7 +24,7 @@ type Props = { isOwner: boolean; isOpen: boolean; handleUpdateWelcomeMessage: ( - newSettings: PlainMessage, + newSettings: NonNullable["welcomeMessage"], options?: UpdateTeamSettingsOptions, ) => Promise; setIsOpen: (isOpen: boolean) => void; @@ -49,7 +49,6 @@ export const WelcomeMessageEditorModal = ({ { message, featuredMemberId, - enabled: settings?.enabled ?? false, }, { throwMutateError: true, @@ -61,7 +60,7 @@ export const WelcomeMessageEditorModal = ({ setError(error.message); } }, - [handleUpdateWelcomeMessage, message, featuredMemberId, settings?.enabled, setIsOpen], + [handleUpdateWelcomeMessage, message, featuredMemberId, setIsOpen], ); return ( diff --git a/components/public-api/gitpod/v1/organization.proto b/components/public-api/gitpod/v1/organization.proto index aec4e6d31f34d7..048b255f9f0374 100644 --- a/components/public-api/gitpod/v1/organization.proto +++ b/components/public-api/gitpod/v1/organization.proto @@ -53,7 +53,7 @@ message RoleRestrictionEntry { message OnboardingSettings { message WelcomeMessage { // enabled specifies whether the welcome message is enabled - bool enabled = 1; + optional bool enabled = 1; // message is the welcome message for the organization optional string message = 2; diff --git a/components/public-api/go/v1/organization.pb.go b/components/public-api/go/v1/organization.pb.go index 8724ff3db2c3e5..28312652f5c4c1 100644 --- a/components/public-api/go/v1/organization.pb.go +++ b/components/public-api/go/v1/organization.pb.go @@ -2233,7 +2233,7 @@ type OnboardingSettings_WelcomeMessage struct { unknownFields protoimpl.UnknownFields // enabled specifies whether the welcome message is enabled - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Enabled *bool `protobuf:"varint,1,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"` // message is the welcome message for the organization Message *string `protobuf:"bytes,2,opt,name=message,proto3,oneof" json:"message,omitempty"` // featured_member_id is the ID of the member to show in the welcome message @@ -2277,8 +2277,8 @@ func (*OnboardingSettings_WelcomeMessage) Descriptor() ([]byte, []int) { } func (x *OnboardingSettings_WelcomeMessage) GetEnabled() bool { - if x != nil { - return x.Enabled + if x != nil && x.Enabled != nil { + return *x.Enabled } return false } @@ -2353,7 +2353,7 @@ var file_gitpod_v1_organization_proto_rawDesc = []byte{ 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x89, 0x05, 0x0a, 0x12, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x22, 0x9a, 0x05, 0x0a, 0x12, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x88, 0x01, @@ -2371,492 +2371,493 @@ var file_gitpod_v1_organization_proto_rawDesc = []byte{ 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x02, 0x52, 0x0e, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x9a, 0x02, 0x0a, 0x0e, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x23, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, - 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x02, 0x52, 0x1f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x41, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, - 0x72, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, - 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x65, 0x6c, - 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x94, 0x08, 0x0a, - 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x15, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, - 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, - 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x16, 0x70, 0x69, 0x6e, - 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, - 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x03, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4c, - 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4a, 0x0a, 0x1f, - 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, 0x61, - 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, - 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x12, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, - 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 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, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x22, - 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x1a, 0xab, 0x02, 0x0a, 0x0e, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, + 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x02, 0x52, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x23, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x1f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, + 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x26, 0x0a, 0x24, 0x5f, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, + 0x75, 0x72, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x65, + 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x94, 0x08, + 0x0a, 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x15, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, + 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x16, 0x70, 0x69, + 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x6e, + 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, + 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x03, 0x52, 0x0f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x4c, 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4a, 0x0a, + 0x1f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, 0x75, + 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, + 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x13, 0x6f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, + 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x12, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, + 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 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, 0x42, 0x1d, + 0x0a, 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, + 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, + 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, + 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x66, 0x0a, 0x19, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaa, + 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, + 0x52, 0x10, 0x64, 0x65, 0x6e, 0x79, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x22, 0xfd, 0x0b, 0x0a, 0x21, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x1a, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, + 0x0a, 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7c, 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x6e, + 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, + 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, + 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, + 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, + 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x0f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, + 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x3d, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, + 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x06, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x4a, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, - 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x66, 0x0a, 0x19, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x01, - 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, - 0x01, 0x12, 0x31, 0x0a, 0x12, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, - 0x10, 0x64, 0x65, 0x6e, 0x79, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x22, 0xfd, 0x0b, 0x0a, 0x21, 0x55, + 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, + 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x13, 0x6f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x08, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x35, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, + 0x52, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x0a, 0x52, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x65, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, + 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 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, 0x42, 0x1d, + 0x0a, 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x20, 0x0a, 0x1e, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, + 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, + 0x65, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x49, + 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x1a, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, - 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, - 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, 0x0a, - 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7c, 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x6e, 0x65, - 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x1a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, - 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x0f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x3d, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, - 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x06, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4a, - 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x50, 0x61, - 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x13, 0x6f, 0x6e, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x08, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x35, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, - 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x0a, 0x52, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, - 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 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, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, - 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x20, 0x0a, 0x1e, 0x5f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, - 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, - 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x22, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x49, 0x0a, - 0x1e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2f, 0x0a, 0x19, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2f, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, - 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0xda, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x05, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, - 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, - 0x09, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0x99, 0x01, 0x0a, - 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1c, - 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x20, - 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xda, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x05, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, + 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0d, + 0x0a, 0x09, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0x99, 0x01, + 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, 0x19, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, + 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, + 0x20, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x21, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x17, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x21, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, - 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x17, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x22, 0x52, 0x65, 0x73, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x22, 0x52, 0x65, 0x73, 0x65, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x23, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x99, + 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x23, 0x52, 0x65, 0x73, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, - 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x01, - 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x22, + 0x59, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x1f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, - 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x1f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x22, - 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2a, 0x94, 0x01, 0x0a, 0x10, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x47, 0x41, 0x4e, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x52, - 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, - 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x47, 0x41, 0x4e, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x4d, - 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, - 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x74, 0x0a, 0x16, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x31, 0x0a, 0x2d, - 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, - 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x52, - 0x42, 0x49, 0x54, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x10, 0x01, 0x32, - 0xbe, 0x0c, 0x0a, 0x13, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, + 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2a, 0x94, 0x01, 0x0a, 0x10, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x47, 0x41, + 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, + 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, + 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x47, 0x41, + 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x45, + 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, + 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, + 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x74, 0x0a, 0x16, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x31, 0x0a, + 0x2d, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, + 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, + 0x52, 0x42, 0x49, 0x54, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x10, 0x01, + 0x32, 0xbe, 0x0c, 0x0a, 0x13, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x63, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, - 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, - 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, - 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x2e, 0x67, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x12, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x63, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x5d, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, + 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x75, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, + 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, - 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, - 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x5a, 0x37, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, + 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java index ee4da1b2ddc732..dee8afce5aeabf 100644 --- a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java +++ b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java @@ -3709,7 +3709,16 @@ public interface WelcomeMessageOrBuilder extends * enabled specifies whether the welcome message is enabled * * - * bool enabled = 1 [json_name = "enabled"]; + * optional bool enabled = 1 [json_name = "enabled"]; + * @return Whether the enabled field is set. + */ + boolean hasEnabled(); + /** + *
+       * enabled specifies whether the welcome message is enabled
+       * 
+ * + * optional bool enabled = 1 [json_name = "enabled"]; * @return The enabled. */ boolean getEnabled(); @@ -3855,7 +3864,19 @@ private WelcomeMessage() { * enabled specifies whether the welcome message is enabled * * - * bool enabled = 1 [json_name = "enabled"]; + * optional bool enabled = 1 [json_name = "enabled"]; + * @return Whether the enabled field is set. + */ + @java.lang.Override + public boolean hasEnabled() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+       * enabled specifies whether the welcome message is enabled
+       * 
+ * + * optional bool enabled = 1 [json_name = "enabled"]; * @return The enabled. */ @java.lang.Override @@ -3876,7 +3897,7 @@ public boolean getEnabled() { */ @java.lang.Override public boolean hasMessage() { - return ((bitField0_ & 0x00000001) != 0); + return ((bitField0_ & 0x00000002) != 0); } /** *
@@ -3935,7 +3956,7 @@ public java.lang.String getMessage() {
        */
       @java.lang.Override
       public boolean hasFeaturedMemberId() {
-        return ((bitField0_ & 0x00000002) != 0);
+        return ((bitField0_ & 0x00000004) != 0);
       }
       /**
        * 
@@ -3996,7 +4017,7 @@ public java.lang.String getFeaturedMemberId() {
        */
       @java.lang.Override
       public boolean hasFeaturedMemberResolvedAvatarUrl() {
-        return ((bitField0_ & 0x00000004) != 0);
+        return ((bitField0_ & 0x00000008) != 0);
       }
       /**
        * 
@@ -4060,16 +4081,16 @@ public final boolean isInitialized() {
       @java.lang.Override
       public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
-        if (enabled_ != false) {
+        if (((bitField0_ & 0x00000001) != 0)) {
           output.writeBool(1, enabled_);
         }
-        if (((bitField0_ & 0x00000001) != 0)) {
+        if (((bitField0_ & 0x00000002) != 0)) {
           com.google.protobuf.GeneratedMessage.writeString(output, 2, message_);
         }
-        if (((bitField0_ & 0x00000002) != 0)) {
+        if (((bitField0_ & 0x00000004) != 0)) {
           com.google.protobuf.GeneratedMessage.writeString(output, 4, featuredMemberId_);
         }
-        if (((bitField0_ & 0x00000004) != 0)) {
+        if (((bitField0_ & 0x00000008) != 0)) {
           com.google.protobuf.GeneratedMessage.writeString(output, 5, featuredMemberResolvedAvatarUrl_);
         }
         getUnknownFields().writeTo(output);
@@ -4081,17 +4102,17 @@ public int getSerializedSize() {
         if (size != -1) return size;
 
         size = 0;
-        if (enabled_ != false) {
+        if (((bitField0_ & 0x00000001) != 0)) {
           size += com.google.protobuf.CodedOutputStream
             .computeBoolSize(1, enabled_);
         }
-        if (((bitField0_ & 0x00000001) != 0)) {
+        if (((bitField0_ & 0x00000002) != 0)) {
           size += com.google.protobuf.GeneratedMessage.computeStringSize(2, message_);
         }
-        if (((bitField0_ & 0x00000002) != 0)) {
+        if (((bitField0_ & 0x00000004) != 0)) {
           size += com.google.protobuf.GeneratedMessage.computeStringSize(4, featuredMemberId_);
         }
-        if (((bitField0_ & 0x00000004) != 0)) {
+        if (((bitField0_ & 0x00000008) != 0)) {
           size += com.google.protobuf.GeneratedMessage.computeStringSize(5, featuredMemberResolvedAvatarUrl_);
         }
         size += getUnknownFields().getSerializedSize();
@@ -4109,8 +4130,11 @@ public boolean equals(final java.lang.Object obj) {
         }
         io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.WelcomeMessage other = (io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.WelcomeMessage) obj;
 
-        if (getEnabled()
-            != other.getEnabled()) return false;
+        if (hasEnabled() != other.hasEnabled()) return false;
+        if (hasEnabled()) {
+          if (getEnabled()
+              != other.getEnabled()) return false;
+        }
         if (hasMessage() != other.hasMessage()) return false;
         if (hasMessage()) {
           if (!getMessage()
@@ -4137,9 +4161,11 @@ public int hashCode() {
         }
         int hash = 41;
         hash = (19 * hash) + getDescriptor().hashCode();
-        hash = (37 * hash) + ENABLED_FIELD_NUMBER;
-        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-            getEnabled());
+        if (hasEnabled()) {
+          hash = (37 * hash) + ENABLED_FIELD_NUMBER;
+          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+              getEnabled());
+        }
         if (hasMessage()) {
           hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
           hash = (53 * hash) + getMessage().hashCode();
@@ -4320,21 +4346,22 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.WelcomeM
 
         private void buildPartial0(io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.WelcomeMessage result) {
           int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
           if (((from_bitField0_ & 0x00000001) != 0)) {
             result.enabled_ = enabled_;
+            to_bitField0_ |= 0x00000001;
           }
-          int to_bitField0_ = 0;
           if (((from_bitField0_ & 0x00000002) != 0)) {
             result.message_ = message_;
-            to_bitField0_ |= 0x00000001;
+            to_bitField0_ |= 0x00000002;
           }
           if (((from_bitField0_ & 0x00000004) != 0)) {
             result.featuredMemberId_ = featuredMemberId_;
-            to_bitField0_ |= 0x00000002;
+            to_bitField0_ |= 0x00000004;
           }
           if (((from_bitField0_ & 0x00000008) != 0)) {
             result.featuredMemberResolvedAvatarUrl_ = featuredMemberResolvedAvatarUrl_;
-            to_bitField0_ |= 0x00000004;
+            to_bitField0_ |= 0x00000008;
           }
           result.bitField0_ |= to_bitField0_;
         }
@@ -4351,7 +4378,7 @@ public Builder mergeFrom(com.google.protobuf.Message other) {
 
         public Builder mergeFrom(io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.WelcomeMessage other) {
           if (other == io.gitpod.publicapi.v1.OrganizationOuterClass.OnboardingSettings.WelcomeMessage.getDefaultInstance()) return this;
-          if (other.getEnabled() != false) {
+          if (other.hasEnabled()) {
             setEnabled(other.getEnabled());
           }
           if (other.hasMessage()) {
@@ -4438,7 +4465,19 @@ public Builder mergeFrom(
          * enabled specifies whether the welcome message is enabled
          * 
* - * bool enabled = 1 [json_name = "enabled"]; + * optional bool enabled = 1 [json_name = "enabled"]; + * @return Whether the enabled field is set. + */ + @java.lang.Override + public boolean hasEnabled() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+         * enabled specifies whether the welcome message is enabled
+         * 
+ * + * optional bool enabled = 1 [json_name = "enabled"]; * @return The enabled. */ @java.lang.Override @@ -4450,7 +4489,7 @@ public boolean getEnabled() { * enabled specifies whether the welcome message is enabled *
* - * bool enabled = 1 [json_name = "enabled"]; + * optional bool enabled = 1 [json_name = "enabled"]; * @param value The enabled to set. * @return This builder for chaining. */ @@ -4466,7 +4505,7 @@ public Builder setEnabled(boolean value) { * enabled specifies whether the welcome message is enabled *
* - * bool enabled = 1 [json_name = "enabled"]; + * optional bool enabled = 1 [json_name = "enabled"]; * @return This builder for chaining. */ public Builder clearEnabled() { @@ -31516,208 +31555,209 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.DeleteOrganizationMemberRes "leRestrictionEntry\022/\n\004role\030\001 \001(\0162\033.gitpo" + "d.v1.OrganizationRoleR\004role\022C\n\013permissio" + "ns\030\002 \003(\0162!.gitpod.v1.OrganizationPermiss" + - "ionR\013permissions\"\211\005\n\022OnboardingSettings\022" + + "ionR\013permissions\"\232\005\n\022OnboardingSettings\022" + "(\n\rinternal_link\030\001 \001(\tH\000R\014internalLink\210\001" + "\001\0229\n\030recommended_repositories\030\002 \003(\tR\027rec" + "ommendedRepositories\022K\n\037update_recommend" + "ed_repositories\030\003 \001(\010H\001R\035updateRecommend" + "edRepositories\210\001\001\022Z\n\017welcome_message\030\004 \001" + "(\0132,.gitpod.v1.OnboardingSettings.Welcom" + - "eMessageH\002R\016welcomeMessage\210\001\001\032\232\002\n\016Welcom" + - "eMessage\022\030\n\007enabled\030\001 \001(\010R\007enabled\022\035\n\007me" + - "ssage\030\002 \001(\tH\000R\007message\210\001\001\0221\n\022featured_me" + - "mber_id\030\004 \001(\tH\001R\020featuredMemberId\210\001\001\022Q\n#" + - "featured_member_resolved_avatar_url\030\005 \001(" + - "\tH\002R\037featuredMemberResolvedAvatarUrl\210\001\001B" + - "\n\n\010_messageB\025\n\023_featured_member_idB&\n$_f" + - "eatured_member_resolved_avatar_urlB\020\n\016_i" + - "nternal_linkB\"\n _update_recommended_repo" + - "sitoriesB\022\n\020_welcome_message\"\224\010\n\024Organiz" + - "ationSettings\022A\n\032workspace_sharing_disab" + - "led\030\001 \001(\010H\000R\030workspaceSharingDisabled\210\001\001" + - "\022;\n\027default_workspace_image\030\002 \001(\tH\001R\025def" + - "aultWorkspaceImage\210\001\001\022:\n\031allowed_workspa" + - "ce_classes\030\003 \003(\tR\027allowedWorkspaceClasse" + - "s\0226\n\027restricted_editor_names\030\004 \003(\tR\025rest" + - "rictedEditorNames\022o\n\026pinned_editor_versi" + - "ons\030\005 \003(\01329.gitpod.v1.OrganizationSettin" + - "gs.PinnedEditorVersionsEntryR\024pinnedEdit" + - "orVersions\022&\n\014default_role\030\006 \001(\tH\002R\013defa" + - "ultRole\210\001\001\022J\n\020timeout_settings\030\007 \001(\0132\032.g" + - "itpod.v1.TimeoutSettingsH\003R\017timeoutSetti" + - "ngs\210\001\001\022L\n\021role_restrictions\030\010 \003(\0132\037.gitp" + - "od.v1.RoleRestrictionEntryR\020roleRestrict" + - "ions\022J\n\037max_parallel_running_workspaces\030" + - "\t \001(\005H\004R\034maxParallelRunningWorkspaces\210\001\001" + - "\022S\n\023onboarding_settings\030\n \001(\0132\035.gitpod.v" + - "1.OnboardingSettingsH\005R\022onboardingSettin" + - "gs\210\001\001\0225\n\024annotate_git_commits\030\013 \001(\010H\006R\022a" + - "nnotateGitCommits\210\001\001\032G\n\031PinnedEditorVers" + - "ionsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001" + - "(\tR\005value:\0028\001B\035\n\033_workspace_sharing_disa" + - "bledB\032\n\030_default_workspace_imageB\017\n\r_def" + - "ault_roleB\023\n\021_timeout_settingsB\"\n _max_p" + - "arallel_running_workspacesB\026\n\024_onboardin" + - "g_settingsB\027\n\025_annotate_git_commits\"\220\001\n\'" + - "ListOrganizationWorkspaceClassesRequest\022" + - "<\n\npagination\030\001 \001(\0132\034.gitpod.v1.Paginati" + - "onRequestR\npagination\022\'\n\017organization_id" + - "\030\002 \001(\tR\016organizationId\"\261\001\n(ListOrganizat" + - "ionWorkspaceClassesResponse\022=\n\npaginatio" + - "n\030\001 \001(\0132\035.gitpod.v1.PaginationResponseR\n" + - "pagination\022F\n\021workspace_classes\030\002 \003(\0132\031." + - "gitpod.v1.WorkspaceClassR\020workspaceClass" + - "es\"f\n\031UpdateOrganizationRequest\022\'\n\017organ" + - "ization_id\030\001 \001(\tR\016organizationId\022\027\n\004name" + - "\030\002 \001(\tH\000R\004name\210\001\001B\007\n\005_name\"Y\n\032UpdateOrga" + - "nizationResponse\022;\n\014organization\030\001 \001(\0132\027" + - ".gitpod.v1.OrganizationR\014organization\"\252\001" + - "\n\017TimeoutSettings\022>\n\ninactivity\030\001 \001(\0132\031." + - "google.protobuf.DurationH\000R\ninactivity\210\001" + - "\001\0221\n\022deny_user_timeouts\030\002 \001(\010H\001R\020denyUse" + - "rTimeouts\210\001\001B\r\n\013_inactivityB\025\n\023_deny_use" + - "r_timeouts\"\375\013\n!UpdateOrganizationSetting" + - "sRequest\022\'\n\017organization_id\030\001 \001(\tR\016organ" + - "izationId\022A\n\032workspace_sharing_disabled\030" + - "\003 \001(\010H\000R\030workspaceSharingDisabled\210\001\001\022;\n\027" + - "default_workspace_image\030\004 \001(\tH\001R\025default" + - "WorkspaceImage\210\001\001\022:\n\031allowed_workspace_c" + - "lasses\030\005 \003(\tR\027allowedWorkspaceClasses\0226\n" + - "\027restricted_editor_names\030\006 \003(\tR\025restrict" + - "edEditorNames\022H\n\036update_restricted_edito" + - "r_names\030\007 \001(\010H\002R\033updateRestrictedEditorN" + - "ames\210\001\001\022|\n\026pinned_editor_versions\030\010 \003(\0132" + - "F.gitpod.v1.UpdateOrganizationSettingsRe" + - "quest.PinnedEditorVersionsEntryR\024pinnedE" + - "ditorVersions\022F\n\035update_pinned_editor_ve" + - "rsions\030\t \001(\010H\003R\032updatePinnedEditorVersio" + - "ns\210\001\001\022&\n\014default_role\030\n \001(\tH\004R\013defaultRo" + - "le\210\001\001\022J\n\020timeout_settings\030\013 \001(\0132\032.gitpod" + - ".v1.TimeoutSettingsH\005R\017timeoutSettings\210\001" + - "\001\022L\n\021role_restrictions\030\014 \003(\0132\037.gitpod.v1" + - ".RoleRestrictionEntryR\020roleRestrictions\022" + - "=\n\030update_role_restrictions\030\r \001(\010H\006R\026upd" + - "ateRoleRestrictions\210\001\001\022J\n\037max_parallel_r" + - "unning_workspaces\030\017 \001(\005H\007R\034maxParallelRu" + - "nningWorkspaces\210\001\001\022S\n\023onboarding_setting" + - "s\030\020 \001(\0132\035.gitpod.v1.OnboardingSettingsH\010" + - "R\022onboardingSettings\210\001\001\0225\n\024annotate_git_" + - "commits\030\021 \001(\010H\tR\022annotateGitCommits\210\001\001\022L" + - "\n update_allowed_workspace_classes\030\022 \001(\010" + - "H\nR\035updateAllowedWorkspaceClasses\210\001\001\032G\n\031" + - "PinnedEditorVersionsEntry\022\020\n\003key\030\001 \001(\tR\003" + - "key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001B\035\n\033_worksp" + - "ace_sharing_disabledB\032\n\030_default_workspa" + - "ce_imageB!\n\037_update_restricted_editor_na" + - "mesB \n\036_update_pinned_editor_versionsB\017\n" + - "\r_default_roleB\023\n\021_timeout_settingsB\033\n\031_" + - "update_role_restrictionsB\"\n _max_paralle" + - "l_running_workspacesB\026\n\024_onboarding_sett" + - "ingsB\027\n\025_annotate_git_commitsB#\n!_update" + - "_allowed_workspace_classes\"a\n\"UpdateOrga" + - "nizationSettingsResponse\022;\n\010settings\030\001 \001" + - "(\0132\037.gitpod.v1.OrganizationSettingsR\010set" + - "tings\"I\n\036GetOrganizationSettingsRequest\022" + + "eMessageH\002R\016welcomeMessage\210\001\001\032\253\002\n\016Welcom" + + "eMessage\022\035\n\007enabled\030\001 \001(\010H\000R\007enabled\210\001\001\022" + + "\035\n\007message\030\002 \001(\tH\001R\007message\210\001\001\0221\n\022featur" + + "ed_member_id\030\004 \001(\tH\002R\020featuredMemberId\210\001" + + "\001\022Q\n#featured_member_resolved_avatar_url" + + "\030\005 \001(\tH\003R\037featuredMemberResolvedAvatarUr" + + "l\210\001\001B\n\n\010_enabledB\n\n\010_messageB\025\n\023_feature" + + "d_member_idB&\n$_featured_member_resolved" + + "_avatar_urlB\020\n\016_internal_linkB\"\n _update" + + "_recommended_repositoriesB\022\n\020_welcome_me" + + "ssage\"\224\010\n\024OrganizationSettings\022A\n\032worksp" + + "ace_sharing_disabled\030\001 \001(\010H\000R\030workspaceS" + + "haringDisabled\210\001\001\022;\n\027default_workspace_i" + + "mage\030\002 \001(\tH\001R\025defaultWorkspaceImage\210\001\001\022:" + + "\n\031allowed_workspace_classes\030\003 \003(\tR\027allow" + + "edWorkspaceClasses\0226\n\027restricted_editor_" + + "names\030\004 \003(\tR\025restrictedEditorNames\022o\n\026pi" + + "nned_editor_versions\030\005 \003(\01329.gitpod.v1.O" + + "rganizationSettings.PinnedEditorVersions" + + "EntryR\024pinnedEditorVersions\022&\n\014default_r" + + "ole\030\006 \001(\tH\002R\013defaultRole\210\001\001\022J\n\020timeout_s" + + "ettings\030\007 \001(\0132\032.gitpod.v1.TimeoutSetting" + + "sH\003R\017timeoutSettings\210\001\001\022L\n\021role_restrict" + + "ions\030\010 \003(\0132\037.gitpod.v1.RoleRestrictionEn" + + "tryR\020roleRestrictions\022J\n\037max_parallel_ru" + + "nning_workspaces\030\t \001(\005H\004R\034maxParallelRun" + + "ningWorkspaces\210\001\001\022S\n\023onboarding_settings" + + "\030\n \001(\0132\035.gitpod.v1.OnboardingSettingsH\005R" + + "\022onboardingSettings\210\001\001\0225\n\024annotate_git_c" + + "ommits\030\013 \001(\010H\006R\022annotateGitCommits\210\001\001\032G\n" + + "\031PinnedEditorVersionsEntry\022\020\n\003key\030\001 \001(\tR" + + "\003key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001B\035\n\033_works" + + "pace_sharing_disabledB\032\n\030_default_worksp" + + "ace_imageB\017\n\r_default_roleB\023\n\021_timeout_s" + + "ettingsB\"\n _max_parallel_running_workspa" + + "cesB\026\n\024_onboarding_settingsB\027\n\025_annotate" + + "_git_commits\"\220\001\n\'ListOrganizationWorkspa" + + "ceClassesRequest\022<\n\npagination\030\001 \001(\0132\034.g" + + "itpod.v1.PaginationRequestR\npagination\022\'" + + "\n\017organization_id\030\002 \001(\tR\016organizationId\"" + + "\261\001\n(ListOrganizationWorkspaceClassesResp" + + "onse\022=\n\npagination\030\001 \001(\0132\035.gitpod.v1.Pag" + + "inationResponseR\npagination\022F\n\021workspace" + + "_classes\030\002 \003(\0132\031.gitpod.v1.WorkspaceClas" + + "sR\020workspaceClasses\"f\n\031UpdateOrganizatio" + + "nRequest\022\'\n\017organization_id\030\001 \001(\tR\016organ" + + "izationId\022\027\n\004name\030\002 \001(\tH\000R\004name\210\001\001B\007\n\005_n" + + "ame\"Y\n\032UpdateOrganizationResponse\022;\n\014org" + + "anization\030\001 \001(\0132\027.gitpod.v1.Organization" + + "R\014organization\"\252\001\n\017TimeoutSettings\022>\n\nin" + + "activity\030\001 \001(\0132\031.google.protobuf.Duratio" + + "nH\000R\ninactivity\210\001\001\0221\n\022deny_user_timeouts" + + "\030\002 \001(\010H\001R\020denyUserTimeouts\210\001\001B\r\n\013_inacti" + + "vityB\025\n\023_deny_user_timeouts\"\375\013\n!UpdateOr" + + "ganizationSettingsRequest\022\'\n\017organizatio" + + "n_id\030\001 \001(\tR\016organizationId\022A\n\032workspace_" + + "sharing_disabled\030\003 \001(\010H\000R\030workspaceShari" + + "ngDisabled\210\001\001\022;\n\027default_workspace_image" + + "\030\004 \001(\tH\001R\025defaultWorkspaceImage\210\001\001\022:\n\031al" + + "lowed_workspace_classes\030\005 \003(\tR\027allowedWo" + + "rkspaceClasses\0226\n\027restricted_editor_name" + + "s\030\006 \003(\tR\025restrictedEditorNames\022H\n\036update" + + "_restricted_editor_names\030\007 \001(\010H\002R\033update" + + "RestrictedEditorNames\210\001\001\022|\n\026pinned_edito" + + "r_versions\030\010 \003(\0132F.gitpod.v1.UpdateOrgan" + + "izationSettingsRequest.PinnedEditorVersi" + + "onsEntryR\024pinnedEditorVersions\022F\n\035update" + + "_pinned_editor_versions\030\t \001(\010H\003R\032updateP" + + "innedEditorVersions\210\001\001\022&\n\014default_role\030\n" + + " \001(\tH\004R\013defaultRole\210\001\001\022J\n\020timeout_settin" + + "gs\030\013 \001(\0132\032.gitpod.v1.TimeoutSettingsH\005R\017" + + "timeoutSettings\210\001\001\022L\n\021role_restrictions\030" + + "\014 \003(\0132\037.gitpod.v1.RoleRestrictionEntryR\020" + + "roleRestrictions\022=\n\030update_role_restrict" + + "ions\030\r \001(\010H\006R\026updateRoleRestrictions\210\001\001\022" + + "J\n\037max_parallel_running_workspaces\030\017 \001(\005" + + "H\007R\034maxParallelRunningWorkspaces\210\001\001\022S\n\023o" + + "nboarding_settings\030\020 \001(\0132\035.gitpod.v1.Onb" + + "oardingSettingsH\010R\022onboardingSettings\210\001\001" + + "\0225\n\024annotate_git_commits\030\021 \001(\010H\tR\022annota" + + "teGitCommits\210\001\001\022L\n update_allowed_worksp" + + "ace_classes\030\022 \001(\010H\nR\035updateAllowedWorksp" + + "aceClasses\210\001\001\032G\n\031PinnedEditorVersionsEnt" + + "ry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005val" + + "ue:\0028\001B\035\n\033_workspace_sharing_disabledB\032\n" + + "\030_default_workspace_imageB!\n\037_update_res" + + "tricted_editor_namesB \n\036_update_pinned_e" + + "ditor_versionsB\017\n\r_default_roleB\023\n\021_time" + + "out_settingsB\033\n\031_update_role_restriction" + + "sB\"\n _max_parallel_running_workspacesB\026\n" + + "\024_onboarding_settingsB\027\n\025_annotate_git_c" + + "ommitsB#\n!_update_allowed_workspace_clas" + + "ses\"a\n\"UpdateOrganizationSettingsRespons" + + "e\022;\n\010settings\030\001 \001(\0132\037.gitpod.v1.Organiza" + + "tionSettingsR\010settings\"I\n\036GetOrganizatio" + + "nSettingsRequest\022\'\n\017organization_id\030\001 \001(" + + "\tR\016organizationId\"^\n\037GetOrganizationSett" + + "ingsResponse\022;\n\010settings\030\001 \001(\0132\037.gitpod." + + "v1.OrganizationSettingsR\010settings\"/\n\031Cre" + + "ateOrganizationRequest\022\022\n\004name\030\001 \001(\tR\004na" + + "me\"Y\n\032CreateOrganizationResponse\022;\n\014orga" + + "nization\030\001 \001(\0132\027.gitpod.v1.OrganizationR" + + "\014organization\"A\n\026GetOrganizationRequest\022" + + "\'\n\017organization_id\030\001 \001(\tR\016organizationId" + + "\"V\n\027GetOrganizationResponse\022;\n\014organizat" + + "ion\030\001 \001(\0132\027.gitpod.v1.OrganizationR\014orga" + + "nization\"\332\001\n\030ListOrganizationsRequest\022<\n" + + "\npagination\030\001 \001(\0132\034.gitpod.v1.Pagination" + + "RequestR\npagination\022?\n\005scope\030\002 \001(\0162).git" + + "pod.v1.ListOrganizationsRequest.ScopeR\005s" + + "cope\"?\n\005Scope\022\025\n\021SCOPE_UNSPECIFIED\020\000\022\020\n\014" + + "SCOPE_MEMBER\020\001\022\r\n\tSCOPE_ALL\020\002\"\231\001\n\031ListOr" + + "ganizationsResponse\022=\n\rorganizations\030\001 \003" + + "(\0132\027.gitpod.v1.OrganizationR\rorganizatio" + + "ns\022=\n\npagination\030\002 \001(\0132\035.gitpod.v1.Pagin" + + "ationResponseR\npagination\"D\n\031DeleteOrgan" + + "izationRequest\022\'\n\017organization_id\030\001 \001(\tR" + + "\016organizationId\"\034\n\032DeleteOrganizationRes" + + "ponse\"K\n GetOrganizationInvitationReques" + + "t\022\'\n\017organization_id\030\001 \001(\tR\016organization" + + "Id\"H\n!GetOrganizationInvitationResponse\022" + + "#\n\rinvitation_id\030\001 \001(\tR\014invitationId\">\n\027" + + "JoinOrganizationRequest\022#\n\rinvitation_id" + + "\030\001 \001(\tR\014invitationId\"C\n\030JoinOrganization" + + "Response\022\'\n\017organization_id\030\001 \001(\tR\016organ" + + "izationId\"M\n\"ResetOrganizationInvitation" + + "Request\022\'\n\017organization_id\030\001 \001(\tR\016organi" + + "zationId\"J\n#ResetOrganizationInvitationR" + + "esponse\022#\n\rinvitation_id\030\001 \001(\tR\014invitati" + + "onId\"\207\001\n\036ListOrganizationMembersRequest\022" + "\'\n\017organization_id\030\001 \001(\tR\016organizationId" + - "\"^\n\037GetOrganizationSettingsResponse\022;\n\010s" + - "ettings\030\001 \001(\0132\037.gitpod.v1.OrganizationSe" + - "ttingsR\010settings\"/\n\031CreateOrganizationRe" + - "quest\022\022\n\004name\030\001 \001(\tR\004name\"Y\n\032CreateOrgan" + - "izationResponse\022;\n\014organization\030\001 \001(\0132\027." + - "gitpod.v1.OrganizationR\014organization\"A\n\026" + - "GetOrganizationRequest\022\'\n\017organization_i" + - "d\030\001 \001(\tR\016organizationId\"V\n\027GetOrganizati" + - "onResponse\022;\n\014organization\030\001 \001(\0132\027.gitpo" + - "d.v1.OrganizationR\014organization\"\332\001\n\030List" + - "OrganizationsRequest\022<\n\npagination\030\001 \001(\013" + - "2\034.gitpod.v1.PaginationRequestR\npaginati" + - "on\022?\n\005scope\030\002 \001(\0162).gitpod.v1.ListOrgani" + - "zationsRequest.ScopeR\005scope\"?\n\005Scope\022\025\n\021" + - "SCOPE_UNSPECIFIED\020\000\022\020\n\014SCOPE_MEMBER\020\001\022\r\n" + - "\tSCOPE_ALL\020\002\"\231\001\n\031ListOrganizationsRespon" + - "se\022=\n\rorganizations\030\001 \003(\0132\027.gitpod.v1.Or" + - "ganizationR\rorganizations\022=\n\npagination\030" + - "\002 \001(\0132\035.gitpod.v1.PaginationResponseR\npa" + - "gination\"D\n\031DeleteOrganizationRequest\022\'\n" + - "\017organization_id\030\001 \001(\tR\016organizationId\"\034" + - "\n\032DeleteOrganizationResponse\"K\n GetOrgan" + - "izationInvitationRequest\022\'\n\017organization" + - "_id\030\001 \001(\tR\016organizationId\"H\n!GetOrganiza" + - "tionInvitationResponse\022#\n\rinvitation_id\030" + - "\001 \001(\tR\014invitationId\">\n\027JoinOrganizationR" + - "equest\022#\n\rinvitation_id\030\001 \001(\tR\014invitatio" + - "nId\"C\n\030JoinOrganizationResponse\022\'\n\017organ" + - "ization_id\030\001 \001(\tR\016organizationId\"M\n\"Rese" + - "tOrganizationInvitationRequest\022\'\n\017organi" + - "zation_id\030\001 \001(\tR\016organizationId\"J\n#Reset" + - "OrganizationInvitationResponse\022#\n\rinvita" + - "tion_id\030\001 \001(\tR\014invitationId\"\207\001\n\036ListOrga" + - "nizationMembersRequest\022\'\n\017organization_i" + - "d\030\001 \001(\tR\016organizationId\022<\n\npagination\030\002 " + - "\001(\0132\034.gitpod.v1.PaginationRequestR\npagin" + - "ation\"\231\001\n\037ListOrganizationMembersRespons" + - "e\0227\n\007members\030\001 \003(\0132\035.gitpod.v1.Organizat" + - "ionMemberR\007members\022=\n\npagination\030\002 \001(\0132\035" + - ".gitpod.v1.PaginationResponseR\npaginatio" + - "n\"\242\001\n\037UpdateOrganizationMemberRequest\022\'\n" + - "\017organization_id\030\001 \001(\tR\016organizationId\022\027" + - "\n\007user_id\030\002 \001(\tR\006userId\0224\n\004role\030\003 \001(\0162\033." + - "gitpod.v1.OrganizationRoleH\000R\004role\210\001\001B\007\n" + - "\005_role\"Y\n UpdateOrganizationMemberRespon" + - "se\0225\n\006member\030\001 \001(\0132\035.gitpod.v1.Organizat" + - "ionMemberR\006member\"c\n\037DeleteOrganizationM" + - "emberRequest\022\'\n\017organization_id\030\001 \001(\tR\016o" + - "rganizationId\022\027\n\007user_id\030\002 \001(\tR\006userId\"\"" + - "\n DeleteOrganizationMemberResponse*\224\001\n\020O" + - "rganizationRole\022!\n\035ORGANIZATION_ROLE_UNS" + - "PECIFIED\020\000\022\033\n\027ORGANIZATION_ROLE_OWNER\020\001\022" + - "\034\n\030ORGANIZATION_ROLE_MEMBER\020\002\022\"\n\036ORGANIZ" + - "ATION_ROLE_COLLABORATOR\020\003*t\n\026Organizatio" + - "nPermission\022\'\n#ORGANIZATION_PERMISSION_U" + - "NSPECIFIED\020\000\0221\n-ORGANIZATION_PERMISSION_" + - "START_ARBITRARY_REPOS\020\0012\276\014\n\023Organization" + - "Service\022c\n\022CreateOrganization\022$.gitpod.v" + - "1.CreateOrganizationRequest\032%.gitpod.v1." + - "CreateOrganizationResponse\"\000\022Z\n\017GetOrgan" + - "ization\022!.gitpod.v1.GetOrganizationReque" + - "st\032\".gitpod.v1.GetOrganizationResponse\"\000" + - "\022c\n\022UpdateOrganization\022$.gitpod.v1.Updat" + - "eOrganizationRequest\032%.gitpod.v1.UpdateO" + - "rganizationResponse\"\000\022`\n\021ListOrganizatio" + - "ns\022#.gitpod.v1.ListOrganizationsRequest\032" + - "$.gitpod.v1.ListOrganizationsResponse\"\000\022" + - "c\n\022DeleteOrganization\022$.gitpod.v1.Delete" + - "OrganizationRequest\032%.gitpod.v1.DeleteOr" + - "ganizationResponse\"\000\022x\n\031GetOrganizationI" + - "nvitation\022+.gitpod.v1.GetOrganizationInv" + - "itationRequest\032,.gitpod.v1.GetOrganizati" + - "onInvitationResponse\"\000\022]\n\020JoinOrganizati" + - "on\022\".gitpod.v1.JoinOrganizationRequest\032#" + - ".gitpod.v1.JoinOrganizationResponse\"\000\022~\n" + - "\033ResetOrganizationInvitation\022-.gitpod.v1" + - ".ResetOrganizationInvitationRequest\032..gi" + - "tpod.v1.ResetOrganizationInvitationRespo" + - "nse\"\000\022r\n\027ListOrganizationMembers\022).gitpo" + - "d.v1.ListOrganizationMembersRequest\032*.gi" + - "tpod.v1.ListOrganizationMembersResponse\"" + - "\000\022u\n\030UpdateOrganizationMember\022*.gitpod.v" + - "1.UpdateOrganizationMemberRequest\032+.gitp" + - "od.v1.UpdateOrganizationMemberResponse\"\000" + - "\022u\n\030DeleteOrganizationMember\022*.gitpod.v1" + - ".DeleteOrganizationMemberRequest\032+.gitpo" + - "d.v1.DeleteOrganizationMemberResponse\"\000\022" + - "r\n\027GetOrganizationSettings\022).gitpod.v1.G" + - "etOrganizationSettingsRequest\032*.gitpod.v" + - "1.GetOrganizationSettingsResponse\"\000\022{\n\032U" + - "pdateOrganizationSettings\022,.gitpod.v1.Up" + - "dateOrganizationSettingsRequest\032-.gitpod" + - ".v1.UpdateOrganizationSettingsResponse\"\000" + - "\022\215\001\n ListOrganizationWorkspaceClasses\0222." + - "gitpod.v1.ListOrganizationWorkspaceClass" + - "esRequest\0323.gitpod.v1.ListOrganizationWo" + - "rkspaceClassesResponse\"\000BQ\n\026io.gitpod.pu" + - "blicapi.v1Z7github.com/gitpod-io/gitpod/" + - "components/public-api/go/v1b\006proto3" + "\022<\n\npagination\030\002 \001(\0132\034.gitpod.v1.Paginat" + + "ionRequestR\npagination\"\231\001\n\037ListOrganizat" + + "ionMembersResponse\0227\n\007members\030\001 \003(\0132\035.gi" + + "tpod.v1.OrganizationMemberR\007members\022=\n\np" + + "agination\030\002 \001(\0132\035.gitpod.v1.PaginationRe" + + "sponseR\npagination\"\242\001\n\037UpdateOrganizatio" + + "nMemberRequest\022\'\n\017organization_id\030\001 \001(\tR" + + "\016organizationId\022\027\n\007user_id\030\002 \001(\tR\006userId" + + "\0224\n\004role\030\003 \001(\0162\033.gitpod.v1.OrganizationR" + + "oleH\000R\004role\210\001\001B\007\n\005_role\"Y\n UpdateOrganiz" + + "ationMemberResponse\0225\n\006member\030\001 \001(\0132\035.gi" + + "tpod.v1.OrganizationMemberR\006member\"c\n\037De" + + "leteOrganizationMemberRequest\022\'\n\017organiz" + + "ation_id\030\001 \001(\tR\016organizationId\022\027\n\007user_i" + + "d\030\002 \001(\tR\006userId\"\"\n DeleteOrganizationMem" + + "berResponse*\224\001\n\020OrganizationRole\022!\n\035ORGA" + + "NIZATION_ROLE_UNSPECIFIED\020\000\022\033\n\027ORGANIZAT" + + "ION_ROLE_OWNER\020\001\022\034\n\030ORGANIZATION_ROLE_ME" + + "MBER\020\002\022\"\n\036ORGANIZATION_ROLE_COLLABORATOR" + + "\020\003*t\n\026OrganizationPermission\022\'\n#ORGANIZA" + + "TION_PERMISSION_UNSPECIFIED\020\000\0221\n-ORGANIZ" + + "ATION_PERMISSION_START_ARBITRARY_REPOS\020\001" + + "2\276\014\n\023OrganizationService\022c\n\022CreateOrgani" + + "zation\022$.gitpod.v1.CreateOrganizationReq" + + "uest\032%.gitpod.v1.CreateOrganizationRespo" + + "nse\"\000\022Z\n\017GetOrganization\022!.gitpod.v1.Get" + + "OrganizationRequest\032\".gitpod.v1.GetOrgan" + + "izationResponse\"\000\022c\n\022UpdateOrganization\022" + + "$.gitpod.v1.UpdateOrganizationRequest\032%." + + "gitpod.v1.UpdateOrganizationResponse\"\000\022`" + + "\n\021ListOrganizations\022#.gitpod.v1.ListOrga" + + "nizationsRequest\032$.gitpod.v1.ListOrganiz" + + "ationsResponse\"\000\022c\n\022DeleteOrganization\022$" + + ".gitpod.v1.DeleteOrganizationRequest\032%.g" + + "itpod.v1.DeleteOrganizationResponse\"\000\022x\n" + + "\031GetOrganizationInvitation\022+.gitpod.v1.G" + + "etOrganizationInvitationRequest\032,.gitpod" + + ".v1.GetOrganizationInvitationResponse\"\000\022" + + "]\n\020JoinOrganization\022\".gitpod.v1.JoinOrga" + + "nizationRequest\032#.gitpod.v1.JoinOrganiza" + + "tionResponse\"\000\022~\n\033ResetOrganizationInvit" + + "ation\022-.gitpod.v1.ResetOrganizationInvit" + + "ationRequest\032..gitpod.v1.ResetOrganizati" + + "onInvitationResponse\"\000\022r\n\027ListOrganizati" + + "onMembers\022).gitpod.v1.ListOrganizationMe" + + "mbersRequest\032*.gitpod.v1.ListOrganizatio" + + "nMembersResponse\"\000\022u\n\030UpdateOrganization" + + "Member\022*.gitpod.v1.UpdateOrganizationMem" + + "berRequest\032+.gitpod.v1.UpdateOrganizatio" + + "nMemberResponse\"\000\022u\n\030DeleteOrganizationM" + + "ember\022*.gitpod.v1.DeleteOrganizationMemb" + + "erRequest\032+.gitpod.v1.DeleteOrganization" + + "MemberResponse\"\000\022r\n\027GetOrganizationSetti" + + "ngs\022).gitpod.v1.GetOrganizationSettingsR" + + "equest\032*.gitpod.v1.GetOrganizationSettin" + + "gsResponse\"\000\022{\n\032UpdateOrganizationSettin" + + "gs\022,.gitpod.v1.UpdateOrganizationSetting" + + "sRequest\032-.gitpod.v1.UpdateOrganizationS" + + "ettingsResponse\"\000\022\215\001\n ListOrganizationWo" + + "rkspaceClasses\0222.gitpod.v1.ListOrganizat" + + "ionWorkspaceClassesRequest\0323.gitpod.v1.L" + + "istOrganizationWorkspaceClassesResponse\"" + + "\000BQ\n\026io.gitpod.publicapi.v1Z7github.com/" + + "gitpod-io/gitpod/components/public-api/g" + + "o/v1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/components/public-api/typescript-common/src/public-api-converter.ts b/components/public-api/typescript-common/src/public-api-converter.ts index a991914158f0be..26c6700f813aba 100644 --- a/components/public-api/typescript-common/src/public-api-converter.ts +++ b/components/public-api/typescript-common/src/public-api-converter.ts @@ -1137,11 +1137,18 @@ export class PublicAPIConverter { } fromWelcomeMessage(welcomeMessage: PlainMessage): WelcomeMessageProtocol { - return { - enabled: welcomeMessage.enabled, - message: welcomeMessage.message, - featuredMemberId: welcomeMessage.featuredMemberId, - }; + const result: WelcomeMessageProtocol = {}; + if (welcomeMessage.enabled !== undefined) { + result.enabled = welcomeMessage.enabled; + } + if (welcomeMessage.message !== undefined) { + result.message = welcomeMessage.message; + } + if (welcomeMessage.featuredMemberId !== undefined) { + result.featuredMemberId = welcomeMessage.featuredMemberId; + } + + return result; } fromWorkspaceSettings(settings?: DeepPartial) { diff --git a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts index da027d797ed81a..f2d000eca9932e 100644 --- a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts @@ -321,9 +321,9 @@ export class OnboardingSettings_WelcomeMessage extends Message [ - { no: 1, name: "enabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 1, name: "enabled", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, { no: 2, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 4, name: "featured_member_id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 5, name: "featured_member_resolved_avatar_url", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, diff --git a/components/server/src/api/organization-service-api.ts b/components/server/src/api/organization-service-api.ts index 9b31a9f1421926..15e4f6558064de 100644 --- a/components/server/src/api/organization-service-api.ts +++ b/components/server/src/api/organization-service-api.ts @@ -239,7 +239,7 @@ export class OrganizationServiceAPI implements ServiceImpl { + const settings = await this.getSettings(userId, orgId); + await this.resolveMemberAvatarUrl(orgId, settings); + return settings; + } + + /** + * Resolves the avatar URL for a member of an organization. + * This is not done in methods like `getSettings` directly + * because we don't need to pay the extra lookup cost for the avatar URL for most requests. + */ + private async resolveMemberAvatarUrl(orgId: string, settings: OrganizationSettings): Promise { + const featuredMemberId = settings.onboardingSettings?.welcomeMessage?.featuredMemberId; + if (!featuredMemberId) { + return false; + } + + const membership = await this.teamDB.findTeamMembership(featuredMemberId, orgId); + if (!membership) { + return false; + } + const user = await this.userDB.findUserById(membership.userId); + if (!user) { + return false; + } + settings.onboardingSettings!.welcomeMessage!.featuredMemberResolvedAvatarUrl = user.avatarUrl; + return true; } private async toSettings(settings: OrganizationSettings = {}): Promise { From 9e33b5feefecff7ed543d71d379a443c08575fae Mon Sep 17 00:00:00 2001 From: Gero Posmyk-Leinemann Date: Tue, 25 Feb 2025 13:20:52 +0000 Subject: [PATCH 3/3] review comment Tool: gitpod/catfood.gitpod.cloud --- components/public-api/gitpod/v1/organization.proto | 2 +- components/public-api/go/v1/organization.pb.go | 2 +- .../java/io/gitpod/publicapi/v1/OrganizationOuterClass.java | 4 ++-- .../public-api/typescript/src/gitpod/v1/organization_pb.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/public-api/gitpod/v1/organization.proto b/components/public-api/gitpod/v1/organization.proto index 048b255f9f0374..fbae0925108c81 100644 --- a/components/public-api/gitpod/v1/organization.proto +++ b/components/public-api/gitpod/v1/organization.proto @@ -85,7 +85,7 @@ message OnboardingSettings { optional WelcomeMessage welcome_message = 4; } -// KEEP ALIGNED WITH OrganizationSettings shape below!!! +// KEEP ALIGNED WITH UpdateOrganizationSettingsRequest shape below!!! message OrganizationSettings { optional bool workspace_sharing_disabled = 1; optional string default_workspace_image = 2; diff --git a/components/public-api/go/v1/organization.pb.go b/components/public-api/go/v1/organization.pb.go index 28312652f5c4c1..a4a27f8d84f471 100644 --- a/components/public-api/go/v1/organization.pb.go +++ b/components/public-api/go/v1/organization.pb.go @@ -479,7 +479,7 @@ func (x *OnboardingSettings) GetWelcomeMessage() *OnboardingSettings_WelcomeMess return nil } -// KEEP ALIGNED WITH OrganizationSettings shape below!!! +// KEEP ALIGNED WITH UpdateOrganizationSettingsRequest shape below!!! type OrganizationSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java index dee8afce5aeabf..7e634d22cb077a 100644 --- a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java +++ b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java @@ -6263,7 +6263,7 @@ io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getR } /** *
-   * KEEP ALIGNED WITH OrganizationSettings shape below!!!
+   * KEEP ALIGNED WITH UpdateOrganizationSettingsRequest shape below!!!
    * 
* * Protobuf type {@code gitpod.v1.OrganizationSettings} @@ -7060,7 +7060,7 @@ protected Builder newBuilderForType( } /** *
-     * KEEP ALIGNED WITH OrganizationSettings shape below!!!
+     * KEEP ALIGNED WITH UpdateOrganizationSettingsRequest shape below!!!
      * 
* * Protobuf type {@code gitpod.v1.OrganizationSettings} diff --git a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts index f2d000eca9932e..84f2a18d29dd19 100644 --- a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts @@ -380,7 +380,7 @@ export class OnboardingSettings_WelcomeMessage extends Message