From 0c4d0f221bb21f86bf89656db5b78da15d909a7f Mon Sep 17 00:00:00 2001 From: cjy Date: Wed, 17 Dec 2025 19:31:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE=E6=8C=87?= =?UTF-8?q?=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/aryshare/ayrshare.pb.go | 13479 ++++++++++++++++++++++++ api/aryshare/ayrshare.validator.pb.go | 900 ++ api/aryshare/ayrshare_triple.pb.go | 1108 ++ pkg/cron/task.go | 8 + pkg/router/analysis.go | 3 + pkg/service/cast/analysis.go | 545 + 6 files changed, 16043 insertions(+) create mode 100644 api/aryshare/ayrshare.pb.go create mode 100644 api/aryshare/ayrshare.validator.pb.go create mode 100644 api/aryshare/ayrshare_triple.pb.go diff --git a/api/aryshare/ayrshare.pb.go b/api/aryshare/ayrshare.pb.go new file mode 100644 index 0000000..ec0d771 --- /dev/null +++ b/api/aryshare/ayrshare.pb.go @@ -0,0 +1,13479 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.21.1 +// source: pb/ayrshare.proto + +package aryshare + +import ( + _ "github.com/mwitkow/go-proto-validators" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + 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) +) + +// Instagram 用户标签(带坐标) +type UserTag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username"` + X float64 `protobuf:"fixed64,2,opt,name=x,proto3" json:"x"` // Required for images, cannot be used with Reels + Y float64 `protobuf:"fixed64,3,opt,name=y,proto3" json:"y"` // Required for images, cannot be used with Reels +} + +func (x *UserTag) Reset() { + *x = UserTag{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserTag) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserTag) ProtoMessage() {} + +func (x *UserTag) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 UserTag.ProtoReflect.Descriptor instead. +func (*UserTag) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{0} +} + +func (x *UserTag) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *UserTag) GetX() float64 { + if x != nil { + return x.X + } + return 0 +} + +func (x *UserTag) GetY() float64 { + if x != nil { + return x.Y + } + return 0 +} + +// Instagram 特定发布选项 +type InstagramOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShareReelsFeed bool `protobuf:"varint,1,opt,name=shareReelsFeed,proto3" json:"shareReelsFeed"` // Whether Reel can appear in both Feed and Reels tabs + AudioName string `protobuf:"bytes,2,opt,name=audioName,proto3" json:"audioName"` // Name of the audio music for Reels + ThumbNail string `protobuf:"bytes,3,opt,name=thumbNail,proto3" json:"thumbNail"` // URL of the Reel cover image (thumbnail) + ThumbNailOffset int32 `protobuf:"varint,4,opt,name=thumbNailOffset,proto3" json:"thumbNailOffset"` // Offset in milliseconds of the thumbnail frame + Stories bool `protobuf:"varint,5,opt,name=stories,proto3" json:"stories"` // Whether to post as Instagram Story + AltText []string `protobuf:"bytes,6,rep,name=altText,proto3" json:"altText"` // Array of alternative text for images (up to 1000 chars per image) + LocationId string `protobuf:"bytes,7,opt,name=locationId,proto3" json:"locationId"` // Facebook Page ID or Page name + UserTags []*UserTag `protobuf:"bytes,8,rep,name=userTags,proto3" json:"userTags"` // Array of user tags with username and coordinates + Collaborators []string `protobuf:"bytes,9,rep,name=collaborators,proto3" json:"collaborators"` // Array of Instagram usernames (up to 3) + AutoResize bool `protobuf:"varint,10,opt,name=autoResize,proto3" json:"autoResize"` // Auto resize images to 1080x1080px (Max Pack required) + DisableComments bool `protobuf:"varint,11,opt,name=disableComments,proto3" json:"disableComments"` // Disable comments on the published post +} + +func (x *InstagramOptions) Reset() { + *x = InstagramOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramOptions) ProtoMessage() {} + +func (x *InstagramOptions) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 InstagramOptions.ProtoReflect.Descriptor instead. +func (*InstagramOptions) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{1} +} + +func (x *InstagramOptions) GetShareReelsFeed() bool { + if x != nil { + return x.ShareReelsFeed + } + return false +} + +func (x *InstagramOptions) GetAudioName() string { + if x != nil { + return x.AudioName + } + return "" +} + +func (x *InstagramOptions) GetThumbNail() string { + if x != nil { + return x.ThumbNail + } + return "" +} + +func (x *InstagramOptions) GetThumbNailOffset() int32 { + if x != nil { + return x.ThumbNailOffset + } + return 0 +} + +func (x *InstagramOptions) GetStories() bool { + if x != nil { + return x.Stories + } + return false +} + +func (x *InstagramOptions) GetAltText() []string { + if x != nil { + return x.AltText + } + return nil +} + +func (x *InstagramOptions) GetLocationId() string { + if x != nil { + return x.LocationId + } + return "" +} + +func (x *InstagramOptions) GetUserTags() []*UserTag { + if x != nil { + return x.UserTags + } + return nil +} + +func (x *InstagramOptions) GetCollaborators() []string { + if x != nil { + return x.Collaborators + } + return nil +} + +func (x *InstagramOptions) GetAutoResize() bool { + if x != nil { + return x.AutoResize + } + return false +} + +func (x *InstagramOptions) GetDisableComments() bool { + if x != nil { + return x.DisableComments + } + return false +} + +// TikTok 特定发布选项 +type TikTokOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AutoAddMusic bool `protobuf:"varint,1,opt,name=autoAddMusic,proto3" json:"autoAddMusic"` // Whether to automatically add recommended music (image only) + DisableComments bool `protobuf:"varint,2,opt,name=disableComments,proto3" json:"disableComments"` // Whether to disable comments on the published post + DisableDuet bool `protobuf:"varint,3,opt,name=disableDuet,proto3" json:"disableDuet"` // Disable duets on the published video (video only) + DisableStitch bool `protobuf:"varint,4,opt,name=disableStitch,proto3" json:"disableStitch"` // Disable stitch on the published video (video only) + Draft bool `protobuf:"varint,5,opt,name=draft,proto3" json:"draft"` // Whether to create a draft post + IsAIGenerated bool `protobuf:"varint,6,opt,name=isAIGenerated,proto3" json:"isAIGenerated"` // Whether to enable AI-generated content toggle (video only) + IsBrandedContent bool `protobuf:"varint,7,opt,name=isBrandedContent,proto3" json:"isBrandedContent"` // Whether to enable Branded Content toggle + IsBrandOrganic bool `protobuf:"varint,8,opt,name=isBrandOrganic,proto3" json:"isBrandOrganic"` // Whether to enable Brand Organic Content toggle + ImageCoverIndex int32 `protobuf:"varint,9,opt,name=imageCoverIndex,proto3" json:"imageCoverIndex"` // Index of mediaUrls to be used as cover (image only, default 0) + Title string `protobuf:"bytes,10,opt,name=title,proto3" json:"title"` // Title of the post (image only) + ThumbNailOffset int32 `protobuf:"varint,11,opt,name=thumbNailOffset,proto3" json:"thumbNailOffset"` // Frame to use for video cover in milliseconds (video only) + ThumbNail string `protobuf:"bytes,12,opt,name=thumbNail,proto3" json:"thumbNail"` // URL of thumbnail image for video (video only) + Visibility string `protobuf:"bytes,13,opt,name=visibility,proto3" json:"visibility"` // How the post is shared: "public", "private", "followers", "friends" (image only, default "public") +} + +func (x *TikTokOptions) Reset() { + *x = TikTokOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokOptions) ProtoMessage() {} + +func (x *TikTokOptions) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 TikTokOptions.ProtoReflect.Descriptor instead. +func (*TikTokOptions) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{2} +} + +func (x *TikTokOptions) GetAutoAddMusic() bool { + if x != nil { + return x.AutoAddMusic + } + return false +} + +func (x *TikTokOptions) GetDisableComments() bool { + if x != nil { + return x.DisableComments + } + return false +} + +func (x *TikTokOptions) GetDisableDuet() bool { + if x != nil { + return x.DisableDuet + } + return false +} + +func (x *TikTokOptions) GetDisableStitch() bool { + if x != nil { + return x.DisableStitch + } + return false +} + +func (x *TikTokOptions) GetDraft() bool { + if x != nil { + return x.Draft + } + return false +} + +func (x *TikTokOptions) GetIsAIGenerated() bool { + if x != nil { + return x.IsAIGenerated + } + return false +} + +func (x *TikTokOptions) GetIsBrandedContent() bool { + if x != nil { + return x.IsBrandedContent + } + return false +} + +func (x *TikTokOptions) GetIsBrandOrganic() bool { + if x != nil { + return x.IsBrandOrganic + } + return false +} + +func (x *TikTokOptions) GetImageCoverIndex() int32 { + if x != nil { + return x.ImageCoverIndex + } + return 0 +} + +func (x *TikTokOptions) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *TikTokOptions) GetThumbNailOffset() int32 { + if x != nil { + return x.ThumbNailOffset + } + return 0 +} + +func (x *TikTokOptions) GetThumbNail() string { + if x != nil { + return x.ThumbNail + } + return "" +} + +func (x *TikTokOptions) GetVisibility() string { + if x != nil { + return x.Visibility + } + return "" +} + +// 发布帖子到社交媒体平台 +type PostRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + MediaUrls []string `protobuf:"bytes,3,rep,name=mediaUrls,proto3" json:"mediaUrls"` + IsVideo bool `protobuf:"varint,4,opt,name=isVideo,proto3" json:"isVideo"` + ScheduleDate string `protobuf:"bytes,5,opt,name=scheduleDate,proto3" json:"scheduleDate"` + ValidateScheduled bool `protobuf:"varint,6,opt,name=validateScheduled,proto3" json:"validateScheduled"` + ShortenLinks bool `protobuf:"varint,7,opt,name=shortenLinks,proto3" json:"shortenLinks"` + DisableComments bool `protobuf:"varint,8,opt,name=disableComments,proto3" json:"disableComments"` + InstagramOptions *InstagramOptions `protobuf:"bytes,9,opt,name=instagramOptions,proto3" json:"instagramOptions"` + TikTokOptions *TikTokOptions `protobuf:"bytes,10,opt,name=tikTokOptions,proto3" json:"tikTokOptions"` + ProfileKey string `protobuf:"bytes,11,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *PostRequest) Reset() { + *x = PostRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostRequest) ProtoMessage() {} + +func (x *PostRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 PostRequest.ProtoReflect.Descriptor instead. +func (*PostRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{3} +} + +func (x *PostRequest) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *PostRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *PostRequest) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *PostRequest) GetIsVideo() bool { + if x != nil { + return x.IsVideo + } + return false +} + +func (x *PostRequest) GetScheduleDate() string { + if x != nil { + return x.ScheduleDate + } + return "" +} + +func (x *PostRequest) GetValidateScheduled() bool { + if x != nil { + return x.ValidateScheduled + } + return false +} + +func (x *PostRequest) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +func (x *PostRequest) GetDisableComments() bool { + if x != nil { + return x.DisableComments + } + return false +} + +func (x *PostRequest) GetInstagramOptions() *InstagramOptions { + if x != nil { + return x.InstagramOptions + } + return nil +} + +func (x *PostRequest) GetTikTokOptions() *TikTokOptions { + if x != nil { + return x.TikTokOptions + } + return nil +} + +func (x *PostRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 单个平台的帖子ID响应 +type PostId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid"` + PostUrl string `protobuf:"bytes,4,opt,name=postUrl,proto3" json:"postUrl"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type"` + Owner string `protobuf:"bytes,7,opt,name=owner,proto3" json:"owner"` + MediaId string `protobuf:"bytes,8,opt,name=mediaId,proto3" json:"mediaId"` + Ended string `protobuf:"bytes,9,opt,name=ended,proto3" json:"ended"` + IdShare string `protobuf:"bytes,10,opt,name=idShare,proto3" json:"idShare"` + IsVideo bool `protobuf:"varint,11,opt,name=isVideo,proto3" json:"isVideo"` + UsedQuota int32 `protobuf:"varint,12,opt,name=usedQuota,proto3" json:"usedQuota"` +} + +func (x *PostId) Reset() { + *x = PostId{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostId) ProtoMessage() {} + +func (x *PostId) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 PostId.ProtoReflect.Descriptor instead. +func (*PostId) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{4} +} + +func (x *PostId) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostId) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostId) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *PostId) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +func (x *PostId) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *PostId) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *PostId) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *PostId) GetMediaId() string { + if x != nil { + return x.MediaId + } + return "" +} + +func (x *PostId) GetEnded() string { + if x != nil { + return x.Ended + } + return "" +} + +func (x *PostId) GetIdShare() string { + if x != nil { + return x.IdShare + } + return "" +} + +func (x *PostId) GetIsVideo() bool { + if x != nil { + return x.IsVideo + } + return false +} + +func (x *PostId) GetUsedQuota() int32 { + if x != nil { + return x.UsedQuota + } + return 0 +} + +// 帖子项(使用 profile key 时的响应格式) +type PostItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Errors []string `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors"` + PostIds []*PostId `protobuf:"bytes,3,rep,name=postIds,proto3" json:"postIds"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + RefId string `protobuf:"bytes,5,opt,name=refId,proto3" json:"refId"` + ProfileTitle string `protobuf:"bytes,6,opt,name=profileTitle,proto3" json:"profileTitle"` + Post string `protobuf:"bytes,7,opt,name=post,proto3" json:"post"` + TikTokId string `protobuf:"bytes,8,opt,name=tikTokId,proto3" json:"tikTokId"` // TikTok 特定的 ID +} + +func (x *PostItem) Reset() { + *x = PostItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostItem) ProtoMessage() {} + +func (x *PostItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 PostItem.ProtoReflect.Descriptor instead. +func (*PostItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{5} +} + +func (x *PostItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostItem) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *PostItem) GetPostIds() []*PostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *PostItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostItem) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *PostItem) GetProfileTitle() string { + if x != nil { + return x.ProfileTitle + } + return "" +} + +func (x *PostItem) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *PostItem) GetTikTokId() string { + if x != nil { + return x.TikTokId + } + return "" +} + +// 发布帖子响应 +type PostResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Posts []*PostItem `protobuf:"bytes,2,rep,name=posts,proto3" json:"posts"` + // 兼容旧版本响应格式(不使用 profile key 时) + Errors []string `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors"` + PostIds []*PostId `protobuf:"bytes,4,rep,name=postIds,proto3" json:"postIds"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id"` + IsValidated bool `protobuf:"varint,6,opt,name=isValidated,json=validate,proto3" json:"isValidated"` // validateScheduled 请求的验证结果 +} + +func (x *PostResponse) Reset() { + *x = PostResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostResponse) ProtoMessage() {} + +func (x *PostResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 PostResponse.ProtoReflect.Descriptor instead. +func (*PostResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{6} +} + +func (x *PostResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostResponse) GetPosts() []*PostItem { + if x != nil { + return x.Posts + } + return nil +} + +func (x *PostResponse) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *PostResponse) GetPostIds() []*PostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *PostResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostResponse) GetIsValidated() bool { + if x != nil { + return x.IsValidated + } + return false +} + +// 获取帖子请求 +type GetPostRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetPostRequest) Reset() { + *x = GetPostRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostRequest) ProtoMessage() {} + +func (x *GetPostRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 GetPostRequest.ProtoReflect.Descriptor instead. +func (*GetPostRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{7} +} + +func (x *GetPostRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取帖子响应 +type GetPostResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Created string `protobuf:"bytes,1,opt,name=created,proto3" json:"created"` + Errors []string `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + MediaUrls []string `protobuf:"bytes,4,rep,name=mediaUrls,proto3" json:"mediaUrls"` + Platforms []string `protobuf:"bytes,5,rep,name=platforms,proto3" json:"platforms"` + Post string `protobuf:"bytes,6,opt,name=post,proto3" json:"post"` + PostIds []*PostId `protobuf:"bytes,7,rep,name=postIds,proto3" json:"postIds"` + ProfileTitle string `protobuf:"bytes,8,opt,name=profileTitle,proto3" json:"profileTitle"` + RefId string `protobuf:"bytes,9,opt,name=refId,proto3" json:"refId"` + ScheduleDate string `protobuf:"bytes,10,opt,name=scheduleDate,proto3" json:"scheduleDate"` + ShortenLinks bool `protobuf:"varint,11,opt,name=shortenLinks,proto3" json:"shortenLinks"` + Status string `protobuf:"bytes,12,opt,name=status,proto3" json:"status"` + Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type"` +} + +func (x *GetPostResponse) Reset() { + *x = GetPostResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostResponse) ProtoMessage() {} + +func (x *GetPostResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 GetPostResponse.ProtoReflect.Descriptor instead. +func (*GetPostResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{8} +} + +func (x *GetPostResponse) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *GetPostResponse) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *GetPostResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostResponse) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *GetPostResponse) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetPostResponse) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *GetPostResponse) GetPostIds() []*PostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *GetPostResponse) GetProfileTitle() string { + if x != nil { + return x.ProfileTitle + } + return "" +} + +func (x *GetPostResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetPostResponse) GetScheduleDate() string { + if x != nil { + return x.ScheduleDate + } + return "" +} + +func (x *GetPostResponse) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +func (x *GetPostResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetPostResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// 获取用户详情请求 +type GetUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProfileKey string `protobuf:"bytes,1,opt,name=profileKey,proto3" json:"profileKey"` + InstagramDetails bool `protobuf:"varint,2,opt,name=instagramDetails,proto3" json:"instagramDetails"` +} + +func (x *GetUserRequest) Reset() { + *x = GetUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserRequest) ProtoMessage() {} + +func (x *GetUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 GetUserRequest.ProtoReflect.Descriptor instead. +func (*GetUserRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{9} +} + +func (x *GetUserRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +func (x *GetUserRequest) GetInstagramDetails() bool { + if x != nil { + return x.InstagramDetails + } + return false +} + +// 时间戳 +type Timestamp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seconds int64 `protobuf:"varint,1,opt,name=seconds,json=_seconds,proto3" json:"seconds"` + Nanoseconds int64 `protobuf:"varint,2,opt,name=nanoseconds,json=_nanoseconds,proto3" json:"nanoseconds"` + Utc string `protobuf:"bytes,3,opt,name=utc,proto3" json:"utc"` +} + +func (x *Timestamp) Reset() { + *x = Timestamp{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Timestamp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Timestamp) ProtoMessage() {} + +func (x *Timestamp) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 Timestamp.ProtoReflect.Descriptor instead. +func (*Timestamp) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{10} +} + +func (x *Timestamp) GetSeconds() int64 { + if x != nil { + return x.Seconds + } + return 0 +} + +func (x *Timestamp) GetNanoseconds() int64 { + if x != nil { + return x.Nanoseconds + } + return 0 +} + +func (x *Timestamp) GetUtc() string { + if x != nil { + return x.Utc + } + return "" +} + +// Twitter 使用情况 +type TwitterUsage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MonthlyUsage int32 `protobuf:"varint,1,opt,name=monthlyUsage,proto3" json:"monthlyUsage"` + MonthlyLimit int32 `protobuf:"varint,2,opt,name=monthlyLimit,proto3" json:"monthlyLimit"` + MonthlyReset string `protobuf:"bytes,3,opt,name=monthlyReset,proto3" json:"monthlyReset"` +} + +func (x *TwitterUsage) Reset() { + *x = TwitterUsage{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterUsage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterUsage) ProtoMessage() {} + +func (x *TwitterUsage) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 TwitterUsage.ProtoReflect.Descriptor instead. +func (*TwitterUsage) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{11} +} + +func (x *TwitterUsage) GetMonthlyUsage() int32 { + if x != nil { + return x.MonthlyUsage + } + return 0 +} + +func (x *TwitterUsage) GetMonthlyLimit() int32 { + if x != nil { + return x.MonthlyLimit + } + return 0 +} + +func (x *TwitterUsage) GetMonthlyReset() string { + if x != nil { + return x.MonthlyReset + } + return "" +} + +// 社交媒体账户显示名称和详情 +type DisplayName struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Created string `protobuf:"bytes,1,opt,name=created,proto3" json:"created"` + DisplayName string `protobuf:"bytes,2,opt,name=displayName,proto3" json:"displayName"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` + ProfileUrl string `protobuf:"bytes,5,opt,name=profileUrl,proto3" json:"profileUrl"` + UserImage string `protobuf:"bytes,6,opt,name=userImage,proto3" json:"userImage"` + Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username"` + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description"` + MessagingActive bool `protobuf:"varint,9,opt,name=messagingActive,proto3" json:"messagingActive"` + PageName string `protobuf:"bytes,10,opt,name=pageName,proto3" json:"pageName"` + UserId string `protobuf:"bytes,11,opt,name=userId,proto3" json:"userId"` + MapsUrl string `protobuf:"bytes,12,opt,name=mapsUrl,proto3" json:"mapsUrl"` + PlaceId string `protobuf:"bytes,13,opt,name=placeId,proto3" json:"placeId"` + ReviewUrl string `protobuf:"bytes,14,opt,name=reviewUrl,proto3" json:"reviewUrl"` + IgId string `protobuf:"bytes,15,opt,name=igId,proto3" json:"igId"` + Type string `protobuf:"bytes,16,opt,name=type,proto3" json:"type"` + UsedQuota int32 `protobuf:"varint,17,opt,name=usedQuota,proto3" json:"usedQuota"` + RefreshDaysRemaining int32 `protobuf:"varint,18,opt,name=refreshDaysRemaining,proto3" json:"refreshDaysRemaining"` + RefreshRequired string `protobuf:"bytes,19,opt,name=refreshRequired,proto3" json:"refreshRequired"` + IsEligibleForGeoRestrictions bool `protobuf:"varint,20,opt,name=isEligibleForGeoRestrictions,proto3" json:"isEligibleForGeoRestrictions"` + IsVerified bool `protobuf:"varint,21,opt,name=isVerified,proto3" json:"isVerified"` + SubscriptionType string `protobuf:"bytes,22,opt,name=subscriptionType,proto3" json:"subscriptionType"` + TwitterUsage *TwitterUsage `protobuf:"bytes,23,opt,name=twitterUsage,proto3" json:"twitterUsage"` + VerifiedType string `protobuf:"bytes,24,opt,name=verifiedType,proto3" json:"verifiedType"` +} + +func (x *DisplayName) Reset() { + *x = DisplayName{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayName) ProtoMessage() {} + +func (x *DisplayName) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 DisplayName.ProtoReflect.Descriptor instead. +func (*DisplayName) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{12} +} + +func (x *DisplayName) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *DisplayName) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *DisplayName) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DisplayName) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *DisplayName) GetProfileUrl() string { + if x != nil { + return x.ProfileUrl + } + return "" +} + +func (x *DisplayName) GetUserImage() string { + if x != nil { + return x.UserImage + } + return "" +} + +func (x *DisplayName) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *DisplayName) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *DisplayName) GetMessagingActive() bool { + if x != nil { + return x.MessagingActive + } + return false +} + +func (x *DisplayName) GetPageName() string { + if x != nil { + return x.PageName + } + return "" +} + +func (x *DisplayName) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *DisplayName) GetMapsUrl() string { + if x != nil { + return x.MapsUrl + } + return "" +} + +func (x *DisplayName) GetPlaceId() string { + if x != nil { + return x.PlaceId + } + return "" +} + +func (x *DisplayName) GetReviewUrl() string { + if x != nil { + return x.ReviewUrl + } + return "" +} + +func (x *DisplayName) GetIgId() string { + if x != nil { + return x.IgId + } + return "" +} + +func (x *DisplayName) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *DisplayName) GetUsedQuota() int32 { + if x != nil { + return x.UsedQuota + } + return 0 +} + +func (x *DisplayName) GetRefreshDaysRemaining() int32 { + if x != nil { + return x.RefreshDaysRemaining + } + return 0 +} + +func (x *DisplayName) GetRefreshRequired() string { + if x != nil { + return x.RefreshRequired + } + return "" +} + +func (x *DisplayName) GetIsEligibleForGeoRestrictions() bool { + if x != nil { + return x.IsEligibleForGeoRestrictions + } + return false +} + +func (x *DisplayName) GetIsVerified() bool { + if x != nil { + return x.IsVerified + } + return false +} + +func (x *DisplayName) GetSubscriptionType() string { + if x != nil { + return x.SubscriptionType + } + return "" +} + +func (x *DisplayName) GetTwitterUsage() *TwitterUsage { + if x != nil { + return x.TwitterUsage + } + return nil +} + +func (x *DisplayName) GetVerifiedType() string { + if x != nil { + return x.VerifiedType + } + return "" +} + +// 获取用户详情响应 +type GetUserResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ActiveSocialAccounts []string `protobuf:"bytes,1,rep,name=activeSocialAccounts,proto3" json:"activeSocialAccounts"` + Created *Timestamp `protobuf:"bytes,2,opt,name=created,proto3" json:"created"` + DisplayNames []*DisplayName `protobuf:"bytes,3,rep,name=displayNames,proto3" json:"displayNames"` + Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email"` + LastApiCall string `protobuf:"bytes,5,opt,name=lastApiCall,proto3" json:"lastApiCall"` + MessagingConversationMonthlyCount int32 `protobuf:"varint,6,opt,name=messagingConversationMonthlyCount,proto3" json:"messagingConversationMonthlyCount"` + MessagingEnabled bool `protobuf:"varint,7,opt,name=messagingEnabled,proto3" json:"messagingEnabled"` + MonthlyApiCalls int32 `protobuf:"varint,8,opt,name=monthlyApiCalls,proto3" json:"monthlyApiCalls"` + MonthlyPostCount int32 `protobuf:"varint,9,opt,name=monthlyPostCount,proto3" json:"monthlyPostCount"` + MonthlyPostQuota int32 `protobuf:"varint,10,opt,name=monthlyPostQuota,proto3" json:"monthlyPostQuota"` + MonthlyApiCallsQuota int32 `protobuf:"varint,11,opt,name=monthlyApiCallsQuota,proto3" json:"monthlyApiCallsQuota"` + RefId string `protobuf:"bytes,12,opt,name=refId,proto3" json:"refId"` + Title string `protobuf:"bytes,13,opt,name=title,proto3" json:"title"` + LastUpdated string `protobuf:"bytes,14,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,15,opt,name=nextUpdate,proto3" json:"nextUpdate"` +} + +func (x *GetUserResponse) Reset() { + *x = GetUserResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetUserResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserResponse) ProtoMessage() {} + +func (x *GetUserResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserResponse.ProtoReflect.Descriptor instead. +func (*GetUserResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{13} +} + +func (x *GetUserResponse) GetActiveSocialAccounts() []string { + if x != nil { + return x.ActiveSocialAccounts + } + return nil +} + +func (x *GetUserResponse) GetCreated() *Timestamp { + if x != nil { + return x.Created + } + return nil +} + +func (x *GetUserResponse) GetDisplayNames() []*DisplayName { + if x != nil { + return x.DisplayNames + } + return nil +} + +func (x *GetUserResponse) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *GetUserResponse) GetLastApiCall() string { + if x != nil { + return x.LastApiCall + } + return "" +} + +func (x *GetUserResponse) GetMessagingConversationMonthlyCount() int32 { + if x != nil { + return x.MessagingConversationMonthlyCount + } + return 0 +} + +func (x *GetUserResponse) GetMessagingEnabled() bool { + if x != nil { + return x.MessagingEnabled + } + return false +} + +func (x *GetUserResponse) GetMonthlyApiCalls() int32 { + if x != nil { + return x.MonthlyApiCalls + } + return 0 +} + +func (x *GetUserResponse) GetMonthlyPostCount() int32 { + if x != nil { + return x.MonthlyPostCount + } + return 0 +} + +func (x *GetUserResponse) GetMonthlyPostQuota() int32 { + if x != nil { + return x.MonthlyPostQuota + } + return 0 +} + +func (x *GetUserResponse) GetMonthlyApiCallsQuota() int32 { + if x != nil { + return x.MonthlyApiCallsQuota + } + return 0 +} + +func (x *GetUserResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetUserResponse) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GetUserResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetUserResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +// 创建用户配置请求 +type CreateProfileRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title"` + MessagingActive bool `protobuf:"varint,2,opt,name=messagingActive,proto3" json:"messagingActive"` + HideTopHeader bool `protobuf:"varint,3,opt,name=hideTopHeader,proto3" json:"hideTopHeader"` + TopHeader string `protobuf:"bytes,4,opt,name=topHeader,proto3" json:"topHeader"` + DisableSocial []string `protobuf:"bytes,5,rep,name=disableSocial,proto3" json:"disableSocial"` + Team bool `protobuf:"varint,6,opt,name=team,proto3" json:"team"` + Email string `protobuf:"bytes,7,opt,name=email,proto3" json:"email"` + SubHeader string `protobuf:"bytes,8,opt,name=subHeader,proto3" json:"subHeader"` + Tags []string `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags"` +} + +func (x *CreateProfileRequest) Reset() { + *x = CreateProfileRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateProfileRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateProfileRequest) ProtoMessage() {} + +func (x *CreateProfileRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateProfileRequest.ProtoReflect.Descriptor instead. +func (*CreateProfileRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{14} +} + +func (x *CreateProfileRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CreateProfileRequest) GetMessagingActive() bool { + if x != nil { + return x.MessagingActive + } + return false +} + +func (x *CreateProfileRequest) GetHideTopHeader() bool { + if x != nil { + return x.HideTopHeader + } + return false +} + +func (x *CreateProfileRequest) GetTopHeader() string { + if x != nil { + return x.TopHeader + } + return "" +} + +func (x *CreateProfileRequest) GetDisableSocial() []string { + if x != nil { + return x.DisableSocial + } + return nil +} + +func (x *CreateProfileRequest) GetTeam() bool { + if x != nil { + return x.Team + } + return false +} + +func (x *CreateProfileRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *CreateProfileRequest) GetSubHeader() string { + if x != nil { + return x.SubHeader + } + return "" +} + +func (x *CreateProfileRequest) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +// 创建用户配置响应 +type CreateProfileResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + RefId string `protobuf:"bytes,3,opt,name=refId,proto3" json:"refId"` + ProfileKey string `protobuf:"bytes,4,opt,name=profileKey,proto3" json:"profileKey"` + MessagingActive bool `protobuf:"varint,5,opt,name=messagingActive,proto3" json:"messagingActive"` +} + +func (x *CreateProfileResponse) Reset() { + *x = CreateProfileResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateProfileResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateProfileResponse) ProtoMessage() {} + +func (x *CreateProfileResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateProfileResponse.ProtoReflect.Descriptor instead. +func (*CreateProfileResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{15} +} + +func (x *CreateProfileResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *CreateProfileResponse) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CreateProfileResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *CreateProfileResponse) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +func (x *CreateProfileResponse) GetMessagingActive() bool { + if x != nil { + return x.MessagingActive + } + return false +} + +// 获取用户配置列表请求 +type GetProfilesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title"` + RefId string `protobuf:"bytes,2,opt,name=refId,proto3" json:"refId"` + HasActiveSocialAccounts bool `protobuf:"varint,3,opt,name=hasActiveSocialAccounts,proto3" json:"hasActiveSocialAccounts"` + IncludesActiveSocialAccounts []string `protobuf:"bytes,4,rep,name=includesActiveSocialAccounts,proto3" json:"includesActiveSocialAccounts"` + // Types that are assignable to ActionLog: + // + // *GetProfilesRequest_ActionLogBool + // *GetProfilesRequest_ActionLogInt + ActionLog isGetProfilesRequest_ActionLog `protobuf_oneof:"actionLog"` + Limit int32 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit"` + Cursor string `protobuf:"bytes,8,opt,name=cursor,proto3" json:"cursor"` +} + +func (x *GetProfilesRequest) Reset() { + *x = GetProfilesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProfilesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProfilesRequest) ProtoMessage() {} + +func (x *GetProfilesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProfilesRequest.ProtoReflect.Descriptor instead. +func (*GetProfilesRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{16} +} + +func (x *GetProfilesRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GetProfilesRequest) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetProfilesRequest) GetHasActiveSocialAccounts() bool { + if x != nil { + return x.HasActiveSocialAccounts + } + return false +} + +func (x *GetProfilesRequest) GetIncludesActiveSocialAccounts() []string { + if x != nil { + return x.IncludesActiveSocialAccounts + } + return nil +} + +func (m *GetProfilesRequest) GetActionLog() isGetProfilesRequest_ActionLog { + if m != nil { + return m.ActionLog + } + return nil +} + +func (x *GetProfilesRequest) GetActionLogBool() bool { + if x, ok := x.GetActionLog().(*GetProfilesRequest_ActionLogBool); ok { + return x.ActionLogBool + } + return false +} + +func (x *GetProfilesRequest) GetActionLogInt() int32 { + if x, ok := x.GetActionLog().(*GetProfilesRequest_ActionLogInt); ok { + return x.ActionLogInt + } + return 0 +} + +func (x *GetProfilesRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetProfilesRequest) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +type isGetProfilesRequest_ActionLog interface { + isGetProfilesRequest_ActionLog() +} + +type GetProfilesRequest_ActionLogBool struct { + ActionLogBool bool `protobuf:"varint,5,opt,name=actionLogBool,proto3,oneof"` +} + +type GetProfilesRequest_ActionLogInt struct { + ActionLogInt int32 `protobuf:"varint,6,opt,name=actionLogInt,proto3,oneof"` +} + +func (*GetProfilesRequest_ActionLogBool) isGetProfilesRequest_ActionLog() {} + +func (*GetProfilesRequest_ActionLogInt) isGetProfilesRequest_ActionLog() {} + +// 用户配置项 +type ProfileItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + DisplayTitle string `protobuf:"bytes,3,opt,name=displayTitle,proto3" json:"displayTitle"` + Created *Timestamp `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + CreatedUTC string `protobuf:"bytes,5,opt,name=createdUTC,proto3" json:"createdUTC"` + RefId string `protobuf:"bytes,6,opt,name=refId,proto3" json:"refId"` + ActiveSocialAccounts []string `protobuf:"bytes,7,rep,name=activeSocialAccounts,proto3" json:"activeSocialAccounts"` + Suspended bool `protobuf:"varint,8,opt,name=suspended,proto3" json:"suspended"` +} + +func (x *ProfileItem) Reset() { + *x = ProfileItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileItem) ProtoMessage() {} + +func (x *ProfileItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileItem.ProtoReflect.Descriptor instead. +func (*ProfileItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{17} +} + +func (x *ProfileItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *ProfileItem) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ProfileItem) GetDisplayTitle() string { + if x != nil { + return x.DisplayTitle + } + return "" +} + +func (x *ProfileItem) GetCreated() *Timestamp { + if x != nil { + return x.Created + } + return nil +} + +func (x *ProfileItem) GetCreatedUTC() string { + if x != nil { + return x.CreatedUTC + } + return "" +} + +func (x *ProfileItem) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *ProfileItem) GetActiveSocialAccounts() []string { + if x != nil { + return x.ActiveSocialAccounts + } + return nil +} + +func (x *ProfileItem) GetSuspended() bool { + if x != nil { + return x.Suspended + } + return false +} + +// 分页信息 +type Pagination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + HasMore bool `protobuf:"varint,1,opt,name=hasMore,proto3" json:"hasMore"` + NextCursor string `protobuf:"bytes,2,opt,name=nextCursor,proto3" json:"nextCursor"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit"` +} + +func (x *Pagination) Reset() { + *x = Pagination{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Pagination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Pagination) ProtoMessage() {} + +func (x *Pagination) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Pagination.ProtoReflect.Descriptor instead. +func (*Pagination) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{18} +} + +func (x *Pagination) GetHasMore() bool { + if x != nil { + return x.HasMore + } + return false +} + +func (x *Pagination) GetNextCursor() string { + if x != nil { + return x.NextCursor + } + return "" +} + +func (x *Pagination) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +// 获取用户配置列表响应 +type GetProfilesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Profiles []*ProfileItem `protobuf:"bytes,1,rep,name=profiles,proto3" json:"profiles"` + Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` + LastUpdated string `protobuf:"bytes,3,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,4,opt,name=nextUpdate,proto3" json:"nextUpdate"` + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination"` +} + +func (x *GetProfilesResponse) Reset() { + *x = GetProfilesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProfilesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProfilesResponse) ProtoMessage() {} + +func (x *GetProfilesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProfilesResponse.ProtoReflect.Descriptor instead. +func (*GetProfilesResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{19} +} + +func (x *GetProfilesResponse) GetProfiles() []*ProfileItem { + if x != nil { + return x.Profiles + } + return nil +} + +func (x *GetProfilesResponse) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GetProfilesResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetProfilesResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *GetProfilesResponse) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// 邮件配置对象 +type Email struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + To string `protobuf:"bytes,1,opt,name=to,proto3" json:"to"` + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject"` + Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body"` +} + +func (x *Email) Reset() { + *x = Email{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Email) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Email) ProtoMessage() {} + +func (x *Email) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Email.ProtoReflect.Descriptor instead. +func (*Email) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{20} +} + +func (x *Email) GetTo() string { + if x != nil { + return x.To + } + return "" +} + +func (x *Email) GetSubject() string { + if x != nil { + return x.Subject + } + return "" +} + +func (x *Email) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +// 生成JWT请求 +type GenerateJWTRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + PrivateKey string `protobuf:"bytes,2,opt,name=privateKey,proto3" json:"privateKey"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` + Logout bool `protobuf:"varint,4,opt,name=logout,proto3" json:"logout"` + Redirect string `protobuf:"bytes,5,opt,name=redirect,proto3" json:"redirect"` + AllowedSocial []string `protobuf:"bytes,6,rep,name=allowedSocial,proto3" json:"allowedSocial"` + Verify bool `protobuf:"varint,7,opt,name=verify,proto3" json:"verify"` + Base64 bool `protobuf:"varint,8,opt,name=base64,proto3" json:"base64"` + ExpiresIn int32 `protobuf:"varint,9,opt,name=expiresIn,proto3" json:"expiresIn"` + Email *Email `protobuf:"bytes,10,opt,name=email,proto3" json:"email"` +} + +func (x *GenerateJWTRequest) Reset() { + *x = GenerateJWTRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateJWTRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateJWTRequest) ProtoMessage() {} + +func (x *GenerateJWTRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateJWTRequest.ProtoReflect.Descriptor instead. +func (*GenerateJWTRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{21} +} + +func (x *GenerateJWTRequest) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +func (x *GenerateJWTRequest) GetPrivateKey() string { + if x != nil { + return x.PrivateKey + } + return "" +} + +func (x *GenerateJWTRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +func (x *GenerateJWTRequest) GetLogout() bool { + if x != nil { + return x.Logout + } + return false +} + +func (x *GenerateJWTRequest) GetRedirect() string { + if x != nil { + return x.Redirect + } + return "" +} + +func (x *GenerateJWTRequest) GetAllowedSocial() []string { + if x != nil { + return x.AllowedSocial + } + return nil +} + +func (x *GenerateJWTRequest) GetVerify() bool { + if x != nil { + return x.Verify + } + return false +} + +func (x *GenerateJWTRequest) GetBase64() bool { + if x != nil { + return x.Base64 + } + return false +} + +func (x *GenerateJWTRequest) GetExpiresIn() int32 { + if x != nil { + return x.ExpiresIn + } + return 0 +} + +func (x *GenerateJWTRequest) GetEmail() *Email { + if x != nil { + return x.Email + } + return nil +} + +// 生成JWT响应 +type GenerateJWTResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token"` + Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url"` + EmailSent bool `protobuf:"varint,5,opt,name=emailSent,proto3" json:"emailSent"` + ExpiresIn string `protobuf:"bytes,6,opt,name=expiresIn,proto3" json:"expiresIn"` +} + +func (x *GenerateJWTResponse) Reset() { + *x = GenerateJWTResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateJWTResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateJWTResponse) ProtoMessage() {} + +func (x *GenerateJWTResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[22] + 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 GenerateJWTResponse.ProtoReflect.Descriptor instead. +func (*GenerateJWTResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{22} +} + +func (x *GenerateJWTResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GenerateJWTResponse) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GenerateJWTResponse) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *GenerateJWTResponse) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GenerateJWTResponse) GetEmailSent() bool { + if x != nil { + return x.EmailSent + } + return false +} + +func (x *GenerateJWTResponse) GetExpiresIn() string { + if x != nil { + return x.ExpiresIn + } + return "" +} + +// 历史记录中的帖子 ID +type HistoryPostId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform"` + PostUrl string `protobuf:"bytes,4,opt,name=postUrl,proto3" json:"postUrl"` + IsVideo bool `protobuf:"varint,5,opt,name=isVideo,proto3" json:"isVideo"` +} + +func (x *HistoryPostId) Reset() { + *x = HistoryPostId{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HistoryPostId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HistoryPostId) ProtoMessage() {} + +func (x *HistoryPostId) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[23] + 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 HistoryPostId.ProtoReflect.Descriptor instead. +func (*HistoryPostId) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{23} +} + +func (x *HistoryPostId) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *HistoryPostId) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *HistoryPostId) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *HistoryPostId) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +func (x *HistoryPostId) GetIsVideo() bool { + if x != nil { + return x.IsVideo + } + return false +} + +// 历史记录项 +type HistoryItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Post string `protobuf:"bytes,2,opt,name=post,proto3" json:"post"` + Platforms []string `protobuf:"bytes,3,rep,name=platforms,proto3" json:"platforms"` + PostIds []*HistoryPostId `protobuf:"bytes,4,rep,name=postIds,proto3" json:"postIds"` + Errors []string `protobuf:"bytes,5,rep,name=errors,proto3" json:"errors"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type"` + Notes string `protobuf:"bytes,7,opt,name=notes,proto3" json:"notes"` + Created string `protobuf:"bytes,8,opt,name=created,proto3" json:"created"` + Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status"` + ScheduleDate *Timestamp `protobuf:"bytes,10,opt,name=scheduleDate,proto3" json:"scheduleDate"` + Approved bool `protobuf:"varint,11,opt,name=approved,proto3" json:"approved"` + ApprovedBy string `protobuf:"bytes,12,opt,name=approvedBy,proto3" json:"approvedBy"` + ApprovedDate string `protobuf:"bytes,13,opt,name=approvedDate,proto3" json:"approvedDate"` + RejectedBy string `protobuf:"bytes,14,opt,name=rejectedBy,proto3" json:"rejectedBy"` + RejectedDate string `protobuf:"bytes,15,opt,name=rejectedDate,proto3" json:"rejectedDate"` + RequiresApproval bool `protobuf:"varint,16,opt,name=requiresApproval,proto3" json:"requiresApproval"` + ProfileTitle string `protobuf:"bytes,17,opt,name=profileTitle,proto3" json:"profileTitle"` + RefId string `protobuf:"bytes,18,opt,name=refId,proto3" json:"refId"` + MediaUrls []string `protobuf:"bytes,19,rep,name=mediaUrls,proto3" json:"mediaUrls"` + ShortenLinks bool `protobuf:"varint,20,opt,name=shortenLinks,proto3" json:"shortenLinks"` +} + +func (x *HistoryItem) Reset() { + *x = HistoryItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HistoryItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HistoryItem) ProtoMessage() {} + +func (x *HistoryItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[24] + 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 HistoryItem.ProtoReflect.Descriptor instead. +func (*HistoryItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{24} +} + +func (x *HistoryItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *HistoryItem) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *HistoryItem) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *HistoryItem) GetPostIds() []*HistoryPostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *HistoryItem) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *HistoryItem) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *HistoryItem) GetNotes() string { + if x != nil { + return x.Notes + } + return "" +} + +func (x *HistoryItem) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *HistoryItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *HistoryItem) GetScheduleDate() *Timestamp { + if x != nil { + return x.ScheduleDate + } + return nil +} + +func (x *HistoryItem) GetApproved() bool { + if x != nil { + return x.Approved + } + return false +} + +func (x *HistoryItem) GetApprovedBy() string { + if x != nil { + return x.ApprovedBy + } + return "" +} + +func (x *HistoryItem) GetApprovedDate() string { + if x != nil { + return x.ApprovedDate + } + return "" +} + +func (x *HistoryItem) GetRejectedBy() string { + if x != nil { + return x.RejectedBy + } + return "" +} + +func (x *HistoryItem) GetRejectedDate() string { + if x != nil { + return x.RejectedDate + } + return "" +} + +func (x *HistoryItem) GetRequiresApproval() bool { + if x != nil { + return x.RequiresApproval + } + return false +} + +func (x *HistoryItem) GetProfileTitle() string { + if x != nil { + return x.ProfileTitle + } + return "" +} + +func (x *HistoryItem) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *HistoryItem) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *HistoryItem) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +// 获取帖子历史记录请求 +type GetHistoryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartDate string `protobuf:"bytes,1,opt,name=startDate,proto3" json:"startDate"` + EndDate string `protobuf:"bytes,2,opt,name=endDate,proto3" json:"endDate"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit"` + Platforms []string `protobuf:"bytes,4,rep,name=platforms,proto3" json:"platforms"` + LastDays int32 `protobuf:"varint,5,opt,name=lastDays,proto3" json:"lastDays"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status"` + Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type"` + AutoRepostId string `protobuf:"bytes,8,opt,name=autoRepostId,proto3" json:"autoRepostId"` + ProfileKey string `protobuf:"bytes,9,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetHistoryRequest) Reset() { + *x = GetHistoryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryRequest) ProtoMessage() {} + +func (x *GetHistoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[25] + 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 GetHistoryRequest.ProtoReflect.Descriptor instead. +func (*GetHistoryRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{25} +} + +func (x *GetHistoryRequest) GetStartDate() string { + if x != nil { + return x.StartDate + } + return "" +} + +func (x *GetHistoryRequest) GetEndDate() string { + if x != nil { + return x.EndDate + } + return "" +} + +func (x *GetHistoryRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetHistoryRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetHistoryRequest) GetLastDays() int32 { + if x != nil { + return x.LastDays + } + return 0 +} + +func (x *GetHistoryRequest) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetHistoryRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *GetHistoryRequest) GetAutoRepostId() string { + if x != nil { + return x.AutoRepostId + } + return "" +} + +func (x *GetHistoryRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取帖子历史记录响应 +type GetHistoryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + History []*HistoryItem `protobuf:"bytes,1,rep,name=history,proto3" json:"history"` + RefId string `protobuf:"bytes,2,opt,name=refId,proto3" json:"refId"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count"` + LastUpdated string `protobuf:"bytes,4,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,5,opt,name=nextUpdate,proto3" json:"nextUpdate"` +} + +func (x *GetHistoryResponse) Reset() { + *x = GetHistoryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryResponse) ProtoMessage() {} + +func (x *GetHistoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[26] + 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 GetHistoryResponse.ProtoReflect.Descriptor instead. +func (*GetHistoryResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{26} +} + +func (x *GetHistoryResponse) GetHistory() []*HistoryItem { + if x != nil { + return x.History + } + return nil +} + +func (x *GetHistoryResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetHistoryResponse) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GetHistoryResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetHistoryResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +// 根据ID获取帖子历史记录请求 +type GetHistoryByIdRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + SearchAllPosts bool `protobuf:"varint,2,opt,name=searchAllPosts,proto3" json:"searchAllPosts"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetHistoryByIdRequest) Reset() { + *x = GetHistoryByIdRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByIdRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByIdRequest) ProtoMessage() {} + +func (x *GetHistoryByIdRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[27] + 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 GetHistoryByIdRequest.ProtoReflect.Descriptor instead. +func (*GetHistoryByIdRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{27} +} + +func (x *GetHistoryByIdRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetHistoryByIdRequest) GetSearchAllPosts() bool { + if x != nil { + return x.SearchAllPosts + } + return false +} + +func (x *GetHistoryByIdRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 根据ID获取帖子历史记录响应 +type GetHistoryByIdResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tier string `protobuf:"bytes,1,opt,name=tier,proto3" json:"tier"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + MediaUrls []string `protobuf:"bytes,3,rep,name=mediaUrls,proto3" json:"mediaUrls"` + PostIds []*HistoryPostId `protobuf:"bytes,4,rep,name=postIds,proto3" json:"postIds"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id"` + Errors []string `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors"` + Platforms []string `protobuf:"bytes,7,rep,name=platforms,proto3" json:"platforms"` + ScheduleDate *Timestamp `protobuf:"bytes,8,opt,name=scheduleDate,proto3" json:"scheduleDate"` + Created string `protobuf:"bytes,9,opt,name=created,proto3" json:"created"` + ShortenLinks bool `protobuf:"varint,10,opt,name=shortenLinks,proto3" json:"shortenLinks"` + Post string `protobuf:"bytes,11,opt,name=post,proto3" json:"post"` + Notes string `protobuf:"bytes,12,opt,name=notes,proto3" json:"notes"` + Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type"` +} + +func (x *GetHistoryByIdResponse) Reset() { + *x = GetHistoryByIdResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByIdResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByIdResponse) ProtoMessage() {} + +func (x *GetHistoryByIdResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[28] + 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 GetHistoryByIdResponse.ProtoReflect.Descriptor instead. +func (*GetHistoryByIdResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{28} +} + +func (x *GetHistoryByIdResponse) GetTier() string { + if x != nil { + return x.Tier + } + return "" +} + +func (x *GetHistoryByIdResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetHistoryByIdResponse) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *GetHistoryByIdResponse) GetPostIds() []*HistoryPostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *GetHistoryByIdResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetHistoryByIdResponse) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *GetHistoryByIdResponse) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetHistoryByIdResponse) GetScheduleDate() *Timestamp { + if x != nil { + return x.ScheduleDate + } + return nil +} + +func (x *GetHistoryByIdResponse) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *GetHistoryByIdResponse) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +func (x *GetHistoryByIdResponse) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *GetHistoryByIdResponse) GetNotes() string { + if x != nil { + return x.Notes + } + return "" +} + +func (x *GetHistoryByIdResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// 平台帖子 +type PlatformPost struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Post string `protobuf:"bytes,2,opt,name=post,proto3" json:"post"` + PostUrl string `protobuf:"bytes,3,opt,name=postUrl,proto3" json:"postUrl"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt"` +} + +func (x *PlatformPost) Reset() { + *x = PlatformPost{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlatformPost) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformPost) ProtoMessage() {} + +func (x *PlatformPost) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[29] + 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 PlatformPost.ProtoReflect.Descriptor instead. +func (*PlatformPost) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{29} +} + +func (x *PlatformPost) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PlatformPost) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *PlatformPost) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +func (x *PlatformPost) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *PlatformPost) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +// 根据平台获取帖子历史记录请求 +type GetHistoryByPlatformRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetHistoryByPlatformRequest) Reset() { + *x = GetHistoryByPlatformRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByPlatformRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByPlatformRequest) ProtoMessage() {} + +func (x *GetHistoryByPlatformRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoryByPlatformRequest.ProtoReflect.Descriptor instead. +func (*GetHistoryByPlatformRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{30} +} + +func (x *GetHistoryByPlatformRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetHistoryByPlatformRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 根据平台获取帖子历史记录响应 +type GetHistoryByPlatformResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Posts []*PlatformPost `protobuf:"bytes,2,rep,name=posts,proto3" json:"posts"` + LastUpdated string `protobuf:"bytes,3,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,4,opt,name=nextUpdate,proto3" json:"nextUpdate"` +} + +func (x *GetHistoryByPlatformResponse) Reset() { + *x = GetHistoryByPlatformResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByPlatformResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByPlatformResponse) ProtoMessage() {} + +func (x *GetHistoryByPlatformResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[31] + 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 GetHistoryByPlatformResponse.ProtoReflect.Descriptor instead. +func (*GetHistoryByPlatformResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{31} +} + +func (x *GetHistoryByPlatformResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetHistoryByPlatformResponse) GetPosts() []*PlatformPost { + if x != nil { + return x.Posts + } + return nil +} + +func (x *GetHistoryByPlatformResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetHistoryByPlatformResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +// 发送消息请求 +type SendMessageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform"` + RecipientId string `protobuf:"bytes,2,opt,name=recipientId,proto3" json:"recipientId"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message"` + MediaUrls []string `protobuf:"bytes,4,rep,name=mediaUrls,proto3" json:"mediaUrls"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *SendMessageRequest) Reset() { + *x = SendMessageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendMessageRequest) ProtoMessage() {} + +func (x *SendMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[32] + 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 SendMessageRequest.ProtoReflect.Descriptor instead. +func (*SendMessageRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{32} +} + +func (x *SendMessageRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *SendMessageRequest) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *SendMessageRequest) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *SendMessageRequest) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *SendMessageRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 消息项(用于批量消息响应中的单个消息) +type MessageItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + RecipientId string `protobuf:"bytes,2,opt,name=recipientId,proto3" json:"recipientId"` + MessageId string `protobuf:"bytes,3,opt,name=messageId,proto3" json:"messageId"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message"` + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type"` + MediaUrl string `protobuf:"bytes,6,opt,name=mediaUrl,proto3" json:"mediaUrl"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` +} + +func (x *MessageItem) Reset() { + *x = MessageItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageItem) ProtoMessage() {} + +func (x *MessageItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[33] + 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 MessageItem.ProtoReflect.Descriptor instead. +func (*MessageItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{33} +} + +func (x *MessageItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *MessageItem) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *MessageItem) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *MessageItem) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *MessageItem) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *MessageItem) GetMediaUrl() string { + if x != nil { + return x.MediaUrl + } + return "" +} + +func (x *MessageItem) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *MessageItem) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +// 发送消息响应 +type SendMessageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + RecipientId string `protobuf:"bytes,2,opt,name=recipientId,proto3" json:"recipientId"` + MessageId string `protobuf:"bytes,3,opt,name=messageId,proto3" json:"messageId"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message"` // 成功消息的内容或错误消息的内容(根据 status 判断) + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type"` + MediaUrl string `protobuf:"bytes,6,opt,name=mediaUrl,proto3" json:"mediaUrl"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Messages []*MessageItem `protobuf:"bytes,9,rep,name=messages,proto3" json:"messages"` +} + +func (x *SendMessageResponse) Reset() { + *x = SendMessageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendMessageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendMessageResponse) ProtoMessage() {} + +func (x *SendMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[34] + 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 SendMessageResponse.ProtoReflect.Descriptor instead. +func (*SendMessageResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{34} +} + +func (x *SendMessageResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *SendMessageResponse) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *SendMessageResponse) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *SendMessageResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *SendMessageResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *SendMessageResponse) GetMediaUrl() string { + if x != nil { + return x.MediaUrl + } + return "" +} + +func (x *SendMessageResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *SendMessageResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *SendMessageResponse) GetMessages() []*MessageItem { + if x != nil { + return x.Messages + } + return nil +} + +// 获取消息请求 +type GetMessagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + ConversationId string `protobuf:"bytes,3,opt,name=conversationId,proto3" json:"conversationId"` + ConversationsOnly bool `protobuf:"varint,4,opt,name=conversationsOnly,proto3" json:"conversationsOnly"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetMessagesRequest) Reset() { + *x = GetMessagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMessagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessagesRequest) ProtoMessage() {} + +func (x *GetMessagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[35] + 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 GetMessagesRequest.ProtoReflect.Descriptor instead. +func (*GetMessagesRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{35} +} + +func (x *GetMessagesRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetMessagesRequest) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetMessagesRequest) GetConversationId() string { + if x != nil { + return x.ConversationId + } + return "" +} + +func (x *GetMessagesRequest) GetConversationsOnly() bool { + if x != nil { + return x.ConversationsOnly + } + return false +} + +func (x *GetMessagesRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 消息附件 +type MessageAttachment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url"` +} + +func (x *MessageAttachment) Reset() { + *x = MessageAttachment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageAttachment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageAttachment) ProtoMessage() {} + +func (x *MessageAttachment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageAttachment.ProtoReflect.Descriptor instead. +func (*MessageAttachment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{36} +} + +func (x *MessageAttachment) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *MessageAttachment) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// 消息发送者详情 +type MessageSenderDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Picture string `protobuf:"bytes,3,opt,name=picture,proto3" json:"picture"` + ProfileImage string `protobuf:"bytes,4,opt,name=profileImage,proto3" json:"profileImage"` +} + +func (x *MessageSenderDetails) Reset() { + *x = MessageSenderDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageSenderDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageSenderDetails) ProtoMessage() {} + +func (x *MessageSenderDetails) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[37] + 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 MessageSenderDetails.ProtoReflect.Descriptor instead. +func (*MessageSenderDetails) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{37} +} + +func (x *MessageSenderDetails) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MessageSenderDetails) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MessageSenderDetails) GetPicture() string { + if x != nil { + return x.Picture + } + return "" +} + +func (x *MessageSenderDetails) GetProfileImage() string { + if x != nil { + return x.ProfileImage + } + return "" +} + +// 消息接收者详情 +type MessageRecipientDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Picture string `protobuf:"bytes,3,opt,name=picture,proto3" json:"picture"` +} + +func (x *MessageRecipientDetails) Reset() { + *x = MessageRecipientDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageRecipientDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageRecipientDetails) ProtoMessage() {} + +func (x *MessageRecipientDetails) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[38] + 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 MessageRecipientDetails.ProtoReflect.Descriptor instead. +func (*MessageRecipientDetails) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{38} +} + +func (x *MessageRecipientDetails) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MessageRecipientDetails) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MessageRecipientDetails) GetPicture() string { + if x != nil { + return x.Picture + } + return "" +} + +// 消息反应(map类型,在proto中用repeated MessageReaction表示) +type MessageReaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId"` + Emoji string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji"` +} + +func (x *MessageReaction) Reset() { + *x = MessageReaction{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageReaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageReaction) ProtoMessage() {} + +func (x *MessageReaction) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[39] + 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 MessageReaction.ProtoReflect.Descriptor instead. +func (*MessageReaction) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{39} +} + +func (x *MessageReaction) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *MessageReaction) GetEmoji() string { + if x != nil { + return x.Emoji + } + return "" +} + +// 获取消息响应中的单个消息项 +type GetMessagesItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + SenderId string `protobuf:"bytes,2,opt,name=senderId,proto3" json:"senderId"` + SenderDetails *MessageSenderDetails `protobuf:"bytes,3,opt,name=senderDetails,proto3" json:"senderDetails"` + RecipientId string `protobuf:"bytes,4,opt,name=recipientId,proto3" json:"recipientId"` + RecipientDetails *MessageRecipientDetails `protobuf:"bytes,5,opt,name=recipientDetails,proto3" json:"recipientDetails"` + ConversationId string `protobuf:"bytes,6,opt,name=conversationId,proto3" json:"conversationId"` + Message string `protobuf:"bytes,7,opt,name=message,proto3" json:"message"` + Platform string `protobuf:"bytes,8,opt,name=platform,proto3" json:"platform"` + Action string `protobuf:"bytes,9,opt,name=action,proto3" json:"action"` + Created string `protobuf:"bytes,10,opt,name=created,proto3" json:"created"` + Updated string `protobuf:"bytes,11,opt,name=updated,proto3" json:"updated"` + Attachments []*MessageAttachment `protobuf:"bytes,12,rep,name=attachments,proto3" json:"attachments"` + Reactions []*MessageReaction `protobuf:"bytes,13,rep,name=reactions,proto3" json:"reactions"` +} + +func (x *GetMessagesItem) Reset() { + *x = GetMessagesItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMessagesItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessagesItem) ProtoMessage() {} + +func (x *GetMessagesItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[40] + 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 GetMessagesItem.ProtoReflect.Descriptor instead. +func (*GetMessagesItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{40} +} + +func (x *GetMessagesItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetMessagesItem) GetSenderId() string { + if x != nil { + return x.SenderId + } + return "" +} + +func (x *GetMessagesItem) GetSenderDetails() *MessageSenderDetails { + if x != nil { + return x.SenderDetails + } + return nil +} + +func (x *GetMessagesItem) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *GetMessagesItem) GetRecipientDetails() *MessageRecipientDetails { + if x != nil { + return x.RecipientDetails + } + return nil +} + +func (x *GetMessagesItem) GetConversationId() string { + if x != nil { + return x.ConversationId + } + return "" +} + +func (x *GetMessagesItem) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *GetMessagesItem) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetMessagesItem) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *GetMessagesItem) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *GetMessagesItem) GetUpdated() string { + if x != nil { + return x.Updated + } + return "" +} + +func (x *GetMessagesItem) GetAttachments() []*MessageAttachment { + if x != nil { + return x.Attachments + } + return nil +} + +func (x *GetMessagesItem) GetReactions() []*MessageReaction { + if x != nil { + return x.Reactions + } + return nil +} + +// 对话参与者 +type ConversationParticipant struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Picture string `protobuf:"bytes,3,opt,name=picture,proto3" json:"picture"` +} + +func (x *ConversationParticipant) Reset() { + *x = ConversationParticipant{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConversationParticipant) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConversationParticipant) ProtoMessage() {} + +func (x *ConversationParticipant) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[41] + 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 ConversationParticipant.ProtoReflect.Descriptor instead. +func (*ConversationParticipant) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{41} +} + +func (x *ConversationParticipant) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ConversationParticipant) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ConversationParticipant) GetPicture() string { + if x != nil { + return x.Picture + } + return "" +} + +// 对话详情 +type ConversationDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Participant *ConversationParticipant `protobuf:"bytes,2,opt,name=participant,proto3" json:"participant"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status"` + Watermark int64 `protobuf:"varint,4,opt,name=watermark,proto3" json:"watermark"` +} + +func (x *ConversationDetail) Reset() { + *x = ConversationDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConversationDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConversationDetail) ProtoMessage() {} + +func (x *ConversationDetail) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[42] + 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 ConversationDetail.ProtoReflect.Descriptor instead. +func (*ConversationDetail) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{42} +} + +func (x *ConversationDetail) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ConversationDetail) GetParticipant() *ConversationParticipant { + if x != nil { + return x.Participant + } + return nil +} + +func (x *ConversationDetail) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *ConversationDetail) GetWatermark() int64 { + if x != nil { + return x.Watermark + } + return 0 +} + +// 获取消息响应 +type GetMessagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Messages []*GetMessagesItem `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages"` + LastUpdated string `protobuf:"bytes,3,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,4,opt,name=nextUpdate,proto3" json:"nextUpdate"` + ConversationIds []string `protobuf:"bytes,5,rep,name=conversationIds,proto3" json:"conversationIds"` + ConversationsDetails []*ConversationDetail `protobuf:"bytes,6,rep,name=conversationsDetails,proto3" json:"conversationsDetails"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + ErrMsg string `protobuf:"bytes,9,opt,name=errMsg,json=message,proto3" json:"errMsg"` // 错误消息(JSON 字段名为 "message",但 proto 字段名为 errMsg 以区分) +} + +func (x *GetMessagesResponse) Reset() { + *x = GetMessagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMessagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessagesResponse) ProtoMessage() {} + +func (x *GetMessagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[43] + 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 GetMessagesResponse.ProtoReflect.Descriptor instead. +func (*GetMessagesResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{43} +} + +func (x *GetMessagesResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetMessagesResponse) GetMessages() []*GetMessagesItem { + if x != nil { + return x.Messages + } + return nil +} + +func (x *GetMessagesResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetMessagesResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *GetMessagesResponse) GetConversationIds() []string { + if x != nil { + return x.ConversationIds + } + return nil +} + +func (x *GetMessagesResponse) GetConversationsDetails() []*ConversationDetail { + if x != nil { + return x.ConversationsDetails + } + return nil +} + +func (x *GetMessagesResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *GetMessagesResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetMessagesResponse) GetErrMsg() string { + if x != nil { + return x.ErrMsg + } + return "" +} + +// 发布评论请求 +type PostCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + Platforms []string `protobuf:"bytes,3,rep,name=platforms,proto3" json:"platforms"` + SearchPlatformId bool `protobuf:"varint,4,opt,name=searchPlatformId,proto3" json:"searchPlatformId"` + MediaUrls []string `protobuf:"bytes,5,rep,name=mediaUrls,proto3" json:"mediaUrls"` + ProfileKey string `protobuf:"bytes,6,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *PostCommentRequest) Reset() { + *x = PostCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostCommentRequest) ProtoMessage() {} + +func (x *PostCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[44] + 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 PostCommentRequest.ProtoReflect.Descriptor instead. +func (*PostCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{44} +} + +func (x *PostCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostCommentRequest) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *PostCommentRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *PostCommentRequest) GetSearchPlatformId() bool { + if x != nil { + return x.SearchPlatformId + } + return false +} + +func (x *PostCommentRequest) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *PostCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 平台评论响应 +type InstagramCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` +} + +func (x *InstagramCommentResponse) Reset() { + *x = InstagramCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramCommentResponse) ProtoMessage() {} + +func (x *InstagramCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[45] + 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 InstagramCommentResponse.ProtoReflect.Descriptor instead. +func (*InstagramCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{45} +} + +func (x *InstagramCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *InstagramCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *InstagramCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *InstagramCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// TikTok 平台评论响应 +type TikTokCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` + VideoId string `protobuf:"bytes,5,opt,name=videoId,proto3" json:"videoId"` +} + +func (x *TikTokCommentResponse) Reset() { + *x = TikTokCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokCommentResponse) ProtoMessage() {} + +func (x *TikTokCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[46] + 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 TikTokCommentResponse.ProtoReflect.Descriptor instead. +func (*TikTokCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{46} +} + +func (x *TikTokCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TikTokCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TikTokCommentResponse) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +// Bluesky 平台评论响应 +type BlueskyCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + PostUrl string `protobuf:"bytes,6,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *BlueskyCommentResponse) Reset() { + *x = BlueskyCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueskyCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueskyCommentResponse) ProtoMessage() {} + +func (x *BlueskyCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[47] + 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 BlueskyCommentResponse.ProtoReflect.Descriptor instead. +func (*BlueskyCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{47} +} + +func (x *BlueskyCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *BlueskyCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *BlueskyCommentResponse) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *BlueskyCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *BlueskyCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *BlueskyCommentResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// Facebook 平台评论响应 +type FacebookCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` +} + +func (x *FacebookCommentResponse) Reset() { + *x = FacebookCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookCommentResponse) ProtoMessage() {} + +func (x *FacebookCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[48] + 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 FacebookCommentResponse.ProtoReflect.Descriptor instead. +func (*FacebookCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{48} +} + +func (x *FacebookCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *FacebookCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *FacebookCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *FacebookCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// LinkedIn 平台评论响应 +type LinkedInCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + CommentUrn string `protobuf:"bytes,4,opt,name=commentUrn,proto3" json:"commentUrn"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *LinkedInCommentResponse) Reset() { + *x = LinkedInCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInCommentResponse) ProtoMessage() {} + +func (x *LinkedInCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkedInCommentResponse.ProtoReflect.Descriptor instead. +func (*LinkedInCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{49} +} + +func (x *LinkedInCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *LinkedInCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *LinkedInCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *LinkedInCommentResponse) GetCommentUrn() string { + if x != nil { + return x.CommentUrn + } + return "" +} + +func (x *LinkedInCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// Twitter/X 平台评论响应 +type TwitterCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + PostUrl string `protobuf:"bytes,4,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *TwitterCommentResponse) Reset() { + *x = TwitterCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterCommentResponse) ProtoMessage() {} + +func (x *TwitterCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[50] + 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 TwitterCommentResponse.ProtoReflect.Descriptor instead. +func (*TwitterCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{50} +} + +func (x *TwitterCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TwitterCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TwitterCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TwitterCommentResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// YouTube 平台评论响应 +type YouTubeCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` +} + +func (x *YouTubeCommentResponse) Reset() { + *x = YouTubeCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeCommentResponse) ProtoMessage() {} + +func (x *YouTubeCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[51] + 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 YouTubeCommentResponse.ProtoReflect.Descriptor instead. +func (*YouTubeCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{51} +} + +func (x *YouTubeCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *YouTubeCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// 平台错误信息 +type PlatformError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,3,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *PlatformError) Reset() { + *x = PlatformError{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlatformError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformError) ProtoMessage() {} + +func (x *PlatformError) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[52] + 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 PlatformError.ProtoReflect.Descriptor instead. +func (*PlatformError) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{52} +} + +func (x *PlatformError) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *PlatformError) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PlatformError) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *PlatformError) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *PlatformError) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// 发布评论响应 +type PostCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentID string `protobuf:"bytes,2,opt,name=commentID,proto3" json:"commentID"` + CommentIdAlt string `protobuf:"bytes,3,opt,name=commentIdAlt,json=commentId,proto3" json:"commentIdAlt"` // 备用字段,用于错误响应 + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + Instagram *InstagramCommentResponse `protobuf:"bytes,5,opt,name=instagram,proto3" json:"instagram"` + Tiktok *TikTokCommentResponse `protobuf:"bytes,6,opt,name=tiktok,proto3" json:"tiktok"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,9,opt,name=message,proto3" json:"message"` + Platform string `protobuf:"bytes,10,opt,name=platform,proto3" json:"platform"` + Errors []*PlatformError `protobuf:"bytes,11,rep,name=errors,proto3" json:"errors"` + // 其它平台的发布评论结果 + Bluesky *BlueskyCommentResponse `protobuf:"bytes,12,opt,name=bluesky,proto3" json:"bluesky"` + Facebook *FacebookCommentResponse `protobuf:"bytes,13,opt,name=facebook,proto3" json:"facebook"` + Linkedin *LinkedInCommentResponse `protobuf:"bytes,14,opt,name=linkedin,proto3" json:"linkedin"` + Twitter *TwitterCommentResponse `protobuf:"bytes,15,opt,name=twitter,proto3" json:"twitter"` + Youtube *YouTubeCommentResponse `protobuf:"bytes,16,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *PostCommentResponse) Reset() { + *x = PostCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostCommentResponse) ProtoMessage() {} + +func (x *PostCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[53] + 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 PostCommentResponse.ProtoReflect.Descriptor instead. +func (*PostCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{53} +} + +func (x *PostCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostCommentResponse) GetCommentID() string { + if x != nil { + return x.CommentID + } + return "" +} + +func (x *PostCommentResponse) GetCommentIdAlt() string { + if x != nil { + return x.CommentIdAlt + } + return "" +} + +func (x *PostCommentResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostCommentResponse) GetInstagram() *InstagramCommentResponse { + if x != nil { + return x.Instagram + } + return nil +} + +func (x *PostCommentResponse) GetTiktok() *TikTokCommentResponse { + if x != nil { + return x.Tiktok + } + return nil +} + +func (x *PostCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *PostCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *PostCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *PostCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *PostCommentResponse) GetErrors() []*PlatformError { + if x != nil { + return x.Errors + } + return nil +} + +func (x *PostCommentResponse) GetBluesky() *BlueskyCommentResponse { + if x != nil { + return x.Bluesky + } + return nil +} + +func (x *PostCommentResponse) GetFacebook() *FacebookCommentResponse { + if x != nil { + return x.Facebook + } + return nil +} + +func (x *PostCommentResponse) GetLinkedin() *LinkedInCommentResponse { + if x != nil { + return x.Linkedin + } + return nil +} + +func (x *PostCommentResponse) GetTwitter() *TwitterCommentResponse { + if x != nil { + return x.Twitter + } + return nil +} + +func (x *PostCommentResponse) GetYoutube() *YouTubeCommentResponse { + if x != nil { + return x.Youtube + } + return nil +} + +// 获取评论请求 +type GetCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetCommentRequest) Reset() { + *x = GetCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCommentRequest) ProtoMessage() {} + +func (x *GetCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[54] + 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 GetCommentRequest.ProtoReflect.Descriptor instead. +func (*GetCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{54} +} + +func (x *GetCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 用户信息 +type InstagramUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username"` +} + +func (x *InstagramUser) Reset() { + *x = InstagramUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramUser) ProtoMessage() {} + +func (x *InstagramUser) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[55] + 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 InstagramUser.ProtoReflect.Descriptor instead. +func (*InstagramUser) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{55} +} + +func (x *InstagramUser) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InstagramUser) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *InstagramUser) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// Instagram 用户ID信息 +type InstagramUserInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` +} + +func (x *InstagramUserInfo) Reset() { + *x = InstagramUserInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramUserInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramUserInfo) ProtoMessage() {} + +func (x *InstagramUserInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[56] + 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 InstagramUserInfo.ProtoReflect.Descriptor instead. +func (*InstagramUserInfo) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{56} +} + +func (x *InstagramUserInfo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Instagram 评论详情 +type InstagramComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + From *InstagramUser `protobuf:"bytes,5,opt,name=from,proto3" json:"from"` + Hidden bool `protobuf:"varint,6,opt,name=hidden,proto3" json:"hidden"` + LikeCount int32 `protobuf:"varint,7,opt,name=likeCount,proto3" json:"likeCount"` + ParentId string `protobuf:"bytes,8,opt,name=parentId,proto3" json:"parentId"` + Platform string `protobuf:"bytes,9,opt,name=platform,proto3" json:"platform"` + PostId string `protobuf:"bytes,10,opt,name=postId,proto3" json:"postId"` + Replies []*InstagramComment `protobuf:"bytes,11,rep,name=replies,proto3" json:"replies"` + User *InstagramUserInfo `protobuf:"bytes,12,opt,name=user,proto3" json:"user"` + UserName string `protobuf:"bytes,13,opt,name=userName,proto3" json:"userName"` + UsernameAlt string `protobuf:"bytes,14,opt,name=usernameAlt,json=username,proto3" json:"usernameAlt"` // 备用字段,用于回复评论 +} + +func (x *InstagramComment) Reset() { + *x = InstagramComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramComment) ProtoMessage() {} + +func (x *InstagramComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[57] + 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 InstagramComment.ProtoReflect.Descriptor instead. +func (*InstagramComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{57} +} + +func (x *InstagramComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *InstagramComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *InstagramComment) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *InstagramComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *InstagramComment) GetFrom() *InstagramUser { + if x != nil { + return x.From + } + return nil +} + +func (x *InstagramComment) GetHidden() bool { + if x != nil { + return x.Hidden + } + return false +} + +func (x *InstagramComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *InstagramComment) GetParentId() string { + if x != nil { + return x.ParentId + } + return "" +} + +func (x *InstagramComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *InstagramComment) GetPostId() string { + if x != nil { + return x.PostId + } + return "" +} + +func (x *InstagramComment) GetReplies() []*InstagramComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *InstagramComment) GetUser() *InstagramUserInfo { + if x != nil { + return x.User + } + return nil +} + +func (x *InstagramComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *InstagramComment) GetUsernameAlt() string { + if x != nil { + return x.UsernameAlt + } + return "" +} + +// TikTok 评论详情 +type TikTokComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,3,opt,name=created,proto3" json:"created"` + CreateTime string `protobuf:"bytes,4,opt,name=createTime,proto3" json:"createTime"` + DisplayName string `protobuf:"bytes,5,opt,name=displayName,proto3" json:"displayName"` + Liked bool `protobuf:"varint,6,opt,name=liked,proto3" json:"liked"` + Likes int32 `protobuf:"varint,7,opt,name=likes,proto3" json:"likes"` + LikeCount int32 `protobuf:"varint,8,opt,name=likeCount,proto3" json:"likeCount"` + Owner bool `protobuf:"varint,9,opt,name=owner,proto3" json:"owner"` + ParentCommentId string `protobuf:"bytes,10,opt,name=parentCommentId,proto3" json:"parentCommentId"` + Pinned bool `protobuf:"varint,11,opt,name=pinned,proto3" json:"pinned"` + Platform string `protobuf:"bytes,12,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,13,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + Replies []*TikTokComment `protobuf:"bytes,14,rep,name=replies,proto3" json:"replies"` + Status string `protobuf:"bytes,15,opt,name=status,proto3" json:"status"` + UserId string `protobuf:"bytes,16,opt,name=userId,proto3" json:"userId"` + Username string `protobuf:"bytes,17,opt,name=username,proto3" json:"username"` + VideoId string `protobuf:"bytes,18,opt,name=videoId,proto3" json:"videoId"` + Visibility string `protobuf:"bytes,19,opt,name=visibility,proto3" json:"visibility"` +} + +func (x *TikTokComment) Reset() { + *x = TikTokComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokComment) ProtoMessage() {} + +func (x *TikTokComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[58] + 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 TikTokComment.ProtoReflect.Descriptor instead. +func (*TikTokComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{58} +} + +func (x *TikTokComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TikTokComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *TikTokComment) GetCreateTime() string { + if x != nil { + return x.CreateTime + } + return "" +} + +func (x *TikTokComment) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *TikTokComment) GetLiked() bool { + if x != nil { + return x.Liked + } + return false +} + +func (x *TikTokComment) GetLikes() int32 { + if x != nil { + return x.Likes + } + return 0 +} + +func (x *TikTokComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *TikTokComment) GetOwner() bool { + if x != nil { + return x.Owner + } + return false +} + +func (x *TikTokComment) GetParentCommentId() string { + if x != nil { + return x.ParentCommentId + } + return "" +} + +func (x *TikTokComment) GetPinned() bool { + if x != nil { + return x.Pinned + } + return false +} + +func (x *TikTokComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TikTokComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *TikTokComment) GetReplies() []*TikTokComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *TikTokComment) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokComment) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *TikTokComment) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *TikTokComment) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +func (x *TikTokComment) GetVisibility() string { + if x != nil { + return x.Visibility + } + return "" +} + +// Bluesky 评论详情 +type BlueskyComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,3,opt,name=created,proto3" json:"created"` + DisplayName string `protobuf:"bytes,4,opt,name=displayName,proto3" json:"displayName"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + Platform string `protobuf:"bytes,6,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,7,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + QuoteCount int32 `protobuf:"varint,8,opt,name=quoteCount,proto3" json:"quoteCount"` + Replies []*BlueskyComment `protobuf:"bytes,9,rep,name=replies,proto3" json:"replies"` + ReplyCount int32 `protobuf:"varint,10,opt,name=replyCount,proto3" json:"replyCount"` + ReplyTo string `protobuf:"bytes,11,opt,name=replyTo,proto3" json:"replyTo"` + RepostCount int32 `protobuf:"varint,12,opt,name=repostCount,proto3" json:"repostCount"` + UserName string `protobuf:"bytes,13,opt,name=userName,proto3" json:"userName"` +} + +func (x *BlueskyComment) Reset() { + *x = BlueskyComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueskyComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueskyComment) ProtoMessage() {} + +func (x *BlueskyComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[59] + 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 BlueskyComment.ProtoReflect.Descriptor instead. +func (*BlueskyComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{59} +} + +func (x *BlueskyComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *BlueskyComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *BlueskyComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *BlueskyComment) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *BlueskyComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *BlueskyComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *BlueskyComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *BlueskyComment) GetQuoteCount() int32 { + if x != nil { + return x.QuoteCount + } + return 0 +} + +func (x *BlueskyComment) GetReplies() []*BlueskyComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *BlueskyComment) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *BlueskyComment) GetReplyTo() string { + if x != nil { + return x.ReplyTo + } + return "" +} + +func (x *BlueskyComment) GetRepostCount() int32 { + if x != nil { + return x.RepostCount + } + return 0 +} + +func (x *BlueskyComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// Facebook 用户信息 +type FacebookUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` +} + +func (x *FacebookUser) Reset() { + *x = FacebookUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookUser) ProtoMessage() {} + +func (x *FacebookUser) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[60] + 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 FacebookUser.ProtoReflect.Descriptor instead. +func (*FacebookUser) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{60} +} + +func (x *FacebookUser) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FacebookUser) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Facebook 父级评论/帖子信息 +type FacebookParent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreatedTime string `protobuf:"bytes,1,opt,name=createdTime,proto3" json:"createdTime"` + From *FacebookUser `protobuf:"bytes,2,opt,name=from,proto3" json:"from"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` +} + +func (x *FacebookParent) Reset() { + *x = FacebookParent{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookParent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookParent) ProtoMessage() {} + +func (x *FacebookParent) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[61] + 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 FacebookParent.ProtoReflect.Descriptor instead. +func (*FacebookParent) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{61} +} + +func (x *FacebookParent) GetCreatedTime() string { + if x != nil { + return x.CreatedTime + } + return "" +} + +func (x *FacebookParent) GetFrom() *FacebookUser { + if x != nil { + return x.From + } + return nil +} + +func (x *FacebookParent) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *FacebookParent) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Facebook 评论详情(用于主评论和回复) +type FacebookComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + CommentCount int32 `protobuf:"varint,3,opt,name=commentCount,proto3" json:"commentCount"` + CommentUrl string `protobuf:"bytes,4,opt,name=commentUrl,proto3" json:"commentUrl"` + Company bool `protobuf:"varint,5,opt,name=company,proto3" json:"company"` + Created string `protobuf:"bytes,6,opt,name=created,proto3" json:"created"` + From *FacebookUser `protobuf:"bytes,7,opt,name=from,proto3" json:"from"` + LikeCount int32 `protobuf:"varint,8,opt,name=likeCount,proto3" json:"likeCount"` + Parent *FacebookParent `protobuf:"bytes,9,opt,name=parent,proto3" json:"parent"` + Platform string `protobuf:"bytes,10,opt,name=platform,proto3" json:"platform"` + UserLikes bool `protobuf:"varint,11,opt,name=userLikes,proto3" json:"userLikes"` + Replies []*FacebookComment `protobuf:"bytes,12,rep,name=replies,proto3" json:"replies"` +} + +func (x *FacebookComment) Reset() { + *x = FacebookComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookComment) ProtoMessage() {} + +func (x *FacebookComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[62] + 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 FacebookComment.ProtoReflect.Descriptor instead. +func (*FacebookComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{62} +} + +func (x *FacebookComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *FacebookComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *FacebookComment) GetCommentCount() int32 { + if x != nil { + return x.CommentCount + } + return 0 +} + +func (x *FacebookComment) GetCommentUrl() string { + if x != nil { + return x.CommentUrl + } + return "" +} + +func (x *FacebookComment) GetCompany() bool { + if x != nil { + return x.Company + } + return false +} + +func (x *FacebookComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *FacebookComment) GetFrom() *FacebookUser { + if x != nil { + return x.From + } + return nil +} + +func (x *FacebookComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *FacebookComment) GetParent() *FacebookParent { + if x != nil { + return x.Parent + } + return nil +} + +func (x *FacebookComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *FacebookComment) GetUserLikes() bool { + if x != nil { + return x.UserLikes + } + return false +} + +func (x *FacebookComment) GetReplies() []*FacebookComment { + if x != nil { + return x.Replies + } + return nil +} + +// LinkedIn 评论中的媒体信息 +type LinkedInMedia struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url"` +} + +func (x *LinkedInMedia) Reset() { + *x = LinkedInMedia{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInMedia) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInMedia) ProtoMessage() {} + +func (x *LinkedInMedia) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[63] + 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 LinkedInMedia.ProtoReflect.Descriptor instead. +func (*LinkedInMedia) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{63} +} + +func (x *LinkedInMedia) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *LinkedInMedia) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// LinkedIn 评论发布者信息 +type LinkedInFrom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description"` +} + +func (x *LinkedInFrom) Reset() { + *x = LinkedInFrom{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInFrom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInFrom) ProtoMessage() {} + +func (x *LinkedInFrom) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[64] + 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 LinkedInFrom.ProtoReflect.Descriptor instead. +func (*LinkedInFrom) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{64} +} + +func (x *LinkedInFrom) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LinkedInFrom) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *LinkedInFrom) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *LinkedInFrom) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +// LinkedIn 评论详情 +type LinkedInComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + CommentUrn string `protobuf:"bytes,3,opt,name=commentUrn,proto3" json:"commentUrn"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + From *LinkedInFrom `protobuf:"bytes,5,opt,name=from,proto3" json:"from"` + LikeCount int32 `protobuf:"varint,6,opt,name=likeCount,proto3" json:"likeCount"` + Media []*LinkedInMedia `protobuf:"bytes,7,rep,name=media,proto3" json:"media"` + Platform string `protobuf:"bytes,8,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,9,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + UserName string `protobuf:"bytes,10,opt,name=userName,proto3" json:"userName"` + Founded int32 `protobuf:"varint,11,opt,name=founded,proto3" json:"founded"` + OrganizationType string `protobuf:"bytes,12,opt,name=organizationType,proto3" json:"organizationType"` + Website string `protobuf:"bytes,13,opt,name=website,proto3" json:"website"` +} + +func (x *LinkedInComment) Reset() { + *x = LinkedInComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInComment) ProtoMessage() {} + +func (x *LinkedInComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[65] + 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 LinkedInComment.ProtoReflect.Descriptor instead. +func (*LinkedInComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{65} +} + +func (x *LinkedInComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *LinkedInComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *LinkedInComment) GetCommentUrn() string { + if x != nil { + return x.CommentUrn + } + return "" +} + +func (x *LinkedInComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *LinkedInComment) GetFrom() *LinkedInFrom { + if x != nil { + return x.From + } + return nil +} + +func (x *LinkedInComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *LinkedInComment) GetMedia() []*LinkedInMedia { + if x != nil { + return x.Media + } + return nil +} + +func (x *LinkedInComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *LinkedInComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *LinkedInComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *LinkedInComment) GetFounded() int32 { + if x != nil { + return x.Founded + } + return 0 +} + +func (x *LinkedInComment) GetOrganizationType() string { + if x != nil { + return x.OrganizationType + } + return "" +} + +func (x *LinkedInComment) GetWebsite() string { + if x != nil { + return x.Website + } + return "" +} + +// Reddit 用户信息 +type RedditUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` +} + +func (x *RedditUser) Reset() { + *x = RedditUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedditUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedditUser) ProtoMessage() {} + +func (x *RedditUser) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[66] + 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 RedditUser.ProtoReflect.Descriptor instead. +func (*RedditUser) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{66} +} + +func (x *RedditUser) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RedditUser) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Reddit 评论详情 +type RedditComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,3,opt,name=created,proto3" json:"created"` + From *RedditUser `protobuf:"bytes,4,opt,name=from,proto3" json:"from"` + CommentUrl string `protobuf:"bytes,5,opt,name=commentUrl,proto3" json:"commentUrl"` + Subreddit string `protobuf:"bytes,6,opt,name=subreddit,proto3" json:"subreddit"` + Ups int32 `protobuf:"varint,7,opt,name=ups,proto3" json:"ups"` + IsSubmitter bool `protobuf:"varint,8,opt,name=isSubmitter,proto3" json:"isSubmitter"` +} + +func (x *RedditComment) Reset() { + *x = RedditComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedditComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedditComment) ProtoMessage() {} + +func (x *RedditComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[67] + 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 RedditComment.ProtoReflect.Descriptor instead. +func (*RedditComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{67} +} + +func (x *RedditComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *RedditComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *RedditComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *RedditComment) GetFrom() *RedditUser { + if x != nil { + return x.From + } + return nil +} + +func (x *RedditComment) GetCommentUrl() string { + if x != nil { + return x.CommentUrl + } + return "" +} + +func (x *RedditComment) GetSubreddit() string { + if x != nil { + return x.Subreddit + } + return "" +} + +func (x *RedditComment) GetUps() int32 { + if x != nil { + return x.Ups + } + return 0 +} + +func (x *RedditComment) GetIsSubmitter() bool { + if x != nil { + return x.IsSubmitter + } + return false +} + +// Threads 评论详情(用于主评论和回复) +type ThreadsComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + CommentUrl string `protobuf:"bytes,3,opt,name=commentUrl,proto3" json:"commentUrl"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + HasReplies bool `protobuf:"varint,5,opt,name=hasReplies,proto3" json:"hasReplies"` + IsQuotePost bool `protobuf:"varint,6,opt,name=isQuotePost,proto3" json:"isQuotePost"` + IsReply bool `protobuf:"varint,7,opt,name=isReply,proto3" json:"isReply"` + IsReplyOwnedByMe bool `protobuf:"varint,8,opt,name=isReplyOwnedByMe,proto3" json:"isReplyOwnedByMe"` + MediaType string `protobuf:"bytes,9,opt,name=mediaType,proto3" json:"mediaType"` + ParentId string `protobuf:"bytes,10,opt,name=parentId,proto3" json:"parentId"` + Platform string `protobuf:"bytes,11,opt,name=platform,proto3" json:"platform"` + PostId string `protobuf:"bytes,12,opt,name=postId,proto3" json:"postId"` + Replies []*ThreadsComment `protobuf:"bytes,13,rep,name=replies,proto3" json:"replies"` + ReplyAudience string `protobuf:"bytes,14,opt,name=replyAudience,proto3" json:"replyAudience"` + Shortcode string `protobuf:"bytes,15,opt,name=shortcode,proto3" json:"shortcode"` + UserName string `protobuf:"bytes,16,opt,name=userName,proto3" json:"userName"` +} + +func (x *ThreadsComment) Reset() { + *x = ThreadsComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ThreadsComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ThreadsComment) ProtoMessage() {} + +func (x *ThreadsComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[68] + 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 ThreadsComment.ProtoReflect.Descriptor instead. +func (*ThreadsComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{68} +} + +func (x *ThreadsComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *ThreadsComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *ThreadsComment) GetCommentUrl() string { + if x != nil { + return x.CommentUrl + } + return "" +} + +func (x *ThreadsComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *ThreadsComment) GetHasReplies() bool { + if x != nil { + return x.HasReplies + } + return false +} + +func (x *ThreadsComment) GetIsQuotePost() bool { + if x != nil { + return x.IsQuotePost + } + return false +} + +func (x *ThreadsComment) GetIsReply() bool { + if x != nil { + return x.IsReply + } + return false +} + +func (x *ThreadsComment) GetIsReplyOwnedByMe() bool { + if x != nil { + return x.IsReplyOwnedByMe + } + return false +} + +func (x *ThreadsComment) GetMediaType() string { + if x != nil { + return x.MediaType + } + return "" +} + +func (x *ThreadsComment) GetParentId() string { + if x != nil { + return x.ParentId + } + return "" +} + +func (x *ThreadsComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ThreadsComment) GetPostId() string { + if x != nil { + return x.PostId + } + return "" +} + +func (x *ThreadsComment) GetReplies() []*ThreadsComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *ThreadsComment) GetReplyAudience() string { + if x != nil { + return x.ReplyAudience + } + return "" +} + +func (x *ThreadsComment) GetShortcode() string { + if x != nil { + return x.Shortcode + } + return "" +} + +func (x *ThreadsComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// Twitter/X 用户公共指标(用户维度,用于 Get Comments 返回) +type TwitterPublicMetrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FollowersCount int32 `protobuf:"varint,1,opt,name=followersCount,proto3" json:"followersCount"` + FollowingCount int32 `protobuf:"varint,2,opt,name=followingCount,proto3" json:"followingCount"` + TweetCount int32 `protobuf:"varint,3,opt,name=tweetCount,proto3" json:"tweetCount"` + ListedCount int32 `protobuf:"varint,4,opt,name=listedCount,proto3" json:"listedCount"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + MediaCount int32 `protobuf:"varint,6,opt,name=mediaCount,proto3" json:"mediaCount"` +} + +func (x *TwitterPublicMetrics) Reset() { + *x = TwitterPublicMetrics{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterPublicMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterPublicMetrics) ProtoMessage() {} + +func (x *TwitterPublicMetrics) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[69] + 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 TwitterPublicMetrics.ProtoReflect.Descriptor instead. +func (*TwitterPublicMetrics) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{69} +} + +func (x *TwitterPublicMetrics) GetFollowersCount() int32 { + if x != nil { + return x.FollowersCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetFollowingCount() int32 { + if x != nil { + return x.FollowingCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetTweetCount() int32 { + if x != nil { + return x.TweetCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetListedCount() int32 { + if x != nil { + return x.ListedCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetMediaCount() int32 { + if x != nil { + return x.MediaCount + } + return 0 +} + +// Twitter/X 被引用或回复的 Tweet 信息 +type TwitterReferencedTweet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` +} + +func (x *TwitterReferencedTweet) Reset() { + *x = TwitterReferencedTweet{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterReferencedTweet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterReferencedTweet) ProtoMessage() {} + +func (x *TwitterReferencedTweet) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[70] + 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 TwitterReferencedTweet.ProtoReflect.Descriptor instead. +func (*TwitterReferencedTweet) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{70} +} + +func (x *TwitterReferencedTweet) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *TwitterReferencedTweet) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Twitter/X 被回复的用户信息 +type TwitterReplyTo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreatedAt string `protobuf:"bytes,1,opt,name=createdAt,proto3" json:"createdAt"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Location string `protobuf:"bytes,4,opt,name=location,proto3" json:"location"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name"` + ProfileImageUrl string `protobuf:"bytes,6,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + PublicMetrics *TwitterPublicMetrics `protobuf:"bytes,7,opt,name=publicMetrics,proto3" json:"publicMetrics"` + Url string `protobuf:"bytes,8,opt,name=url,proto3" json:"url"` + Username string `protobuf:"bytes,9,opt,name=username,proto3" json:"username"` +} + +func (x *TwitterReplyTo) Reset() { + *x = TwitterReplyTo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterReplyTo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterReplyTo) ProtoMessage() {} + +func (x *TwitterReplyTo) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[71] + 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 TwitterReplyTo.ProtoReflect.Descriptor instead. +func (*TwitterReplyTo) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{71} +} + +func (x *TwitterReplyTo) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *TwitterReplyTo) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *TwitterReplyTo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TwitterReplyTo) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *TwitterReplyTo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TwitterReplyTo) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *TwitterReplyTo) GetPublicMetrics() *TwitterPublicMetrics { + if x != nil { + return x.PublicMetrics + } + return nil +} + +func (x *TwitterReplyTo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *TwitterReplyTo) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// Twitter/X 评论详情 +type TwitterComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BookmarkCount int32 `protobuf:"varint,1,opt,name=bookmarkCount,proto3" json:"bookmarkCount"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description"` + Id string `protobuf:"bytes,6,opt,name=id,proto3" json:"id"` + ImpressionCount int32 `protobuf:"varint,7,opt,name=impressionCount,proto3" json:"impressionCount"` + LikeCount int32 `protobuf:"varint,8,opt,name=likeCount,proto3" json:"likeCount"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name"` + Platform string `protobuf:"bytes,10,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,11,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + PublicMetrics *TwitterPublicMetrics `protobuf:"bytes,12,opt,name=publicMetrics,proto3" json:"publicMetrics"` + QuoteCount int32 `protobuf:"varint,13,opt,name=quoteCount,proto3" json:"quoteCount"` + ReferencedTweets []*TwitterReferencedTweet `protobuf:"bytes,14,rep,name=referencedTweets,proto3" json:"referencedTweets"` + ReplyCount int32 `protobuf:"varint,15,opt,name=replyCount,proto3" json:"replyCount"` + ReplyTo *TwitterReplyTo `protobuf:"bytes,16,opt,name=replyTo,proto3" json:"replyTo"` + ThreadNumber int32 `protobuf:"varint,17,opt,name=threadNumber,proto3" json:"threadNumber"` + UserName string `protobuf:"bytes,18,opt,name=userName,proto3" json:"userName"` +} + +func (x *TwitterComment) Reset() { + *x = TwitterComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterComment) ProtoMessage() {} + +func (x *TwitterComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[72] + 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 TwitterComment.ProtoReflect.Descriptor instead. +func (*TwitterComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{72} +} + +func (x *TwitterComment) GetBookmarkCount() int32 { + if x != nil { + return x.BookmarkCount + } + return 0 +} + +func (x *TwitterComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TwitterComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TwitterComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *TwitterComment) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *TwitterComment) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TwitterComment) GetImpressionCount() int32 { + if x != nil { + return x.ImpressionCount + } + return 0 +} + +func (x *TwitterComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *TwitterComment) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TwitterComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TwitterComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *TwitterComment) GetPublicMetrics() *TwitterPublicMetrics { + if x != nil { + return x.PublicMetrics + } + return nil +} + +func (x *TwitterComment) GetQuoteCount() int32 { + if x != nil { + return x.QuoteCount + } + return 0 +} + +func (x *TwitterComment) GetReferencedTweets() []*TwitterReferencedTweet { + if x != nil { + return x.ReferencedTweets + } + return nil +} + +func (x *TwitterComment) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *TwitterComment) GetReplyTo() *TwitterReplyTo { + if x != nil { + return x.ReplyTo + } + return nil +} + +func (x *TwitterComment) GetThreadNumber() int32 { + if x != nil { + return x.ThreadNumber + } + return 0 +} + +func (x *TwitterComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// YouTube 回复评论详情 +type YouTubeReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelUrl string `protobuf:"bytes,1,opt,name=channelUrl,proto3" json:"channelUrl"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + Platform string `protobuf:"bytes,6,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,7,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + UserName string `protobuf:"bytes,8,opt,name=userName,proto3" json:"userName"` + ParentId string `protobuf:"bytes,9,opt,name=parentId,proto3" json:"parentId"` +} + +func (x *YouTubeReply) Reset() { + *x = YouTubeReply{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeReply) ProtoMessage() {} + +func (x *YouTubeReply) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[73] + 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 YouTubeReply.ProtoReflect.Descriptor instead. +func (*YouTubeReply) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{73} +} + +func (x *YouTubeReply) GetChannelUrl() string { + if x != nil { + return x.ChannelUrl + } + return "" +} + +func (x *YouTubeReply) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeReply) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeReply) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *YouTubeReply) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *YouTubeReply) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *YouTubeReply) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *YouTubeReply) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *YouTubeReply) GetParentId() string { + if x != nil { + return x.ParentId + } + return "" +} + +// YouTube 评论详情 +type YouTubeComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelUrl string `protobuf:"bytes,1,opt,name=channelUrl,proto3" json:"channelUrl"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + IsPublic bool `protobuf:"varint,5,opt,name=isPublic,proto3" json:"isPublic"` + LikeCount int32 `protobuf:"varint,6,opt,name=likeCount,proto3" json:"likeCount"` + Platform string `protobuf:"bytes,7,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,8,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + Replies []*YouTubeReply `protobuf:"bytes,9,rep,name=replies,proto3" json:"replies"` + UserName string `protobuf:"bytes,10,opt,name=userName,proto3" json:"userName"` +} + +func (x *YouTubeComment) Reset() { + *x = YouTubeComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeComment) ProtoMessage() {} + +func (x *YouTubeComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[74] + 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 YouTubeComment.ProtoReflect.Descriptor instead. +func (*YouTubeComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{74} +} + +func (x *YouTubeComment) GetChannelUrl() string { + if x != nil { + return x.ChannelUrl + } + return "" +} + +func (x *YouTubeComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *YouTubeComment) GetIsPublic() bool { + if x != nil { + return x.IsPublic + } + return false +} + +func (x *YouTubeComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *YouTubeComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *YouTubeComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *YouTubeComment) GetReplies() []*YouTubeReply { + if x != nil { + return x.Replies + } + return nil +} + +func (x *YouTubeComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// 获取评论响应 +type GetCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Instagram []*InstagramComment `protobuf:"bytes,1,rep,name=instagram,proto3" json:"instagram"` + Tiktok []*TikTokComment `protobuf:"bytes,2,rep,name=tiktok,proto3" json:"tiktok"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + LastUpdated string `protobuf:"bytes,5,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,6,opt,name=nextUpdate,proto3" json:"nextUpdate"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,9,opt,name=message,proto3" json:"message"` + // 其它平台的评论列表 + Bluesky []*BlueskyComment `protobuf:"bytes,10,rep,name=bluesky,proto3" json:"bluesky"` + Facebook []*FacebookComment `protobuf:"bytes,11,rep,name=facebook,proto3" json:"facebook"` + Linkedin []*LinkedInComment `protobuf:"bytes,12,rep,name=linkedin,proto3" json:"linkedin"` + Reddit []*RedditComment `protobuf:"bytes,13,rep,name=reddit,proto3" json:"reddit"` + Threads []*ThreadsComment `protobuf:"bytes,14,rep,name=threads,proto3" json:"threads"` + Twitter []*TwitterComment `protobuf:"bytes,15,rep,name=twitter,proto3" json:"twitter"` + Youtube []*YouTubeComment `protobuf:"bytes,16,rep,name=youtube,proto3" json:"youtube"` +} + +func (x *GetCommentResponse) Reset() { + *x = GetCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCommentResponse) ProtoMessage() {} + +func (x *GetCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[75] + 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 GetCommentResponse.ProtoReflect.Descriptor instead. +func (*GetCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{75} +} + +func (x *GetCommentResponse) GetInstagram() []*InstagramComment { + if x != nil { + return x.Instagram + } + return nil +} + +func (x *GetCommentResponse) GetTiktok() []*TikTokComment { + if x != nil { + return x.Tiktok + } + return nil +} + +func (x *GetCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetCommentResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetCommentResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetCommentResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *GetCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *GetCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *GetCommentResponse) GetBluesky() []*BlueskyComment { + if x != nil { + return x.Bluesky + } + return nil +} + +func (x *GetCommentResponse) GetFacebook() []*FacebookComment { + if x != nil { + return x.Facebook + } + return nil +} + +func (x *GetCommentResponse) GetLinkedin() []*LinkedInComment { + if x != nil { + return x.Linkedin + } + return nil +} + +func (x *GetCommentResponse) GetReddit() []*RedditComment { + if x != nil { + return x.Reddit + } + return nil +} + +func (x *GetCommentResponse) GetThreads() []*ThreadsComment { + if x != nil { + return x.Threads + } + return nil +} + +func (x *GetCommentResponse) GetTwitter() []*TwitterComment { + if x != nil { + return x.Twitter + } + return nil +} + +func (x *GetCommentResponse) GetYoutube() []*YouTubeComment { + if x != nil { + return x.Youtube + } + return nil +} + +// 删除评论请求 +type DeleteCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform"` + SearchPlatformId bool `protobuf:"varint,4,opt,name=searchPlatformId,proto3" json:"searchPlatformId"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *DeleteCommentRequest) Reset() { + *x = DeleteCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCommentRequest) ProtoMessage() {} + +func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[76] + 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 DeleteCommentRequest.ProtoReflect.Descriptor instead. +func (*DeleteCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{76} +} + +func (x *DeleteCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DeleteCommentRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *DeleteCommentRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *DeleteCommentRequest) GetSearchPlatformId() bool { + if x != nil { + return x.SearchPlatformId + } + return false +} + +func (x *DeleteCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 删除评论响应(单条) +type InstagramDeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` +} + +func (x *InstagramDeleteResponse) Reset() { + *x = InstagramDeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramDeleteResponse) ProtoMessage() {} + +func (x *InstagramDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[77] + 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 InstagramDeleteResponse.ProtoReflect.Descriptor instead. +func (*InstagramDeleteResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{77} +} + +func (x *InstagramDeleteResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *InstagramDeleteResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *InstagramDeleteResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *InstagramDeleteResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +// TikTok 删除评论响应(单条) +type TikTokDeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,5,opt,name=comment,proto3" json:"comment"` +} + +func (x *TikTokDeleteResponse) Reset() { + *x = TikTokDeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokDeleteResponse) ProtoMessage() {} + +func (x *TikTokDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[78] + 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 TikTokDeleteResponse.ProtoReflect.Descriptor instead. +func (*TikTokDeleteResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{78} +} + +func (x *TikTokDeleteResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *TikTokDeleteResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokDeleteResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokDeleteResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TikTokDeleteResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +// 删除评论响应 +type DeleteCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + // Instagram 和 TikTok 可能是单个对象或数组,使用 JSON 字符串存储 + Instagram string `protobuf:"bytes,2,opt,name=instagram,proto3" json:"instagram"` + Tiktok string `protobuf:"bytes,3,opt,name=tiktok,proto3" json:"tiktok"` + Action string `protobuf:"bytes,4,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,5,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message"` + // 其它平台删除结果,同样使用 JSON 字符串存储,兼容单条或多条返回 + Bluesky string `protobuf:"bytes,7,opt,name=bluesky,proto3" json:"bluesky"` + Facebook string `protobuf:"bytes,8,opt,name=facebook,proto3" json:"facebook"` + Linkedin string `protobuf:"bytes,9,opt,name=linkedin,proto3" json:"linkedin"` + Threads string `protobuf:"bytes,10,opt,name=threads,proto3" json:"threads"` + Twitter string `protobuf:"bytes,11,opt,name=twitter,proto3" json:"twitter"` + Youtube string `protobuf:"bytes,12,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *DeleteCommentResponse) Reset() { + *x = DeleteCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCommentResponse) ProtoMessage() {} + +func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[79] + 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 DeleteCommentResponse.ProtoReflect.Descriptor instead. +func (*DeleteCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{79} +} + +func (x *DeleteCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *DeleteCommentResponse) GetInstagram() string { + if x != nil { + return x.Instagram + } + return "" +} + +func (x *DeleteCommentResponse) GetTiktok() string { + if x != nil { + return x.Tiktok + } + return "" +} + +func (x *DeleteCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *DeleteCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *DeleteCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *DeleteCommentResponse) GetBluesky() string { + if x != nil { + return x.Bluesky + } + return "" +} + +func (x *DeleteCommentResponse) GetFacebook() string { + if x != nil { + return x.Facebook + } + return "" +} + +func (x *DeleteCommentResponse) GetLinkedin() string { + if x != nil { + return x.Linkedin + } + return "" +} + +func (x *DeleteCommentResponse) GetThreads() string { + if x != nil { + return x.Threads + } + return "" +} + +func (x *DeleteCommentResponse) GetTwitter() string { + if x != nil { + return x.Twitter + } + return "" +} + +func (x *DeleteCommentResponse) GetYoutube() string { + if x != nil { + return x.Youtube + } + return "" +} + +// 回复评论请求 +type ReplyCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + Platforms []string `protobuf:"bytes,3,rep,name=platforms,proto3" json:"platforms"` + ProfileKey string `protobuf:"bytes,4,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *ReplyCommentRequest) Reset() { + *x = ReplyCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReplyCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplyCommentRequest) ProtoMessage() {} + +func (x *ReplyCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[80] + 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 ReplyCommentRequest.ProtoReflect.Descriptor instead. +func (*ReplyCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{80} +} + +func (x *ReplyCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ReplyCommentRequest) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *ReplyCommentRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *ReplyCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 回复评论响应 +type InstagramReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *InstagramReplyResponse) Reset() { + *x = InstagramReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramReplyResponse) ProtoMessage() {} + +func (x *InstagramReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[81] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramReplyResponse.ProtoReflect.Descriptor instead. +func (*InstagramReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{81} +} + +func (x *InstagramReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *InstagramReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *InstagramReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *InstagramReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *InstagramReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// TikTok 回复评论响应 +type TikTokReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + VideoId string `protobuf:"bytes,6,opt,name=videoId,proto3" json:"videoId"` +} + +func (x *TikTokReplyResponse) Reset() { + *x = TikTokReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokReplyResponse) ProtoMessage() {} + +func (x *TikTokReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[82] + 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 TikTokReplyResponse.ProtoReflect.Descriptor instead. +func (*TikTokReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{82} +} + +func (x *TikTokReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *TikTokReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TikTokReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TikTokReplyResponse) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +// Bluesky 回复评论响应 +type BlueskyReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + Cid string `protobuf:"bytes,6,opt,name=cid,proto3" json:"cid"` + PostUrl string `protobuf:"bytes,7,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *BlueskyReplyResponse) Reset() { + *x = BlueskyReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueskyReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueskyReplyResponse) ProtoMessage() {} + +func (x *BlueskyReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[83] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueskyReplyResponse.ProtoReflect.Descriptor instead. +func (*BlueskyReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{83} +} + +func (x *BlueskyReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *BlueskyReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *BlueskyReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *BlueskyReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *BlueskyReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *BlueskyReplyResponse) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *BlueskyReplyResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// Facebook 回复评论响应 +type FacebookReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *FacebookReplyResponse) Reset() { + *x = FacebookReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookReplyResponse) ProtoMessage() {} + +func (x *FacebookReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[84] + 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 FacebookReplyResponse.ProtoReflect.Descriptor instead. +func (*FacebookReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{84} +} + +func (x *FacebookReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *FacebookReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *FacebookReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *FacebookReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *FacebookReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// LinkedIn 回复评论响应 +type LinkedInReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *LinkedInReplyResponse) Reset() { + *x = LinkedInReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInReplyResponse) ProtoMessage() {} + +func (x *LinkedInReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[85] + 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 LinkedInReplyResponse.ProtoReflect.Descriptor instead. +func (*LinkedInReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{85} +} + +func (x *LinkedInReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *LinkedInReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *LinkedInReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *LinkedInReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *LinkedInReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// Twitter/X 回复评论响应 +type TwitterReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + PostUrl string `protobuf:"bytes,6,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *TwitterReplyResponse) Reset() { + *x = TwitterReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterReplyResponse) ProtoMessage() {} + +func (x *TwitterReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[86] + 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 TwitterReplyResponse.ProtoReflect.Descriptor instead. +func (*TwitterReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{86} +} + +func (x *TwitterReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TwitterReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TwitterReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *TwitterReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TwitterReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TwitterReplyResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// YouTube 回复评论响应 +type YouTubeReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *YouTubeReplyResponse) Reset() { + *x = YouTubeReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeReplyResponse) ProtoMessage() {} + +func (x *YouTubeReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[87] + 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 YouTubeReplyResponse.ProtoReflect.Descriptor instead. +func (*YouTubeReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{87} +} + +func (x *YouTubeReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *YouTubeReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *YouTubeReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// 回复评论响应 +type ReplyCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Instagram *InstagramReplyResponse `protobuf:"bytes,4,opt,name=instagram,proto3" json:"instagram"` + Tiktok *TikTokReplyResponse `protobuf:"bytes,5,opt,name=tiktok,proto3" json:"tiktok"` + Action string `protobuf:"bytes,6,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,7,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,8,opt,name=message,proto3" json:"message"` + // 其它平台的回复结果 + Bluesky *BlueskyReplyResponse `protobuf:"bytes,9,opt,name=bluesky,proto3" json:"bluesky"` + Facebook *FacebookReplyResponse `protobuf:"bytes,10,opt,name=facebook,proto3" json:"facebook"` + Linkedin *LinkedInReplyResponse `protobuf:"bytes,11,opt,name=linkedin,proto3" json:"linkedin"` + Twitter *TwitterReplyResponse `protobuf:"bytes,12,opt,name=twitter,proto3" json:"twitter"` + Youtube *YouTubeReplyResponse `protobuf:"bytes,13,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *ReplyCommentResponse) Reset() { + *x = ReplyCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReplyCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplyCommentResponse) ProtoMessage() {} + +func (x *ReplyCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[88] + 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 ReplyCommentResponse.ProtoReflect.Descriptor instead. +func (*ReplyCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{88} +} + +func (x *ReplyCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *ReplyCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *ReplyCommentResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ReplyCommentResponse) GetInstagram() *InstagramReplyResponse { + if x != nil { + return x.Instagram + } + return nil +} + +func (x *ReplyCommentResponse) GetTiktok() *TikTokReplyResponse { + if x != nil { + return x.Tiktok + } + return nil +} + +func (x *ReplyCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *ReplyCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *ReplyCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *ReplyCommentResponse) GetBluesky() *BlueskyReplyResponse { + if x != nil { + return x.Bluesky + } + return nil +} + +func (x *ReplyCommentResponse) GetFacebook() *FacebookReplyResponse { + if x != nil { + return x.Facebook + } + return nil +} + +func (x *ReplyCommentResponse) GetLinkedin() *LinkedInReplyResponse { + if x != nil { + return x.Linkedin + } + return nil +} + +func (x *ReplyCommentResponse) GetTwitter() *TwitterReplyResponse { + if x != nil { + return x.Twitter + } + return nil +} + +func (x *ReplyCommentResponse) GetYoutube() *YouTubeReplyResponse { + if x != nil { + return x.Youtube + } + return nil +} + +// 获取帖子分析数据请求 +type GetPostAnalyticsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetPostAnalyticsRequest) Reset() { + *x = GetPostAnalyticsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostAnalyticsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostAnalyticsRequest) ProtoMessage() {} + +func (x *GetPostAnalyticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[89] + 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 GetPostAnalyticsRequest.ProtoReflect.Descriptor instead. +func (*GetPostAnalyticsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{89} +} + +func (x *GetPostAnalyticsRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostAnalyticsRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetPostAnalyticsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 通过 Social Post ID 获取帖子分析数据请求 +type GetPostAnalyticsBySocialIDRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + SearchPlatformId bool `protobuf:"varint,3,opt,name=searchPlatformId,proto3" json:"searchPlatformId"` + ProfileKey string `protobuf:"bytes,4,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetPostAnalyticsBySocialIDRequest) Reset() { + *x = GetPostAnalyticsBySocialIDRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostAnalyticsBySocialIDRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostAnalyticsBySocialIDRequest) ProtoMessage() {} + +func (x *GetPostAnalyticsBySocialIDRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[90] + 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 GetPostAnalyticsBySocialIDRequest.ProtoReflect.Descriptor instead. +func (*GetPostAnalyticsBySocialIDRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{90} +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetSearchPlatformId() bool { + if x != nil { + return x.SearchPlatformId + } + return false +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取帖子分析数据响应(使用 JSON 字符串存储复杂的平台数据) +type GetPostAnalyticsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + // 各平台的分析数据以 JSON 字符串形式存储 + Bluesky string `protobuf:"bytes,4,opt,name=bluesky,proto3" json:"bluesky"` + Facebook string `protobuf:"bytes,5,opt,name=facebook,proto3" json:"facebook"` + Instagram string `protobuf:"bytes,6,opt,name=instagram,proto3" json:"instagram"` + Linkedin string `protobuf:"bytes,7,opt,name=linkedin,proto3" json:"linkedin"` + Pinterest string `protobuf:"bytes,8,opt,name=pinterest,proto3" json:"pinterest"` + Snapchat string `protobuf:"bytes,9,opt,name=snapchat,proto3" json:"snapchat"` + Threads string `protobuf:"bytes,10,opt,name=threads,proto3" json:"threads"` + Tiktok string `protobuf:"bytes,11,opt,name=tiktok,proto3" json:"tiktok"` + Twitter string `protobuf:"bytes,12,opt,name=twitter,proto3" json:"twitter"` + Youtube string `protobuf:"bytes,13,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *GetPostAnalyticsResponse) Reset() { + *x = GetPostAnalyticsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostAnalyticsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostAnalyticsResponse) ProtoMessage() {} + +func (x *GetPostAnalyticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[91] + 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 GetPostAnalyticsResponse.ProtoReflect.Descriptor instead. +func (*GetPostAnalyticsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{91} +} + +func (x *GetPostAnalyticsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetPostAnalyticsResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetBluesky() string { + if x != nil { + return x.Bluesky + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetFacebook() string { + if x != nil { + return x.Facebook + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetInstagram() string { + if x != nil { + return x.Instagram + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetLinkedin() string { + if x != nil { + return x.Linkedin + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetPinterest() string { + if x != nil { + return x.Pinterest + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetSnapchat() string { + if x != nil { + return x.Snapchat + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetThreads() string { + if x != nil { + return x.Threads + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetTiktok() string { + if x != nil { + return x.Tiktok + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetTwitter() string { + if x != nil { + return x.Twitter + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetYoutube() string { + if x != nil { + return x.Youtube + } + return "" +} + +// 获取社交网络分析数据请求 +type GetSocialAnalyticsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platforms []string `protobuf:"bytes,1,rep,name=platforms,proto3" json:"platforms"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetSocialAnalyticsRequest) Reset() { + *x = GetSocialAnalyticsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSocialAnalyticsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSocialAnalyticsRequest) ProtoMessage() {} + +func (x *GetSocialAnalyticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[92] + 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 GetSocialAnalyticsRequest.ProtoReflect.Descriptor instead. +func (*GetSocialAnalyticsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{92} +} + +func (x *GetSocialAnalyticsRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetSocialAnalyticsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取社交网络分析数据响应(使用 JSON 字符串存储复杂的平台数据) +type GetSocialAnalyticsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + // 各平台的分析数据以 JSON 字符串形式存储 + Bluesky string `protobuf:"bytes,2,opt,name=bluesky,proto3" json:"bluesky"` + Facebook string `protobuf:"bytes,3,opt,name=facebook,proto3" json:"facebook"` + Gmb string `protobuf:"bytes,4,opt,name=gmb,proto3" json:"gmb"` + Instagram string `protobuf:"bytes,5,opt,name=instagram,proto3" json:"instagram"` + Linkedin string `protobuf:"bytes,6,opt,name=linkedin,proto3" json:"linkedin"` + Pinterest string `protobuf:"bytes,7,opt,name=pinterest,proto3" json:"pinterest"` + Reddit string `protobuf:"bytes,8,opt,name=reddit,proto3" json:"reddit"` + Snapchat string `protobuf:"bytes,9,opt,name=snapchat,proto3" json:"snapchat"` + Threads string `protobuf:"bytes,10,opt,name=threads,proto3" json:"threads"` + Tiktok string `protobuf:"bytes,11,opt,name=tiktok,proto3" json:"tiktok"` + Twitter string `protobuf:"bytes,12,opt,name=twitter,proto3" json:"twitter"` + Youtube string `protobuf:"bytes,13,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *GetSocialAnalyticsResponse) Reset() { + *x = GetSocialAnalyticsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSocialAnalyticsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSocialAnalyticsResponse) ProtoMessage() {} + +func (x *GetSocialAnalyticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[93] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSocialAnalyticsResponse.ProtoReflect.Descriptor instead. +func (*GetSocialAnalyticsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{93} +} + +func (x *GetSocialAnalyticsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetBluesky() string { + if x != nil { + return x.Bluesky + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetFacebook() string { + if x != nil { + return x.Facebook + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetGmb() string { + if x != nil { + return x.Gmb + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetInstagram() string { + if x != nil { + return x.Instagram + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetLinkedin() string { + if x != nil { + return x.Linkedin + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetPinterest() string { + if x != nil { + return x.Pinterest + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetReddit() string { + if x != nil { + return x.Reddit + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetSnapchat() string { + if x != nil { + return x.Snapchat + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetThreads() string { + if x != nil { + return x.Threads + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetTiktok() string { + if x != nil { + return x.Tiktok + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetTwitter() string { + if x != nil { + return x.Twitter + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetYoutube() string { + if x != nil { + return x.Youtube + } + return "" +} + +// AutoHashtagsRequest 自动生成标签请求参数 +type AutoHashtagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post"` + Max int32 `protobuf:"varint,2,opt,name=max,proto3" json:"max"` + Position string `protobuf:"bytes,3,opt,name=position,proto3" json:"position"` + Language string `protobuf:"bytes,4,opt,name=language,proto3" json:"language"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *AutoHashtagsRequest) Reset() { + *x = AutoHashtagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AutoHashtagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoHashtagsRequest) ProtoMessage() {} + +func (x *AutoHashtagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[94] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AutoHashtagsRequest.ProtoReflect.Descriptor instead. +func (*AutoHashtagsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{94} +} + +func (x *AutoHashtagsRequest) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *AutoHashtagsRequest) GetMax() int32 { + if x != nil { + return x.Max + } + return 0 +} + +func (x *AutoHashtagsRequest) GetPosition() string { + if x != nil { + return x.Position + } + return "" +} + +func (x *AutoHashtagsRequest) GetLanguage() string { + if x != nil { + return x.Language + } + return "" +} + +func (x *AutoHashtagsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// AutoHashtagsResponse 自动生成标签返回结果 +type AutoHashtagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post"` + Action string `protobuf:"bytes,2,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,4,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message"` +} + +func (x *AutoHashtagsResponse) Reset() { + *x = AutoHashtagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AutoHashtagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoHashtagsResponse) ProtoMessage() {} + +func (x *AutoHashtagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[95] + 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 AutoHashtagsResponse.ProtoReflect.Descriptor instead. +func (*AutoHashtagsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{95} +} + +func (x *AutoHashtagsResponse) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *AutoHashtagsResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *AutoHashtagsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *AutoHashtagsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *AutoHashtagsResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// CheckBannedHashtagRequest 查看被禁用标签请求 +type CheckBannedHashtagRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hashtag string `protobuf:"bytes,1,opt,name=hashtag,proto3" json:"hashtag"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *CheckBannedHashtagRequest) Reset() { + *x = CheckBannedHashtagRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckBannedHashtagRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckBannedHashtagRequest) ProtoMessage() {} + +func (x *CheckBannedHashtagRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[96] + 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 CheckBannedHashtagRequest.ProtoReflect.Descriptor instead. +func (*CheckBannedHashtagRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{96} +} + +func (x *CheckBannedHashtagRequest) GetHashtag() string { + if x != nil { + return x.Hashtag + } + return "" +} + +func (x *CheckBannedHashtagRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// CheckBannedHashtagResponse 查看被禁用标签返回结果 +type CheckBannedHashtagResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hashtag string `protobuf:"bytes,1,opt,name=hashtag,proto3" json:"hashtag"` + Banned bool `protobuf:"varint,2,opt,name=banned,proto3" json:"banned"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,5,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message"` +} + +func (x *CheckBannedHashtagResponse) Reset() { + *x = CheckBannedHashtagResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckBannedHashtagResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckBannedHashtagResponse) ProtoMessage() {} + +func (x *CheckBannedHashtagResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[97] + 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 CheckBannedHashtagResponse.ProtoReflect.Descriptor instead. +func (*CheckBannedHashtagResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{97} +} + +func (x *CheckBannedHashtagResponse) GetHashtag() string { + if x != nil { + return x.Hashtag + } + return "" +} + +func (x *CheckBannedHashtagResponse) GetBanned() bool { + if x != nil { + return x.Banned + } + return false +} + +func (x *CheckBannedHashtagResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *CheckBannedHashtagResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *CheckBannedHashtagResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *CheckBannedHashtagResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// HashtagRecommendation 单条推荐标签信息 +type HashtagRecommendation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ViewCount int64 `protobuf:"varint,1,opt,name=viewCount,proto3" json:"viewCount"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` +} + +func (x *HashtagRecommendation) Reset() { + *x = HashtagRecommendation{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HashtagRecommendation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HashtagRecommendation) ProtoMessage() {} + +func (x *HashtagRecommendation) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[98] + 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 HashtagRecommendation.ProtoReflect.Descriptor instead. +func (*HashtagRecommendation) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{98} +} + +func (x *HashtagRecommendation) GetViewCount() int64 { + if x != nil { + return x.ViewCount + } + return 0 +} + +func (x *HashtagRecommendation) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// RecommendHashtagsRequest 推荐话题标签请求 +type RecommendHashtagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *RecommendHashtagsRequest) Reset() { + *x = RecommendHashtagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecommendHashtagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecommendHashtagsRequest) ProtoMessage() {} + +func (x *RecommendHashtagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[99] + 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 RecommendHashtagsRequest.ProtoReflect.Descriptor instead. +func (*RecommendHashtagsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{99} +} + +func (x *RecommendHashtagsRequest) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *RecommendHashtagsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// RecommendHashtagsResponse 推荐话题标签返回结果 +type RecommendHashtagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Recommendations []*HashtagRecommendation `protobuf:"bytes,2,rep,name=recommendations,proto3" json:"recommendations"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,5,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message"` +} + +func (x *RecommendHashtagsResponse) Reset() { + *x = RecommendHashtagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecommendHashtagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecommendHashtagsResponse) ProtoMessage() {} + +func (x *RecommendHashtagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[100] + 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 RecommendHashtagsResponse.ProtoReflect.Descriptor instead. +func (*RecommendHashtagsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{100} +} + +func (x *RecommendHashtagsResponse) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *RecommendHashtagsResponse) GetRecommendations() []*HashtagRecommendation { + if x != nil { + return x.Recommendations + } + return nil +} + +func (x *RecommendHashtagsResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *RecommendHashtagsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *RecommendHashtagsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *RecommendHashtagsResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// SearchHashtagsRequest 搜索话题标签请求 +type SearchHashtagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + SearchType string `protobuf:"bytes,2,opt,name=searchType,proto3" json:"searchType"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *SearchHashtagsRequest) Reset() { + *x = SearchHashtagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagsRequest) ProtoMessage() {} + +func (x *SearchHashtagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[101] + 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 SearchHashtagsRequest.ProtoReflect.Descriptor instead. +func (*SearchHashtagsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{101} +} + +func (x *SearchHashtagsRequest) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *SearchHashtagsRequest) GetSearchType() string { + if x != nil { + return x.SearchType + } + return "" +} + +func (x *SearchHashtagsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// SearchHashtagInfo 单个话题标签的基本信息 +type SearchHashtagInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` +} + +func (x *SearchHashtagInfo) Reset() { + *x = SearchHashtagInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagInfo) ProtoMessage() {} + +func (x *SearchHashtagInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[102] + 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 SearchHashtagInfo.ProtoReflect.Descriptor instead. +func (*SearchHashtagInfo) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{102} +} + +func (x *SearchHashtagInfo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SearchHashtagInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// SearchHashtagChild 搜索结果中 children.data 的元素 +type SearchHashtagChild struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` +} + +func (x *SearchHashtagChild) Reset() { + *x = SearchHashtagChild{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagChild) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagChild) ProtoMessage() {} + +func (x *SearchHashtagChild) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[103] + 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 SearchHashtagChild.ProtoReflect.Descriptor instead. +func (*SearchHashtagChild) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{103} +} + +func (x *SearchHashtagChild) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// SearchHashtagChildren 搜索结果中的 children 对象 +type SearchHashtagChildren struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*SearchHashtagChild `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` +} + +func (x *SearchHashtagChildren) Reset() { + *x = SearchHashtagChildren{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagChildren) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagChildren) ProtoMessage() {} + +func (x *SearchHashtagChildren) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagChildren.ProtoReflect.Descriptor instead. +func (*SearchHashtagChildren) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{104} +} + +func (x *SearchHashtagChildren) GetData() []*SearchHashtagChild { + if x != nil { + return x.Data + } + return nil +} + +// SearchHashtagMedia 搜索结果中的单条 Instagram 媒体信息 +type SearchHashtagMedia struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Caption string `protobuf:"bytes,1,opt,name=caption,proto3" json:"caption"` + Children *SearchHashtagChildren `protobuf:"bytes,2,opt,name=children,proto3" json:"children"` + CommentsCount int32 `protobuf:"varint,3,opt,name=commentsCount,proto3" json:"commentsCount"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + MediaType string `protobuf:"bytes,6,opt,name=mediaType,proto3" json:"mediaType"` + MediaUrl string `protobuf:"bytes,7,opt,name=mediaUrl,proto3" json:"mediaUrl"` + Permalink string `protobuf:"bytes,8,opt,name=permalink,proto3" json:"permalink"` + Timestamp string `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp"` +} + +func (x *SearchHashtagMedia) Reset() { + *x = SearchHashtagMedia{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagMedia) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagMedia) ProtoMessage() {} + +func (x *SearchHashtagMedia) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagMedia.ProtoReflect.Descriptor instead. +func (*SearchHashtagMedia) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{105} +} + +func (x *SearchHashtagMedia) GetCaption() string { + if x != nil { + return x.Caption + } + return "" +} + +func (x *SearchHashtagMedia) GetChildren() *SearchHashtagChildren { + if x != nil { + return x.Children + } + return nil +} + +func (x *SearchHashtagMedia) GetCommentsCount() int32 { + if x != nil { + return x.CommentsCount + } + return 0 +} + +func (x *SearchHashtagMedia) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SearchHashtagMedia) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *SearchHashtagMedia) GetMediaType() string { + if x != nil { + return x.MediaType + } + return "" +} + +func (x *SearchHashtagMedia) GetMediaUrl() string { + if x != nil { + return x.MediaUrl + } + return "" +} + +func (x *SearchHashtagMedia) GetPermalink() string { + if x != nil { + return x.Permalink + } + return "" +} + +func (x *SearchHashtagMedia) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +// SearchHashtagsResponse 搜索话题标签响应 +type SearchHashtagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Hashtag *SearchHashtagInfo `protobuf:"bytes,2,opt,name=hashtag,proto3" json:"hashtag"` + SearchResults []*SearchHashtagMedia `protobuf:"bytes,3,rep,name=searchResults,proto3" json:"searchResults"` + Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count"` + LastUpdated string `protobuf:"bytes,5,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,6,opt,name=nextUpdate,proto3" json:"nextUpdate"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,9,opt,name=message,proto3" json:"message"` +} + +func (x *SearchHashtagsResponse) Reset() { + *x = SearchHashtagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagsResponse) ProtoMessage() {} + +func (x *SearchHashtagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[106] + 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 SearchHashtagsResponse.ProtoReflect.Descriptor instead. +func (*SearchHashtagsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{106} +} + +func (x *SearchHashtagsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *SearchHashtagsResponse) GetHashtag() *SearchHashtagInfo { + if x != nil { + return x.Hashtag + } + return nil +} + +func (x *SearchHashtagsResponse) GetSearchResults() []*SearchHashtagMedia { + if x != nil { + return x.SearchResults + } + return nil +} + +func (x *SearchHashtagsResponse) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *SearchHashtagsResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *SearchHashtagsResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *SearchHashtagsResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *SearchHashtagsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *SearchHashtagsResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +var File_pb_ayrshare_proto protoreflect.FileDescriptor + +var file_pb_ayrshare_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x62, 0x2f, 0x61, 0x79, 0x72, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x1a, 0x13, 0x70, + 0x62, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x12, 0x70, 0x62, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x41, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x0a, + 0x01, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x79, 0x22, 0x93, 0x03, 0x0a, 0x10, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, + 0x0a, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x65, 0x6c, 0x73, 0x46, 0x65, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x65, + 0x6c, 0x73, 0x46, 0x65, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x6f, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, + 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x68, 0x75, + 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, + 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x2d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x54, 0x61, 0x67, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, + 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0xdd, 0x03, 0x0a, 0x0d, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x4d, 0x75, 0x73, 0x69, + 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, + 0x4d, 0x75, 0x73, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x65, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x65, + 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x69, 0x74, + 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x61, 0x66, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x72, 0x61, 0x66, 0x74, 0x12, 0x24, 0x0a, + 0x0d, 0x69, 0x73, 0x41, 0x49, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x41, 0x49, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, + 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x43, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, + 0x4e, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x12, + 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, + 0x8b, 0x04, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x32, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe2, + 0xdf, 0x1f, 0x1a, 0x2a, 0x16, 0x70, 0x6f, 0x73, 0x74, 0xe5, 0x86, 0x85, 0xe5, 0xae, 0xb9, 0xe4, + 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x04, 0x70, + 0x6f, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, + 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, + 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x72, + 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x28, 0x0a, 0x0f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, + 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x67, 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x10, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, + 0x0a, 0x0d, 0x74, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, + 0x74, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xa4, 0x02, + 0x0a, 0x06, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, + 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, + 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x22, 0xe0, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, + 0x66, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x74, + 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x28, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, + 0x0a, 0x0b, 0x69, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x22, 0x5e, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xe2, 0xdf, 0x1f, + 0x18, 0x2a, 0x14, 0xe5, 0xb8, 0x96, 0xe5, 0xad, 0x90, 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, + 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xfd, 0x02, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, + 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x67, 0x72, 0x61, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5b, 0x0a, 0x09, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x5f, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x74, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x74, 0x63, 0x22, 0x7a, 0x0a, 0x0c, 0x54, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, + 0x68, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x22, 0xb5, 0x06, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x73, 0x55, 0x72, + 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x73, 0x55, 0x72, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x67, 0x49, 0x64, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x67, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x32, + 0x0a, 0x14, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x61, 0x79, 0x73, 0x52, 0x65, 0x6d, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x61, 0x79, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x1c, + 0x69, 0x73, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x47, 0x65, 0x6f, + 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6f, + 0x72, 0x47, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x0c, + 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x74, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x85, 0x05, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x32, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x70, 0x69, 0x43, + 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x41, + 0x70, 0x69, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x4c, 0x0a, 0x21, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x21, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x41, 0x70, 0x69, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, + 0x6c, 0x79, 0x41, 0x70, 0x69, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x6f, + 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x6f, 0x73, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, + 0x79, 0x50, 0x6f, 0x73, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x51, 0x75, 0x6f, + 0x74, 0x61, 0x12, 0x32, 0x0a, 0x14, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x41, 0x70, 0x69, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x41, 0x70, 0x69, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x22, 0xb7, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xe2, 0xdf, + 0x1f, 0x15, 0x2a, 0x11, 0x74, 0x69, 0x74, 0x6c, 0x65, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, + 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, + 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x64, 0x65, + 0x54, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x68, 0x69, 0x64, 0x65, 0x54, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x75, 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x75, 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xa5, + 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0xc7, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x17, 0x68, 0x61, 0x73, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x68, 0x61, 0x73, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x1c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1c, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4c, 0x6f, 0x67, 0x42, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x42, 0x6f, 0x6f, 0x6c, 0x12, + 0x24, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x67, 0x49, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, + 0x22, 0x96, 0x02, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, + 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x54, 0x43, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x54, + 0x43, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, + 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x22, 0x5c, 0x0a, 0x0a, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, + 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, 0x72, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xd6, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x31, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, + 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x45, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xdb, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe2, 0xdf, 0x1f, 0x1a, + 0x2a, 0x16, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x73, 0x65, + 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, + 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x25, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xa7, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x22, + 0x87, 0x01, 0x0a, 0x0d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x22, 0xfb, 0x04, 0x0a, 0x0b, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x70, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, + 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x64, 0x42, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x72, + 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, + 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, + 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, + 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, + 0x74, 0x44, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x73, + 0x74, 0x44, 0x61, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x74, 0x49, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, + 0x66, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, + 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1c, 0xe2, 0xdf, 0x1f, 0x18, 0x2a, 0x14, 0xe5, 0xb8, 0x96, 0xe5, 0xad, 0x90, 0x49, + 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x6c, 0x6c, + 0x50, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x90, 0x03, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, + 0x12, 0x31, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, + 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x84, + 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x6f, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0xe2, 0xdf, 0x1f, 0x1c, 0x2a, 0x18, 0xe5, 0xb9, + 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, + 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, + 0x65, 0x79, 0x22, 0xa6, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x70, + 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x6f, + 0x73, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, + 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x12, + 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xe2, 0xdf, 0x1f, 0x16, 0x2a, 0x12, 0xe5, 0xb9, 0xb3, 0xe5, + 0x8f, 0xb0, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, + 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x41, 0x0a, 0x0b, 0x72, 0x65, + 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1f, 0xe2, 0xdf, 0x1f, 0x1b, 0x2a, 0x17, 0xe6, 0x8e, 0xa5, 0xe6, 0x94, 0xb6, 0xe8, 0x80, 0x85, + 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, + 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x55, 0x72, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xdb, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0xda, 0x01, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xe2, 0xdf, 0x1f, 0x16, 0x2a, 0x12, 0xe5, 0xb9, 0xb3, + 0xe5, 0x8f, 0xb0, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x39, 0x0a, 0x11, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x22, 0x78, 0x0a, 0x14, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x57, + 0x0a, 0x17, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3f, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x22, 0x96, 0x04, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x4d, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x10, 0x72, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x57, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xe7, 0x02, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x08, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x50, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x14, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa8, 0x02, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, + 0x0e, 0x69, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, + 0xba, 0x58, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, + 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, + 0x79, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x54, + 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x22, 0xb0, 0x01, 0x0a, 0x16, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x22, 0x85, 0x01, + 0x0a, 0x17, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xa5, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, + 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, + 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x82, 0x01, + 0x0a, 0x16, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, + 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, + 0x72, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x16, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x89, 0x01, 0x0a, 0x0d, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xbc, 0x05, 0x0a, 0x13, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x44, 0x12, 0x1f, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x41, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x37, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x3d, + 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x3d, 0x0a, + 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, + 0x64, 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x07, + 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, + 0x75, 0x62, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x79, 0x6f, 0x75, + 0x74, 0x75, 0x62, 0x65, 0x22, 0x5b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, 0x0e, 0x69, 0x64, 0xe4, + 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, + 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x23, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc9, 0x03, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2b, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, + 0x6d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x68, + 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, + 0x64, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, + 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x41, 0x6c, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xc4, 0x04, 0x0a, 0x0d, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, + 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, + 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xb4, 0x03, 0x0a, 0x0e, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x70, + 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, + 0x6c, 0x79, 0x54, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, + 0x79, 0x54, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x32, 0x0a, 0x0c, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0xac, 0x03, 0x0a, 0x0f, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, + 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, + 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x22, + 0x35, 0x0a, 0x0d, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x66, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, + 0x49, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbe, + 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, + 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, + 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, + 0x6e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, + 0x30, 0x0a, 0x0a, 0x52, 0x65, 0x64, 0x64, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x64, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, + 0x65, 0x64, 0x64, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x70, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x22, 0x8c, 0x04, 0x0a, 0x0e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x51, 0x75, 0x6f, 0x74, + 0x65, 0x50, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x51, + 0x75, 0x6f, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4f, 0x77, 0x6e, + 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x07, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, + 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x75, + 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, + 0x77, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x77, 0x65, + 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, + 0x77, 0x65, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6c, + 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x16, 0x54, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, + 0x65, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xae, 0x02, 0x0a, 0x0e, 0x54, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x55, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0d, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x05, 0x0a, 0x0e, 0x54, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x62, + 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, + 0x69, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, + 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0d, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4c, 0x0a, + 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, 0x65, 0x65, 0x74, + 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, 0x65, 0x65, 0x74, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, 0x65, 0x65, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, + 0x22, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x9c, 0x02, 0x0a, 0x0c, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd0, + 0x02, 0x0a, 0x0e, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, + 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x72, 0x6c, 0x12, 0x30, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x07, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x9e, 0x05, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x12, 0x2f, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, + 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x69, 0x6b, + 0x74, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, + 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x35, + 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, + 0x65, 0x64, 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x69, 0x6e, + 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x52, 0x65, 0x64, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, + 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x32, + 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x59, 0x6f, 0x75, 0x54, 0x75, + 0x62, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, + 0x62, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, 0x0e, 0x69, + 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2a, 0x0a, + 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x73, 0x0a, 0x17, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x8e, + 0x01, 0x0a, 0x14, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, + 0xcb, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, 0xdf, 0x01, + 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, 0x0e, 0x69, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, + 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, + 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0xe4, 0xb8, 0x8d, + 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, + 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, + 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, + 0xae, 0x01, 0x0a, 0x16, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, + 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x14, 0x42, 0x6c, 0x75, + 0x65, 0x73, 0x6b, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, + 0x74, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, + 0x55, 0x72, 0x6c, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x22, 0xc6, 0x01, 0x0a, 0x14, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x22, 0xac, 0x01, 0x0a, + 0x14, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xc1, 0x04, 0x0a, 0x14, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x35, 0x0a, 0x06, 0x74, 0x69, + 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, + 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, + 0x6b, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, + 0x79, 0x12, 0x3b, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, + 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x3b, + 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, + 0x65, 0x64, 0x49, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x38, 0x0a, 0x07, 0x74, + 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x74, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, + 0xb2, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xe2, 0xdf, 0x1f, 0x18, 0x2a, 0x14, 0xe5, + 0xb8, 0x96, 0xe5, 0xad, 0x90, 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, + 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49, 0x0a, 0x09, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2b, 0xe2, 0xdf, + 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0xe5, 0xb9, 0xb3, + 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, + 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, + 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x22, 0xee, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x42, 0x79, 0x53, 0x6f, 0x63, 0x69, 0x61, + 0x6c, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xe2, 0xdf, 0x1f, 0x1e, 0x2a, 0x1a, 0x53, 0x6f, + 0x63, 0x69, 0x61, 0x6c, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x20, 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49, + 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x73, 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, + 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xe6, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, 0x86, + 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xee, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, + 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x6d, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x67, 0x6d, 0x62, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, + 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x67, 0x72, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, + 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, + 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, + 0x6b, 0x74, 0x6f, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x13, 0x41, 0x75, 0x74, + 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x32, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, + 0xe2, 0xdf, 0x1f, 0x1a, 0x2a, 0x16, 0x70, 0x6f, 0x73, 0x74, 0xe5, 0x86, 0x85, 0xe5, 0xae, 0xb9, + 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x04, + 0x70, 0x6f, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x88, + 0x01, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x72, 0x0a, 0x19, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x68, + 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, + 0xa9, 0xba, 0x58, 0x01, 0x52, 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xac, 0x01, + 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, + 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, + 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x49, 0x0a, 0x15, + 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x71, 0x0a, 0x18, 0x52, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xde, 0x01, 0x0a, 0x19, 0x52, + 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x15, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x6b, 0x65, + 0x79, 0x77, 0x6f, 0x72, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, + 0xba, 0x58, 0x01, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x37, 0x0a, 0x11, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, + 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x49, 0x0a, 0x15, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, 0x64, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb5, 0x02, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, + 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, + 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, + 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x6e, 0x6b, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x6e, 0x6b, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc9, + 0x02, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x0d, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x8c, 0x0e, 0x0a, 0x08, 0x41, + 0x79, 0x72, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, + 0x15, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, + 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, + 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0b, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x54, 0x12, 0x1c, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, + 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x54, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x79, 0x49, 0x64, 0x12, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x25, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, + 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0c, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x12, + 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x42, 0x79, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x49, 0x44, 0x12, 0x2b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, + 0x42, 0x79, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, + 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x12, 0x22, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, + 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pb_ayrshare_proto_rawDescOnce sync.Once + file_pb_ayrshare_proto_rawDescData = file_pb_ayrshare_proto_rawDesc +) + +func file_pb_ayrshare_proto_rawDescGZIP() []byte { + file_pb_ayrshare_proto_rawDescOnce.Do(func() { + file_pb_ayrshare_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_ayrshare_proto_rawDescData) + }) + return file_pb_ayrshare_proto_rawDescData +} + +var file_pb_ayrshare_proto_msgTypes = make([]protoimpl.MessageInfo, 107) +var file_pb_ayrshare_proto_goTypes = []interface{}{ + (*UserTag)(nil), // 0: aryshare.UserTag + (*InstagramOptions)(nil), // 1: aryshare.InstagramOptions + (*TikTokOptions)(nil), // 2: aryshare.TikTokOptions + (*PostRequest)(nil), // 3: aryshare.PostRequest + (*PostId)(nil), // 4: aryshare.PostId + (*PostItem)(nil), // 5: aryshare.PostItem + (*PostResponse)(nil), // 6: aryshare.PostResponse + (*GetPostRequest)(nil), // 7: aryshare.GetPostRequest + (*GetPostResponse)(nil), // 8: aryshare.GetPostResponse + (*GetUserRequest)(nil), // 9: aryshare.GetUserRequest + (*Timestamp)(nil), // 10: aryshare.Timestamp + (*TwitterUsage)(nil), // 11: aryshare.TwitterUsage + (*DisplayName)(nil), // 12: aryshare.DisplayName + (*GetUserResponse)(nil), // 13: aryshare.GetUserResponse + (*CreateProfileRequest)(nil), // 14: aryshare.CreateProfileRequest + (*CreateProfileResponse)(nil), // 15: aryshare.CreateProfileResponse + (*GetProfilesRequest)(nil), // 16: aryshare.GetProfilesRequest + (*ProfileItem)(nil), // 17: aryshare.ProfileItem + (*Pagination)(nil), // 18: aryshare.Pagination + (*GetProfilesResponse)(nil), // 19: aryshare.GetProfilesResponse + (*Email)(nil), // 20: aryshare.Email + (*GenerateJWTRequest)(nil), // 21: aryshare.GenerateJWTRequest + (*GenerateJWTResponse)(nil), // 22: aryshare.GenerateJWTResponse + (*HistoryPostId)(nil), // 23: aryshare.HistoryPostId + (*HistoryItem)(nil), // 24: aryshare.HistoryItem + (*GetHistoryRequest)(nil), // 25: aryshare.GetHistoryRequest + (*GetHistoryResponse)(nil), // 26: aryshare.GetHistoryResponse + (*GetHistoryByIdRequest)(nil), // 27: aryshare.GetHistoryByIdRequest + (*GetHistoryByIdResponse)(nil), // 28: aryshare.GetHistoryByIdResponse + (*PlatformPost)(nil), // 29: aryshare.PlatformPost + (*GetHistoryByPlatformRequest)(nil), // 30: aryshare.GetHistoryByPlatformRequest + (*GetHistoryByPlatformResponse)(nil), // 31: aryshare.GetHistoryByPlatformResponse + (*SendMessageRequest)(nil), // 32: aryshare.SendMessageRequest + (*MessageItem)(nil), // 33: aryshare.MessageItem + (*SendMessageResponse)(nil), // 34: aryshare.SendMessageResponse + (*GetMessagesRequest)(nil), // 35: aryshare.GetMessagesRequest + (*MessageAttachment)(nil), // 36: aryshare.MessageAttachment + (*MessageSenderDetails)(nil), // 37: aryshare.MessageSenderDetails + (*MessageRecipientDetails)(nil), // 38: aryshare.MessageRecipientDetails + (*MessageReaction)(nil), // 39: aryshare.MessageReaction + (*GetMessagesItem)(nil), // 40: aryshare.GetMessagesItem + (*ConversationParticipant)(nil), // 41: aryshare.ConversationParticipant + (*ConversationDetail)(nil), // 42: aryshare.ConversationDetail + (*GetMessagesResponse)(nil), // 43: aryshare.GetMessagesResponse + (*PostCommentRequest)(nil), // 44: aryshare.PostCommentRequest + (*InstagramCommentResponse)(nil), // 45: aryshare.InstagramCommentResponse + (*TikTokCommentResponse)(nil), // 46: aryshare.TikTokCommentResponse + (*BlueskyCommentResponse)(nil), // 47: aryshare.BlueskyCommentResponse + (*FacebookCommentResponse)(nil), // 48: aryshare.FacebookCommentResponse + (*LinkedInCommentResponse)(nil), // 49: aryshare.LinkedInCommentResponse + (*TwitterCommentResponse)(nil), // 50: aryshare.TwitterCommentResponse + (*YouTubeCommentResponse)(nil), // 51: aryshare.YouTubeCommentResponse + (*PlatformError)(nil), // 52: aryshare.PlatformError + (*PostCommentResponse)(nil), // 53: aryshare.PostCommentResponse + (*GetCommentRequest)(nil), // 54: aryshare.GetCommentRequest + (*InstagramUser)(nil), // 55: aryshare.InstagramUser + (*InstagramUserInfo)(nil), // 56: aryshare.InstagramUserInfo + (*InstagramComment)(nil), // 57: aryshare.InstagramComment + (*TikTokComment)(nil), // 58: aryshare.TikTokComment + (*BlueskyComment)(nil), // 59: aryshare.BlueskyComment + (*FacebookUser)(nil), // 60: aryshare.FacebookUser + (*FacebookParent)(nil), // 61: aryshare.FacebookParent + (*FacebookComment)(nil), // 62: aryshare.FacebookComment + (*LinkedInMedia)(nil), // 63: aryshare.LinkedInMedia + (*LinkedInFrom)(nil), // 64: aryshare.LinkedInFrom + (*LinkedInComment)(nil), // 65: aryshare.LinkedInComment + (*RedditUser)(nil), // 66: aryshare.RedditUser + (*RedditComment)(nil), // 67: aryshare.RedditComment + (*ThreadsComment)(nil), // 68: aryshare.ThreadsComment + (*TwitterPublicMetrics)(nil), // 69: aryshare.TwitterPublicMetrics + (*TwitterReferencedTweet)(nil), // 70: aryshare.TwitterReferencedTweet + (*TwitterReplyTo)(nil), // 71: aryshare.TwitterReplyTo + (*TwitterComment)(nil), // 72: aryshare.TwitterComment + (*YouTubeReply)(nil), // 73: aryshare.YouTubeReply + (*YouTubeComment)(nil), // 74: aryshare.YouTubeComment + (*GetCommentResponse)(nil), // 75: aryshare.GetCommentResponse + (*DeleteCommentRequest)(nil), // 76: aryshare.DeleteCommentRequest + (*InstagramDeleteResponse)(nil), // 77: aryshare.InstagramDeleteResponse + (*TikTokDeleteResponse)(nil), // 78: aryshare.TikTokDeleteResponse + (*DeleteCommentResponse)(nil), // 79: aryshare.DeleteCommentResponse + (*ReplyCommentRequest)(nil), // 80: aryshare.ReplyCommentRequest + (*InstagramReplyResponse)(nil), // 81: aryshare.InstagramReplyResponse + (*TikTokReplyResponse)(nil), // 82: aryshare.TikTokReplyResponse + (*BlueskyReplyResponse)(nil), // 83: aryshare.BlueskyReplyResponse + (*FacebookReplyResponse)(nil), // 84: aryshare.FacebookReplyResponse + (*LinkedInReplyResponse)(nil), // 85: aryshare.LinkedInReplyResponse + (*TwitterReplyResponse)(nil), // 86: aryshare.TwitterReplyResponse + (*YouTubeReplyResponse)(nil), // 87: aryshare.YouTubeReplyResponse + (*ReplyCommentResponse)(nil), // 88: aryshare.ReplyCommentResponse + (*GetPostAnalyticsRequest)(nil), // 89: aryshare.GetPostAnalyticsRequest + (*GetPostAnalyticsBySocialIDRequest)(nil), // 90: aryshare.GetPostAnalyticsBySocialIDRequest + (*GetPostAnalyticsResponse)(nil), // 91: aryshare.GetPostAnalyticsResponse + (*GetSocialAnalyticsRequest)(nil), // 92: aryshare.GetSocialAnalyticsRequest + (*GetSocialAnalyticsResponse)(nil), // 93: aryshare.GetSocialAnalyticsResponse + (*AutoHashtagsRequest)(nil), // 94: aryshare.AutoHashtagsRequest + (*AutoHashtagsResponse)(nil), // 95: aryshare.AutoHashtagsResponse + (*CheckBannedHashtagRequest)(nil), // 96: aryshare.CheckBannedHashtagRequest + (*CheckBannedHashtagResponse)(nil), // 97: aryshare.CheckBannedHashtagResponse + (*HashtagRecommendation)(nil), // 98: aryshare.HashtagRecommendation + (*RecommendHashtagsRequest)(nil), // 99: aryshare.RecommendHashtagsRequest + (*RecommendHashtagsResponse)(nil), // 100: aryshare.RecommendHashtagsResponse + (*SearchHashtagsRequest)(nil), // 101: aryshare.SearchHashtagsRequest + (*SearchHashtagInfo)(nil), // 102: aryshare.SearchHashtagInfo + (*SearchHashtagChild)(nil), // 103: aryshare.SearchHashtagChild + (*SearchHashtagChildren)(nil), // 104: aryshare.SearchHashtagChildren + (*SearchHashtagMedia)(nil), // 105: aryshare.SearchHashtagMedia + (*SearchHashtagsResponse)(nil), // 106: aryshare.SearchHashtagsResponse +} +var file_pb_ayrshare_proto_depIdxs = []int32{ + 0, // 0: aryshare.InstagramOptions.userTags:type_name -> aryshare.UserTag + 1, // 1: aryshare.PostRequest.instagramOptions:type_name -> aryshare.InstagramOptions + 2, // 2: aryshare.PostRequest.tikTokOptions:type_name -> aryshare.TikTokOptions + 4, // 3: aryshare.PostItem.postIds:type_name -> aryshare.PostId + 5, // 4: aryshare.PostResponse.posts:type_name -> aryshare.PostItem + 4, // 5: aryshare.PostResponse.postIds:type_name -> aryshare.PostId + 4, // 6: aryshare.GetPostResponse.postIds:type_name -> aryshare.PostId + 11, // 7: aryshare.DisplayName.twitterUsage:type_name -> aryshare.TwitterUsage + 10, // 8: aryshare.GetUserResponse.created:type_name -> aryshare.Timestamp + 12, // 9: aryshare.GetUserResponse.displayNames:type_name -> aryshare.DisplayName + 10, // 10: aryshare.ProfileItem.created:type_name -> aryshare.Timestamp + 17, // 11: aryshare.GetProfilesResponse.profiles:type_name -> aryshare.ProfileItem + 18, // 12: aryshare.GetProfilesResponse.pagination:type_name -> aryshare.Pagination + 20, // 13: aryshare.GenerateJWTRequest.email:type_name -> aryshare.Email + 23, // 14: aryshare.HistoryItem.postIds:type_name -> aryshare.HistoryPostId + 10, // 15: aryshare.HistoryItem.scheduleDate:type_name -> aryshare.Timestamp + 24, // 16: aryshare.GetHistoryResponse.history:type_name -> aryshare.HistoryItem + 23, // 17: aryshare.GetHistoryByIdResponse.postIds:type_name -> aryshare.HistoryPostId + 10, // 18: aryshare.GetHistoryByIdResponse.scheduleDate:type_name -> aryshare.Timestamp + 29, // 19: aryshare.GetHistoryByPlatformResponse.posts:type_name -> aryshare.PlatformPost + 33, // 20: aryshare.SendMessageResponse.messages:type_name -> aryshare.MessageItem + 37, // 21: aryshare.GetMessagesItem.senderDetails:type_name -> aryshare.MessageSenderDetails + 38, // 22: aryshare.GetMessagesItem.recipientDetails:type_name -> aryshare.MessageRecipientDetails + 36, // 23: aryshare.GetMessagesItem.attachments:type_name -> aryshare.MessageAttachment + 39, // 24: aryshare.GetMessagesItem.reactions:type_name -> aryshare.MessageReaction + 41, // 25: aryshare.ConversationDetail.participant:type_name -> aryshare.ConversationParticipant + 40, // 26: aryshare.GetMessagesResponse.messages:type_name -> aryshare.GetMessagesItem + 42, // 27: aryshare.GetMessagesResponse.conversationsDetails:type_name -> aryshare.ConversationDetail + 45, // 28: aryshare.PostCommentResponse.instagram:type_name -> aryshare.InstagramCommentResponse + 46, // 29: aryshare.PostCommentResponse.tiktok:type_name -> aryshare.TikTokCommentResponse + 52, // 30: aryshare.PostCommentResponse.errors:type_name -> aryshare.PlatformError + 47, // 31: aryshare.PostCommentResponse.bluesky:type_name -> aryshare.BlueskyCommentResponse + 48, // 32: aryshare.PostCommentResponse.facebook:type_name -> aryshare.FacebookCommentResponse + 49, // 33: aryshare.PostCommentResponse.linkedin:type_name -> aryshare.LinkedInCommentResponse + 50, // 34: aryshare.PostCommentResponse.twitter:type_name -> aryshare.TwitterCommentResponse + 51, // 35: aryshare.PostCommentResponse.youtube:type_name -> aryshare.YouTubeCommentResponse + 55, // 36: aryshare.InstagramComment.from:type_name -> aryshare.InstagramUser + 57, // 37: aryshare.InstagramComment.replies:type_name -> aryshare.InstagramComment + 56, // 38: aryshare.InstagramComment.user:type_name -> aryshare.InstagramUserInfo + 58, // 39: aryshare.TikTokComment.replies:type_name -> aryshare.TikTokComment + 59, // 40: aryshare.BlueskyComment.replies:type_name -> aryshare.BlueskyComment + 60, // 41: aryshare.FacebookParent.from:type_name -> aryshare.FacebookUser + 60, // 42: aryshare.FacebookComment.from:type_name -> aryshare.FacebookUser + 61, // 43: aryshare.FacebookComment.parent:type_name -> aryshare.FacebookParent + 62, // 44: aryshare.FacebookComment.replies:type_name -> aryshare.FacebookComment + 64, // 45: aryshare.LinkedInComment.from:type_name -> aryshare.LinkedInFrom + 63, // 46: aryshare.LinkedInComment.media:type_name -> aryshare.LinkedInMedia + 66, // 47: aryshare.RedditComment.from:type_name -> aryshare.RedditUser + 68, // 48: aryshare.ThreadsComment.replies:type_name -> aryshare.ThreadsComment + 69, // 49: aryshare.TwitterReplyTo.publicMetrics:type_name -> aryshare.TwitterPublicMetrics + 69, // 50: aryshare.TwitterComment.publicMetrics:type_name -> aryshare.TwitterPublicMetrics + 70, // 51: aryshare.TwitterComment.referencedTweets:type_name -> aryshare.TwitterReferencedTweet + 71, // 52: aryshare.TwitterComment.replyTo:type_name -> aryshare.TwitterReplyTo + 73, // 53: aryshare.YouTubeComment.replies:type_name -> aryshare.YouTubeReply + 57, // 54: aryshare.GetCommentResponse.instagram:type_name -> aryshare.InstagramComment + 58, // 55: aryshare.GetCommentResponse.tiktok:type_name -> aryshare.TikTokComment + 59, // 56: aryshare.GetCommentResponse.bluesky:type_name -> aryshare.BlueskyComment + 62, // 57: aryshare.GetCommentResponse.facebook:type_name -> aryshare.FacebookComment + 65, // 58: aryshare.GetCommentResponse.linkedin:type_name -> aryshare.LinkedInComment + 67, // 59: aryshare.GetCommentResponse.reddit:type_name -> aryshare.RedditComment + 68, // 60: aryshare.GetCommentResponse.threads:type_name -> aryshare.ThreadsComment + 72, // 61: aryshare.GetCommentResponse.twitter:type_name -> aryshare.TwitterComment + 74, // 62: aryshare.GetCommentResponse.youtube:type_name -> aryshare.YouTubeComment + 81, // 63: aryshare.ReplyCommentResponse.instagram:type_name -> aryshare.InstagramReplyResponse + 82, // 64: aryshare.ReplyCommentResponse.tiktok:type_name -> aryshare.TikTokReplyResponse + 83, // 65: aryshare.ReplyCommentResponse.bluesky:type_name -> aryshare.BlueskyReplyResponse + 84, // 66: aryshare.ReplyCommentResponse.facebook:type_name -> aryshare.FacebookReplyResponse + 85, // 67: aryshare.ReplyCommentResponse.linkedin:type_name -> aryshare.LinkedInReplyResponse + 86, // 68: aryshare.ReplyCommentResponse.twitter:type_name -> aryshare.TwitterReplyResponse + 87, // 69: aryshare.ReplyCommentResponse.youtube:type_name -> aryshare.YouTubeReplyResponse + 98, // 70: aryshare.RecommendHashtagsResponse.recommendations:type_name -> aryshare.HashtagRecommendation + 103, // 71: aryshare.SearchHashtagChildren.data:type_name -> aryshare.SearchHashtagChild + 104, // 72: aryshare.SearchHashtagMedia.children:type_name -> aryshare.SearchHashtagChildren + 102, // 73: aryshare.SearchHashtagsResponse.hashtag:type_name -> aryshare.SearchHashtagInfo + 105, // 74: aryshare.SearchHashtagsResponse.searchResults:type_name -> aryshare.SearchHashtagMedia + 3, // 75: aryshare.Ayrshare.Post:input_type -> aryshare.PostRequest + 7, // 76: aryshare.Ayrshare.GetPost:input_type -> aryshare.GetPostRequest + 9, // 77: aryshare.Ayrshare.GetUser:input_type -> aryshare.GetUserRequest + 14, // 78: aryshare.Ayrshare.CreateProfile:input_type -> aryshare.CreateProfileRequest + 16, // 79: aryshare.Ayrshare.GetProfiles:input_type -> aryshare.GetProfilesRequest + 21, // 80: aryshare.Ayrshare.GenerateJWT:input_type -> aryshare.GenerateJWTRequest + 25, // 81: aryshare.Ayrshare.GetHistory:input_type -> aryshare.GetHistoryRequest + 27, // 82: aryshare.Ayrshare.GetHistoryById:input_type -> aryshare.GetHistoryByIdRequest + 30, // 83: aryshare.Ayrshare.GetHistoryByPlatform:input_type -> aryshare.GetHistoryByPlatformRequest + 32, // 84: aryshare.Ayrshare.SendMessage:input_type -> aryshare.SendMessageRequest + 35, // 85: aryshare.Ayrshare.GetMessages:input_type -> aryshare.GetMessagesRequest + 44, // 86: aryshare.Ayrshare.PostComment:input_type -> aryshare.PostCommentRequest + 54, // 87: aryshare.Ayrshare.GetComment:input_type -> aryshare.GetCommentRequest + 76, // 88: aryshare.Ayrshare.DeleteComment:input_type -> aryshare.DeleteCommentRequest + 80, // 89: aryshare.Ayrshare.ReplyComment:input_type -> aryshare.ReplyCommentRequest + 89, // 90: aryshare.Ayrshare.GetPostAnalytics:input_type -> aryshare.GetPostAnalyticsRequest + 90, // 91: aryshare.Ayrshare.GetPostAnalyticsBySocialID:input_type -> aryshare.GetPostAnalyticsBySocialIDRequest + 92, // 92: aryshare.Ayrshare.GetSocialAnalytics:input_type -> aryshare.GetSocialAnalyticsRequest + 94, // 93: aryshare.Ayrshare.AutoHashtags:input_type -> aryshare.AutoHashtagsRequest + 96, // 94: aryshare.Ayrshare.CheckBannedHashtag:input_type -> aryshare.CheckBannedHashtagRequest + 99, // 95: aryshare.Ayrshare.RecommendHashtags:input_type -> aryshare.RecommendHashtagsRequest + 101, // 96: aryshare.Ayrshare.SearchHashtags:input_type -> aryshare.SearchHashtagsRequest + 6, // 97: aryshare.Ayrshare.Post:output_type -> aryshare.PostResponse + 8, // 98: aryshare.Ayrshare.GetPost:output_type -> aryshare.GetPostResponse + 13, // 99: aryshare.Ayrshare.GetUser:output_type -> aryshare.GetUserResponse + 15, // 100: aryshare.Ayrshare.CreateProfile:output_type -> aryshare.CreateProfileResponse + 19, // 101: aryshare.Ayrshare.GetProfiles:output_type -> aryshare.GetProfilesResponse + 22, // 102: aryshare.Ayrshare.GenerateJWT:output_type -> aryshare.GenerateJWTResponse + 26, // 103: aryshare.Ayrshare.GetHistory:output_type -> aryshare.GetHistoryResponse + 28, // 104: aryshare.Ayrshare.GetHistoryById:output_type -> aryshare.GetHistoryByIdResponse + 31, // 105: aryshare.Ayrshare.GetHistoryByPlatform:output_type -> aryshare.GetHistoryByPlatformResponse + 34, // 106: aryshare.Ayrshare.SendMessage:output_type -> aryshare.SendMessageResponse + 43, // 107: aryshare.Ayrshare.GetMessages:output_type -> aryshare.GetMessagesResponse + 53, // 108: aryshare.Ayrshare.PostComment:output_type -> aryshare.PostCommentResponse + 75, // 109: aryshare.Ayrshare.GetComment:output_type -> aryshare.GetCommentResponse + 79, // 110: aryshare.Ayrshare.DeleteComment:output_type -> aryshare.DeleteCommentResponse + 88, // 111: aryshare.Ayrshare.ReplyComment:output_type -> aryshare.ReplyCommentResponse + 91, // 112: aryshare.Ayrshare.GetPostAnalytics:output_type -> aryshare.GetPostAnalyticsResponse + 91, // 113: aryshare.Ayrshare.GetPostAnalyticsBySocialID:output_type -> aryshare.GetPostAnalyticsResponse + 93, // 114: aryshare.Ayrshare.GetSocialAnalytics:output_type -> aryshare.GetSocialAnalyticsResponse + 95, // 115: aryshare.Ayrshare.AutoHashtags:output_type -> aryshare.AutoHashtagsResponse + 97, // 116: aryshare.Ayrshare.CheckBannedHashtag:output_type -> aryshare.CheckBannedHashtagResponse + 100, // 117: aryshare.Ayrshare.RecommendHashtags:output_type -> aryshare.RecommendHashtagsResponse + 106, // 118: aryshare.Ayrshare.SearchHashtags:output_type -> aryshare.SearchHashtagsResponse + 97, // [97:119] is the sub-list for method output_type + 75, // [75:97] is the sub-list for method input_type + 75, // [75:75] is the sub-list for extension type_name + 75, // [75:75] is the sub-list for extension extendee + 0, // [0:75] is the sub-list for field type_name +} + +func init() { file_pb_ayrshare_proto_init() } +func file_pb_ayrshare_proto_init() { + if File_pb_ayrshare_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pb_ayrshare_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserTag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Timestamp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterUsage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayName); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateProfileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateProfileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProfilesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Pagination); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProfilesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Email); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateJWTRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateJWTResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HistoryPostId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HistoryItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByIdResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PlatformPost); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByPlatformRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByPlatformResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendMessageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendMessageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMessagesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageAttachment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageSenderDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageRecipientDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageReaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMessagesItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConversationParticipant); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConversationDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMessagesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueskyCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PlatformError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramUserInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueskyComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookParent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInMedia); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInFrom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedditUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedditComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ThreadsComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterPublicMetrics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterReferencedTweet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterReplyTo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramDeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokDeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReplyCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueskyReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReplyCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostAnalyticsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostAnalyticsBySocialIDRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostAnalyticsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSocialAnalyticsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSocialAnalyticsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AutoHashtagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AutoHashtagsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckBannedHashtagRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckBannedHashtagResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HashtagRecommendation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendHashtagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendHashtagsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagChild); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagChildren); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagMedia); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_pb_ayrshare_proto_msgTypes[16].OneofWrappers = []interface{}{ + (*GetProfilesRequest_ActionLogBool)(nil), + (*GetProfilesRequest_ActionLogInt)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pb_ayrshare_proto_rawDesc, + NumEnums: 0, + NumMessages: 107, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_pb_ayrshare_proto_goTypes, + DependencyIndexes: file_pb_ayrshare_proto_depIdxs, + MessageInfos: file_pb_ayrshare_proto_msgTypes, + }.Build() + File_pb_ayrshare_proto = out.File + file_pb_ayrshare_proto_rawDesc = nil + file_pb_ayrshare_proto_goTypes = nil + file_pb_ayrshare_proto_depIdxs = nil +} diff --git a/api/aryshare/ayrshare.validator.pb.go b/api/aryshare/ayrshare.validator.pb.go new file mode 100644 index 0000000..2722c62 --- /dev/null +++ b/api/aryshare/ayrshare.validator.pb.go @@ -0,0 +1,900 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: pb/ayrshare.proto + +package aryshare + +import ( + fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" + _ "google.golang.org/protobuf/types/descriptorpb" + _ "github.com/mwitkow/go-proto-validators" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *UserTag) Validate() error { + return nil +} +func (this *InstagramOptions) Validate() error { + for _, item := range this.UserTags { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("UserTags", err) + } + } + } + return nil +} +func (this *TikTokOptions) Validate() error { + return nil +} +func (this *PostRequest) Validate() error { + if this.Post == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Post", fmt.Errorf(`post内容不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + if this.InstagramOptions != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.InstagramOptions); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("InstagramOptions", err) + } + } + if this.TikTokOptions != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TikTokOptions); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TikTokOptions", err) + } + } + return nil +} +func (this *PostId) Validate() error { + return nil +} +func (this *PostItem) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + return nil +} +func (this *PostResponse) Validate() error { + for _, item := range this.Posts { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Posts", err) + } + } + } + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + return nil +} +func (this *GetPostRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`帖子ID不能为空`)) + } + return nil +} +func (this *GetPostResponse) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + return nil +} +func (this *GetUserRequest) Validate() error { + return nil +} +func (this *Timestamp) Validate() error { + return nil +} +func (this *TwitterUsage) Validate() error { + return nil +} +func (this *DisplayName) Validate() error { + if this.TwitterUsage != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TwitterUsage); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TwitterUsage", err) + } + } + return nil +} +func (this *GetUserResponse) Validate() error { + if this.Created != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Created); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Created", err) + } + } + for _, item := range this.DisplayNames { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("DisplayNames", err) + } + } + } + return nil +} +func (this *CreateProfileRequest) Validate() error { + if this.Title == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Title", fmt.Errorf(`title不能为空`)) + } + return nil +} +func (this *CreateProfileResponse) Validate() error { + return nil +} +func (this *GetProfilesRequest) Validate() error { + return nil +} +func (this *ProfileItem) Validate() error { + if this.Created != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Created); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Created", err) + } + } + return nil +} +func (this *Pagination) Validate() error { + return nil +} +func (this *GetProfilesResponse) Validate() error { + for _, item := range this.Profiles { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Profiles", err) + } + } + } + if this.Pagination != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Pagination); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Pagination", err) + } + } + return nil +} +func (this *Email) Validate() error { + return nil +} +func (this *GenerateJWTRequest) Validate() error { + if this.ProfileKey == "" { + return github_com_mwitkow_go_proto_validators.FieldError("ProfileKey", fmt.Errorf(`profileKey不能为空`)) + } + if this.Email != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Email); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Email", err) + } + } + return nil +} +func (this *GenerateJWTResponse) Validate() error { + return nil +} +func (this *HistoryPostId) Validate() error { + return nil +} +func (this *HistoryItem) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + if this.ScheduleDate != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ScheduleDate); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ScheduleDate", err) + } + } + return nil +} +func (this *GetHistoryRequest) Validate() error { + return nil +} +func (this *GetHistoryResponse) Validate() error { + for _, item := range this.History { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("History", err) + } + } + } + return nil +} +func (this *GetHistoryByIdRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`帖子ID不能为空`)) + } + return nil +} +func (this *GetHistoryByIdResponse) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + if this.ScheduleDate != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ScheduleDate); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ScheduleDate", err) + } + } + return nil +} +func (this *PlatformPost) Validate() error { + return nil +} +func (this *GetHistoryByPlatformRequest) Validate() error { + if this.Platform == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platform", fmt.Errorf(`平台名称不能为空`)) + } + return nil +} +func (this *GetHistoryByPlatformResponse) Validate() error { + for _, item := range this.Posts { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Posts", err) + } + } + } + return nil +} +func (this *SendMessageRequest) Validate() error { + if this.Platform == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platform", fmt.Errorf(`平台不能为空`)) + } + if this.RecipientId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("RecipientId", fmt.Errorf(`接收者ID不能为空`)) + } + return nil +} +func (this *MessageItem) Validate() error { + return nil +} +func (this *SendMessageResponse) Validate() error { + for _, item := range this.Messages { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Messages", err) + } + } + } + return nil +} +func (this *GetMessagesRequest) Validate() error { + if this.Platform == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platform", fmt.Errorf(`平台不能为空`)) + } + return nil +} +func (this *MessageAttachment) Validate() error { + return nil +} +func (this *MessageSenderDetails) Validate() error { + return nil +} +func (this *MessageRecipientDetails) Validate() error { + return nil +} +func (this *MessageReaction) Validate() error { + return nil +} +func (this *GetMessagesItem) Validate() error { + if this.SenderDetails != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.SenderDetails); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("SenderDetails", err) + } + } + if this.RecipientDetails != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.RecipientDetails); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("RecipientDetails", err) + } + } + for _, item := range this.Attachments { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err) + } + } + } + for _, item := range this.Reactions { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Reactions", err) + } + } + } + return nil +} +func (this *ConversationParticipant) Validate() error { + return nil +} +func (this *ConversationDetail) Validate() error { + if this.Participant != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Participant); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Participant", err) + } + } + return nil +} +func (this *GetMessagesResponse) Validate() error { + for _, item := range this.Messages { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Messages", err) + } + } + } + for _, item := range this.ConversationsDetails { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ConversationsDetails", err) + } + } + } + return nil +} +func (this *PostCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + if this.Comment == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Comment", fmt.Errorf(`comment不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *InstagramCommentResponse) Validate() error { + return nil +} +func (this *TikTokCommentResponse) Validate() error { + return nil +} +func (this *BlueskyCommentResponse) Validate() error { + return nil +} +func (this *FacebookCommentResponse) Validate() error { + return nil +} +func (this *LinkedInCommentResponse) Validate() error { + return nil +} +func (this *TwitterCommentResponse) Validate() error { + return nil +} +func (this *YouTubeCommentResponse) Validate() error { + return nil +} +func (this *PlatformError) Validate() error { + return nil +} +func (this *PostCommentResponse) Validate() error { + if this.Instagram != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Instagram); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Instagram", err) + } + } + if this.Tiktok != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Tiktok); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tiktok", err) + } + } + for _, item := range this.Errors { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Errors", err) + } + } + } + if this.Bluesky != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Bluesky); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Bluesky", err) + } + } + if this.Facebook != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Facebook); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Facebook", err) + } + } + if this.Linkedin != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Linkedin); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Linkedin", err) + } + } + if this.Twitter != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Twitter); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Twitter", err) + } + } + if this.Youtube != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Youtube); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Youtube", err) + } + } + return nil +} +func (this *GetCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + return nil +} +func (this *InstagramUser) Validate() error { + return nil +} +func (this *InstagramUserInfo) Validate() error { + return nil +} +func (this *InstagramComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + if this.User != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.User); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("User", err) + } + } + return nil +} +func (this *TikTokComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *BlueskyComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *FacebookUser) Validate() error { + return nil +} +func (this *FacebookParent) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + return nil +} +func (this *FacebookComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + if this.Parent != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Parent); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Parent", err) + } + } + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *LinkedInMedia) Validate() error { + return nil +} +func (this *LinkedInFrom) Validate() error { + return nil +} +func (this *LinkedInComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + for _, item := range this.Media { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Media", err) + } + } + } + return nil +} +func (this *RedditUser) Validate() error { + return nil +} +func (this *RedditComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + return nil +} +func (this *ThreadsComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *TwitterPublicMetrics) Validate() error { + return nil +} +func (this *TwitterReferencedTweet) Validate() error { + return nil +} +func (this *TwitterReplyTo) Validate() error { + if this.PublicMetrics != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.PublicMetrics); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PublicMetrics", err) + } + } + return nil +} +func (this *TwitterComment) Validate() error { + if this.PublicMetrics != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.PublicMetrics); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PublicMetrics", err) + } + } + for _, item := range this.ReferencedTweets { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ReferencedTweets", err) + } + } + } + if this.ReplyTo != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ReplyTo); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ReplyTo", err) + } + } + return nil +} +func (this *YouTubeReply) Validate() error { + return nil +} +func (this *YouTubeComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *GetCommentResponse) Validate() error { + for _, item := range this.Instagram { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Instagram", err) + } + } + } + for _, item := range this.Tiktok { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tiktok", err) + } + } + } + for _, item := range this.Bluesky { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Bluesky", err) + } + } + } + for _, item := range this.Facebook { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Facebook", err) + } + } + } + for _, item := range this.Linkedin { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Linkedin", err) + } + } + } + for _, item := range this.Reddit { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Reddit", err) + } + } + } + for _, item := range this.Threads { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Threads", err) + } + } + } + for _, item := range this.Twitter { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Twitter", err) + } + } + } + for _, item := range this.Youtube { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Youtube", err) + } + } + } + return nil +} +func (this *DeleteCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + return nil +} +func (this *InstagramDeleteResponse) Validate() error { + return nil +} +func (this *TikTokDeleteResponse) Validate() error { + return nil +} +func (this *DeleteCommentResponse) Validate() error { + return nil +} +func (this *ReplyCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + if this.Comment == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Comment", fmt.Errorf(`comment不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *InstagramReplyResponse) Validate() error { + return nil +} +func (this *TikTokReplyResponse) Validate() error { + return nil +} +func (this *BlueskyReplyResponse) Validate() error { + return nil +} +func (this *FacebookReplyResponse) Validate() error { + return nil +} +func (this *LinkedInReplyResponse) Validate() error { + return nil +} +func (this *TwitterReplyResponse) Validate() error { + return nil +} +func (this *YouTubeReplyResponse) Validate() error { + return nil +} +func (this *ReplyCommentResponse) Validate() error { + if this.Instagram != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Instagram); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Instagram", err) + } + } + if this.Tiktok != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Tiktok); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tiktok", err) + } + } + if this.Bluesky != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Bluesky); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Bluesky", err) + } + } + if this.Facebook != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Facebook); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Facebook", err) + } + } + if this.Linkedin != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Linkedin); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Linkedin", err) + } + } + if this.Twitter != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Twitter); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Twitter", err) + } + } + if this.Youtube != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Youtube); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Youtube", err) + } + } + return nil +} +func (this *GetPostAnalyticsRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`帖子ID不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *GetPostAnalyticsBySocialIDRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`Social Post ID不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *GetPostAnalyticsResponse) Validate() error { + return nil +} +func (this *GetSocialAnalyticsRequest) Validate() error { + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *GetSocialAnalyticsResponse) Validate() error { + return nil +} +func (this *AutoHashtagsRequest) Validate() error { + if this.Post == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Post", fmt.Errorf(`post内容不能为空`)) + } + return nil +} +func (this *AutoHashtagsResponse) Validate() error { + return nil +} +func (this *CheckBannedHashtagRequest) Validate() error { + if this.Hashtag == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Hashtag", fmt.Errorf(`hashtag不能为空`)) + } + return nil +} +func (this *CheckBannedHashtagResponse) Validate() error { + return nil +} +func (this *HashtagRecommendation) Validate() error { + return nil +} +func (this *RecommendHashtagsRequest) Validate() error { + if this.Keyword == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Keyword", fmt.Errorf(`keyword不能为空`)) + } + return nil +} +func (this *RecommendHashtagsResponse) Validate() error { + for _, item := range this.Recommendations { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Recommendations", err) + } + } + } + return nil +} +func (this *SearchHashtagsRequest) Validate() error { + if this.Keyword == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Keyword", fmt.Errorf(`keyword不能为空`)) + } + return nil +} +func (this *SearchHashtagInfo) Validate() error { + return nil +} +func (this *SearchHashtagChild) Validate() error { + return nil +} +func (this *SearchHashtagChildren) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *SearchHashtagMedia) Validate() error { + if this.Children != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Children); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Children", err) + } + } + return nil +} +func (this *SearchHashtagsResponse) Validate() error { + if this.Hashtag != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Hashtag); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Hashtag", err) + } + } + for _, item := range this.SearchResults { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("SearchResults", err) + } + } + } + return nil +} diff --git a/api/aryshare/ayrshare_triple.pb.go b/api/aryshare/ayrshare_triple.pb.go new file mode 100644 index 0000000..6c186f4 --- /dev/null +++ b/api/aryshare/ayrshare_triple.pb.go @@ -0,0 +1,1108 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.8 +// - protoc v3.21.1 +// source: pb/ayrshare.proto + +package aryshare + +import ( + context "context" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// AyrshareClient is the client API for Ayrshare service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AyrshareClient interface { + // 帖子相关 api + Post(ctx context.Context, in *PostRequest, opts ...grpc_go.CallOption) (*PostResponse, common.ErrorWithAttachment) + GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc_go.CallOption) (*GetPostResponse, common.ErrorWithAttachment) + // 用户相关 api + GetUser(ctx context.Context, in *GetUserRequest, opts ...grpc_go.CallOption) (*GetUserResponse, common.ErrorWithAttachment) + // 用户配置相关 api + CreateProfile(ctx context.Context, in *CreateProfileRequest, opts ...grpc_go.CallOption) (*CreateProfileResponse, common.ErrorWithAttachment) + GetProfiles(ctx context.Context, in *GetProfilesRequest, opts ...grpc_go.CallOption) (*GetProfilesResponse, common.ErrorWithAttachment) + GenerateJWT(ctx context.Context, in *GenerateJWTRequest, opts ...grpc_go.CallOption) (*GenerateJWTResponse, common.ErrorWithAttachment) + // 历史记录相关 api + GetHistory(ctx context.Context, in *GetHistoryRequest, opts ...grpc_go.CallOption) (*GetHistoryResponse, common.ErrorWithAttachment) + GetHistoryById(ctx context.Context, in *GetHistoryByIdRequest, opts ...grpc_go.CallOption) (*GetHistoryByIdResponse, common.ErrorWithAttachment) + GetHistoryByPlatform(ctx context.Context, in *GetHistoryByPlatformRequest, opts ...grpc_go.CallOption) (*GetHistoryByPlatformResponse, common.ErrorWithAttachment) + // 消息相关 api + SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc_go.CallOption) (*SendMessageResponse, common.ErrorWithAttachment) + GetMessages(ctx context.Context, in *GetMessagesRequest, opts ...grpc_go.CallOption) (*GetMessagesResponse, common.ErrorWithAttachment) + // 评论相关 api + PostComment(ctx context.Context, in *PostCommentRequest, opts ...grpc_go.CallOption) (*PostCommentResponse, common.ErrorWithAttachment) + GetComment(ctx context.Context, in *GetCommentRequest, opts ...grpc_go.CallOption) (*GetCommentResponse, common.ErrorWithAttachment) + DeleteComment(ctx context.Context, in *DeleteCommentRequest, opts ...grpc_go.CallOption) (*DeleteCommentResponse, common.ErrorWithAttachment) + ReplyComment(ctx context.Context, in *ReplyCommentRequest, opts ...grpc_go.CallOption) (*ReplyCommentResponse, common.ErrorWithAttachment) + // 分析相关 api + GetPostAnalytics(ctx context.Context, in *GetPostAnalyticsRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) + GetPostAnalyticsBySocialID(ctx context.Context, in *GetPostAnalyticsBySocialIDRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) + GetSocialAnalytics(ctx context.Context, in *GetSocialAnalyticsRequest, opts ...grpc_go.CallOption) (*GetSocialAnalyticsResponse, common.ErrorWithAttachment) + // Hashtags 相关 api + AutoHashtags(ctx context.Context, in *AutoHashtagsRequest, opts ...grpc_go.CallOption) (*AutoHashtagsResponse, common.ErrorWithAttachment) + CheckBannedHashtag(ctx context.Context, in *CheckBannedHashtagRequest, opts ...grpc_go.CallOption) (*CheckBannedHashtagResponse, common.ErrorWithAttachment) + RecommendHashtags(ctx context.Context, in *RecommendHashtagsRequest, opts ...grpc_go.CallOption) (*RecommendHashtagsResponse, common.ErrorWithAttachment) + SearchHashtags(ctx context.Context, in *SearchHashtagsRequest, opts ...grpc_go.CallOption) (*SearchHashtagsResponse, common.ErrorWithAttachment) +} + +type ayrshareClient struct { + cc *triple.TripleConn +} + +type AyrshareClientImpl struct { + Post func(ctx context.Context, in *PostRequest) (*PostResponse, error) + GetPost func(ctx context.Context, in *GetPostRequest) (*GetPostResponse, error) + GetUser func(ctx context.Context, in *GetUserRequest) (*GetUserResponse, error) + CreateProfile func(ctx context.Context, in *CreateProfileRequest) (*CreateProfileResponse, error) + GetProfiles func(ctx context.Context, in *GetProfilesRequest) (*GetProfilesResponse, error) + GenerateJWT func(ctx context.Context, in *GenerateJWTRequest) (*GenerateJWTResponse, error) + GetHistory func(ctx context.Context, in *GetHistoryRequest) (*GetHistoryResponse, error) + GetHistoryById func(ctx context.Context, in *GetHistoryByIdRequest) (*GetHistoryByIdResponse, error) + GetHistoryByPlatform func(ctx context.Context, in *GetHistoryByPlatformRequest) (*GetHistoryByPlatformResponse, error) + SendMessage func(ctx context.Context, in *SendMessageRequest) (*SendMessageResponse, error) + GetMessages func(ctx context.Context, in *GetMessagesRequest) (*GetMessagesResponse, error) + PostComment func(ctx context.Context, in *PostCommentRequest) (*PostCommentResponse, error) + GetComment func(ctx context.Context, in *GetCommentRequest) (*GetCommentResponse, error) + DeleteComment func(ctx context.Context, in *DeleteCommentRequest) (*DeleteCommentResponse, error) + ReplyComment func(ctx context.Context, in *ReplyCommentRequest) (*ReplyCommentResponse, error) + GetPostAnalytics func(ctx context.Context, in *GetPostAnalyticsRequest) (*GetPostAnalyticsResponse, error) + GetPostAnalyticsBySocialID func(ctx context.Context, in *GetPostAnalyticsBySocialIDRequest) (*GetPostAnalyticsResponse, error) + GetSocialAnalytics func(ctx context.Context, in *GetSocialAnalyticsRequest) (*GetSocialAnalyticsResponse, error) + AutoHashtags func(ctx context.Context, in *AutoHashtagsRequest) (*AutoHashtagsResponse, error) + CheckBannedHashtag func(ctx context.Context, in *CheckBannedHashtagRequest) (*CheckBannedHashtagResponse, error) + RecommendHashtags func(ctx context.Context, in *RecommendHashtagsRequest) (*RecommendHashtagsResponse, error) + SearchHashtags func(ctx context.Context, in *SearchHashtagsRequest) (*SearchHashtagsResponse, error) +} + +func (c *AyrshareClientImpl) GetDubboStub(cc *triple.TripleConn) AyrshareClient { + return NewAyrshareClient(cc) +} + +func (c *AyrshareClientImpl) XXX_InterfaceName() string { + return "aryshare.Ayrshare" +} + +func NewAyrshareClient(cc *triple.TripleConn) AyrshareClient { + return &ayrshareClient{cc} +} + +func (c *ayrshareClient) Post(ctx context.Context, in *PostRequest, opts ...grpc_go.CallOption) (*PostResponse, common.ErrorWithAttachment) { + out := new(PostResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Post", in, out) +} + +func (c *ayrshareClient) GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc_go.CallOption) (*GetPostResponse, common.ErrorWithAttachment) { + out := new(GetPostResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPost", in, out) +} + +func (c *ayrshareClient) GetUser(ctx context.Context, in *GetUserRequest, opts ...grpc_go.CallOption) (*GetUserResponse, common.ErrorWithAttachment) { + out := new(GetUserResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetUser", in, out) +} + +func (c *ayrshareClient) CreateProfile(ctx context.Context, in *CreateProfileRequest, opts ...grpc_go.CallOption) (*CreateProfileResponse, common.ErrorWithAttachment) { + out := new(CreateProfileResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateProfile", in, out) +} + +func (c *ayrshareClient) GetProfiles(ctx context.Context, in *GetProfilesRequest, opts ...grpc_go.CallOption) (*GetProfilesResponse, common.ErrorWithAttachment) { + out := new(GetProfilesResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetProfiles", in, out) +} + +func (c *ayrshareClient) GenerateJWT(ctx context.Context, in *GenerateJWTRequest, opts ...grpc_go.CallOption) (*GenerateJWTResponse, common.ErrorWithAttachment) { + out := new(GenerateJWTResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GenerateJWT", in, out) +} + +func (c *ayrshareClient) GetHistory(ctx context.Context, in *GetHistoryRequest, opts ...grpc_go.CallOption) (*GetHistoryResponse, common.ErrorWithAttachment) { + out := new(GetHistoryResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetHistory", in, out) +} + +func (c *ayrshareClient) GetHistoryById(ctx context.Context, in *GetHistoryByIdRequest, opts ...grpc_go.CallOption) (*GetHistoryByIdResponse, common.ErrorWithAttachment) { + out := new(GetHistoryByIdResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetHistoryById", in, out) +} + +func (c *ayrshareClient) GetHistoryByPlatform(ctx context.Context, in *GetHistoryByPlatformRequest, opts ...grpc_go.CallOption) (*GetHistoryByPlatformResponse, common.ErrorWithAttachment) { + out := new(GetHistoryByPlatformResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetHistoryByPlatform", in, out) +} + +func (c *ayrshareClient) SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc_go.CallOption) (*SendMessageResponse, common.ErrorWithAttachment) { + out := new(SendMessageResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendMessage", in, out) +} + +func (c *ayrshareClient) GetMessages(ctx context.Context, in *GetMessagesRequest, opts ...grpc_go.CallOption) (*GetMessagesResponse, common.ErrorWithAttachment) { + out := new(GetMessagesResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetMessages", in, out) +} + +func (c *ayrshareClient) PostComment(ctx context.Context, in *PostCommentRequest, opts ...grpc_go.CallOption) (*PostCommentResponse, common.ErrorWithAttachment) { + out := new(PostCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/PostComment", in, out) +} + +func (c *ayrshareClient) GetComment(ctx context.Context, in *GetCommentRequest, opts ...grpc_go.CallOption) (*GetCommentResponse, common.ErrorWithAttachment) { + out := new(GetCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetComment", in, out) +} + +func (c *ayrshareClient) DeleteComment(ctx context.Context, in *DeleteCommentRequest, opts ...grpc_go.CallOption) (*DeleteCommentResponse, common.ErrorWithAttachment) { + out := new(DeleteCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteComment", in, out) +} + +func (c *ayrshareClient) ReplyComment(ctx context.Context, in *ReplyCommentRequest, opts ...grpc_go.CallOption) (*ReplyCommentResponse, common.ErrorWithAttachment) { + out := new(ReplyCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ReplyComment", in, out) +} + +func (c *ayrshareClient) GetPostAnalytics(ctx context.Context, in *GetPostAnalyticsRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) { + out := new(GetPostAnalyticsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPostAnalytics", in, out) +} + +func (c *ayrshareClient) GetPostAnalyticsBySocialID(ctx context.Context, in *GetPostAnalyticsBySocialIDRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) { + out := new(GetPostAnalyticsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPostAnalyticsBySocialID", in, out) +} + +func (c *ayrshareClient) GetSocialAnalytics(ctx context.Context, in *GetSocialAnalyticsRequest, opts ...grpc_go.CallOption) (*GetSocialAnalyticsResponse, common.ErrorWithAttachment) { + out := new(GetSocialAnalyticsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetSocialAnalytics", in, out) +} + +func (c *ayrshareClient) AutoHashtags(ctx context.Context, in *AutoHashtagsRequest, opts ...grpc_go.CallOption) (*AutoHashtagsResponse, common.ErrorWithAttachment) { + out := new(AutoHashtagsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/AutoHashtags", in, out) +} + +func (c *ayrshareClient) CheckBannedHashtag(ctx context.Context, in *CheckBannedHashtagRequest, opts ...grpc_go.CallOption) (*CheckBannedHashtagResponse, common.ErrorWithAttachment) { + out := new(CheckBannedHashtagResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CheckBannedHashtag", in, out) +} + +func (c *ayrshareClient) RecommendHashtags(ctx context.Context, in *RecommendHashtagsRequest, opts ...grpc_go.CallOption) (*RecommendHashtagsResponse, common.ErrorWithAttachment) { + out := new(RecommendHashtagsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/RecommendHashtags", in, out) +} + +func (c *ayrshareClient) SearchHashtags(ctx context.Context, in *SearchHashtagsRequest, opts ...grpc_go.CallOption) (*SearchHashtagsResponse, common.ErrorWithAttachment) { + out := new(SearchHashtagsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SearchHashtags", in, out) +} + +// AyrshareServer is the server API for Ayrshare service. +// All implementations must embed UnimplementedAyrshareServer +// for forward compatibility +type AyrshareServer interface { + // 帖子相关 api + Post(context.Context, *PostRequest) (*PostResponse, error) + GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error) + // 用户相关 api + GetUser(context.Context, *GetUserRequest) (*GetUserResponse, error) + // 用户配置相关 api + CreateProfile(context.Context, *CreateProfileRequest) (*CreateProfileResponse, error) + GetProfiles(context.Context, *GetProfilesRequest) (*GetProfilesResponse, error) + GenerateJWT(context.Context, *GenerateJWTRequest) (*GenerateJWTResponse, error) + // 历史记录相关 api + GetHistory(context.Context, *GetHistoryRequest) (*GetHistoryResponse, error) + GetHistoryById(context.Context, *GetHistoryByIdRequest) (*GetHistoryByIdResponse, error) + GetHistoryByPlatform(context.Context, *GetHistoryByPlatformRequest) (*GetHistoryByPlatformResponse, error) + // 消息相关 api + SendMessage(context.Context, *SendMessageRequest) (*SendMessageResponse, error) + GetMessages(context.Context, *GetMessagesRequest) (*GetMessagesResponse, error) + // 评论相关 api + PostComment(context.Context, *PostCommentRequest) (*PostCommentResponse, error) + GetComment(context.Context, *GetCommentRequest) (*GetCommentResponse, error) + DeleteComment(context.Context, *DeleteCommentRequest) (*DeleteCommentResponse, error) + ReplyComment(context.Context, *ReplyCommentRequest) (*ReplyCommentResponse, error) + // 分析相关 api + GetPostAnalytics(context.Context, *GetPostAnalyticsRequest) (*GetPostAnalyticsResponse, error) + GetPostAnalyticsBySocialID(context.Context, *GetPostAnalyticsBySocialIDRequest) (*GetPostAnalyticsResponse, error) + GetSocialAnalytics(context.Context, *GetSocialAnalyticsRequest) (*GetSocialAnalyticsResponse, error) + // Hashtags 相关 api + AutoHashtags(context.Context, *AutoHashtagsRequest) (*AutoHashtagsResponse, error) + CheckBannedHashtag(context.Context, *CheckBannedHashtagRequest) (*CheckBannedHashtagResponse, error) + RecommendHashtags(context.Context, *RecommendHashtagsRequest) (*RecommendHashtagsResponse, error) + SearchHashtags(context.Context, *SearchHashtagsRequest) (*SearchHashtagsResponse, error) + mustEmbedUnimplementedAyrshareServer() +} + +// UnimplementedAyrshareServer must be embedded to have forward compatible implementations. +type UnimplementedAyrshareServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedAyrshareServer) Post(context.Context, *PostRequest) (*PostResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Post not implemented") +} +func (UnimplementedAyrshareServer) GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPost not implemented") +} +func (UnimplementedAyrshareServer) GetUser(context.Context, *GetUserRequest) (*GetUserResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUser not implemented") +} +func (UnimplementedAyrshareServer) CreateProfile(context.Context, *CreateProfileRequest) (*CreateProfileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateProfile not implemented") +} +func (UnimplementedAyrshareServer) GetProfiles(context.Context, *GetProfilesRequest) (*GetProfilesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetProfiles not implemented") +} +func (UnimplementedAyrshareServer) GenerateJWT(context.Context, *GenerateJWTRequest) (*GenerateJWTResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateJWT not implemented") +} +func (UnimplementedAyrshareServer) GetHistory(context.Context, *GetHistoryRequest) (*GetHistoryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHistory not implemented") +} +func (UnimplementedAyrshareServer) GetHistoryById(context.Context, *GetHistoryByIdRequest) (*GetHistoryByIdResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHistoryById not implemented") +} +func (UnimplementedAyrshareServer) GetHistoryByPlatform(context.Context, *GetHistoryByPlatformRequest) (*GetHistoryByPlatformResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHistoryByPlatform not implemented") +} +func (UnimplementedAyrshareServer) SendMessage(context.Context, *SendMessageRequest) (*SendMessageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SendMessage not implemented") +} +func (UnimplementedAyrshareServer) GetMessages(context.Context, *GetMessagesRequest) (*GetMessagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMessages not implemented") +} +func (UnimplementedAyrshareServer) PostComment(context.Context, *PostCommentRequest) (*PostCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PostComment not implemented") +} +func (UnimplementedAyrshareServer) GetComment(context.Context, *GetCommentRequest) (*GetCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetComment not implemented") +} +func (UnimplementedAyrshareServer) DeleteComment(context.Context, *DeleteCommentRequest) (*DeleteCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteComment not implemented") +} +func (UnimplementedAyrshareServer) ReplyComment(context.Context, *ReplyCommentRequest) (*ReplyCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReplyComment not implemented") +} +func (UnimplementedAyrshareServer) GetPostAnalytics(context.Context, *GetPostAnalyticsRequest) (*GetPostAnalyticsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPostAnalytics not implemented") +} +func (UnimplementedAyrshareServer) GetPostAnalyticsBySocialID(context.Context, *GetPostAnalyticsBySocialIDRequest) (*GetPostAnalyticsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPostAnalyticsBySocialID not implemented") +} +func (UnimplementedAyrshareServer) GetSocialAnalytics(context.Context, *GetSocialAnalyticsRequest) (*GetSocialAnalyticsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSocialAnalytics not implemented") +} +func (UnimplementedAyrshareServer) AutoHashtags(context.Context, *AutoHashtagsRequest) (*AutoHashtagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AutoHashtags not implemented") +} +func (UnimplementedAyrshareServer) CheckBannedHashtag(context.Context, *CheckBannedHashtagRequest) (*CheckBannedHashtagResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CheckBannedHashtag not implemented") +} +func (UnimplementedAyrshareServer) RecommendHashtags(context.Context, *RecommendHashtagsRequest) (*RecommendHashtagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecommendHashtags not implemented") +} +func (UnimplementedAyrshareServer) SearchHashtags(context.Context, *SearchHashtagsRequest) (*SearchHashtagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchHashtags not implemented") +} +func (s *UnimplementedAyrshareServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedAyrshareServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedAyrshareServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &Ayrshare_ServiceDesc +} +func (s *UnimplementedAyrshareServer) XXX_InterfaceName() string { + return "aryshare.Ayrshare" +} + +func (UnimplementedAyrshareServer) mustEmbedUnimplementedAyrshareServer() {} + +// UnsafeAyrshareServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AyrshareServer will +// result in compilation errors. +type UnsafeAyrshareServer interface { + mustEmbedUnimplementedAyrshareServer() +} + +func RegisterAyrshareServer(s grpc_go.ServiceRegistrar, srv AyrshareServer) { + s.RegisterService(&Ayrshare_ServiceDesc, srv) +} + +func _Ayrshare_Post_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(PostRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Post", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPostRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPost", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetUser", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_CreateProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateProfileRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateProfile", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetProfiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetProfilesRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetProfiles", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GenerateJWT_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateJWTRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GenerateJWT", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetHistoryRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetHistory", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetHistoryById_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetHistoryByIdRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetHistoryById", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetHistoryByPlatform_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetHistoryByPlatformRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetHistoryByPlatform", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_SendMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(SendMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SendMessage", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMessagesRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetMessages", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_PostComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(PostCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("PostComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_DeleteComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_ReplyComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ReplyCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("ReplyComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetPostAnalytics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPostAnalyticsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPostAnalytics", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetPostAnalyticsBySocialID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPostAnalyticsBySocialIDRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPostAnalyticsBySocialID", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetSocialAnalytics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSocialAnalyticsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetSocialAnalytics", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_AutoHashtags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(AutoHashtagsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("AutoHashtags", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_CheckBannedHashtag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CheckBannedHashtagRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CheckBannedHashtag", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_RecommendHashtags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(RecommendHashtagsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("RecommendHashtags", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_SearchHashtags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchHashtagsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SearchHashtags", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// Ayrshare_ServiceDesc is the grpc_go.ServiceDesc for Ayrshare service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var Ayrshare_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "aryshare.Ayrshare", + HandlerType: (*AyrshareServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "Post", + Handler: _Ayrshare_Post_Handler, + }, + { + MethodName: "GetPost", + Handler: _Ayrshare_GetPost_Handler, + }, + { + MethodName: "GetUser", + Handler: _Ayrshare_GetUser_Handler, + }, + { + MethodName: "CreateProfile", + Handler: _Ayrshare_CreateProfile_Handler, + }, + { + MethodName: "GetProfiles", + Handler: _Ayrshare_GetProfiles_Handler, + }, + { + MethodName: "GenerateJWT", + Handler: _Ayrshare_GenerateJWT_Handler, + }, + { + MethodName: "GetHistory", + Handler: _Ayrshare_GetHistory_Handler, + }, + { + MethodName: "GetHistoryById", + Handler: _Ayrshare_GetHistoryById_Handler, + }, + { + MethodName: "GetHistoryByPlatform", + Handler: _Ayrshare_GetHistoryByPlatform_Handler, + }, + { + MethodName: "SendMessage", + Handler: _Ayrshare_SendMessage_Handler, + }, + { + MethodName: "GetMessages", + Handler: _Ayrshare_GetMessages_Handler, + }, + { + MethodName: "PostComment", + Handler: _Ayrshare_PostComment_Handler, + }, + { + MethodName: "GetComment", + Handler: _Ayrshare_GetComment_Handler, + }, + { + MethodName: "DeleteComment", + Handler: _Ayrshare_DeleteComment_Handler, + }, + { + MethodName: "ReplyComment", + Handler: _Ayrshare_ReplyComment_Handler, + }, + { + MethodName: "GetPostAnalytics", + Handler: _Ayrshare_GetPostAnalytics_Handler, + }, + { + MethodName: "GetPostAnalyticsBySocialID", + Handler: _Ayrshare_GetPostAnalyticsBySocialID_Handler, + }, + { + MethodName: "GetSocialAnalytics", + Handler: _Ayrshare_GetSocialAnalytics_Handler, + }, + { + MethodName: "AutoHashtags", + Handler: _Ayrshare_AutoHashtags_Handler, + }, + { + MethodName: "CheckBannedHashtag", + Handler: _Ayrshare_CheckBannedHashtag_Handler, + }, + { + MethodName: "RecommendHashtags", + Handler: _Ayrshare_RecommendHashtags_Handler, + }, + { + MethodName: "SearchHashtags", + Handler: _Ayrshare_SearchHashtags_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{}, + Metadata: "pb/ayrshare.proto", +} diff --git a/pkg/cron/task.go b/pkg/cron/task.go index 659d0c2..b16026a 100644 --- a/pkg/cron/task.go +++ b/pkg/cron/task.go @@ -23,6 +23,9 @@ func InitTasks() error { err = cm.AddTask("artistAutoConfirmAnalysis", "0 */1 * * * *", ArtistAutoConfirmAnalysisTask) err = cm.AddTask("refreshWorkAnalysisApprovalStatus", "0 */1 * * * *", RefreshWorkAnalysisApprovalStatusTask) + + // 每天 00:30 和 12:30 执行 Ayrshare 指标采集任务 + err = cm.AddTask("ayrshareMetricsCollector", "30 0,12 * * *", AyrshareMetricsCollectorTask) if err != nil { log.Printf("添加测试任务失败: %v", err) } @@ -103,3 +106,8 @@ func ArtistAutoConfirmAnalysisTask() { serverCast.ProcessAnalysisTask(context.Background(), analysisUuid) } } + +// AyrshareMetricsCollectorTask Ayrshare 指标采集定时任务(每天 00:30 和 12:30 执行) +func AyrshareMetricsCollectorTask() { + serverCast.ExecuteAyrshareMetricsCollector() +} diff --git a/pkg/router/analysis.go b/pkg/router/analysis.go index 69eb3ff..373612f 100644 --- a/pkg/router/analysis.go +++ b/pkg/router/analysis.go @@ -10,6 +10,8 @@ import ( ) func AnalysisRouter(r *gin.RouterGroup) { + r.POST("analysis/trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) + analysis := r.Group("analysis") analysis.Use(middleware.CheckWebLogin(service.AccountProvider)) { @@ -29,6 +31,7 @@ func AnalysisRouter(r *gin.RouterGroup) { analysis.POST("artist-metrics-single", serviceCast.ArtistMetricsDailyWindow) // 艺人指标日窗口 analysis.POST("tobe-confirmed-list", serviceCast.TobeConfirmedList) // 待确认数据列表 analysis.POST("update-approval-id", serviceCast.UpdateWorkAnalysisApprovalID) // 更新作品分析审批ID + // analysis.POST("trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) // 手动触发 Ayrshare 指标采集任务 } diff --git a/pkg/service/cast/analysis.go b/pkg/service/cast/analysis.go index 5f53e23..5e362c1 100644 --- a/pkg/service/cast/analysis.go +++ b/pkg/service/cast/analysis.go @@ -2,8 +2,10 @@ package cast import ( "context" + "encoding/json" "errors" "fmt" + "fonchain-fiee/api/aryshare" "fonchain-fiee/api/bundle" "fonchain-fiee/api/cast" "fonchain-fiee/pkg/cache" @@ -17,6 +19,7 @@ import ( "dubbo.apache.org/dubbo-go/v3/common/constant" "github.com/gin-gonic/gin" + "github.com/google/uuid" "go.uber.org/zap" ) @@ -639,3 +642,545 @@ func autoConfirmAnalysis(ctx context.Context, analysisUuid string) (err error) { } return } + +// TriggerAyrshareMetricsCollector 手动触发 Ayrshare 指标采集任务 +func TriggerAyrshareMetricsCollector(ctx *gin.Context) { + // 在后台 goroutine 中执行任务,避免阻塞 HTTP 请求 + go func() { + // 同时使用 zap 和 fmt.Printf 确保日志输出到终端 + zap.L().Info("手动触发 Ayrshare 指标采集任务") + fmt.Printf("[%s] 手动触发 Ayrshare 指标采集任务\n", time.Now().Format("2006-01-02 15:04:05")) + executeAyrshareMetricsCollector() + }() + service.Success(ctx, map[string]string{ + "message": "任务已触发,正在后台执行", + }) + return +} + +// ExecuteAyrshareMetricsCollector 提供给定时任务调用的 Ayrshare 指标采集入口 +func ExecuteAyrshareMetricsCollector() { + executeAyrshareMetricsCollector() +} + +// executeAyrshareMetricsCollector 执行 Ayrshare 指标采集任务 +func executeAyrshareMetricsCollector() { + ctx := context.Background() + zap.L().Info("开始执行 Ayrshare 指标采集任务") + fmt.Printf("[%s] [INFO] 开始执行 Ayrshare 指标采集任务\n", time.Now().Format("2006-01-02 15:04:05")) + + // 获取当前日期(中国时区,格式:YYYYMMDD) + loc, _ := time.LoadLocation("Asia/Shanghai") + now := time.Now().In(loc) + dateCN := now.Year()*10000 + int(now.Month())*100 + now.Day() + + // 第一步:获取所有状态为1的艺人AyrShare信息 + mediaMetricsList, err := collectMediaMetricsForAyrshare(ctx, dateCN) + if err != nil { + zap.L().Error("采集账号指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 采集账号指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + return + } + + // 批量插入账号指标 + if len(mediaMetricsList) > 0 { + req := &cast.UpsertMediaMetricsDailyBatchReq{ + Data: mediaMetricsList, + } + resp, err := service.CastProvider.UpsertMediaMetricsDailyBatch(ctx, req) + if err != nil { + zap.L().Error("批量插入账号指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 批量插入账号指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + } else if resp != nil && resp.Success { + zap.L().Info("批量插入账号指标成功", zap.Int("count", len(mediaMetricsList))) + fmt.Printf("[%s] [INFO] 批量插入账号指标成功,数量: %d\n", time.Now().Format("2006-01-02 15:04:05"), len(mediaMetricsList)) + } + } + + // 第二步:获取作品指标 + workMetricsList, err := collectWorkMetricsForAyrshare(ctx, dateCN) + if err != nil { + zap.L().Error("采集作品指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 采集作品指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + return + } + + // 批量插入作品指标 + if len(workMetricsList) > 0 { + req := &cast.UpsertWorkMetricsDailyBatchReq{ + Data: workMetricsList, + } + resp, err := service.CastProvider.UpsertWorkMetricsDailyBatch(ctx, req) + if err != nil { + zap.L().Error("批量插入作品指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 批量插入作品指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + } else if resp != nil && resp.Success { + zap.L().Info("批量插入作品指标成功", zap.Int("count", len(workMetricsList))) + fmt.Printf("[%s] [INFO] 批量插入作品指标成功,数量: %d\n", time.Now().Format("2006-01-02 15:04:05"), len(workMetricsList)) + } + } + + zap.L().Info("Ayrshare 指标采集任务执行完成") + fmt.Printf("[%s] [INFO] Ayrshare 指标采集任务执行完成\n", time.Now().Format("2006-01-02 15:04:05")) +} + +// collectMediaMetricsForAyrshare 采集账号指标 +func collectMediaMetricsForAyrshare(ctx context.Context, dateCN int) ([]*cast.MediaMetricsDailyItem, error) { + metricsList := make([]*cast.MediaMetricsDailyItem, 0) + page := int32(1) + pageSize := int32(500) + fmt.Printf("[%s] [INFO] 开始采集账号指标\n", time.Now().Format("2006-01-02 15:04:05")) + + for { + // 获取状态为1的艺人AyrShare信息 + req := &cast.GetArtistAyrShareInfoReq{ + Status: 1, // 状态为1表示有效 + Page: page, + PageSize: pageSize, + } + resp, err := service.CastProvider.GetArtistAyrShareInfo(ctx, req) + if err != nil { + zap.L().Error("获取艺人AyrShare信息失败", zap.Error(err), zap.Int32("page", page)) + fmt.Printf("[%s] [ERROR] 获取艺人AyrShare信息失败,页码: %d, 错误: %v\n", time.Now().Format("2006-01-02 15:04:05"), page, err) + return metricsList, err + } + + if resp == nil || resp.Data == nil || len(resp.Data) == 0 { + break + } + + fmt.Printf("[%s] [INFO] 获取到第 %d 页艺人信息,数量: %d\n", time.Now().Format("2006-01-02 15:04:05"), page, len(resp.Data)) + + // 对每个艺人调用 GetSocialAnalytics + for _, artistInfo := range resp.Data { + if artistInfo.ProfileKey == "" { + zap.L().Warn("艺人ProfileKey为空,跳过", zap.String("artistUuid", artistInfo.ArtistUuid)) + fmt.Printf("[%s] [WARN] 艺人ProfileKey为空,跳过,artistUuid: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) + continue + } + + // 调用 GetSocialAnalytics,平台为 ["instagram", "tiktok"] + socialReq := &aryshare.GetSocialAnalyticsRequest{ + Platforms: []string{"instagram", "tiktok"}, + ProfileKey: artistInfo.ProfileKey, + } + socialResp, err := service.AyrshareProvider.GetSocialAnalytics(ctx, socialReq) + if err != nil { + zap.L().Warn("获取社交分析数据失败", zap.Error(err), zap.String("profileKey", artistInfo.ProfileKey)) + fmt.Printf("[%s] [WARN] 获取社交分析数据失败,profileKey: %s, 错误: %v\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ProfileKey, err) + continue + } + + fmt.Println("socialResp", socialResp) + + // 解析 JSON 数据并构建指标 + items := parseSocialAnalyticsToMediaMetricsForAyrshare(socialResp, artistInfo, dateCN) + metricsList = append(metricsList, items...) + + // 避免请求过于频繁 + time.Sleep(200 * time.Millisecond) + } + + // 如果返回的数据少于 pageSize,说明已经是最后一页 + if len(resp.Data) < int(pageSize) { + break + } + page++ + } + + fmt.Printf("[%s] [INFO] 账号指标采集完成,共采集 %d 条\n", time.Now().Format("2006-01-02 15:04:05"), len(metricsList)) + fmt.Println("metricsList", metricsList) + return metricsList, nil +} + +// parseSocialAnalyticsToMediaMetricsForAyrshare 解析社交分析数据并转换为媒体指标 +func parseSocialAnalyticsToMediaMetricsForAyrshare(socialResp *aryshare.GetSocialAnalyticsResponse, artistInfo *cast.ArtistAyrShareInfo, dateCN int) []*cast.MediaMetricsDailyItem { + items := make([]*cast.MediaMetricsDailyItem, 0) + + // 解析 Instagram 数据 + if socialResp.Instagram != "" { + // 调试:打印 Instagram JSON 字符串的前500字符 + instaPreview := socialResp.Instagram + if len(instaPreview) > 500 { + instaPreview = instaPreview[:500] + "..." + } + fmt.Printf("[%s] [DEBUG] Instagram JSON 字符串预览: %s\n", time.Now().Format("2006-01-02 15:04:05"), instaPreview) + + item := parsePlatformDataForAyrshare(socialResp.Instagram, "instagram", artistInfo, dateCN) + if item != nil { + items = append(items, item) + fmt.Printf("[%s] [INFO] 解析 Instagram 账号指标成功,艺人: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) + } + } + + // 解析 TikTok 数据 + if socialResp.Tiktok != "" { + // 调试:打印 TikTok JSON 字符串的前500字符 + tiktokPreview := socialResp.Tiktok + if len(tiktokPreview) > 500 { + tiktokPreview = tiktokPreview[:500] + "..." + } + fmt.Printf("[%s] [DEBUG] TikTok JSON 字符串预览: %s\n", time.Now().Format("2006-01-02 15:04:05"), tiktokPreview) + + item := parsePlatformDataForAyrshare(socialResp.Tiktok, "tiktok", artistInfo, dateCN) + if item != nil { + items = append(items, item) + fmt.Printf("[%s] [INFO] 解析 TikTok 账号指标成功,艺人: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) + } + } + + fmt.Println("items", items) + fmt.Println("items length", len(items)) + + return items +} + +// parsePlatformDataForAyrshare 解析平台数据(JSON格式) +func parsePlatformDataForAyrshare(jsonData, platform string, artistInfo *cast.ArtistAyrShareInfo, dateCN int) *cast.MediaMetricsDailyItem { + // 调试:打印原始 JSON 数据(截取前500字符避免日志过长) + jsonPreview := jsonData + fmt.Printf("parsePlatformDataForAyrshare 原始 JSON 数据: %s\n", jsonPreview) + + var rootData map[string]interface{} + if err := json.Unmarshal([]byte(jsonData), &rootData); err != nil { + zap.L().Warn("解析平台数据失败", zap.Error(err), zap.String("platform", platform)) + fmt.Printf("parsePlatformDataForAyrshare 解析平台数据失败,平台: %s, 错误: %v\n", platform, err) + return nil + } + + // 调试:打印根数据的所有 key + rootKeys := make([]string, 0, len(rootData)) + for k := range rootData { + rootKeys = append(rootKeys, k) + } + fmt.Printf("parsePlatformDataForAyrshare 根数据字段: %v\n", rootKeys) + + // 根据平台映射平台ID:1 TikTok, 3 Instagram + var platformID uint32 + if platform == "tiktok" { + platformID = 1 + } else if platform == "instagram" { + platformID = 3 + } else { + return nil + } + + // 从根数据中提取 analytics 对象,实际数据在 analytics 字段下 + var analyticsData map[string]interface{} + if analyticsVal, ok := rootData["analytics"]; ok { + if analyticsMap, ok := analyticsVal.(map[string]interface{}); ok { + analyticsData = analyticsMap + } else { + fmt.Printf("parsePlatformDataForAyrshare analytics 字段类型不正确: %T\n", analyticsVal) + } + } else { + fmt.Printf("[%s] [WARN] %s 根数据中没有找到 analytics 字段\n", time.Now().Format("2006-01-02 15:04:05"), platform) + } + + // 如果没有 analytics 字段,尝试直接从根数据提取(兼容旧格式) + if analyticsData == nil { + analyticsData = rootData + fmt.Printf("parsePlatformDataForAyrshare 使用根数据作为 analytics 数据\n") + } + + // 调试:打印 analytics 数据的所有 key,帮助诊断字段名 + if len(analyticsData) > 0 { + keys := make([]string, 0, len(analyticsData)) + for k := range analyticsData { + keys = append(keys, k) + } + fmt.Printf("parsePlatformDataForAyrshare analytics 数据字段: %v\n", keys) + } else { + fmt.Printf("parsePlatformDataForAyrshare analytics 数据为空\n") + } + + // 提取指标数据(根据 Ayrshare API 的实际返回结构) + // Instagram 字段:followersCount, likeCount, mediaCount, viewsCount, commentsCount + // TikTok 字段:videoCountTotal, viewCountTotal, commentCountTotal, shareCountTotal + item := &cast.MediaMetricsDailyItem{ + Uuid: uuid.NewString(), + ArtistUuid: artistInfo.ArtistUuid, + MediaAccUserID: "", // MediaAccUserID 需要通过其他接口获取,暂时留空 + MediaName: "", // MediaName 需要通过其他接口获取,暂时留空 + ArtistName: "", // ArtistName 需要通过其他接口获取,暂时留空 + ArtistPhone: "", // ArtistPhone 需要通过其他接口获取,暂时留空 + PlatformID: platformID, + Date: int32(dateCN), + // 粉丝数:Instagram 使用 followsCount,TikTok 可能没有直接对应字段 + FansCount: extractInt64ForAyrshare(analyticsData, "followsCount", "followersCount", "followers", "followerCount", "fans", "fanCount"), + // 观看量:Instagram 使用 viewsCount,TikTok 使用 viewCountTotal + ViewsCount: extractInt64ForAyrshare(analyticsData, "viewCountTotal", "viewsCount", "views", "viewCount", "viewCountPeriod"), + // 点赞数:Instagram 使用 likeCount + LikesCount: extractInt64ForAyrshare(analyticsData, "likeCount", "likes", "likesCount", "likeCountTotal"), + // 评论数:Instagram 使用 commentsCount,TikTok 使用 commentCountTotal + CommentsCount: extractInt64ForAyrshare(analyticsData, "commentCountTotal", "commentsCount", "comments", "commentCount", "commentCountPeriod"), + // 分享数:Instagram 使用 reachCount,TikTok 使用 shareCountTotal + SharesCount: extractInt64ForAyrshare(analyticsData, "shareCountTotal", "shares", "shareCount", "sharesCount", "shareCountPeriod"), + // 视频数:Instagram 使用 mediaCount,TikTok 使用 videoCountTotal + VideoCount: extractInt64ForAyrshare(analyticsData, "mediaCount", "videoCountTotal", "videos", "videoCount", "videosCount"), + // 图片/媒体数:Instagram 可能没有直接对应字段,使用 posts 等 + ImageCount: extractInt64ForAyrshare(analyticsData, "posts", "postCount", "postsCount", "images", "imageCount", "imagesCount"), + } + + // 调试:打印提取到的指标值 + fmt.Printf("parsePlatformDataForAyrshare 提取的指标 - 粉丝数: %d, 观看量: %d, 点赞数: %d, 评论数: %d, 分享数: %d, 视频数: %d, 图片数: %d\n", + item.FansCount, item.ViewsCount, item.LikesCount, item.CommentsCount, item.SharesCount, item.VideoCount, item.ImageCount) + + return item +} + +// extractInt64ForAyrshare 从 map 中提取 int64 值,尝试多个可能的 key +// getMapKeys 获取 map 的所有键,用于调试 +func getMapKeys(m map[string]interface{}) []string { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + return keys +} + +func extractInt64ForAyrshare(data map[string]interface{}, keys ...string) int64 { + for _, key := range keys { + if val, ok := data[key]; ok { + // 调试:打印找到的字段和值 + fmt.Printf("extractInt64ForAyrshare 找到字段 %s, 值: %v, 类型: %T\n", key, val, val) + switch v := val.(type) { + case float64: + return int64(v) + case int64: + return v + case int: + return int64(v) + case int32: + return int64(v) + case string: + // 如果是字符串,尝试解析为数字 + if key == "viewCountPeriod" || key == "commentCountPeriod" || key == "shareCountPeriod" { + // 这些字段是字符串,跳过 + continue + } + // 尝试将字符串解析为数字 + if num, err := strconv.ParseInt(v, 10, 64); err == nil { + return num + } + if num, err := strconv.ParseFloat(v, 64); err == nil { + return int64(num) + } + } + } + } + return 0 +} + +// collectWorkMetricsForAyrshare 采集作品指标 +func collectWorkMetricsForAyrshare(ctx context.Context, dateCN int) ([]*cast.WorkMetricsDailyItem, error) { + metricsList := make([]*cast.WorkMetricsDailyItem, 0) + fmt.Printf("[%s] [INFO] 开始采集作品指标\n", time.Now().Format("2006-01-02 15:04:05")) + + // 调用 ListWorkPlatformInfo,PlatformIDs=[1,3], PublishMediaStatus=2, PageSize=99999999 + req := &cast.ListWorkPlatformInfoReq{ + PlatformIDs: []uint32{1, 3}, // 1 TikTok, 3 Instagram + PublishMediaStatus: 2, // 状态为2 + Page: 1, + PageSize: 99999999, + } + resp, err := service.CastProvider.ListWorkPlatformInfo(ctx, req) + if err != nil { + return metricsList, err + } + + fmt.Println("--------------------------------") + fmt.Println("66666666666666666666666666666") + fmt.Println("resp", resp) + fmt.Println("66666666666666666666666666666") + fmt.Println("--------------------------------") + + if resp == nil || resp.Data == nil || len(resp.Data) == 0 { + zap.L().Info("没有作品平台信息") + return metricsList, nil + } + + // 对每个作品调用 GetPostAnalytics + for _, platformInfo := range resp.Data { + if platformInfo.PublishMediaID == "" || platformInfo.WorkUuid == "" { + continue + } + + // 只处理 TikTok(1) 和 Instagram(3) 平台 + if platformInfo.PlatformID != 1 && platformInfo.PlatformID != 3 { + continue + } + + // 通过 ArtistUuid 获取艺人的 AyrShare 信息,获取 profileKey + artistAyrShareReq := &cast.GetArtistAyrShareInfoReq{ + ArtistUuid: platformInfo.ArtistUuid, + Status: 1, // 状态为1表示有效 + Page: 1, + PageSize: 1, + } + artistAyrShareResp, err := service.CastProvider.GetArtistAyrShareInfo(ctx, artistAyrShareReq) + if err != nil || artistAyrShareResp == nil || len(artistAyrShareResp.Data) == 0 { + zap.L().Warn("获取艺人AyrShare信息失败", zap.Error(err), zap.String("artistUuid", platformInfo.ArtistUuid)) + fmt.Printf("collectWorkMetricsForAyrshare 获取艺人AyrShare信息失败,artistUuid: %s, 错误: %v\n", platformInfo.ArtistUuid, err) + continue + } + + profileKey := artistAyrShareResp.Data[0].ProfileKey + if profileKey == "" { + zap.L().Warn("作品ProfileKey为空,跳过", zap.String("workUuid", platformInfo.WorkUuid)) + fmt.Printf("collectWorkMetricsForAyrshare 作品ProfileKey为空,跳过,workUuid: %s\n", platformInfo.WorkUuid) + continue + } + + // 调用 GetPostAnalytics 接口 + var postReq *aryshare.GetPostAnalyticsRequest + if platformInfo.PlatformID == 1 { + // TikTok 平台 + postReq = &aryshare.GetPostAnalyticsRequest{ + Id: platformInfo.PublishMediaID, + Platforms: []string{"tiktok"}, + ProfileKey: profileKey, + } + } else if platformInfo.PlatformID == 3 { + // Instagram 平台 + postReq = &aryshare.GetPostAnalyticsRequest{ + Id: platformInfo.PublishMediaID, + Platforms: []string{"instagram"}, + ProfileKey: profileKey, + } + } + + postResp, err := service.AyrshareProvider.GetPostAnalytics(ctx, postReq) + fmt.Println("--------------------------------") + fmt.Println("postResp", postResp) + fmt.Println("--------------------------------") + if err != nil { + zap.L().Warn("获取作品分析数据失败", zap.Error(err), zap.String("publishMediaID", platformInfo.PublishMediaID)) + fmt.Printf("collectWorkMetricsForAyrshare 获取作品分析数据失败,publishMediaID: %s, 错误: %v\n", platformInfo.PublishMediaID, err) + continue + } + + // 解析作品分析数据并构建指标 + item := parsePostAnalyticsToWorkMetricsForAyrshare(postResp, platformInfo, dateCN) + if item != nil { + fmt.Println("--------------------------------") + fmt.Println("test") + fmt.Println("item", item) + fmt.Println("--------------------------------") + metricsList = append(metricsList, item) + fmt.Printf("collectWorkMetricsForAyrshare 解析作品指标成功,workUuid: %s, platformID: %d\n", platformInfo.WorkUuid, platformInfo.PlatformID) + } + + // 避免请求过于频繁 + time.Sleep(200 * time.Millisecond) + } + + fmt.Println("--------------------------------") + fmt.Println("metricsList", metricsList) + fmt.Println("--------------------------------") + + fmt.Printf("collectWorkMetricsForAyrshare 作品指标采集完成,共采集 %d 条\n", len(metricsList)) + return metricsList, nil +} + +// parsePostAnalyticsToWorkMetricsForAyrshare 解析作品分析数据并转换为作品指标 +func parsePostAnalyticsToWorkMetricsForAyrshare(postResp *aryshare.GetPostAnalyticsResponse, platformInfo *cast.WorkPlatformInfo, dateCN int) *cast.WorkMetricsDailyItem { + fmt.Println("--------------------------------") + fmt.Println("44444444444444444444444444444") + fmt.Println("platformInfo", platformInfo) + fmt.Println("44444444444444444444444444444") + fmt.Println("--------------------------------") + // 根据平台ID选择对应的 JSON 数据 + var jsonData string + if platformInfo.PlatformID == 1 { // TikTok + jsonData = postResp.Tiktok + } else if platformInfo.PlatformID == 3 { // Instagram + jsonData = postResp.Instagram + } else { + return nil + } + + if jsonData == "" { + return nil + } + + // 解析 JSON 数据 + var rootData map[string]interface{} + if err := json.Unmarshal([]byte(jsonData), &rootData); err != nil { + zap.L().Warn("解析作品分析数据失败", zap.Error(err)) + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare 解析作品分析数据失败,workUuid: %s, 错误: %v\n", platformInfo.WorkUuid, err) + return nil + } + + // 调试:打印根数据的键 + fmt.Printf("[DEBUG] 根数据包含的键: %v\n", getMapKeys(rootData)) + + // 从根数据中提取 analytics 对象,实际数据可能在 analytics 字段下 + var analyticsData map[string]interface{} + if analyticsVal, ok := rootData["analytics"]; ok { + if analyticsMap, ok := analyticsVal.(map[string]interface{}); ok { + analyticsData = analyticsMap + fmt.Printf("analytics 字段提取数据,包含的键: %v\n", getMapKeys(analyticsData)) + } + } + + // 如果没有 analytics 字段,尝试直接从根数据提取(兼容旧格式) + if analyticsData == nil { + analyticsData = rootData + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare 使用根数据作为 analyticsData,包含的键: %v\n", getMapKeys(analyticsData)) + } + + // 构建作品指标项,使用 ListWorkPlatformInfo 返回的字段信息 + item := &cast.WorkMetricsDailyItem{ + Uuid: uuid.NewString(), + WorkUuid: platformInfo.WorkUuid, + ArtistUuid: platformInfo.ArtistUuid, + MediaAccUserID: platformInfo.PlatformUserID, // 使用平台用户ID + MediaName: platformInfo.PlatformUserName, // 平台用户名 + ArtistName: platformInfo.ArtistName, // 艺人名字 + ArtistPhone: platformInfo.ArtistPhone, // 艺人手机号 + PlatformID: platformInfo.PlatformID, + Date: int32(dateCN), + } + + // 根据平台ID使用不同的字段提取逻辑 + if platformInfo.PlatformID == 3 { + // Instagram 平台 + // 访问量:使用 viewsCount + item.ViewsCount = extractInt64ForAyrshare(analyticsData, "viewsCount", "viewCount", "views") + // 点赞数:使用 likeCount + item.LikesCount = extractInt64ForAyrshare(analyticsData, "likeCount", "likes", "likesCount") + // 评论数:Instagram 可能没有评论数字段,尝试多种可能 + item.CommentsCount = extractInt64ForAyrshare(analyticsData, "commentsCount", "commentCount", "comments") + // 分享数:使用 sharesCount(注意是复数形式) + item.SharesCount = extractInt64ForAyrshare(analyticsData, "sharesCount", "shareCount", "shares") + + // 打印解析结果 + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare Instagram 作品指标解析完成 - workUuid: %s, 访问量: %d, 点赞数: %d, 评论数: %d, 分享数: %d\n", + platformInfo.WorkUuid, + item.ViewsCount, item.LikesCount, item.CommentsCount, item.SharesCount) + } else if platformInfo.PlatformID == 1 { + // TikTok 平台 + // 访问量:使用 viewCountTotal + item.ViewsCount = extractInt64ForAyrshare(analyticsData, "viewCountTotal", "viewCount", "views", "videoViews") + // 点赞数:使用 likeCount + item.LikesCount = extractInt64ForAyrshare(analyticsData, "likeCount", "likes", "likesCount") + // 评论数:使用 commentCountTotal + item.CommentsCount = extractInt64ForAyrshare(analyticsData, "commentCountTotal", "commentCount", "comments", "commentsCount") + // 分享数:使用 shareCountTotal + item.SharesCount = extractInt64ForAyrshare(analyticsData, "shareCountTotal", "shareCount", "shares", "sharesCount") + + // 打印解析结果 + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare TikTok 作品指标解析完成 - workUuid: %s, 访问量: %d, 点赞数: %d, 评论数: %d, 分享数: %d\n", + platformInfo.WorkUuid, + item.ViewsCount, item.LikesCount, item.CommentsCount, item.SharesCount) + } + + fmt.Println("--------------------------------") + fmt.Println("5555555555555555555555") + fmt.Println("item", item) + fmt.Println("5555555555555555555555") + fmt.Println("--------------------------------") + + return item +}