// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0-devel // protoc v3.17.3 // source: users.proto package discoursepb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type Users struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserBadges []*Users_UserBadges `protobuf:"bytes,1,rep,name=user_badges,json=userBadges,proto3" json:"user_badges,omitempty"` Badges []*Users_Badges `protobuf:"bytes,2,rep,name=badges,proto3" json:"badges,omitempty"` BadgeTypes []*Users_BadgeTypes `protobuf:"bytes,3,rep,name=badge_types,json=badgeTypes,proto3" json:"badge_types,omitempty"` Users []*Users_Users `protobuf:"bytes,4,rep,name=users,proto3" json:"users,omitempty"` Topics []*Users_Topics `protobuf:"bytes,5,rep,name=topics,proto3" json:"topics,omitempty"` User *Users_User `protobuf:"bytes,6,opt,name=user,proto3" json:"user,omitempty"` } func (x *Users) Reset() { *x = Users{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users) ProtoMessage() {} func (x *Users) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users.ProtoReflect.Descriptor instead. func (*Users) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0} } func (x *Users) GetUserBadges() []*Users_UserBadges { if x != nil { return x.UserBadges } return nil } func (x *Users) GetBadges() []*Users_Badges { if x != nil { return x.Badges } return nil } func (x *Users) GetBadgeTypes() []*Users_BadgeTypes { if x != nil { return x.BadgeTypes } return nil } func (x *Users) GetUsers() []*Users_Users { if x != nil { return x.Users } return nil } func (x *Users) GetTopics() []*Users_Topics { if x != nil { return x.Topics } return nil } func (x *Users) GetUser() *Users_User { if x != nil { return x.User } return nil } type Users_UserBadges struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` GrantedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=granted_at,json=grantedAt,proto3" json:"granted_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` BadgeId int32 `protobuf:"varint,5,opt,name=badge_id,json=badgeId,proto3" json:"badge_id,omitempty"` UserId int32 `protobuf:"varint,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` GratedById int32 `protobuf:"varint,7,opt,name=grated_by_id,json=gratedById,proto3" json:"grated_by_id,omitempty"` PostId int32 `protobuf:"varint,8,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"` PostNumber int32 `protobuf:"varint,9,opt,name=post_number,json=postNumber,proto3" json:"post_number,omitempty"` TopicId int32 `protobuf:"varint,10,opt,name=topic_id,json=topicId,proto3" json:"topic_id,omitempty"` } func (x *Users_UserBadges) Reset() { *x = Users_UserBadges{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_UserBadges) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_UserBadges) ProtoMessage() {} func (x *Users_UserBadges) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_UserBadges.ProtoReflect.Descriptor instead. func (*Users_UserBadges) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 0} } func (x *Users_UserBadges) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_UserBadges) GetGrantedAt() *timestamppb.Timestamp { if x != nil { return x.GrantedAt } return nil } func (x *Users_UserBadges) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Users_UserBadges) GetCount() int32 { if x != nil { return x.Count } return 0 } func (x *Users_UserBadges) GetBadgeId() int32 { if x != nil { return x.BadgeId } return 0 } func (x *Users_UserBadges) GetUserId() int32 { if x != nil { return x.UserId } return 0 } func (x *Users_UserBadges) GetGratedById() int32 { if x != nil { return x.GratedById } return 0 } func (x *Users_UserBadges) GetPostId() int32 { if x != nil { return x.PostId } return 0 } func (x *Users_UserBadges) GetPostNumber() int32 { if x != nil { return x.PostNumber } return 0 } func (x *Users_UserBadges) GetTopicId() int32 { if x != nil { return x.TopicId } return 0 } type Users_Badges struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` GrantCount int32 `protobuf:"varint,4,opt,name=grant_count,json=grantCount,proto3" json:"grant_count,omitempty"` AllowTitle bool `protobuf:"varint,5,opt,name=allow_title,json=allowTitle,proto3" json:"allow_title,omitempty"` MultipleGrant bool `protobuf:"varint,6,opt,name=multiple_grant,json=multipleGrant,proto3" json:"multiple_grant,omitempty"` Icon string `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` Image string `protobuf:"bytes,8,opt,name=image,proto3" json:"image,omitempty"` Listable bool `protobuf:"varint,9,opt,name=listable,proto3" json:"listable,omitempty"` Enabled bool `protobuf:"varint,10,opt,name=enabled,proto3" json:"enabled,omitempty"` BadgeGroupingId int32 `protobuf:"varint,11,opt,name=badge_grouping_id,json=badgeGroupingId,proto3" json:"badge_grouping_id,omitempty"` System bool `protobuf:"varint,12,opt,name=system,proto3" json:"system,omitempty"` Slug string `protobuf:"bytes,13,opt,name=slug,proto3" json:"slug,omitempty"` ManuallyGrantable bool `protobuf:"varint,14,opt,name=manually_grantable,json=manuallyGrantable,proto3" json:"manually_grantable,omitempty"` BadgeTypeId int32 `protobuf:"varint,15,opt,name=badge_type_id,json=badgeTypeId,proto3" json:"badge_type_id,omitempty"` } func (x *Users_Badges) Reset() { *x = Users_Badges{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_Badges) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_Badges) ProtoMessage() {} func (x *Users_Badges) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_Badges.ProtoReflect.Descriptor instead. func (*Users_Badges) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 1} } func (x *Users_Badges) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_Badges) GetName() string { if x != nil { return x.Name } return "" } func (x *Users_Badges) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Users_Badges) GetGrantCount() int32 { if x != nil { return x.GrantCount } return 0 } func (x *Users_Badges) GetAllowTitle() bool { if x != nil { return x.AllowTitle } return false } func (x *Users_Badges) GetMultipleGrant() bool { if x != nil { return x.MultipleGrant } return false } func (x *Users_Badges) GetIcon() string { if x != nil { return x.Icon } return "" } func (x *Users_Badges) GetImage() string { if x != nil { return x.Image } return "" } func (x *Users_Badges) GetListable() bool { if x != nil { return x.Listable } return false } func (x *Users_Badges) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *Users_Badges) GetBadgeGroupingId() int32 { if x != nil { return x.BadgeGroupingId } return 0 } func (x *Users_Badges) GetSystem() bool { if x != nil { return x.System } return false } func (x *Users_Badges) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Users_Badges) GetManuallyGrantable() bool { if x != nil { return x.ManuallyGrantable } return false } func (x *Users_Badges) GetBadgeTypeId() int32 { if x != nil { return x.BadgeTypeId } return 0 } type Users_BadgeTypes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` SortOrder int32 `protobuf:"varint,3,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` } func (x *Users_BadgeTypes) Reset() { *x = Users_BadgeTypes{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_BadgeTypes) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_BadgeTypes) ProtoMessage() {} func (x *Users_BadgeTypes) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_BadgeTypes.ProtoReflect.Descriptor instead. func (*Users_BadgeTypes) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 2} } func (x *Users_BadgeTypes) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_BadgeTypes) GetName() string { if x != nil { return x.Name } return "" } func (x *Users_BadgeTypes) GetSortOrder() int32 { if x != nil { return x.SortOrder } return 0 } type Users_Users struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` AvatarTemplate string `protobuf:"bytes,4,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` Moderator bool `protobuf:"varint,5,opt,name=moderator,proto3" json:"moderator,omitempty"` Admin bool `protobuf:"varint,6,opt,name=admin,proto3" json:"admin,omitempty"` } func (x *Users_Users) Reset() { *x = Users_Users{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_Users) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_Users) ProtoMessage() {} func (x *Users_Users) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_Users.ProtoReflect.Descriptor instead. func (*Users_Users) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 3} } func (x *Users_Users) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_Users) GetUsername() string { if x != nil { return x.Username } return "" } func (x *Users_Users) GetName() string { if x != nil { return x.Name } return "" } func (x *Users_Users) GetAvatarTemplate() string { if x != nil { return x.AvatarTemplate } return "" } func (x *Users_Users) GetModerator() bool { if x != nil { return x.Moderator } return false } func (x *Users_Users) GetAdmin() bool { if x != nil { return x.Admin } return false } type Users_Topics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` FancyTitle string `protobuf:"bytes,3,opt,name=fancy_title,json=fancyTitle,proto3" json:"fancy_title,omitempty"` Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` PostsCount int32 `protobuf:"varint,6,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` } func (x *Users_Topics) Reset() { *x = Users_Topics{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_Topics) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_Topics) ProtoMessage() {} func (x *Users_Topics) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_Topics.ProtoReflect.Descriptor instead. func (*Users_Topics) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 4} } func (x *Users_Topics) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_Topics) GetTitle() string { if x != nil { return x.Title } return "" } func (x *Users_Topics) GetFancyTitle() string { if x != nil { return x.FancyTitle } return "" } func (x *Users_Topics) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Users_Topics) GetPostsCount() int32 { if x != nil { return x.PostsCount } return 0 } type Users_User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` AvatarTemplate string `protobuf:"bytes,4,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` LastPostedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_posted_at,json=lastPostedAt,proto3" json:"last_posted_at,omitempty"` LastSeenAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Ignored bool `protobuf:"varint,10,opt,name=ignored,proto3" json:"ignored,omitempty"` Muted bool `protobuf:"varint,11,opt,name=muted,proto3" json:"muted,omitempty"` CanIgnoreUser bool `protobuf:"varint,12,opt,name=can_ignore_user,json=canIgnoreUser,proto3" json:"can_ignore_user,omitempty"` CanMuteUser bool `protobuf:"varint,13,opt,name=can_mute_user,json=canMuteUser,proto3" json:"can_mute_user,omitempty"` CanSendPrivateMessages bool `protobuf:"varint,14,opt,name=can_send_private_messages,json=canSendPrivateMessages,proto3" json:"can_send_private_messages,omitempty"` CanSendPrivateMessagesToUser bool `protobuf:"varint,15,opt,name=can_send_private_messages_to_user,json=canSendPrivateMessagesToUser,proto3" json:"can_send_private_messages_to_user,omitempty"` TrustLevel int32 `protobuf:"varint,16,opt,name=trust_level,json=trustLevel,proto3" json:"trust_level,omitempty"` Moderator bool `protobuf:"varint,17,opt,name=moderator,proto3" json:"moderator,omitempty"` Admin bool `protobuf:"varint,18,opt,name=admin,proto3" json:"admin,omitempty"` Title string `protobuf:"bytes,19,opt,name=title,proto3" json:"title,omitempty"` BadgeCount int32 `protobuf:"varint,20,opt,name=badge_count,json=badgeCount,proto3" json:"badge_count,omitempty"` TimeRead int32 `protobuf:"varint,21,opt,name=time_read,json=timeRead,proto3" json:"time_read,omitempty"` RecentTimeRead int32 `protobuf:"varint,22,opt,name=recent_time_read,json=recentTimeRead,proto3" json:"recent_time_read,omitempty"` FeaturedTopic *Users_User_FeaturedTopic `protobuf:"bytes,23,opt,name=featured_topic,json=featuredTopic,proto3" json:"featured_topic,omitempty"` Website string `protobuf:"bytes,24,opt,name=website,proto3" json:"website,omitempty"` WebsiteName string `protobuf:"bytes,25,opt,name=website_name,json=websiteName,proto3" json:"website_name,omitempty"` Staged bool `protobuf:"varint,26,opt,name=staged,proto3" json:"staged,omitempty"` CanEdit bool `protobuf:"varint,27,opt,name=can_edit,json=canEdit,proto3" json:"can_edit,omitempty"` CanEditUsername bool `protobuf:"varint,28,opt,name=can_edit_username,json=canEditUsername,proto3" json:"can_edit_username,omitempty"` CanEditEmail bool `protobuf:"varint,29,opt,name=can_edit_email,json=canEditEmail,proto3" json:"can_edit_email,omitempty"` CanEditName bool `protobuf:"varint,30,opt,name=can_edit_name,json=canEditName,proto3" json:"can_edit_name,omitempty"` UploadedAvatarId int32 `protobuf:"varint,31,opt,name=uploaded_avatar_id,json=uploadedAvatarId,proto3" json:"uploaded_avatar_id,omitempty"` HasTitleBadges bool `protobuf:"varint,32,opt,name=has_title_badges,json=hasTitleBadges,proto3" json:"has_title_badges,omitempty"` PendingCount int32 `protobuf:"varint,33,opt,name=pending_count,json=pendingCount,proto3" json:"pending_count,omitempty"` ProfileViewCount int32 `protobuf:"varint,34,opt,name=profile_view_count,json=profileViewCount,proto3" json:"profile_view_count,omitempty"` SecondaryFactorEnabled bool `protobuf:"varint,35,opt,name=secondary_factor_enabled,json=secondaryFactorEnabled,proto3" json:"secondary_factor_enabled,omitempty"` SecondaryFactorBackupEnabled bool `protobuf:"varint,36,opt,name=secondary_factor_backup_enabled,json=secondaryFactorBackupEnabled,proto3" json:"secondary_factor_backup_enabled,omitempty"` SecondaryFactorRemainingBackupCodes int32 `protobuf:"varint,37,opt,name=secondary_factor_remaining_backup_codes,json=secondaryFactorRemainingBackupCodes,proto3" json:"secondary_factor_remaining_backup_codes,omitempty"` AssociatedAccounts []*Users_User_AssociatedAccounts `protobuf:"bytes,38,rep,name=associated_accounts,json=associatedAccounts,proto3" json:"associated_accounts,omitempty"` CanUploadProfileHeader bool `protobuf:"varint,39,opt,name=can_upload_profile_header,json=canUploadProfileHeader,proto3" json:"can_upload_profile_header,omitempty"` CanUploadUserCardBackground bool `protobuf:"varint,40,opt,name=can_upload_user_card_background,json=canUploadUserCardBackground,proto3" json:"can_upload_user_card_background,omitempty"` PostCount int32 `protobuf:"varint,41,opt,name=post_count,json=postCount,proto3" json:"post_count,omitempty"` CanBeDeleted bool `protobuf:"varint,42,opt,name=can_be_deleted,json=canBeDeleted,proto3" json:"can_be_deleted,omitempty"` CanDeleteAllPosts bool `protobuf:"varint,43,opt,name=can_delete_all_posts,json=canDeleteAllPosts,proto3" json:"can_delete_all_posts,omitempty"` Locale string `protobuf:"bytes,44,opt,name=locale,proto3" json:"locale,omitempty"` MutedCategoryIds []int32 `protobuf:"varint,45,rep,packed,name=muted_category_ids,json=mutedCategoryIds,proto3" json:"muted_category_ids,omitempty"` RegularCategoryIds []int32 `protobuf:"varint,46,rep,packed,name=regular_category_ids,json=regularCategoryIds,proto3" json:"regular_category_ids,omitempty"` WatchedTags []string `protobuf:"bytes,47,rep,name=watched_tags,json=watchedTags,proto3" json:"watched_tags,omitempty"` WatchingFirstPostTags []string `protobuf:"bytes,48,rep,name=watching_first_post_tags,json=watchingFirstPostTags,proto3" json:"watching_first_post_tags,omitempty"` TrackedTags []string `protobuf:"bytes,49,rep,name=tracked_tags,json=trackedTags,proto3" json:"tracked_tags,omitempty"` MutedTags []string `protobuf:"bytes,50,rep,name=muted_tags,json=mutedTags,proto3" json:"muted_tags,omitempty"` TrackedCategoryIds []int32 `protobuf:"varint,51,rep,packed,name=tracked_category_ids,json=trackedCategoryIds,proto3" json:"tracked_category_ids,omitempty"` WatchedCategoryIds []int32 `protobuf:"varint,52,rep,packed,name=watched_category_ids,json=watchedCategoryIds,proto3" json:"watched_category_ids,omitempty"` WatchedFirstPostCategoryIds []int32 `protobuf:"varint,53,rep,packed,name=watched_first_post_category_ids,json=watchedFirstPostCategoryIds,proto3" json:"watched_first_post_category_ids,omitempty"` SystemAvatarUploadId int32 `protobuf:"varint,54,opt,name=system_avatar_upload_id,json=systemAvatarUploadId,proto3" json:"system_avatar_upload_id,omitempty"` SystemAvatarTemplate string `protobuf:"bytes,55,opt,name=system_avatar_template,json=systemAvatarTemplate,proto3" json:"system_avatar_template,omitempty"` CustomAvatarUploadId int32 `protobuf:"varint,56,opt,name=custom_avatar_upload_id,json=customAvatarUploadId,proto3" json:"custom_avatar_upload_id,omitempty"` CustomAvatarTemplate string `protobuf:"bytes,57,opt,name=custom_avatar_template,json=customAvatarTemplate,proto3" json:"custom_avatar_template,omitempty"` MutedUsernames []string `protobuf:"bytes,58,rep,name=muted_usernames,json=mutedUsernames,proto3" json:"muted_usernames,omitempty"` IgnoredUsernames []string `protobuf:"bytes,59,rep,name=ignored_usernames,json=ignoredUsernames,proto3" json:"ignored_usernames,omitempty"` AllowedPmUsernames []string `protobuf:"bytes,60,rep,name=allowed_pm_usernames,json=allowedPmUsernames,proto3" json:"allowed_pm_usernames,omitempty"` MailingListPostsPerDay int32 `protobuf:"varint,61,opt,name=mailing_list_posts_per_day,json=mailingListPostsPerDay,proto3" json:"mailing_list_posts_per_day,omitempty"` CanChangeBio bool `protobuf:"varint,62,opt,name=can_change_bio,json=canChangeBio,proto3" json:"can_change_bio,omitempty"` CanChangeWebsite bool `protobuf:"varint,63,opt,name=can_change_website,json=canChangeWebsite,proto3" json:"can_change_website,omitempty"` UserAuthTokens []*Users_User_UserAuthTokens `protobuf:"bytes,64,rep,name=user_auth_tokens,json=userAuthTokens,proto3" json:"user_auth_tokens,omitempty"` FeaturedUserBadgeIds []int32 `protobuf:"varint,65,rep,packed,name=featured_user_badge_ids,json=featuredUserBadgeIds,proto3" json:"featured_user_badge_ids,omitempty"` Groups []*Users_User_Groups `protobuf:"bytes,66,rep,name=groups,proto3" json:"groups,omitempty"` GroupUsers []*Users_User_GroupUsers `protobuf:"bytes,67,rep,name=group_users,json=groupUsers,proto3" json:"group_users,omitempty"` UserOption *Users_User_UserOption `protobuf:"bytes,68,opt,name=user_option,json=userOption,proto3" json:"user_option,omitempty"` } func (x *Users_User) Reset() { *x = Users_User{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_User) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_User) ProtoMessage() {} func (x *Users_User) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_User.ProtoReflect.Descriptor instead. func (*Users_User) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 5} } func (x *Users_User) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_User) GetUsername() string { if x != nil { return x.Username } return "" } func (x *Users_User) GetName() string { if x != nil { return x.Name } return "" } func (x *Users_User) GetAvatarTemplate() string { if x != nil { return x.AvatarTemplate } return "" } func (x *Users_User) GetEmail() string { if x != nil { return x.Email } return "" } func (x *Users_User) GetLastPostedAt() *timestamppb.Timestamp { if x != nil { return x.LastPostedAt } return nil } func (x *Users_User) GetLastSeenAt() *timestamppb.Timestamp { if x != nil { return x.LastSeenAt } return nil } func (x *Users_User) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Users_User) GetIgnored() bool { if x != nil { return x.Ignored } return false } func (x *Users_User) GetMuted() bool { if x != nil { return x.Muted } return false } func (x *Users_User) GetCanIgnoreUser() bool { if x != nil { return x.CanIgnoreUser } return false } func (x *Users_User) GetCanMuteUser() bool { if x != nil { return x.CanMuteUser } return false } func (x *Users_User) GetCanSendPrivateMessages() bool { if x != nil { return x.CanSendPrivateMessages } return false } func (x *Users_User) GetCanSendPrivateMessagesToUser() bool { if x != nil { return x.CanSendPrivateMessagesToUser } return false } func (x *Users_User) GetTrustLevel() int32 { if x != nil { return x.TrustLevel } return 0 } func (x *Users_User) GetModerator() bool { if x != nil { return x.Moderator } return false } func (x *Users_User) GetAdmin() bool { if x != nil { return x.Admin } return false } func (x *Users_User) GetTitle() string { if x != nil { return x.Title } return "" } func (x *Users_User) GetBadgeCount() int32 { if x != nil { return x.BadgeCount } return 0 } func (x *Users_User) GetTimeRead() int32 { if x != nil { return x.TimeRead } return 0 } func (x *Users_User) GetRecentTimeRead() int32 { if x != nil { return x.RecentTimeRead } return 0 } func (x *Users_User) GetFeaturedTopic() *Users_User_FeaturedTopic { if x != nil { return x.FeaturedTopic } return nil } func (x *Users_User) GetWebsite() string { if x != nil { return x.Website } return "" } func (x *Users_User) GetWebsiteName() string { if x != nil { return x.WebsiteName } return "" } func (x *Users_User) GetStaged() bool { if x != nil { return x.Staged } return false } func (x *Users_User) GetCanEdit() bool { if x != nil { return x.CanEdit } return false } func (x *Users_User) GetCanEditUsername() bool { if x != nil { return x.CanEditUsername } return false } func (x *Users_User) GetCanEditEmail() bool { if x != nil { return x.CanEditEmail } return false } func (x *Users_User) GetCanEditName() bool { if x != nil { return x.CanEditName } return false } func (x *Users_User) GetUploadedAvatarId() int32 { if x != nil { return x.UploadedAvatarId } return 0 } func (x *Users_User) GetHasTitleBadges() bool { if x != nil { return x.HasTitleBadges } return false } func (x *Users_User) GetPendingCount() int32 { if x != nil { return x.PendingCount } return 0 } func (x *Users_User) GetProfileViewCount() int32 { if x != nil { return x.ProfileViewCount } return 0 } func (x *Users_User) GetSecondaryFactorEnabled() bool { if x != nil { return x.SecondaryFactorEnabled } return false } func (x *Users_User) GetSecondaryFactorBackupEnabled() bool { if x != nil { return x.SecondaryFactorBackupEnabled } return false } func (x *Users_User) GetSecondaryFactorRemainingBackupCodes() int32 { if x != nil { return x.SecondaryFactorRemainingBackupCodes } return 0 } func (x *Users_User) GetAssociatedAccounts() []*Users_User_AssociatedAccounts { if x != nil { return x.AssociatedAccounts } return nil } func (x *Users_User) GetCanUploadProfileHeader() bool { if x != nil { return x.CanUploadProfileHeader } return false } func (x *Users_User) GetCanUploadUserCardBackground() bool { if x != nil { return x.CanUploadUserCardBackground } return false } func (x *Users_User) GetPostCount() int32 { if x != nil { return x.PostCount } return 0 } func (x *Users_User) GetCanBeDeleted() bool { if x != nil { return x.CanBeDeleted } return false } func (x *Users_User) GetCanDeleteAllPosts() bool { if x != nil { return x.CanDeleteAllPosts } return false } func (x *Users_User) GetLocale() string { if x != nil { return x.Locale } return "" } func (x *Users_User) GetMutedCategoryIds() []int32 { if x != nil { return x.MutedCategoryIds } return nil } func (x *Users_User) GetRegularCategoryIds() []int32 { if x != nil { return x.RegularCategoryIds } return nil } func (x *Users_User) GetWatchedTags() []string { if x != nil { return x.WatchedTags } return nil } func (x *Users_User) GetWatchingFirstPostTags() []string { if x != nil { return x.WatchingFirstPostTags } return nil } func (x *Users_User) GetTrackedTags() []string { if x != nil { return x.TrackedTags } return nil } func (x *Users_User) GetMutedTags() []string { if x != nil { return x.MutedTags } return nil } func (x *Users_User) GetTrackedCategoryIds() []int32 { if x != nil { return x.TrackedCategoryIds } return nil } func (x *Users_User) GetWatchedCategoryIds() []int32 { if x != nil { return x.WatchedCategoryIds } return nil } func (x *Users_User) GetWatchedFirstPostCategoryIds() []int32 { if x != nil { return x.WatchedFirstPostCategoryIds } return nil } func (x *Users_User) GetSystemAvatarUploadId() int32 { if x != nil { return x.SystemAvatarUploadId } return 0 } func (x *Users_User) GetSystemAvatarTemplate() string { if x != nil { return x.SystemAvatarTemplate } return "" } func (x *Users_User) GetCustomAvatarUploadId() int32 { if x != nil { return x.CustomAvatarUploadId } return 0 } func (x *Users_User) GetCustomAvatarTemplate() string { if x != nil { return x.CustomAvatarTemplate } return "" } func (x *Users_User) GetMutedUsernames() []string { if x != nil { return x.MutedUsernames } return nil } func (x *Users_User) GetIgnoredUsernames() []string { if x != nil { return x.IgnoredUsernames } return nil } func (x *Users_User) GetAllowedPmUsernames() []string { if x != nil { return x.AllowedPmUsernames } return nil } func (x *Users_User) GetMailingListPostsPerDay() int32 { if x != nil { return x.MailingListPostsPerDay } return 0 } func (x *Users_User) GetCanChangeBio() bool { if x != nil { return x.CanChangeBio } return false } func (x *Users_User) GetCanChangeWebsite() bool { if x != nil { return x.CanChangeWebsite } return false } func (x *Users_User) GetUserAuthTokens() []*Users_User_UserAuthTokens { if x != nil { return x.UserAuthTokens } return nil } func (x *Users_User) GetFeaturedUserBadgeIds() []int32 { if x != nil { return x.FeaturedUserBadgeIds } return nil } func (x *Users_User) GetGroups() []*Users_User_Groups { if x != nil { return x.Groups } return nil } func (x *Users_User) GetGroupUsers() []*Users_User_GroupUsers { if x != nil { return x.GroupUsers } return nil } func (x *Users_User) GetUserOption() *Users_User_UserOption { if x != nil { return x.UserOption } return nil } type Users_User_FeaturedTopic struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` LastPostedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_posted_at,json=lastPostedAt,proto3" json:"last_posted_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Views int32 `protobuf:"varint,6,opt,name=views,proto3" json:"views,omitempty"` PostsCount int32 `protobuf:"varint,7,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` UserId int32 `protobuf:"varint,8,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` LastPostUserId int32 `protobuf:"varint,9,opt,name=last_post_user_id,json=lastPostUserId,proto3" json:"last_post_user_id,omitempty"` ReplyCount int32 `protobuf:"varint,10,opt,name=reply_count,json=replyCount,proto3" json:"reply_count,omitempty"` HighestPostNumber int32 `protobuf:"varint,11,opt,name=highest_post_number,json=highestPostNumber,proto3" json:"highest_post_number,omitempty"` LikeCount int32 `protobuf:"varint,12,opt,name=like_count,json=likeCount,proto3" json:"like_count,omitempty"` IncomingLinkCount int32 `protobuf:"varint,13,opt,name=incoming_link_count,json=incomingLinkCount,proto3" json:"incoming_link_count,omitempty"` CategoryId int32 `protobuf:"varint,14,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` Visible bool `protobuf:"varint,15,opt,name=visible,proto3" json:"visible,omitempty"` ModeratorPostsCount int32 `protobuf:"varint,16,opt,name=moderator_posts_count,json=moderatorPostsCount,proto3" json:"moderator_posts_count,omitempty"` Closed bool `protobuf:"varint,17,opt,name=closed,proto3" json:"closed,omitempty"` Archived bool `protobuf:"varint,18,opt,name=archived,proto3" json:"archived,omitempty"` BumpedAt *timestamppb.Timestamp `protobuf:"bytes,19,opt,name=bumped_at,json=bumpedAt,proto3" json:"bumped_at,omitempty"` HasSummary bool `protobuf:"varint,20,opt,name=has_summary,json=hasSummary,proto3" json:"has_summary,omitempty"` Archetype string `protobuf:"bytes,21,opt,name=archetype,proto3" json:"archetype,omitempty"` NotifyModeratorsCount int32 `protobuf:"varint,22,opt,name=notify_moderators_count,json=notifyModeratorsCount,proto3" json:"notify_moderators_count,omitempty"` SpamCount int32 `protobuf:"varint,23,opt,name=spam_count,json=spamCount,proto3" json:"spam_count,omitempty"` Score float64 `protobuf:"fixed64,24,opt,name=score,proto3" json:"score,omitempty"` PercentRank float64 `protobuf:"fixed64,26,opt,name=percent_rank,json=percentRank,proto3" json:"percent_rank,omitempty"` Slug string `protobuf:"bytes,27,opt,name=slug,proto3" json:"slug,omitempty"` ParticipantCount int32 `protobuf:"varint,28,opt,name=participant_count,json=participantCount,proto3" json:"participant_count,omitempty"` WordCount int32 `protobuf:"varint,29,opt,name=word_count,json=wordCount,proto3" json:"word_count,omitempty"` Excerpt string `protobuf:"bytes,30,opt,name=excerpt,proto3" json:"excerpt,omitempty"` PinnedGlobally bool `protobuf:"varint,31,opt,name=pinned_globally,json=pinnedGlobally,proto3" json:"pinned_globally,omitempty"` FancyTitle string `protobuf:"bytes,32,opt,name=fancy_title,json=fancyTitle,proto3" json:"fancy_title,omitempty"` HighestStaffPostNumber int32 `protobuf:"varint,33,opt,name=highest_staff_post_number,json=highestStaffPostNumber,proto3" json:"highest_staff_post_number,omitempty"` ReviewableScore float64 `protobuf:"fixed64,34,opt,name=reviewable_score,json=reviewableScore,proto3" json:"reviewable_score,omitempty"` ImageUploadId int32 `protobuf:"varint,35,opt,name=image_upload_id,json=imageUploadId,proto3" json:"image_upload_id,omitempty"` } func (x *Users_User_FeaturedTopic) Reset() { *x = Users_User_FeaturedTopic{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_User_FeaturedTopic) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_User_FeaturedTopic) ProtoMessage() {} func (x *Users_User_FeaturedTopic) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_User_FeaturedTopic.ProtoReflect.Descriptor instead. func (*Users_User_FeaturedTopic) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 5, 0} } func (x *Users_User_FeaturedTopic) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_User_FeaturedTopic) GetTitle() string { if x != nil { return x.Title } return "" } func (x *Users_User_FeaturedTopic) GetLastPostedAt() *timestamppb.Timestamp { if x != nil { return x.LastPostedAt } return nil } func (x *Users_User_FeaturedTopic) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Users_User_FeaturedTopic) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Users_User_FeaturedTopic) GetViews() int32 { if x != nil { return x.Views } return 0 } func (x *Users_User_FeaturedTopic) GetPostsCount() int32 { if x != nil { return x.PostsCount } return 0 } func (x *Users_User_FeaturedTopic) GetUserId() int32 { if x != nil { return x.UserId } return 0 } func (x *Users_User_FeaturedTopic) GetLastPostUserId() int32 { if x != nil { return x.LastPostUserId } return 0 } func (x *Users_User_FeaturedTopic) GetReplyCount() int32 { if x != nil { return x.ReplyCount } return 0 } func (x *Users_User_FeaturedTopic) GetHighestPostNumber() int32 { if x != nil { return x.HighestPostNumber } return 0 } func (x *Users_User_FeaturedTopic) GetLikeCount() int32 { if x != nil { return x.LikeCount } return 0 } func (x *Users_User_FeaturedTopic) GetIncomingLinkCount() int32 { if x != nil { return x.IncomingLinkCount } return 0 } func (x *Users_User_FeaturedTopic) GetCategoryId() int32 { if x != nil { return x.CategoryId } return 0 } func (x *Users_User_FeaturedTopic) GetVisible() bool { if x != nil { return x.Visible } return false } func (x *Users_User_FeaturedTopic) GetModeratorPostsCount() int32 { if x != nil { return x.ModeratorPostsCount } return 0 } func (x *Users_User_FeaturedTopic) GetClosed() bool { if x != nil { return x.Closed } return false } func (x *Users_User_FeaturedTopic) GetArchived() bool { if x != nil { return x.Archived } return false } func (x *Users_User_FeaturedTopic) GetBumpedAt() *timestamppb.Timestamp { if x != nil { return x.BumpedAt } return nil } func (x *Users_User_FeaturedTopic) GetHasSummary() bool { if x != nil { return x.HasSummary } return false } func (x *Users_User_FeaturedTopic) GetArchetype() string { if x != nil { return x.Archetype } return "" } func (x *Users_User_FeaturedTopic) GetNotifyModeratorsCount() int32 { if x != nil { return x.NotifyModeratorsCount } return 0 } func (x *Users_User_FeaturedTopic) GetSpamCount() int32 { if x != nil { return x.SpamCount } return 0 } func (x *Users_User_FeaturedTopic) GetScore() float64 { if x != nil { return x.Score } return 0 } func (x *Users_User_FeaturedTopic) GetPercentRank() float64 { if x != nil { return x.PercentRank } return 0 } func (x *Users_User_FeaturedTopic) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Users_User_FeaturedTopic) GetParticipantCount() int32 { if x != nil { return x.ParticipantCount } return 0 } func (x *Users_User_FeaturedTopic) GetWordCount() int32 { if x != nil { return x.WordCount } return 0 } func (x *Users_User_FeaturedTopic) GetExcerpt() string { if x != nil { return x.Excerpt } return "" } func (x *Users_User_FeaturedTopic) GetPinnedGlobally() bool { if x != nil { return x.PinnedGlobally } return false } func (x *Users_User_FeaturedTopic) GetFancyTitle() string { if x != nil { return x.FancyTitle } return "" } func (x *Users_User_FeaturedTopic) GetHighestStaffPostNumber() int32 { if x != nil { return x.HighestStaffPostNumber } return 0 } func (x *Users_User_FeaturedTopic) GetReviewableScore() float64 { if x != nil { return x.ReviewableScore } return 0 } func (x *Users_User_FeaturedTopic) GetImageUploadId() int32 { if x != nil { return x.ImageUploadId } return 0 } type Users_User_AssociatedAccounts struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` } func (x *Users_User_AssociatedAccounts) Reset() { *x = Users_User_AssociatedAccounts{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_User_AssociatedAccounts) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_User_AssociatedAccounts) ProtoMessage() {} func (x *Users_User_AssociatedAccounts) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_User_AssociatedAccounts.ProtoReflect.Descriptor instead. func (*Users_User_AssociatedAccounts) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 5, 1} } func (x *Users_User_AssociatedAccounts) GetName() string { if x != nil { return x.Name } return "" } func (x *Users_User_AssociatedAccounts) GetDescription() string { if x != nil { return x.Description } return "" } type Users_User_UserAuthTokens struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ClientIp string `protobuf:"bytes,2,opt,name=client_ip,json=clientIp,proto3" json:"client_ip,omitempty"` Location string `protobuf:"bytes,3,opt,name=location,proto3" json:"location,omitempty"` Browser string `protobuf:"bytes,4,opt,name=browser,proto3" json:"browser,omitempty"` Device string `protobuf:"bytes,5,opt,name=device,proto3" json:"device,omitempty"` Os string `protobuf:"bytes,6,opt,name=os,proto3" json:"os,omitempty"` Icon string `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` SeenAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=seen_at,json=seenAt,proto3" json:"seen_at,omitempty"` IsActive bool `protobuf:"varint,10,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` } func (x *Users_User_UserAuthTokens) Reset() { *x = Users_User_UserAuthTokens{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_User_UserAuthTokens) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_User_UserAuthTokens) ProtoMessage() {} func (x *Users_User_UserAuthTokens) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_User_UserAuthTokens.ProtoReflect.Descriptor instead. func (*Users_User_UserAuthTokens) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 5, 2} } func (x *Users_User_UserAuthTokens) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_User_UserAuthTokens) GetClientIp() string { if x != nil { return x.ClientIp } return "" } func (x *Users_User_UserAuthTokens) GetLocation() string { if x != nil { return x.Location } return "" } func (x *Users_User_UserAuthTokens) GetBrowser() string { if x != nil { return x.Browser } return "" } func (x *Users_User_UserAuthTokens) GetDevice() string { if x != nil { return x.Device } return "" } func (x *Users_User_UserAuthTokens) GetOs() string { if x != nil { return x.Os } return "" } func (x *Users_User_UserAuthTokens) GetIcon() string { if x != nil { return x.Icon } return "" } func (x *Users_User_UserAuthTokens) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Users_User_UserAuthTokens) GetSeenAt() *timestamppb.Timestamp { if x != nil { return x.SeenAt } return nil } func (x *Users_User_UserAuthTokens) GetIsActive() bool { if x != nil { return x.IsActive } return false } type Users_User_Groups struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Automatic bool `protobuf:"varint,2,opt,name=automatic,proto3" json:"automatic,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` UserCount int32 `protobuf:"varint,5,opt,name=user_count,json=userCount,proto3" json:"user_count,omitempty"` MentionableLevel int32 `protobuf:"varint,6,opt,name=mentionable_level,json=mentionableLevel,proto3" json:"mentionable_level,omitempty"` MessageableLevel int32 `protobuf:"varint,7,opt,name=messageable_level,json=messageableLevel,proto3" json:"messageable_level,omitempty"` VisibilityLevel int32 `protobuf:"varint,8,opt,name=visibility_level,json=visibilityLevel,proto3" json:"visibility_level,omitempty"` PrimaryGroup bool `protobuf:"varint,9,opt,name=primary_group,json=primaryGroup,proto3" json:"primary_group,omitempty"` HasMessages bool `protobuf:"varint,10,opt,name=has_messages,json=hasMessages,proto3" json:"has_messages,omitempty"` BioRaw string `protobuf:"bytes,11,opt,name=bio_raw,json=bioRaw,proto3" json:"bio_raw,omitempty"` PublicAdmission bool `protobuf:"varint,12,opt,name=public_admission,json=publicAdmission,proto3" json:"public_admission,omitempty"` PublicExit bool `protobuf:"varint,13,opt,name=public_exit,json=publicExit,proto3" json:"public_exit,omitempty"` AllowMembershipRequests bool `protobuf:"varint,14,opt,name=allow_membership_requests,json=allowMembershipRequests,proto3" json:"allow_membership_requests,omitempty"` FullName string `protobuf:"bytes,15,opt,name=full_name,json=fullName,proto3" json:"full_name,omitempty"` DefaultNotificationLevel int32 `protobuf:"varint,16,opt,name=default_notification_level,json=defaultNotificationLevel,proto3" json:"default_notification_level,omitempty"` MembershipRequestTemplate string `protobuf:"bytes,17,opt,name=membership_request_template,json=membershipRequestTemplate,proto3" json:"membership_request_template,omitempty"` MembersVisibilityLevel int32 `protobuf:"varint,18,opt,name=members_visibility_level,json=membersVisibilityLevel,proto3" json:"members_visibility_level,omitempty"` CanSeeMembers bool `protobuf:"varint,19,opt,name=can_see_members,json=canSeeMembers,proto3" json:"can_see_members,omitempty"` CanAdminGroup bool `protobuf:"varint,20,opt,name=can_admin_group,json=canAdminGroup,proto3" json:"can_admin_group,omitempty"` PublishReadState bool `protobuf:"varint,21,opt,name=publish_read_state,json=publishReadState,proto3" json:"publish_read_state,omitempty"` ImapMailboxName string `protobuf:"bytes,22,opt,name=imap_mailbox_name,json=imapMailboxName,proto3" json:"imap_mailbox_name,omitempty"` WatchingCategoryIds []int32 `protobuf:"varint,23,rep,packed,name=watching_category_ids,json=watchingCategoryIds,proto3" json:"watching_category_ids,omitempty"` TrackingCategoryIds []int32 `protobuf:"varint,24,rep,packed,name=tracking_category_ids,json=trackingCategoryIds,proto3" json:"tracking_category_ids,omitempty"` WatchingFirstPostCategoryIds []int32 `protobuf:"varint,25,rep,packed,name=watching_first_post_category_ids,json=watchingFirstPostCategoryIds,proto3" json:"watching_first_post_category_ids,omitempty"` RegularCategoryIds []int32 `protobuf:"varint,26,rep,packed,name=regular_category_ids,json=regularCategoryIds,proto3" json:"regular_category_ids,omitempty"` MutedCategoryIds []int32 `protobuf:"varint,27,rep,packed,name=muted_category_ids,json=mutedCategoryIds,proto3" json:"muted_category_ids,omitempty"` WatchingTags []string `protobuf:"bytes,28,rep,name=watching_tags,json=watchingTags,proto3" json:"watching_tags,omitempty"` WatchingFirstPostTags []string `protobuf:"bytes,29,rep,name=watching_first_post_tags,json=watchingFirstPostTags,proto3" json:"watching_first_post_tags,omitempty"` TrackingsTags []string `protobuf:"bytes,30,rep,name=trackings_tags,json=trackingsTags,proto3" json:"trackings_tags,omitempty"` RegularTags []string `protobuf:"bytes,31,rep,name=regular_tags,json=regularTags,proto3" json:"regular_tags,omitempty"` MutedTags []string `protobuf:"bytes,32,rep,name=muted_tags,json=mutedTags,proto3" json:"muted_tags,omitempty"` } func (x *Users_User_Groups) Reset() { *x = Users_User_Groups{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_User_Groups) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_User_Groups) ProtoMessage() {} func (x *Users_User_Groups) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_User_Groups.ProtoReflect.Descriptor instead. func (*Users_User_Groups) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 5, 3} } func (x *Users_User_Groups) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *Users_User_Groups) GetAutomatic() bool { if x != nil { return x.Automatic } return false } func (x *Users_User_Groups) GetName() string { if x != nil { return x.Name } return "" } func (x *Users_User_Groups) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *Users_User_Groups) GetUserCount() int32 { if x != nil { return x.UserCount } return 0 } func (x *Users_User_Groups) GetMentionableLevel() int32 { if x != nil { return x.MentionableLevel } return 0 } func (x *Users_User_Groups) GetMessageableLevel() int32 { if x != nil { return x.MessageableLevel } return 0 } func (x *Users_User_Groups) GetVisibilityLevel() int32 { if x != nil { return x.VisibilityLevel } return 0 } func (x *Users_User_Groups) GetPrimaryGroup() bool { if x != nil { return x.PrimaryGroup } return false } func (x *Users_User_Groups) GetHasMessages() bool { if x != nil { return x.HasMessages } return false } func (x *Users_User_Groups) GetBioRaw() string { if x != nil { return x.BioRaw } return "" } func (x *Users_User_Groups) GetPublicAdmission() bool { if x != nil { return x.PublicAdmission } return false } func (x *Users_User_Groups) GetPublicExit() bool { if x != nil { return x.PublicExit } return false } func (x *Users_User_Groups) GetAllowMembershipRequests() bool { if x != nil { return x.AllowMembershipRequests } return false } func (x *Users_User_Groups) GetFullName() string { if x != nil { return x.FullName } return "" } func (x *Users_User_Groups) GetDefaultNotificationLevel() int32 { if x != nil { return x.DefaultNotificationLevel } return 0 } func (x *Users_User_Groups) GetMembershipRequestTemplate() string { if x != nil { return x.MembershipRequestTemplate } return "" } func (x *Users_User_Groups) GetMembersVisibilityLevel() int32 { if x != nil { return x.MembersVisibilityLevel } return 0 } func (x *Users_User_Groups) GetCanSeeMembers() bool { if x != nil { return x.CanSeeMembers } return false } func (x *Users_User_Groups) GetCanAdminGroup() bool { if x != nil { return x.CanAdminGroup } return false } func (x *Users_User_Groups) GetPublishReadState() bool { if x != nil { return x.PublishReadState } return false } func (x *Users_User_Groups) GetImapMailboxName() string { if x != nil { return x.ImapMailboxName } return "" } func (x *Users_User_Groups) GetWatchingCategoryIds() []int32 { if x != nil { return x.WatchingCategoryIds } return nil } func (x *Users_User_Groups) GetTrackingCategoryIds() []int32 { if x != nil { return x.TrackingCategoryIds } return nil } func (x *Users_User_Groups) GetWatchingFirstPostCategoryIds() []int32 { if x != nil { return x.WatchingFirstPostCategoryIds } return nil } func (x *Users_User_Groups) GetRegularCategoryIds() []int32 { if x != nil { return x.RegularCategoryIds } return nil } func (x *Users_User_Groups) GetMutedCategoryIds() []int32 { if x != nil { return x.MutedCategoryIds } return nil } func (x *Users_User_Groups) GetWatchingTags() []string { if x != nil { return x.WatchingTags } return nil } func (x *Users_User_Groups) GetWatchingFirstPostTags() []string { if x != nil { return x.WatchingFirstPostTags } return nil } func (x *Users_User_Groups) GetTrackingsTags() []string { if x != nil { return x.TrackingsTags } return nil } func (x *Users_User_Groups) GetRegularTags() []string { if x != nil { return x.RegularTags } return nil } func (x *Users_User_Groups) GetMutedTags() []string { if x != nil { return x.MutedTags } return nil } type Users_User_GroupUsers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupId int32 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` UserId int32 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` NotificationLevel int32 `protobuf:"varint,3,opt,name=notification_level,json=notificationLevel,proto3" json:"notification_level,omitempty"` Owner bool `protobuf:"varint,4,opt,name=owner,proto3" json:"owner,omitempty"` } func (x *Users_User_GroupUsers) Reset() { *x = Users_User_GroupUsers{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_User_GroupUsers) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_User_GroupUsers) ProtoMessage() {} func (x *Users_User_GroupUsers) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_User_GroupUsers.ProtoReflect.Descriptor instead. func (*Users_User_GroupUsers) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 5, 4} } func (x *Users_User_GroupUsers) GetGroupId() int32 { if x != nil { return x.GroupId } return 0 } func (x *Users_User_GroupUsers) GetUserId() int32 { if x != nil { return x.UserId } return 0 } func (x *Users_User_GroupUsers) GetNotificationLevel() int32 { if x != nil { return x.NotificationLevel } return 0 } func (x *Users_User_GroupUsers) GetOwner() bool { if x != nil { return x.Owner } return false } type Users_User_UserOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId int32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` MailingListMode bool `protobuf:"varint,2,opt,name=mailing_list_mode,json=mailingListMode,proto3" json:"mailing_list_mode,omitempty"` MailingListModeFrequency int32 `protobuf:"varint,3,opt,name=mailing_list_mode_frequency,json=mailingListModeFrequency,proto3" json:"mailing_list_mode_frequency,omitempty"` EmailDigests bool `protobuf:"varint,4,opt,name=email_digests,json=emailDigests,proto3" json:"email_digests,omitempty"` EmailLevel int32 `protobuf:"varint,5,opt,name=email_level,json=emailLevel,proto3" json:"email_level,omitempty"` EmailMessagesLevel int32 `protobuf:"varint,6,opt,name=email_messages_level,json=emailMessagesLevel,proto3" json:"email_messages_level,omitempty"` ExternalLinksIsNewTab bool `protobuf:"varint,7,opt,name=external_links_is_new_tab,json=externalLinksIsNewTab,proto3" json:"external_links_is_new_tab,omitempty"` DarkSchemeId int32 `protobuf:"varint,8,opt,name=dark_scheme_id,json=darkSchemeId,proto3" json:"dark_scheme_id,omitempty"` DynamicFavicon bool `protobuf:"varint,9,opt,name=dynamic_favicon,json=dynamicFavicon,proto3" json:"dynamic_favicon,omitempty"` EnableQuoting bool `protobuf:"varint,10,opt,name=enable_quoting,json=enableQuoting,proto3" json:"enable_quoting,omitempty"` EnableDefer bool `protobuf:"varint,11,opt,name=enable_defer,json=enableDefer,proto3" json:"enable_defer,omitempty"` DigestAfterMinutes int32 `protobuf:"varint,12,opt,name=digest_after_minutes,json=digestAfterMinutes,proto3" json:"digest_after_minutes,omitempty"` AutomaticallyUnpinTopics bool `protobuf:"varint,13,opt,name=automatically_unpin_topics,json=automaticallyUnpinTopics,proto3" json:"automatically_unpin_topics,omitempty"` AutoTrackTopicsAftersMsecs int32 `protobuf:"varint,14,opt,name=auto_track_topics_afters_msecs,json=autoTrackTopicsAftersMsecs,proto3" json:"auto_track_topics_afters_msecs,omitempty"` NotificationLevelWhenReplying int32 `protobuf:"varint,15,opt,name=notification_level_when_replying,json=notificationLevelWhenReplying,proto3" json:"notification_level_when_replying,omitempty"` NewTopicDurationMinutes int32 `protobuf:"varint,16,opt,name=new_topic_duration_minutes,json=newTopicDurationMinutes,proto3" json:"new_topic_duration_minutes,omitempty"` EmailPreviousReplies int32 `protobuf:"varint,17,opt,name=email_previous_replies,json=emailPreviousReplies,proto3" json:"email_previous_replies,omitempty"` EmailInReplyTo bool `protobuf:"varint,18,opt,name=email_in_reply_to,json=emailInReplyTo,proto3" json:"email_in_reply_to,omitempty"` LikeNotificationFrequency int32 `protobuf:"varint,19,opt,name=like_notification_frequency,json=likeNotificationFrequency,proto3" json:"like_notification_frequency,omitempty"` IncludeTl0InDigests bool `protobuf:"varint,20,opt,name=include_tl0_in_digests,json=includeTl0InDigests,proto3" json:"include_tl0_in_digests,omitempty"` ThemeIds []int32 `protobuf:"varint,21,rep,packed,name=theme_ids,json=themeIds,proto3" json:"theme_ids,omitempty"` ThemeKeySeq int32 `protobuf:"varint,22,opt,name=theme_key_seq,json=themeKeySeq,proto3" json:"theme_key_seq,omitempty"` AllowPrivateMessages bool `protobuf:"varint,23,opt,name=allow_private_messages,json=allowPrivateMessages,proto3" json:"allow_private_messages,omitempty"` EnableAllowedPmUsers bool `protobuf:"varint,24,opt,name=enable_allowed_pm_users,json=enableAllowedPmUsers,proto3" json:"enable_allowed_pm_users,omitempty"` HideProfileAndPresense bool `protobuf:"varint,25,opt,name=hide_profile_and_presense,json=hideProfileAndPresense,proto3" json:"hide_profile_and_presense,omitempty"` TextSize string `protobuf:"bytes,26,opt,name=text_size,json=textSize,proto3" json:"text_size,omitempty"` TextSizeSeq int32 `protobuf:"varint,27,opt,name=text_size_seq,json=textSizeSeq,proto3" json:"text_size_seq,omitempty"` TitleCountMode string `protobuf:"bytes,28,opt,name=title_count_mode,json=titleCountMode,proto3" json:"title_count_mode,omitempty"` Timezone string `protobuf:"bytes,29,opt,name=timezone,proto3" json:"timezone,omitempty"` SkipNewUserTips bool `protobuf:"varint,30,opt,name=skip_new_user_tips,json=skipNewUserTips,proto3" json:"skip_new_user_tips,omitempty"` } func (x *Users_User_UserOption) Reset() { *x = Users_User_UserOption{} if protoimpl.UnsafeEnabled { mi := &file_users_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Users_User_UserOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*Users_User_UserOption) ProtoMessage() {} func (x *Users_User_UserOption) ProtoReflect() protoreflect.Message { mi := &file_users_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Users_User_UserOption.ProtoReflect.Descriptor instead. func (*Users_User_UserOption) Descriptor() ([]byte, []int) { return file_users_proto_rawDescGZIP(), []int{0, 5, 5} } func (x *Users_User_UserOption) GetUserId() int32 { if x != nil { return x.UserId } return 0 } func (x *Users_User_UserOption) GetMailingListMode() bool { if x != nil { return x.MailingListMode } return false } func (x *Users_User_UserOption) GetMailingListModeFrequency() int32 { if x != nil { return x.MailingListModeFrequency } return 0 } func (x *Users_User_UserOption) GetEmailDigests() bool { if x != nil { return x.EmailDigests } return false } func (x *Users_User_UserOption) GetEmailLevel() int32 { if x != nil { return x.EmailLevel } return 0 } func (x *Users_User_UserOption) GetEmailMessagesLevel() int32 { if x != nil { return x.EmailMessagesLevel } return 0 } func (x *Users_User_UserOption) GetExternalLinksIsNewTab() bool { if x != nil { return x.ExternalLinksIsNewTab } return false } func (x *Users_User_UserOption) GetDarkSchemeId() int32 { if x != nil { return x.DarkSchemeId } return 0 } func (x *Users_User_UserOption) GetDynamicFavicon() bool { if x != nil { return x.DynamicFavicon } return false } func (x *Users_User_UserOption) GetEnableQuoting() bool { if x != nil { return x.EnableQuoting } return false } func (x *Users_User_UserOption) GetEnableDefer() bool { if x != nil { return x.EnableDefer } return false } func (x *Users_User_UserOption) GetDigestAfterMinutes() int32 { if x != nil { return x.DigestAfterMinutes } return 0 } func (x *Users_User_UserOption) GetAutomaticallyUnpinTopics() bool { if x != nil { return x.AutomaticallyUnpinTopics } return false } func (x *Users_User_UserOption) GetAutoTrackTopicsAftersMsecs() int32 { if x != nil { return x.AutoTrackTopicsAftersMsecs } return 0 } func (x *Users_User_UserOption) GetNotificationLevelWhenReplying() int32 { if x != nil { return x.NotificationLevelWhenReplying } return 0 } func (x *Users_User_UserOption) GetNewTopicDurationMinutes() int32 { if x != nil { return x.NewTopicDurationMinutes } return 0 } func (x *Users_User_UserOption) GetEmailPreviousReplies() int32 { if x != nil { return x.EmailPreviousReplies } return 0 } func (x *Users_User_UserOption) GetEmailInReplyTo() bool { if x != nil { return x.EmailInReplyTo } return false } func (x *Users_User_UserOption) GetLikeNotificationFrequency() int32 { if x != nil { return x.LikeNotificationFrequency } return 0 } func (x *Users_User_UserOption) GetIncludeTl0InDigests() bool { if x != nil { return x.IncludeTl0InDigests } return false } func (x *Users_User_UserOption) GetThemeIds() []int32 { if x != nil { return x.ThemeIds } return nil } func (x *Users_User_UserOption) GetThemeKeySeq() int32 { if x != nil { return x.ThemeKeySeq } return 0 } func (x *Users_User_UserOption) GetAllowPrivateMessages() bool { if x != nil { return x.AllowPrivateMessages } return false } func (x *Users_User_UserOption) GetEnableAllowedPmUsers() bool { if x != nil { return x.EnableAllowedPmUsers } return false } func (x *Users_User_UserOption) GetHideProfileAndPresense() bool { if x != nil { return x.HideProfileAndPresense } return false } func (x *Users_User_UserOption) GetTextSize() string { if x != nil { return x.TextSize } return "" } func (x *Users_User_UserOption) GetTextSizeSeq() int32 { if x != nil { return x.TextSizeSeq } return 0 } func (x *Users_User_UserOption) GetTitleCountMode() string { if x != nil { return x.TitleCountMode } return "" } func (x *Users_User_UserOption) GetTimezone() string { if x != nil { return x.Timezone } return "" } func (x *Users_User_UserOption) GetSkipNewUserTips() bool { if x != nil { return x.SkipNewUserTips } return false } var File_users_proto protoreflect.FileDescriptor var file_users_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xce, 0x48, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x52, 0x06, 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x42, 0x61, 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0a, 0x62, 0x61, 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x1a, 0xd3, 0x02, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x61, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x1a, 0xc2, 0x03, 0x0a, 0x06, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x62, 0x61, 0x64, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x61, 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x1a, 0x4f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0xa4, 0x01, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x84, 0x01, 0x0a, 0x06, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xbd, 0x3c, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x4d, 0x75, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x21, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, 0x75, 0x73, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62, 0x61, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x53, 0x0a, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x27, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x23, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x13, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x26, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x12, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x61, 0x6e, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1f, 0x63, 0x61, 0x6e, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x5f, 0x62, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x42, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x2f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x32, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x35, 0x20, 0x03, 0x28, 0x05, 0x52, 0x1b, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x36, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x38, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x39, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x62, 0x69, 0x6f, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x69, 0x6f, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x41, 0x20, 0x03, 0x28, 0x05, 0x52, 0x14, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x49, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x85, 0x0a, 0x0a, 0x0d, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x66, 0x66, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x1a, 0x4a, 0x0a, 0x12, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbc, 0x02, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x73, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, 0xd0, 0x0a, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x69, 0x6f, 0x5f, 0x72, 0x61, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x6f, 0x52, 0x61, 0x77, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x45, 0x78, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x1b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x65, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6d, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6d, 0x61, 0x70, 0x4d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x05, 0x52, 0x1c, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x85, 0x01, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x1a, 0x88, 0x0b, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x19, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x5f, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x61, 0x72, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x61, 0x72, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x41, 0x66, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x5f, 0x75, 0x6e, 0x70, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x1e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x6d, 0x73, 0x65, 0x63, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x73, 0x4d, 0x73, 0x65, 0x63, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x57, 0x68, 0x65, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x1a, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6e, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x11, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x3e, 0x0a, 0x1b, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6c, 0x69, 0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x33, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x6c, 0x30, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x6c, 0x30, 0x49, 0x6e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x68, 0x69, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x70, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x70, 0x73, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_users_proto_rawDescOnce sync.Once file_users_proto_rawDescData = file_users_proto_rawDesc ) func file_users_proto_rawDescGZIP() []byte { file_users_proto_rawDescOnce.Do(func() { file_users_proto_rawDescData = protoimpl.X.CompressGZIP(file_users_proto_rawDescData) }) return file_users_proto_rawDescData } var file_users_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_users_proto_goTypes = []interface{}{ (*Users)(nil), // 0: discourse.protobuf.Users (*Users_UserBadges)(nil), // 1: discourse.protobuf.Users.UserBadges (*Users_Badges)(nil), // 2: discourse.protobuf.Users.Badges (*Users_BadgeTypes)(nil), // 3: discourse.protobuf.Users.BadgeTypes (*Users_Users)(nil), // 4: discourse.protobuf.Users.Users (*Users_Topics)(nil), // 5: discourse.protobuf.Users.Topics (*Users_User)(nil), // 6: discourse.protobuf.Users.User (*Users_User_FeaturedTopic)(nil), // 7: discourse.protobuf.Users.User.FeaturedTopic (*Users_User_AssociatedAccounts)(nil), // 8: discourse.protobuf.Users.User.AssociatedAccounts (*Users_User_UserAuthTokens)(nil), // 9: discourse.protobuf.Users.User.UserAuthTokens (*Users_User_Groups)(nil), // 10: discourse.protobuf.Users.User.Groups (*Users_User_GroupUsers)(nil), // 11: discourse.protobuf.Users.User.GroupUsers (*Users_User_UserOption)(nil), // 12: discourse.protobuf.Users.User.UserOption (*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp } var file_users_proto_depIdxs = []int32{ 1, // 0: discourse.protobuf.Users.user_badges:type_name -> discourse.protobuf.Users.UserBadges 2, // 1: discourse.protobuf.Users.badges:type_name -> discourse.protobuf.Users.Badges 3, // 2: discourse.protobuf.Users.badge_types:type_name -> discourse.protobuf.Users.BadgeTypes 4, // 3: discourse.protobuf.Users.users:type_name -> discourse.protobuf.Users.Users 5, // 4: discourse.protobuf.Users.topics:type_name -> discourse.protobuf.Users.Topics 6, // 5: discourse.protobuf.Users.user:type_name -> discourse.protobuf.Users.User 13, // 6: discourse.protobuf.Users.UserBadges.granted_at:type_name -> google.protobuf.Timestamp 13, // 7: discourse.protobuf.Users.UserBadges.created_at:type_name -> google.protobuf.Timestamp 13, // 8: discourse.protobuf.Users.User.last_posted_at:type_name -> google.protobuf.Timestamp 13, // 9: discourse.protobuf.Users.User.last_seen_at:type_name -> google.protobuf.Timestamp 13, // 10: discourse.protobuf.Users.User.created_at:type_name -> google.protobuf.Timestamp 7, // 11: discourse.protobuf.Users.User.featured_topic:type_name -> discourse.protobuf.Users.User.FeaturedTopic 8, // 12: discourse.protobuf.Users.User.associated_accounts:type_name -> discourse.protobuf.Users.User.AssociatedAccounts 9, // 13: discourse.protobuf.Users.User.user_auth_tokens:type_name -> discourse.protobuf.Users.User.UserAuthTokens 10, // 14: discourse.protobuf.Users.User.groups:type_name -> discourse.protobuf.Users.User.Groups 11, // 15: discourse.protobuf.Users.User.group_users:type_name -> discourse.protobuf.Users.User.GroupUsers 12, // 16: discourse.protobuf.Users.User.user_option:type_name -> discourse.protobuf.Users.User.UserOption 13, // 17: discourse.protobuf.Users.User.FeaturedTopic.last_posted_at:type_name -> google.protobuf.Timestamp 13, // 18: discourse.protobuf.Users.User.FeaturedTopic.created_at:type_name -> google.protobuf.Timestamp 13, // 19: discourse.protobuf.Users.User.FeaturedTopic.updated_at:type_name -> google.protobuf.Timestamp 13, // 20: discourse.protobuf.Users.User.FeaturedTopic.bumped_at:type_name -> google.protobuf.Timestamp 13, // 21: discourse.protobuf.Users.User.UserAuthTokens.created_at:type_name -> google.protobuf.Timestamp 13, // 22: discourse.protobuf.Users.User.UserAuthTokens.seen_at:type_name -> google.protobuf.Timestamp 23, // [23:23] is the sub-list for method output_type 23, // [23:23] is the sub-list for method input_type 23, // [23:23] is the sub-list for extension type_name 23, // [23:23] is the sub-list for extension extendee 0, // [0:23] is the sub-list for field type_name } func init() { file_users_proto_init() } func file_users_proto_init() { if File_users_proto != nil { return } if !protoimpl.UnsafeEnabled { file_users_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_UserBadges); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_Badges); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_BadgeTypes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_Users); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_Topics); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_User); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_User_FeaturedTopic); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_User_AssociatedAccounts); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_User_UserAuthTokens); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_User_Groups); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_User_GroupUsers); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_users_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Users_User_UserOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_users_proto_rawDesc, NumEnums: 0, NumMessages: 13, NumExtensions: 0, NumServices: 0, }, GoTypes: file_users_proto_goTypes, DependencyIndexes: file_users_proto_depIdxs, MessageInfos: file_users_proto_msgTypes, }.Build() File_users_proto = out.File file_users_proto_rawDesc = nil file_users_proto_goTypes = nil file_users_proto_depIdxs = nil }