// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.15.5 // source: sdk_ws/ws.proto package server_api_params import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type GroupInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID,omitempty"` GroupName string `protobuf:"bytes,2,opt,name=groupName,proto3" json:"groupName,omitempty"` Notification string `protobuf:"bytes,3,opt,name=notification,proto3" json:"notification,omitempty"` Introduction string `protobuf:"bytes,4,opt,name=introduction,proto3" json:"introduction,omitempty"` FaceURL string `protobuf:"bytes,5,opt,name=faceURL,proto3" json:"faceURL,omitempty"` OwnerUserID string `protobuf:"bytes,6,opt,name=ownerUserID,proto3" json:"ownerUserID,omitempty"` CreateTime uint32 `protobuf:"varint,7,opt,name=createTime,proto3" json:"createTime,omitempty"` MemberCount uint32 `protobuf:"varint,8,opt,name=memberCount,proto3" json:"memberCount,omitempty"` Ex string `protobuf:"bytes,9,opt,name=ex,proto3" json:"ex,omitempty"` Status int32 `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"` CreatorUserID string `protobuf:"bytes,11,opt,name=creatorUserID,proto3" json:"creatorUserID,omitempty"` GroupType int32 `protobuf:"varint,12,opt,name=groupType,proto3" json:"groupType,omitempty"` NeedVerification int32 `protobuf:"varint,13,opt,name=needVerification,proto3" json:"needVerification,omitempty"` LookMemberInfo int32 `protobuf:"varint,14,opt,name=lookMemberInfo,proto3" json:"lookMemberInfo,omitempty"` ApplyMemberFriend int32 `protobuf:"varint,15,opt,name=applyMemberFriend,proto3" json:"applyMemberFriend,omitempty"` NotificationUpdateTime uint32 `protobuf:"varint,16,opt,name=notificationUpdateTime,proto3" json:"notificationUpdateTime,omitempty"` NotificationUserID string `protobuf:"bytes,17,opt,name=notificationUserID,proto3" json:"notificationUserID,omitempty"` } func (x *GroupInfo) Reset() { *x = GroupInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupInfo) ProtoMessage() {} func (x *GroupInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupInfo.ProtoReflect.Descriptor instead. func (*GroupInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{0} } func (x *GroupInfo) GetGroupID() string { if x != nil { return x.GroupID } return "" } func (x *GroupInfo) GetGroupName() string { if x != nil { return x.GroupName } return "" } func (x *GroupInfo) GetNotification() string { if x != nil { return x.Notification } return "" } func (x *GroupInfo) GetIntroduction() string { if x != nil { return x.Introduction } return "" } func (x *GroupInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *GroupInfo) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *GroupInfo) GetCreateTime() uint32 { if x != nil { return x.CreateTime } return 0 } func (x *GroupInfo) GetMemberCount() uint32 { if x != nil { return x.MemberCount } return 0 } func (x *GroupInfo) GetEx() string { if x != nil { return x.Ex } return "" } func (x *GroupInfo) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *GroupInfo) GetCreatorUserID() string { if x != nil { return x.CreatorUserID } return "" } func (x *GroupInfo) GetGroupType() int32 { if x != nil { return x.GroupType } return 0 } func (x *GroupInfo) GetNeedVerification() int32 { if x != nil { return x.NeedVerification } return 0 } func (x *GroupInfo) GetLookMemberInfo() int32 { if x != nil { return x.LookMemberInfo } return 0 } func (x *GroupInfo) GetApplyMemberFriend() int32 { if x != nil { return x.ApplyMemberFriend } return 0 } func (x *GroupInfo) GetNotificationUpdateTime() uint32 { if x != nil { return x.NotificationUpdateTime } return 0 } func (x *GroupInfo) GetNotificationUserID() string { if x != nil { return x.NotificationUserID } return "" } type GroupInfoForSet struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID,omitempty"` GroupName string `protobuf:"bytes,2,opt,name=groupName,proto3" json:"groupName,omitempty"` Notification string `protobuf:"bytes,3,opt,name=notification,proto3" json:"notification,omitempty"` Introduction string `protobuf:"bytes,4,opt,name=introduction,proto3" json:"introduction,omitempty"` FaceURL string `protobuf:"bytes,5,opt,name=faceURL,proto3" json:"faceURL,omitempty"` Ex string `protobuf:"bytes,6,opt,name=ex,proto3" json:"ex,omitempty"` NeedVerification *wrapperspb.Int32Value `protobuf:"bytes,7,opt,name=needVerification,proto3" json:"needVerification,omitempty"` LookMemberInfo *wrapperspb.Int32Value `protobuf:"bytes,8,opt,name=lookMemberInfo,proto3" json:"lookMemberInfo,omitempty"` ApplyMemberFriend *wrapperspb.Int32Value `protobuf:"bytes,9,opt,name=applyMemberFriend,proto3" json:"applyMemberFriend,omitempty"` } func (x *GroupInfoForSet) Reset() { *x = GroupInfoForSet{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupInfoForSet) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupInfoForSet) ProtoMessage() {} func (x *GroupInfoForSet) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupInfoForSet.ProtoReflect.Descriptor instead. func (*GroupInfoForSet) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{1} } func (x *GroupInfoForSet) GetGroupID() string { if x != nil { return x.GroupID } return "" } func (x *GroupInfoForSet) GetGroupName() string { if x != nil { return x.GroupName } return "" } func (x *GroupInfoForSet) GetNotification() string { if x != nil { return x.Notification } return "" } func (x *GroupInfoForSet) GetIntroduction() string { if x != nil { return x.Introduction } return "" } func (x *GroupInfoForSet) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *GroupInfoForSet) GetEx() string { if x != nil { return x.Ex } return "" } func (x *GroupInfoForSet) GetNeedVerification() *wrapperspb.Int32Value { if x != nil { return x.NeedVerification } return nil } func (x *GroupInfoForSet) GetLookMemberInfo() *wrapperspb.Int32Value { if x != nil { return x.LookMemberInfo } return nil } func (x *GroupInfoForSet) GetApplyMemberFriend() *wrapperspb.Int32Value { if x != nil { return x.ApplyMemberFriend } return nil } type GroupMemberFullInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` RoleLevel int32 `protobuf:"varint,3,opt,name=roleLevel,proto3" json:"roleLevel,omitempty"` JoinTime int32 `protobuf:"varint,4,opt,name=joinTime,proto3" json:"joinTime,omitempty"` Nickname string `protobuf:"bytes,5,opt,name=nickname,proto3" json:"nickname,omitempty"` FaceURL string `protobuf:"bytes,6,opt,name=faceURL,proto3" json:"faceURL,omitempty"` AppMangerLevel int32 `protobuf:"varint,7,opt,name=appMangerLevel,proto3" json:"appMangerLevel,omitempty"` //if >0 JoinSource int32 `protobuf:"varint,8,opt,name=joinSource,proto3" json:"joinSource,omitempty"` OperatorUserID string `protobuf:"bytes,9,opt,name=operatorUserID,proto3" json:"operatorUserID,omitempty"` Ex string `protobuf:"bytes,10,opt,name=ex,proto3" json:"ex,omitempty"` MuteEndTime uint32 `protobuf:"varint,11,opt,name=muteEndTime,proto3" json:"muteEndTime,omitempty"` InviterUserID string `protobuf:"bytes,12,opt,name=inviterUserID,proto3" json:"inviterUserID,omitempty"` } func (x *GroupMemberFullInfo) Reset() { *x = GroupMemberFullInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMemberFullInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMemberFullInfo) ProtoMessage() {} func (x *GroupMemberFullInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupMemberFullInfo.ProtoReflect.Descriptor instead. func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{2} } func (x *GroupMemberFullInfo) GetGroupID() string { if x != nil { return x.GroupID } return "" } func (x *GroupMemberFullInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GroupMemberFullInfo) GetRoleLevel() int32 { if x != nil { return x.RoleLevel } return 0 } func (x *GroupMemberFullInfo) GetJoinTime() int32 { if x != nil { return x.JoinTime } return 0 } func (x *GroupMemberFullInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *GroupMemberFullInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *GroupMemberFullInfo) GetAppMangerLevel() int32 { if x != nil { return x.AppMangerLevel } return 0 } func (x *GroupMemberFullInfo) GetJoinSource() int32 { if x != nil { return x.JoinSource } return 0 } func (x *GroupMemberFullInfo) GetOperatorUserID() string { if x != nil { return x.OperatorUserID } return "" } func (x *GroupMemberFullInfo) GetEx() string { if x != nil { return x.Ex } return "" } func (x *GroupMemberFullInfo) GetMuteEndTime() uint32 { if x != nil { return x.MuteEndTime } return 0 } func (x *GroupMemberFullInfo) GetInviterUserID() string { if x != nil { return x.InviterUserID } return "" } type PublicUserInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` Gender int32 `protobuf:"varint,4,opt,name=gender,proto3" json:"gender,omitempty"` Ex string `protobuf:"bytes,5,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *PublicUserInfo) Reset() { *x = PublicUserInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PublicUserInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*PublicUserInfo) ProtoMessage() {} func (x *PublicUserInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 PublicUserInfo.ProtoReflect.Descriptor instead. func (*PublicUserInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{3} } func (x *PublicUserInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *PublicUserInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *PublicUserInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *PublicUserInfo) GetGender() int32 { if x != nil { return x.Gender } return 0 } func (x *PublicUserInfo) GetEx() string { if x != nil { return x.Ex } return "" } type UserInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` Gender int32 `protobuf:"varint,4,opt,name=gender,proto3" json:"gender,omitempty"` PhoneNumber string `protobuf:"bytes,5,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` Birth uint32 `protobuf:"varint,6,opt,name=birth,proto3" json:"birth,omitempty"` Email string `protobuf:"bytes,7,opt,name=email,proto3" json:"email,omitempty"` Ex string `protobuf:"bytes,8,opt,name=ex,proto3" json:"ex,omitempty"` CreateIp string `protobuf:"bytes,9,opt,name=createIp,proto3" json:"createIp,omitempty"` CreateTime uint32 `protobuf:"varint,10,opt,name=createTime,proto3" json:"createTime,omitempty"` LastLoginIp string `protobuf:"bytes,11,opt,name=LastLoginIp,proto3" json:"LastLoginIp,omitempty"` LastLoginTime uint32 `protobuf:"varint,12,opt,name=LastLoginTime,proto3" json:"LastLoginTime,omitempty"` LoginTimes int32 `protobuf:"varint,13,opt,name=LoginTimes,proto3" json:"LoginTimes,omitempty"` LoginLimit int32 `protobuf:"varint,14,opt,name=LoginLimit,proto3" json:"LoginLimit,omitempty"` AppMangerLevel int32 `protobuf:"varint,15,opt,name=appMangerLevel,proto3" json:"appMangerLevel,omitempty"` GlobalRecvMsgOpt int32 `protobuf:"varint,16,opt,name=globalRecvMsgOpt,proto3" json:"globalRecvMsgOpt,omitempty"` } func (x *UserInfo) Reset() { *x = UserInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserInfo) ProtoMessage() {} func (x *UserInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 UserInfo.ProtoReflect.Descriptor instead. func (*UserInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{4} } func (x *UserInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *UserInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *UserInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *UserInfo) GetGender() int32 { if x != nil { return x.Gender } return 0 } func (x *UserInfo) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *UserInfo) GetBirth() uint32 { if x != nil { return x.Birth } return 0 } func (x *UserInfo) GetEmail() string { if x != nil { return x.Email } return "" } func (x *UserInfo) GetEx() string { if x != nil { return x.Ex } return "" } func (x *UserInfo) GetCreateIp() string { if x != nil { return x.CreateIp } return "" } func (x *UserInfo) GetCreateTime() uint32 { if x != nil { return x.CreateTime } return 0 } func (x *UserInfo) GetLastLoginIp() string { if x != nil { return x.LastLoginIp } return "" } func (x *UserInfo) GetLastLoginTime() uint32 { if x != nil { return x.LastLoginTime } return 0 } func (x *UserInfo) GetLoginTimes() int32 { if x != nil { return x.LoginTimes } return 0 } func (x *UserInfo) GetLoginLimit() int32 { if x != nil { return x.LoginLimit } return 0 } func (x *UserInfo) GetAppMangerLevel() int32 { if x != nil { return x.AppMangerLevel } return 0 } func (x *UserInfo) GetGlobalRecvMsgOpt() int32 { if x != nil { return x.GlobalRecvMsgOpt } return 0 } type FriendInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID,omitempty"` Remark string `protobuf:"bytes,2,opt,name=remark,proto3" json:"remark,omitempty"` CreateTime uint32 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime,omitempty"` FriendUser *UserInfo `protobuf:"bytes,4,opt,name=friendUser,proto3" json:"friendUser,omitempty"` AddSource int32 `protobuf:"varint,5,opt,name=addSource,proto3" json:"addSource,omitempty"` OperatorUserID string `protobuf:"bytes,6,opt,name=operatorUserID,proto3" json:"operatorUserID,omitempty"` Ex string `protobuf:"bytes,7,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *FriendInfo) Reset() { *x = FriendInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendInfo) ProtoMessage() {} func (x *FriendInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendInfo.ProtoReflect.Descriptor instead. func (*FriendInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{5} } func (x *FriendInfo) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *FriendInfo) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *FriendInfo) GetCreateTime() uint32 { if x != nil { return x.CreateTime } return 0 } func (x *FriendInfo) GetFriendUser() *UserInfo { if x != nil { return x.FriendUser } return nil } func (x *FriendInfo) GetAddSource() int32 { if x != nil { return x.AddSource } return 0 } func (x *FriendInfo) GetOperatorUserID() string { if x != nil { return x.OperatorUserID } return "" } func (x *FriendInfo) GetEx() string { if x != nil { return x.Ex } return "" } type BlackInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID,omitempty"` CreateTime uint32 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` BlackUserInfo *PublicUserInfo `protobuf:"bytes,3,opt,name=blackUserInfo,proto3" json:"blackUserInfo,omitempty"` AddSource int32 `protobuf:"varint,4,opt,name=addSource,proto3" json:"addSource,omitempty"` OperatorUserID string `protobuf:"bytes,5,opt,name=operatorUserID,proto3" json:"operatorUserID,omitempty"` Ex string `protobuf:"bytes,6,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *BlackInfo) Reset() { *x = BlackInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlackInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlackInfo) ProtoMessage() {} func (x *BlackInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 BlackInfo.ProtoReflect.Descriptor instead. func (*BlackInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{6} } func (x *BlackInfo) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *BlackInfo) GetCreateTime() uint32 { if x != nil { return x.CreateTime } return 0 } func (x *BlackInfo) GetBlackUserInfo() *PublicUserInfo { if x != nil { return x.BlackUserInfo } return nil } func (x *BlackInfo) GetAddSource() int32 { if x != nil { return x.AddSource } return 0 } func (x *BlackInfo) GetOperatorUserID() string { if x != nil { return x.OperatorUserID } return "" } func (x *BlackInfo) GetEx() string { if x != nil { return x.Ex } return "" } type GroupRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserInfo *PublicUserInfo `protobuf:"bytes,1,opt,name=userInfo,proto3" json:"userInfo,omitempty"` GroupInfo *GroupInfo `protobuf:"bytes,2,opt,name=groupInfo,proto3" json:"groupInfo,omitempty"` HandleResult int32 `protobuf:"varint,3,opt,name=handleResult,proto3" json:"handleResult,omitempty"` ReqMsg string `protobuf:"bytes,4,opt,name=reqMsg,proto3" json:"reqMsg,omitempty"` HandleMsg string `protobuf:"bytes,5,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` ReqTime uint32 `protobuf:"varint,6,opt,name=reqTime,proto3" json:"reqTime,omitempty"` HandleUserID string `protobuf:"bytes,7,opt,name=handleUserID,proto3" json:"handleUserID,omitempty"` HandleTime uint32 `protobuf:"varint,8,opt,name=handleTime,proto3" json:"handleTime,omitempty"` Ex string `protobuf:"bytes,9,opt,name=ex,proto3" json:"ex,omitempty"` JoinSource int32 `protobuf:"varint,10,opt,name=joinSource,proto3" json:"joinSource,omitempty"` InviterUserID string `protobuf:"bytes,11,opt,name=inviterUserID,proto3" json:"inviterUserID,omitempty"` } func (x *GroupRequest) Reset() { *x = GroupRequest{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupRequest) ProtoMessage() {} func (x *GroupRequest) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupRequest.ProtoReflect.Descriptor instead. func (*GroupRequest) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{7} } func (x *GroupRequest) GetUserInfo() *PublicUserInfo { if x != nil { return x.UserInfo } return nil } func (x *GroupRequest) GetGroupInfo() *GroupInfo { if x != nil { return x.GroupInfo } return nil } func (x *GroupRequest) GetHandleResult() int32 { if x != nil { return x.HandleResult } return 0 } func (x *GroupRequest) GetReqMsg() string { if x != nil { return x.ReqMsg } return "" } func (x *GroupRequest) GetHandleMsg() string { if x != nil { return x.HandleMsg } return "" } func (x *GroupRequest) GetReqTime() uint32 { if x != nil { return x.ReqTime } return 0 } func (x *GroupRequest) GetHandleUserID() string { if x != nil { return x.HandleUserID } return "" } func (x *GroupRequest) GetHandleTime() uint32 { if x != nil { return x.HandleTime } return 0 } func (x *GroupRequest) GetEx() string { if x != nil { return x.Ex } return "" } func (x *GroupRequest) GetJoinSource() int32 { if x != nil { return x.JoinSource } return 0 } func (x *GroupRequest) GetInviterUserID() string { if x != nil { return x.InviterUserID } return "" } type FriendRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUserID string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID,omitempty"` FromNickname string `protobuf:"bytes,2,opt,name=fromNickname,proto3" json:"fromNickname,omitempty"` FromFaceURL string `protobuf:"bytes,3,opt,name=fromFaceURL,proto3" json:"fromFaceURL,omitempty"` FromGender int32 `protobuf:"varint,4,opt,name=fromGender,proto3" json:"fromGender,omitempty"` ToUserID string `protobuf:"bytes,5,opt,name=toUserID,proto3" json:"toUserID,omitempty"` ToNickname string `protobuf:"bytes,6,opt,name=toNickname,proto3" json:"toNickname,omitempty"` ToFaceURL string `protobuf:"bytes,7,opt,name=toFaceURL,proto3" json:"toFaceURL,omitempty"` ToGender int32 `protobuf:"varint,8,opt,name=toGender,proto3" json:"toGender,omitempty"` HandleResult int32 `protobuf:"varint,9,opt,name=handleResult,proto3" json:"handleResult,omitempty"` ReqMsg string `protobuf:"bytes,10,opt,name=reqMsg,proto3" json:"reqMsg,omitempty"` CreateTime uint32 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` HandlerUserID string `protobuf:"bytes,12,opt,name=handlerUserID,proto3" json:"handlerUserID,omitempty"` HandleMsg string `protobuf:"bytes,13,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` HandleTime uint32 `protobuf:"varint,14,opt,name=handleTime,proto3" json:"handleTime,omitempty"` Ex string `protobuf:"bytes,15,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *FriendRequest) Reset() { *x = FriendRequest{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendRequest) ProtoMessage() {} func (x *FriendRequest) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendRequest.ProtoReflect.Descriptor instead. func (*FriendRequest) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{8} } func (x *FriendRequest) GetFromUserID() string { if x != nil { return x.FromUserID } return "" } func (x *FriendRequest) GetFromNickname() string { if x != nil { return x.FromNickname } return "" } func (x *FriendRequest) GetFromFaceURL() string { if x != nil { return x.FromFaceURL } return "" } func (x *FriendRequest) GetFromGender() int32 { if x != nil { return x.FromGender } return 0 } func (x *FriendRequest) GetToUserID() string { if x != nil { return x.ToUserID } return "" } func (x *FriendRequest) GetToNickname() string { if x != nil { return x.ToNickname } return "" } func (x *FriendRequest) GetToFaceURL() string { if x != nil { return x.ToFaceURL } return "" } func (x *FriendRequest) GetToGender() int32 { if x != nil { return x.ToGender } return 0 } func (x *FriendRequest) GetHandleResult() int32 { if x != nil { return x.HandleResult } return 0 } func (x *FriendRequest) GetReqMsg() string { if x != nil { return x.ReqMsg } return "" } func (x *FriendRequest) GetCreateTime() uint32 { if x != nil { return x.CreateTime } return 0 } func (x *FriendRequest) GetHandlerUserID() string { if x != nil { return x.HandlerUserID } return "" } func (x *FriendRequest) GetHandleMsg() string { if x != nil { return x.HandleMsg } return "" } func (x *FriendRequest) GetHandleTime() uint32 { if x != nil { return x.HandleTime } return 0 } func (x *FriendRequest) GetEx() string { if x != nil { return x.Ex } return "" } type Department struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DepartmentID string `protobuf:"bytes,1,opt,name=departmentID,proto3" json:"departmentID,omitempty"` FaceURL string `protobuf:"bytes,2,opt,name=faceURL,proto3" json:"faceURL,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` ParentID string `protobuf:"bytes,4,opt,name=parentID,proto3" json:"parentID,omitempty"` Order int32 `protobuf:"varint,5,opt,name=order,proto3" json:"order,omitempty"` DepartmentType int32 `protobuf:"varint,6,opt,name=departmentType,proto3" json:"departmentType,omitempty"` CreateTime uint32 `protobuf:"varint,7,opt,name=createTime,proto3" json:"createTime,omitempty"` SubDepartmentNum uint32 `protobuf:"varint,8,opt,name=subDepartmentNum,proto3" json:"subDepartmentNum,omitempty"` MemberNum uint32 `protobuf:"varint,9,opt,name=memberNum,proto3" json:"memberNum,omitempty"` Ex string `protobuf:"bytes,10,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *Department) Reset() { *x = Department{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Department) String() string { return protoimpl.X.MessageStringOf(x) } func (*Department) ProtoMessage() {} func (x *Department) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 Department.ProtoReflect.Descriptor instead. func (*Department) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{9} } func (x *Department) GetDepartmentID() string { if x != nil { return x.DepartmentID } return "" } func (x *Department) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *Department) GetName() string { if x != nil { return x.Name } return "" } func (x *Department) GetParentID() string { if x != nil { return x.ParentID } return "" } func (x *Department) GetOrder() int32 { if x != nil { return x.Order } return 0 } func (x *Department) GetDepartmentType() int32 { if x != nil { return x.DepartmentType } return 0 } func (x *Department) GetCreateTime() uint32 { if x != nil { return x.CreateTime } return 0 } func (x *Department) GetSubDepartmentNum() uint32 { if x != nil { return x.SubDepartmentNum } return 0 } func (x *Department) GetMemberNum() uint32 { if x != nil { return x.MemberNum } return 0 } func (x *Department) GetEx() string { if x != nil { return x.Ex } return "" } type OrganizationUser struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` EnglishName string `protobuf:"bytes,3,opt,name=englishName,proto3" json:"englishName,omitempty"` FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL,omitempty"` Gender int32 `protobuf:"varint,5,opt,name=gender,proto3" json:"gender,omitempty"` Mobile string `protobuf:"bytes,6,opt,name=mobile,proto3" json:"mobile,omitempty"` Telephone string `protobuf:"bytes,7,opt,name=telephone,proto3" json:"telephone,omitempty"` Birth uint32 `protobuf:"varint,8,opt,name=birth,proto3" json:"birth,omitempty"` Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"` CreateTime uint32 `protobuf:"varint,10,opt,name=createTime,proto3" json:"createTime,omitempty"` Ex string `protobuf:"bytes,11,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *OrganizationUser) Reset() { *x = OrganizationUser{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OrganizationUser) String() string { return protoimpl.X.MessageStringOf(x) } func (*OrganizationUser) ProtoMessage() {} func (x *OrganizationUser) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 OrganizationUser.ProtoReflect.Descriptor instead. func (*OrganizationUser) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{10} } func (x *OrganizationUser) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *OrganizationUser) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *OrganizationUser) GetEnglishName() string { if x != nil { return x.EnglishName } return "" } func (x *OrganizationUser) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *OrganizationUser) GetGender() int32 { if x != nil { return x.Gender } return 0 } func (x *OrganizationUser) GetMobile() string { if x != nil { return x.Mobile } return "" } func (x *OrganizationUser) GetTelephone() string { if x != nil { return x.Telephone } return "" } func (x *OrganizationUser) GetBirth() uint32 { if x != nil { return x.Birth } return 0 } func (x *OrganizationUser) GetEmail() string { if x != nil { return x.Email } return "" } func (x *OrganizationUser) GetCreateTime() uint32 { if x != nil { return x.CreateTime } return 0 } func (x *OrganizationUser) GetEx() string { if x != nil { return x.Ex } return "" } type DepartmentMember struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` DepartmentID string `protobuf:"bytes,2,opt,name=departmentID,proto3" json:"departmentID,omitempty"` Order int32 `protobuf:"varint,3,opt,name=order,proto3" json:"order,omitempty"` Position string `protobuf:"bytes,4,opt,name=position,proto3" json:"position,omitempty"` Leader int32 `protobuf:"varint,5,opt,name=leader,proto3" json:"leader,omitempty"` Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` Ex string `protobuf:"bytes,7,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *DepartmentMember) Reset() { *x = DepartmentMember{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DepartmentMember) String() string { return protoimpl.X.MessageStringOf(x) } func (*DepartmentMember) ProtoMessage() {} func (x *DepartmentMember) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 DepartmentMember.ProtoReflect.Descriptor instead. func (*DepartmentMember) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{11} } func (x *DepartmentMember) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *DepartmentMember) GetDepartmentID() string { if x != nil { return x.DepartmentID } return "" } func (x *DepartmentMember) GetOrder() int32 { if x != nil { return x.Order } return 0 } func (x *DepartmentMember) GetPosition() string { if x != nil { return x.Position } return "" } func (x *DepartmentMember) GetLeader() int32 { if x != nil { return x.Leader } return 0 } func (x *DepartmentMember) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *DepartmentMember) GetEx() string { if x != nil { return x.Ex } return "" } type UserDepartmentMember struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrganizationUser *OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser,proto3" json:"organizationUser,omitempty"` DepartmentMember *DepartmentMember `protobuf:"bytes,2,opt,name=departmentMember,proto3" json:"departmentMember,omitempty"` } func (x *UserDepartmentMember) Reset() { *x = UserDepartmentMember{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserDepartmentMember) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserDepartmentMember) ProtoMessage() {} func (x *UserDepartmentMember) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 UserDepartmentMember.ProtoReflect.Descriptor instead. func (*UserDepartmentMember) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{12} } func (x *UserDepartmentMember) GetOrganizationUser() *OrganizationUser { if x != nil { return x.OrganizationUser } return nil } func (x *UserDepartmentMember) GetDepartmentMember() *DepartmentMember { if x != nil { return x.DepartmentMember } return nil } type UserInDepartment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrganizationUser *OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser,proto3" json:"organizationUser,omitempty"` DepartmentMemberList []*DepartmentMember `protobuf:"bytes,2,rep,name=departmentMemberList,proto3" json:"departmentMemberList,omitempty"` } func (x *UserInDepartment) Reset() { *x = UserInDepartment{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserInDepartment) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserInDepartment) ProtoMessage() {} func (x *UserInDepartment) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 UserInDepartment.ProtoReflect.Descriptor instead. func (*UserInDepartment) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{13} } func (x *UserInDepartment) GetOrganizationUser() *OrganizationUser { if x != nil { return x.OrganizationUser } return nil } func (x *UserInDepartment) GetDepartmentMemberList() []*DepartmentMember { if x != nil { return x.DepartmentMemberList } return nil } ///////////////////////////////////base end///////////////////////////////////// type PullMessageBySeqListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` SeqList []uint32 `protobuf:"varint,3,rep,packed,name=seqList,proto3" json:"seqList,omitempty"` GroupSeqList map[string]*SeqList `protobuf:"bytes,4,rep,name=groupSeqList,proto3" json:"groupSeqList,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *PullMessageBySeqListReq) Reset() { *x = PullMessageBySeqListReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullMessageBySeqListReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullMessageBySeqListReq) ProtoMessage() {} func (x *PullMessageBySeqListReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 PullMessageBySeqListReq.ProtoReflect.Descriptor instead. func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{14} } func (x *PullMessageBySeqListReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *PullMessageBySeqListReq) GetOperationID() string { if x != nil { return x.OperationID } return "" } func (x *PullMessageBySeqListReq) GetSeqList() []uint32 { if x != nil { return x.SeqList } return nil } func (x *PullMessageBySeqListReq) GetGroupSeqList() map[string]*SeqList { if x != nil { return x.GroupSeqList } return nil } type SeqList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SeqList []uint32 `protobuf:"varint,1,rep,packed,name=seqList,proto3" json:"seqList,omitempty"` } func (x *SeqList) Reset() { *x = SeqList{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SeqList) String() string { return protoimpl.X.MessageStringOf(x) } func (*SeqList) ProtoMessage() {} func (x *SeqList) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SeqList.ProtoReflect.Descriptor instead. func (*SeqList) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{15} } func (x *SeqList) GetSeqList() []uint32 { if x != nil { return x.SeqList } return nil } type MsgDataList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MsgDataList []*MsgData `protobuf:"bytes,1,rep,name=msgDataList,proto3" json:"msgDataList,omitempty"` } func (x *MsgDataList) Reset() { *x = MsgDataList{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MsgDataList) String() string { return protoimpl.X.MessageStringOf(x) } func (*MsgDataList) ProtoMessage() {} func (x *MsgDataList) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 MsgDataList.ProtoReflect.Descriptor instead. func (*MsgDataList) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{16} } func (x *MsgDataList) GetMsgDataList() []*MsgData { if x != nil { return x.MsgDataList } return nil } type PullMessageBySeqListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ErrCode int32 `protobuf:"varint,1,opt,name=errCode,proto3" json:"errCode,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` List []*MsgData `protobuf:"bytes,3,rep,name=list,proto3" json:"list,omitempty"` GroupMsgDataList map[string]*MsgDataList `protobuf:"bytes,4,rep,name=groupMsgDataList,proto3" json:"groupMsgDataList,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *PullMessageBySeqListResp) Reset() { *x = PullMessageBySeqListResp{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PullMessageBySeqListResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*PullMessageBySeqListResp) ProtoMessage() {} func (x *PullMessageBySeqListResp) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 PullMessageBySeqListResp.ProtoReflect.Descriptor instead. func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{17} } func (x *PullMessageBySeqListResp) GetErrCode() int32 { if x != nil { return x.ErrCode } return 0 } func (x *PullMessageBySeqListResp) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *PullMessageBySeqListResp) GetList() []*MsgData { if x != nil { return x.List } return nil } func (x *PullMessageBySeqListResp) GetGroupMsgDataList() map[string]*MsgDataList { if x != nil { return x.GroupMsgDataList } return nil } type GetMaxAndMinSeqReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupIDList []string `protobuf:"bytes,1,rep,name=groupIDList,proto3" json:"groupIDList,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` OperationID string `protobuf:"bytes,3,opt,name=operationID,proto3" json:"operationID,omitempty"` } func (x *GetMaxAndMinSeqReq) Reset() { *x = GetMaxAndMinSeqReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetMaxAndMinSeqReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (x *GetMaxAndMinSeqReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GetMaxAndMinSeqReq.ProtoReflect.Descriptor instead. func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{18} } func (x *GetMaxAndMinSeqReq) GetGroupIDList() []string { if x != nil { return x.GroupIDList } return nil } func (x *GetMaxAndMinSeqReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetMaxAndMinSeqReq) GetOperationID() string { if x != nil { return x.OperationID } return "" } type MaxAndMinSeq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MaxSeq uint32 `protobuf:"varint,1,opt,name=maxSeq,proto3" json:"maxSeq,omitempty"` MinSeq uint32 `protobuf:"varint,2,opt,name=minSeq,proto3" json:"minSeq,omitempty"` } func (x *MaxAndMinSeq) Reset() { *x = MaxAndMinSeq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MaxAndMinSeq) String() string { return protoimpl.X.MessageStringOf(x) } func (*MaxAndMinSeq) ProtoMessage() {} func (x *MaxAndMinSeq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 MaxAndMinSeq.ProtoReflect.Descriptor instead. func (*MaxAndMinSeq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{19} } func (x *MaxAndMinSeq) GetMaxSeq() uint32 { if x != nil { return x.MaxSeq } return 0 } func (x *MaxAndMinSeq) GetMinSeq() uint32 { if x != nil { return x.MinSeq } return 0 } type GetMaxAndMinSeqResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MaxSeq uint32 `protobuf:"varint,1,opt,name=maxSeq,proto3" json:"maxSeq,omitempty"` MinSeq uint32 `protobuf:"varint,2,opt,name=minSeq,proto3" json:"minSeq,omitempty"` ErrCode int32 `protobuf:"varint,3,opt,name=errCode,proto3" json:"errCode,omitempty"` ErrMsg string `protobuf:"bytes,4,opt,name=errMsg,proto3" json:"errMsg,omitempty"` GroupMaxAndMinSeq map[string]*MaxAndMinSeq `protobuf:"bytes,5,rep,name=groupMaxAndMinSeq,proto3" json:"groupMaxAndMinSeq,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GetMaxAndMinSeqResp) Reset() { *x = GetMaxAndMinSeqResp{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetMaxAndMinSeqResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (x *GetMaxAndMinSeqResp) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GetMaxAndMinSeqResp.ProtoReflect.Descriptor instead. func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{20} } func (x *GetMaxAndMinSeqResp) GetMaxSeq() uint32 { if x != nil { return x.MaxSeq } return 0 } func (x *GetMaxAndMinSeqResp) GetMinSeq() uint32 { if x != nil { return x.MinSeq } return 0 } func (x *GetMaxAndMinSeqResp) GetErrCode() int32 { if x != nil { return x.ErrCode } return 0 } func (x *GetMaxAndMinSeqResp) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetMaxAndMinSeqResp) GetGroupMaxAndMinSeq() map[string]*MaxAndMinSeq { if x != nil { return x.GroupMaxAndMinSeq } return nil } type UserSendMsgResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ServerMsgID string `protobuf:"bytes,1,opt,name=serverMsgID,proto3" json:"serverMsgID,omitempty"` ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID,proto3" json:"clientMsgID,omitempty"` SendTime int64 `protobuf:"varint,3,opt,name=sendTime,proto3" json:"sendTime,omitempty"` } func (x *UserSendMsgResp) Reset() { *x = UserSendMsgResp{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserSendMsgResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserSendMsgResp) ProtoMessage() {} func (x *UserSendMsgResp) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 UserSendMsgResp.ProtoReflect.Descriptor instead. func (*UserSendMsgResp) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{21} } func (x *UserSendMsgResp) GetServerMsgID() string { if x != nil { return x.ServerMsgID } return "" } func (x *UserSendMsgResp) GetClientMsgID() string { if x != nil { return x.ClientMsgID } return "" } func (x *UserSendMsgResp) GetSendTime() int64 { if x != nil { return x.SendTime } return 0 } type MsgData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SendID string `protobuf:"bytes,1,opt,name=sendID,proto3" json:"sendID,omitempty"` RecvID string `protobuf:"bytes,2,opt,name=recvID,proto3" json:"recvID,omitempty"` GroupID string `protobuf:"bytes,3,opt,name=groupID,proto3" json:"groupID,omitempty"` ClientMsgID string `protobuf:"bytes,4,opt,name=clientMsgID,proto3" json:"clientMsgID,omitempty"` ServerMsgID string `protobuf:"bytes,5,opt,name=serverMsgID,proto3" json:"serverMsgID,omitempty"` SenderPlatformID int32 `protobuf:"varint,6,opt,name=senderPlatformID,proto3" json:"senderPlatformID,omitempty"` SenderNickname string `protobuf:"bytes,7,opt,name=senderNickname,proto3" json:"senderNickname,omitempty"` SenderFaceURL string `protobuf:"bytes,8,opt,name=senderFaceURL,proto3" json:"senderFaceURL,omitempty"` SessionType int32 `protobuf:"varint,9,opt,name=sessionType,proto3" json:"sessionType,omitempty"` MsgFrom int32 `protobuf:"varint,10,opt,name=msgFrom,proto3" json:"msgFrom,omitempty"` ContentType int32 `protobuf:"varint,11,opt,name=contentType,proto3" json:"contentType,omitempty"` Content []byte `protobuf:"bytes,12,opt,name=content,proto3" json:"content,omitempty"` Seq uint32 `protobuf:"varint,14,opt,name=seq,proto3" json:"seq,omitempty"` SendTime int64 `protobuf:"varint,15,opt,name=sendTime,proto3" json:"sendTime,omitempty"` CreateTime int64 `protobuf:"varint,16,opt,name=createTime,proto3" json:"createTime,omitempty"` Status int32 `protobuf:"varint,17,opt,name=status,proto3" json:"status,omitempty"` Options map[string]bool `protobuf:"bytes,18,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` AtUserIDList []string `protobuf:"bytes,20,rep,name=atUserIDList,proto3" json:"atUserIDList,omitempty"` MsgDataList []byte `protobuf:"bytes,21,opt,name=msgDataList,proto3" json:"msgDataList,omitempty"` AttachedInfo string `protobuf:"bytes,22,opt,name=attachedInfo,proto3" json:"attachedInfo,omitempty"` Ex string `protobuf:"bytes,23,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *MsgData) Reset() { *x = MsgData{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MsgData) String() string { return protoimpl.X.MessageStringOf(x) } func (*MsgData) ProtoMessage() {} func (x *MsgData) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 MsgData.ProtoReflect.Descriptor instead. func (*MsgData) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{22} } func (x *MsgData) GetSendID() string { if x != nil { return x.SendID } return "" } func (x *MsgData) GetRecvID() string { if x != nil { return x.RecvID } return "" } func (x *MsgData) GetGroupID() string { if x != nil { return x.GroupID } return "" } func (x *MsgData) GetClientMsgID() string { if x != nil { return x.ClientMsgID } return "" } func (x *MsgData) GetServerMsgID() string { if x != nil { return x.ServerMsgID } return "" } func (x *MsgData) GetSenderPlatformID() int32 { if x != nil { return x.SenderPlatformID } return 0 } func (x *MsgData) GetSenderNickname() string { if x != nil { return x.SenderNickname } return "" } func (x *MsgData) GetSenderFaceURL() string { if x != nil { return x.SenderFaceURL } return "" } func (x *MsgData) GetSessionType() int32 { if x != nil { return x.SessionType } return 0 } func (x *MsgData) GetMsgFrom() int32 { if x != nil { return x.MsgFrom } return 0 } func (x *MsgData) GetContentType() int32 { if x != nil { return x.ContentType } return 0 } func (x *MsgData) GetContent() []byte { if x != nil { return x.Content } return nil } func (x *MsgData) GetSeq() uint32 { if x != nil { return x.Seq } return 0 } func (x *MsgData) GetSendTime() int64 { if x != nil { return x.SendTime } return 0 } func (x *MsgData) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *MsgData) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *MsgData) GetOptions() map[string]bool { if x != nil { return x.Options } return nil } func (x *MsgData) GetOfflinePushInfo() *OfflinePushInfo { if x != nil { return x.OfflinePushInfo } return nil } func (x *MsgData) GetAtUserIDList() []string { if x != nil { return x.AtUserIDList } return nil } func (x *MsgData) GetMsgDataList() []byte { if x != nil { return x.MsgDataList } return nil } func (x *MsgData) GetAttachedInfo() string { if x != nil { return x.AttachedInfo } return "" } func (x *MsgData) GetEx() string { if x != nil { return x.Ex } return "" } type OfflinePushInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` Ex string `protobuf:"bytes,3,opt,name=ex,proto3" json:"ex,omitempty"` IOSPushSound string `protobuf:"bytes,4,opt,name=iOSPushSound,proto3" json:"iOSPushSound,omitempty"` IOSBadgeCount bool `protobuf:"varint,5,opt,name=iOSBadgeCount,proto3" json:"iOSBadgeCount,omitempty"` } func (x *OfflinePushInfo) Reset() { *x = OfflinePushInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OfflinePushInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*OfflinePushInfo) ProtoMessage() {} func (x *OfflinePushInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 OfflinePushInfo.ProtoReflect.Descriptor instead. func (*OfflinePushInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{23} } func (x *OfflinePushInfo) GetTitle() string { if x != nil { return x.Title } return "" } func (x *OfflinePushInfo) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *OfflinePushInfo) GetEx() string { if x != nil { return x.Ex } return "" } func (x *OfflinePushInfo) GetIOSPushSound() string { if x != nil { return x.IOSPushSound } return "" } func (x *OfflinePushInfo) GetIOSBadgeCount() bool { if x != nil { return x.IOSBadgeCount } return false } type TipsComm struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Detail []byte `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` DefaultTips string `protobuf:"bytes,2,opt,name=defaultTips,proto3" json:"defaultTips,omitempty"` JsonDetail string `protobuf:"bytes,3,opt,name=jsonDetail,proto3" json:"jsonDetail,omitempty"` } func (x *TipsComm) Reset() { *x = TipsComm{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TipsComm) String() string { return protoimpl.X.MessageStringOf(x) } func (*TipsComm) ProtoMessage() {} func (x *TipsComm) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 TipsComm.ProtoReflect.Descriptor instead. func (*TipsComm) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{24} } func (x *TipsComm) GetDetail() []byte { if x != nil { return x.Detail } return nil } func (x *TipsComm) GetDefaultTips() string { if x != nil { return x.DefaultTips } return "" } func (x *TipsComm) GetJsonDetail() string { if x != nil { return x.JsonDetail } return "" } // OnGroupCreated() type GroupCreatedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` MemberList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=memberList,proto3" json:"memberList,omitempty"` OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` GroupOwnerUser *GroupMemberFullInfo `protobuf:"bytes,5,opt,name=groupOwnerUser,proto3" json:"groupOwnerUser,omitempty"` } func (x *GroupCreatedTips) Reset() { *x = GroupCreatedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupCreatedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupCreatedTips) ProtoMessage() {} func (x *GroupCreatedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupCreatedTips.ProtoReflect.Descriptor instead. func (*GroupCreatedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{25} } func (x *GroupCreatedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupCreatedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupCreatedTips) GetMemberList() []*GroupMemberFullInfo { if x != nil { return x.MemberList } return nil } func (x *GroupCreatedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } func (x *GroupCreatedTips) GetGroupOwnerUser() *GroupMemberFullInfo { if x != nil { return x.GroupOwnerUser } return nil } // OnGroupInfoSet() type GroupInfoSetTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUser *GroupMemberFullInfo `protobuf:"bytes,1,opt,name=opUser,proto3" json:"opUser,omitempty"` //who do this MuteTime int64 `protobuf:"varint,2,opt,name=muteTime,proto3" json:"muteTime,omitempty"` Group *GroupInfo `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"` } func (x *GroupInfoSetTips) Reset() { *x = GroupInfoSetTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupInfoSetTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupInfoSetTips) ProtoMessage() {} func (x *GroupInfoSetTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupInfoSetTips.ProtoReflect.Descriptor instead. func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{26} } func (x *GroupInfoSetTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupInfoSetTips) GetMuteTime() int64 { if x != nil { return x.MuteTime } return 0 } func (x *GroupInfoSetTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } // OnJoinGroupApplication() type JoinGroupApplicationTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` Applicant *PublicUserInfo `protobuf:"bytes,2,opt,name=applicant,proto3" json:"applicant,omitempty"` ReqMsg string `protobuf:"bytes,3,opt,name=reqMsg,proto3" json:"reqMsg,omitempty"` } func (x *JoinGroupApplicationTips) Reset() { *x = JoinGroupApplicationTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *JoinGroupApplicationTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*JoinGroupApplicationTips) ProtoMessage() {} func (x *JoinGroupApplicationTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 JoinGroupApplicationTips.ProtoReflect.Descriptor instead. func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{27} } func (x *JoinGroupApplicationTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *JoinGroupApplicationTips) GetApplicant() *PublicUserInfo { if x != nil { return x.Applicant } return nil } func (x *JoinGroupApplicationTips) GetReqMsg() string { if x != nil { return x.ReqMsg } return "" } // OnQuitGroup() //Actively leave the group type MemberQuitTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` QuitUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=quitUser,proto3" json:"quitUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *MemberQuitTips) Reset() { *x = MemberQuitTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MemberQuitTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*MemberQuitTips) ProtoMessage() {} func (x *MemberQuitTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 MemberQuitTips.ProtoReflect.Descriptor instead. func (*MemberQuitTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{28} } func (x *MemberQuitTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *MemberQuitTips) GetQuitUser() *GroupMemberFullInfo { if x != nil { return x.QuitUser } return nil } func (x *MemberQuitTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } // OnApplicationGroupAccepted() type GroupApplicationAcceptedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` } func (x *GroupApplicationAcceptedTips) Reset() { *x = GroupApplicationAcceptedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupApplicationAcceptedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (x *GroupApplicationAcceptedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupApplicationAcceptedTips.ProtoReflect.Descriptor instead. func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{29} } func (x *GroupApplicationAcceptedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupApplicationAcceptedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupApplicationAcceptedTips) GetHandleMsg() string { if x != nil { return x.HandleMsg } return "" } // OnApplicationGroupRejected() type GroupApplicationRejectedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` } func (x *GroupApplicationRejectedTips) Reset() { *x = GroupApplicationRejectedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupApplicationRejectedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupApplicationRejectedTips) ProtoMessage() {} func (x *GroupApplicationRejectedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupApplicationRejectedTips.ProtoReflect.Descriptor instead. func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{30} } func (x *GroupApplicationRejectedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupApplicationRejectedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupApplicationRejectedTips) GetHandleMsg() string { if x != nil { return x.HandleMsg } return "" } // OnTransferGroupOwner() type GroupOwnerTransferredTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` NewGroupOwner *GroupMemberFullInfo `protobuf:"bytes,3,opt,name=newGroupOwner,proto3" json:"newGroupOwner,omitempty"` OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *GroupOwnerTransferredTips) Reset() { *x = GroupOwnerTransferredTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupOwnerTransferredTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupOwnerTransferredTips) ProtoMessage() {} func (x *GroupOwnerTransferredTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupOwnerTransferredTips.ProtoReflect.Descriptor instead. func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{31} } func (x *GroupOwnerTransferredTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupOwnerTransferredTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupOwnerTransferredTips) GetNewGroupOwner() *GroupMemberFullInfo { if x != nil { return x.NewGroupOwner } return nil } func (x *GroupOwnerTransferredTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } // OnMemberKicked() type MemberKickedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` KickedUserList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=kickedUserList,proto3" json:"kickedUserList,omitempty"` OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *MemberKickedTips) Reset() { *x = MemberKickedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MemberKickedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*MemberKickedTips) ProtoMessage() {} func (x *MemberKickedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 MemberKickedTips.ProtoReflect.Descriptor instead. func (*MemberKickedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{32} } func (x *MemberKickedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *MemberKickedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *MemberKickedTips) GetKickedUserList() []*GroupMemberFullInfo { if x != nil { return x.KickedUserList } return nil } func (x *MemberKickedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } // OnMemberInvited() type MemberInvitedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` InvitedUserList []*GroupMemberFullInfo `protobuf:"bytes,3,rep,name=invitedUserList,proto3" json:"invitedUserList,omitempty"` OperationTime int64 `protobuf:"varint,4,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *MemberInvitedTips) Reset() { *x = MemberInvitedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MemberInvitedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*MemberInvitedTips) ProtoMessage() {} func (x *MemberInvitedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 MemberInvitedTips.ProtoReflect.Descriptor instead. func (*MemberInvitedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{33} } func (x *MemberInvitedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *MemberInvitedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *MemberInvitedTips) GetInvitedUserList() []*GroupMemberFullInfo { if x != nil { return x.InvitedUserList } return nil } func (x *MemberInvitedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } //Actively join the group type MemberEnterTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` EntrantUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=entrantUser,proto3" json:"entrantUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *MemberEnterTips) Reset() { *x = MemberEnterTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MemberEnterTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*MemberEnterTips) ProtoMessage() {} func (x *MemberEnterTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 MemberEnterTips.ProtoReflect.Descriptor instead. func (*MemberEnterTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{34} } func (x *MemberEnterTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *MemberEnterTips) GetEntrantUser() *GroupMemberFullInfo { if x != nil { return x.EntrantUser } return nil } func (x *MemberEnterTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } type GroupDismissedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *GroupDismissedTips) Reset() { *x = GroupDismissedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupDismissedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupDismissedTips) ProtoMessage() {} func (x *GroupDismissedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupDismissedTips.ProtoReflect.Descriptor instead. func (*GroupDismissedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{35} } func (x *GroupDismissedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupDismissedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupDismissedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } type GroupMemberMutedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` MutedUser *GroupMemberFullInfo `protobuf:"bytes,4,opt,name=mutedUser,proto3" json:"mutedUser,omitempty"` MutedSeconds uint32 `protobuf:"varint,5,opt,name=mutedSeconds,proto3" json:"mutedSeconds,omitempty"` } func (x *GroupMemberMutedTips) Reset() { *x = GroupMemberMutedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMemberMutedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMemberMutedTips) ProtoMessage() {} func (x *GroupMemberMutedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupMemberMutedTips.ProtoReflect.Descriptor instead. func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{36} } func (x *GroupMemberMutedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupMemberMutedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupMemberMutedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } func (x *GroupMemberMutedTips) GetMutedUser() *GroupMemberFullInfo { if x != nil { return x.MutedUser } return nil } func (x *GroupMemberMutedTips) GetMutedSeconds() uint32 { if x != nil { return x.MutedSeconds } return 0 } type GroupMemberCancelMutedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` MutedUser *GroupMemberFullInfo `protobuf:"bytes,4,opt,name=mutedUser,proto3" json:"mutedUser,omitempty"` } func (x *GroupMemberCancelMutedTips) Reset() { *x = GroupMemberCancelMutedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMemberCancelMutedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (x *GroupMemberCancelMutedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupMemberCancelMutedTips.ProtoReflect.Descriptor instead. func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{37} } func (x *GroupMemberCancelMutedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupMemberCancelMutedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupMemberCancelMutedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } func (x *GroupMemberCancelMutedTips) GetMutedUser() *GroupMemberFullInfo { if x != nil { return x.MutedUser } return nil } type GroupMutedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *GroupMutedTips) Reset() { *x = GroupMutedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMutedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMutedTips) ProtoMessage() {} func (x *GroupMutedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupMutedTips.ProtoReflect.Descriptor instead. func (*GroupMutedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{38} } func (x *GroupMutedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupMutedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupMutedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } type GroupCancelMutedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *GroupCancelMutedTips) Reset() { *x = GroupCancelMutedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupCancelMutedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupCancelMutedTips) ProtoMessage() {} func (x *GroupCancelMutedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupCancelMutedTips.ProtoReflect.Descriptor instead. func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{39} } func (x *GroupCancelMutedTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupCancelMutedTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupCancelMutedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } type GroupMemberInfoSetTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *GroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` ChangedUser *GroupMemberFullInfo `protobuf:"bytes,4,opt,name=changedUser,proto3" json:"changedUser,omitempty"` } func (x *GroupMemberInfoSetTips) Reset() { *x = GroupMemberInfoSetTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMemberInfoSetTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMemberInfoSetTips) ProtoMessage() {} func (x *GroupMemberInfoSetTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 GroupMemberInfoSetTips.ProtoReflect.Descriptor instead. func (*GroupMemberInfoSetTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{40} } func (x *GroupMemberInfoSetTips) GetGroup() *GroupInfo { if x != nil { return x.Group } return nil } func (x *GroupMemberInfoSetTips) GetOpUser() *GroupMemberFullInfo { if x != nil { return x.OpUser } return nil } func (x *GroupMemberInfoSetTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } func (x *GroupMemberInfoSetTips) GetChangedUser() *GroupMemberFullInfo { if x != nil { return x.ChangedUser } return nil } type OrganizationChangedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUser *UserInfo `protobuf:"bytes,2,opt,name=opUser,proto3" json:"opUser,omitempty"` OperationTime int64 `protobuf:"varint,3,opt,name=operationTime,proto3" json:"operationTime,omitempty"` } func (x *OrganizationChangedTips) Reset() { *x = OrganizationChangedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OrganizationChangedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*OrganizationChangedTips) ProtoMessage() {} func (x *OrganizationChangedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 OrganizationChangedTips.ProtoReflect.Descriptor instead. func (*OrganizationChangedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{41} } func (x *OrganizationChangedTips) GetOpUser() *UserInfo { if x != nil { return x.OpUser } return nil } func (x *OrganizationChangedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } type FriendApplication struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AddTime int64 `protobuf:"varint,1,opt,name=addTime,proto3" json:"addTime,omitempty"` AddSource string `protobuf:"bytes,2,opt,name=addSource,proto3" json:"addSource,omitempty"` AddWording string `protobuf:"bytes,3,opt,name=addWording,proto3" json:"addWording,omitempty"` } func (x *FriendApplication) Reset() { *x = FriendApplication{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendApplication) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendApplication) ProtoMessage() {} func (x *FriendApplication) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendApplication.ProtoReflect.Descriptor instead. func (*FriendApplication) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{42} } func (x *FriendApplication) GetAddTime() int64 { if x != nil { return x.AddTime } return 0 } func (x *FriendApplication) GetAddSource() string { if x != nil { return x.AddSource } return "" } func (x *FriendApplication) GetAddWording() string { if x != nil { return x.AddWording } return "" } type FromToUserID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUserID string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID,omitempty"` ToUserID string `protobuf:"bytes,2,opt,name=toUserID,proto3" json:"toUserID,omitempty"` } func (x *FromToUserID) Reset() { *x = FromToUserID{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FromToUserID) String() string { return protoimpl.X.MessageStringOf(x) } func (*FromToUserID) ProtoMessage() {} func (x *FromToUserID) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FromToUserID.ProtoReflect.Descriptor instead. func (*FromToUserID) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{43} } func (x *FromToUserID) GetFromUserID() string { if x != nil { return x.FromUserID } return "" } func (x *FromToUserID) GetToUserID() string { if x != nil { return x.ToUserID } return "" } //FromUserID apply to add ToUserID type FriendApplicationTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` } func (x *FriendApplicationTips) Reset() { *x = FriendApplicationTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendApplicationTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendApplicationTips) ProtoMessage() {} func (x *FriendApplicationTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendApplicationTips.ProtoReflect.Descriptor instead. func (*FriendApplicationTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{44} } func (x *FriendApplicationTips) GetFromToUserID() *FromToUserID { if x != nil { return x.FromToUserID } return nil } //FromUserID accept or reject ToUserID type FriendApplicationApprovedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` HandleMsg string `protobuf:"bytes,2,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` } func (x *FriendApplicationApprovedTips) Reset() { *x = FriendApplicationApprovedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendApplicationApprovedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendApplicationApprovedTips) ProtoMessage() {} func (x *FriendApplicationApprovedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendApplicationApprovedTips.ProtoReflect.Descriptor instead. func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{45} } func (x *FriendApplicationApprovedTips) GetFromToUserID() *FromToUserID { if x != nil { return x.FromToUserID } return nil } func (x *FriendApplicationApprovedTips) GetHandleMsg() string { if x != nil { return x.HandleMsg } return "" } //FromUserID accept or reject ToUserID type FriendApplicationRejectedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` HandleMsg string `protobuf:"bytes,2,opt,name=handleMsg,proto3" json:"handleMsg,omitempty"` } func (x *FriendApplicationRejectedTips) Reset() { *x = FriendApplicationRejectedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendApplicationRejectedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendApplicationRejectedTips) ProtoMessage() {} func (x *FriendApplicationRejectedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendApplicationRejectedTips.ProtoReflect.Descriptor instead. func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{46} } func (x *FriendApplicationRejectedTips) GetFromToUserID() *FromToUserID { if x != nil { return x.FromToUserID } return nil } func (x *FriendApplicationRejectedTips) GetHandleMsg() string { if x != nil { return x.HandleMsg } return "" } // FromUserID Added a friend ToUserID type FriendAddedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Friend *FriendInfo `protobuf:"bytes,1,opt,name=friend,proto3" json:"friend,omitempty"` OperationTime int64 `protobuf:"varint,2,opt,name=operationTime,proto3" json:"operationTime,omitempty"` OpUser *PublicUserInfo `protobuf:"bytes,3,opt,name=opUser,proto3" json:"opUser,omitempty"` //who do this } func (x *FriendAddedTips) Reset() { *x = FriendAddedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendAddedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendAddedTips) ProtoMessage() {} func (x *FriendAddedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendAddedTips.ProtoReflect.Descriptor instead. func (*FriendAddedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{47} } func (x *FriendAddedTips) GetFriend() *FriendInfo { if x != nil { return x.Friend } return nil } func (x *FriendAddedTips) GetOperationTime() int64 { if x != nil { return x.OperationTime } return 0 } func (x *FriendAddedTips) GetOpUser() *PublicUserInfo { if x != nil { return x.OpUser } return nil } // FromUserID deleted a friend ToUserID type FriendDeletedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` } func (x *FriendDeletedTips) Reset() { *x = FriendDeletedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendDeletedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendDeletedTips) ProtoMessage() {} func (x *FriendDeletedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendDeletedTips.ProtoReflect.Descriptor instead. func (*FriendDeletedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{48} } func (x *FriendDeletedTips) GetFromToUserID() *FromToUserID { if x != nil { return x.FromToUserID } return nil } type BlackAddedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` } func (x *BlackAddedTips) Reset() { *x = BlackAddedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlackAddedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlackAddedTips) ProtoMessage() {} func (x *BlackAddedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 BlackAddedTips.ProtoReflect.Descriptor instead. func (*BlackAddedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{49} } func (x *BlackAddedTips) GetFromToUserID() *FromToUserID { if x != nil { return x.FromToUserID } return nil } type BlackDeletedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` } func (x *BlackDeletedTips) Reset() { *x = BlackDeletedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlackDeletedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlackDeletedTips) ProtoMessage() {} func (x *BlackDeletedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 BlackDeletedTips.ProtoReflect.Descriptor instead. func (*BlackDeletedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{50} } func (x *BlackDeletedTips) GetFromToUserID() *FromToUserID { if x != nil { return x.FromToUserID } return nil } type FriendInfoChangedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromToUserID *FromToUserID `protobuf:"bytes,1,opt,name=fromToUserID,proto3" json:"fromToUserID,omitempty"` } func (x *FriendInfoChangedTips) Reset() { *x = FriendInfoChangedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FriendInfoChangedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*FriendInfoChangedTips) ProtoMessage() {} func (x *FriendInfoChangedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 FriendInfoChangedTips.ProtoReflect.Descriptor instead. func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{51} } func (x *FriendInfoChangedTips) GetFromToUserID() *FromToUserID { if x != nil { return x.FromToUserID } return nil } //////////////////////user///////////////////// type UserInfoUpdatedTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` } func (x *UserInfoUpdatedTips) Reset() { *x = UserInfoUpdatedTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserInfoUpdatedTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserInfoUpdatedTips) ProtoMessage() {} func (x *UserInfoUpdatedTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 UserInfoUpdatedTips.ProtoReflect.Descriptor instead. func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{52} } func (x *UserInfoUpdatedTips) GetUserID() string { if x != nil { return x.UserID } return "" } //////////////////////conversation///////////////////// type ConversationUpdateTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=UserID,proto3" json:"UserID,omitempty"` ConversationIDList []string `protobuf:"bytes,2,rep,name=conversationIDList,proto3" json:"conversationIDList,omitempty"` } func (x *ConversationUpdateTips) Reset() { *x = ConversationUpdateTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ConversationUpdateTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConversationUpdateTips) ProtoMessage() {} func (x *ConversationUpdateTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 ConversationUpdateTips.ProtoReflect.Descriptor instead. func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{53} } func (x *ConversationUpdateTips) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *ConversationUpdateTips) GetConversationIDList() []string { if x != nil { return x.ConversationIDList } return nil } type ConversationSetPrivateTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RecvID string `protobuf:"bytes,1,opt,name=recvID,proto3" json:"recvID,omitempty"` SendID string `protobuf:"bytes,2,opt,name=sendID,proto3" json:"sendID,omitempty"` IsPrivate bool `protobuf:"varint,3,opt,name=isPrivate,proto3" json:"isPrivate,omitempty"` } func (x *ConversationSetPrivateTips) Reset() { *x = ConversationSetPrivateTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ConversationSetPrivateTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConversationSetPrivateTips) ProtoMessage() {} func (x *ConversationSetPrivateTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 ConversationSetPrivateTips.ProtoReflect.Descriptor instead. func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{54} } func (x *ConversationSetPrivateTips) GetRecvID() string { if x != nil { return x.RecvID } return "" } func (x *ConversationSetPrivateTips) GetSendID() string { if x != nil { return x.SendID } return "" } func (x *ConversationSetPrivateTips) GetIsPrivate() bool { if x != nil { return x.IsPrivate } return false } ////////////////////message/////////////////////// type DeleteMessageTips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` SeqList []uint32 `protobuf:"varint,3,rep,packed,name=seqList,proto3" json:"seqList,omitempty"` } func (x *DeleteMessageTips) Reset() { *x = DeleteMessageTips{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteMessageTips) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteMessageTips) ProtoMessage() {} func (x *DeleteMessageTips) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 DeleteMessageTips.ProtoReflect.Descriptor instead. func (*DeleteMessageTips) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{55} } func (x *DeleteMessageTips) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *DeleteMessageTips) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *DeleteMessageTips) GetSeqList() []uint32 { if x != nil { return x.SeqList } return nil } ///cms type RequestPagination struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PageNumber int32 `protobuf:"varint,1,opt,name=pageNumber,proto3" json:"pageNumber,omitempty"` ShowNumber int32 `protobuf:"varint,2,opt,name=showNumber,proto3" json:"showNumber,omitempty"` } func (x *RequestPagination) Reset() { *x = RequestPagination{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RequestPagination) String() string { return protoimpl.X.MessageStringOf(x) } func (*RequestPagination) ProtoMessage() {} func (x *RequestPagination) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 RequestPagination.ProtoReflect.Descriptor instead. func (*RequestPagination) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{56} } func (x *RequestPagination) GetPageNumber() int32 { if x != nil { return x.PageNumber } return 0 } func (x *RequestPagination) GetShowNumber() int32 { if x != nil { return x.ShowNumber } return 0 } type ResponsePagination struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CurrentPage int32 `protobuf:"varint,5,opt,name=CurrentPage,proto3" json:"CurrentPage,omitempty"` ShowNumber int32 `protobuf:"varint,6,opt,name=ShowNumber,proto3" json:"ShowNumber,omitempty"` } func (x *ResponsePagination) Reset() { *x = ResponsePagination{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResponsePagination) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResponsePagination) ProtoMessage() {} func (x *ResponsePagination) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 ResponsePagination.ProtoReflect.Descriptor instead. func (*ResponsePagination) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{57} } func (x *ResponsePagination) GetCurrentPage() int32 { if x != nil { return x.CurrentPage } return 0 } func (x *ResponsePagination) GetShowNumber() int32 { if x != nil { return x.ShowNumber } return 0 } ///////////////////signal////////////// type SignalReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Payload: // *SignalReq_Invite // *SignalReq_InviteInGroup // *SignalReq_Cancel // *SignalReq_Accept // *SignalReq_HungUp // *SignalReq_Reject Payload isSignalReq_Payload `protobuf_oneof:"payload"` } func (x *SignalReq) Reset() { *x = SignalReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalReq) ProtoMessage() {} func (x *SignalReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalReq.ProtoReflect.Descriptor instead. func (*SignalReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{58} } func (m *SignalReq) GetPayload() isSignalReq_Payload { if m != nil { return m.Payload } return nil } func (x *SignalReq) GetInvite() *SignalInviteReq { if x, ok := x.GetPayload().(*SignalReq_Invite); ok { return x.Invite } return nil } func (x *SignalReq) GetInviteInGroup() *SignalInviteInGroupReq { if x, ok := x.GetPayload().(*SignalReq_InviteInGroup); ok { return x.InviteInGroup } return nil } func (x *SignalReq) GetCancel() *SignalCancelReq { if x, ok := x.GetPayload().(*SignalReq_Cancel); ok { return x.Cancel } return nil } func (x *SignalReq) GetAccept() *SignalAcceptReq { if x, ok := x.GetPayload().(*SignalReq_Accept); ok { return x.Accept } return nil } func (x *SignalReq) GetHungUp() *SignalHungUpReq { if x, ok := x.GetPayload().(*SignalReq_HungUp); ok { return x.HungUp } return nil } func (x *SignalReq) GetReject() *SignalRejectReq { if x, ok := x.GetPayload().(*SignalReq_Reject); ok { return x.Reject } return nil } type isSignalReq_Payload interface { isSignalReq_Payload() } type SignalReq_Invite struct { Invite *SignalInviteReq `protobuf:"bytes,1,opt,name=invite,proto3,oneof"` } type SignalReq_InviteInGroup struct { InviteInGroup *SignalInviteInGroupReq `protobuf:"bytes,2,opt,name=inviteInGroup,proto3,oneof"` } type SignalReq_Cancel struct { Cancel *SignalCancelReq `protobuf:"bytes,3,opt,name=cancel,proto3,oneof"` } type SignalReq_Accept struct { Accept *SignalAcceptReq `protobuf:"bytes,4,opt,name=accept,proto3,oneof"` } type SignalReq_HungUp struct { HungUp *SignalHungUpReq `protobuf:"bytes,5,opt,name=hungUp,proto3,oneof"` } type SignalReq_Reject struct { Reject *SignalRejectReq `protobuf:"bytes,6,opt,name=reject,proto3,oneof"` } func (*SignalReq_Invite) isSignalReq_Payload() {} func (*SignalReq_InviteInGroup) isSignalReq_Payload() {} func (*SignalReq_Cancel) isSignalReq_Payload() {} func (*SignalReq_Accept) isSignalReq_Payload() {} func (*SignalReq_HungUp) isSignalReq_Payload() {} func (*SignalReq_Reject) isSignalReq_Payload() {} type SignalResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Payload: // *SignalResp_Invite // *SignalResp_InviteInGroup // *SignalResp_Cancel // *SignalResp_Accept // *SignalResp_HungUp // *SignalResp_Reject Payload isSignalResp_Payload `protobuf_oneof:"payload"` } func (x *SignalResp) Reset() { *x = SignalResp{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalResp) ProtoMessage() {} func (x *SignalResp) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalResp.ProtoReflect.Descriptor instead. func (*SignalResp) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{59} } func (m *SignalResp) GetPayload() isSignalResp_Payload { if m != nil { return m.Payload } return nil } func (x *SignalResp) GetInvite() *SignalInviteReply { if x, ok := x.GetPayload().(*SignalResp_Invite); ok { return x.Invite } return nil } func (x *SignalResp) GetInviteInGroup() *SignalInviteInGroupReply { if x, ok := x.GetPayload().(*SignalResp_InviteInGroup); ok { return x.InviteInGroup } return nil } func (x *SignalResp) GetCancel() *SignalCancelReply { if x, ok := x.GetPayload().(*SignalResp_Cancel); ok { return x.Cancel } return nil } func (x *SignalResp) GetAccept() *SignalAcceptReply { if x, ok := x.GetPayload().(*SignalResp_Accept); ok { return x.Accept } return nil } func (x *SignalResp) GetHungUp() *SignalHungUpReply { if x, ok := x.GetPayload().(*SignalResp_HungUp); ok { return x.HungUp } return nil } func (x *SignalResp) GetReject() *SignalRejectReply { if x, ok := x.GetPayload().(*SignalResp_Reject); ok { return x.Reject } return nil } type isSignalResp_Payload interface { isSignalResp_Payload() } type SignalResp_Invite struct { Invite *SignalInviteReply `protobuf:"bytes,1,opt,name=invite,proto3,oneof"` } type SignalResp_InviteInGroup struct { InviteInGroup *SignalInviteInGroupReply `protobuf:"bytes,2,opt,name=inviteInGroup,proto3,oneof"` } type SignalResp_Cancel struct { Cancel *SignalCancelReply `protobuf:"bytes,3,opt,name=cancel,proto3,oneof"` } type SignalResp_Accept struct { Accept *SignalAcceptReply `protobuf:"bytes,4,opt,name=accept,proto3,oneof"` } type SignalResp_HungUp struct { HungUp *SignalHungUpReply `protobuf:"bytes,5,opt,name=hungUp,proto3,oneof"` } type SignalResp_Reject struct { Reject *SignalRejectReply `protobuf:"bytes,6,opt,name=reject,proto3,oneof"` } func (*SignalResp_Invite) isSignalResp_Payload() {} func (*SignalResp_InviteInGroup) isSignalResp_Payload() {} func (*SignalResp_Cancel) isSignalResp_Payload() {} func (*SignalResp_Accept) isSignalResp_Payload() {} func (*SignalResp_HungUp) isSignalResp_Payload() {} func (*SignalResp_Reject) isSignalResp_Payload() {} type InvitationInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InviterUserID string `protobuf:"bytes,1,opt,name=inviterUserID,proto3" json:"inviterUserID,omitempty"` InviteeUserIDList []string `protobuf:"bytes,2,rep,name=inviteeUserIDList,proto3" json:"inviteeUserIDList,omitempty"` CustomData string `protobuf:"bytes,3,opt,name=customData,proto3" json:"customData,omitempty"` GroupID string `protobuf:"bytes,4,opt,name=groupID,proto3" json:"groupID,omitempty"` RoomID string `protobuf:"bytes,5,opt,name=roomID,proto3" json:"roomID,omitempty"` Timeout int32 `protobuf:"varint,6,opt,name=timeout,proto3" json:"timeout,omitempty"` MediaType string `protobuf:"bytes,7,opt,name=mediaType,proto3" json:"mediaType,omitempty"` PlatformID int32 `protobuf:"varint,8,opt,name=platformID,proto3" json:"platformID,omitempty"` SessionType int32 `protobuf:"varint,9,opt,name=sessionType,proto3" json:"sessionType,omitempty"` InitiateTime int32 `protobuf:"varint,10,opt,name=initiateTime,proto3" json:"initiateTime,omitempty"` } func (x *InvitationInfo) Reset() { *x = InvitationInfo{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InvitationInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvitationInfo) ProtoMessage() {} func (x *InvitationInfo) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 InvitationInfo.ProtoReflect.Descriptor instead. func (*InvitationInfo) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{60} } func (x *InvitationInfo) GetInviterUserID() string { if x != nil { return x.InviterUserID } return "" } func (x *InvitationInfo) GetInviteeUserIDList() []string { if x != nil { return x.InviteeUserIDList } return nil } func (x *InvitationInfo) GetCustomData() string { if x != nil { return x.CustomData } return "" } func (x *InvitationInfo) GetGroupID() string { if x != nil { return x.GroupID } return "" } func (x *InvitationInfo) GetRoomID() string { if x != nil { return x.RoomID } return "" } func (x *InvitationInfo) GetTimeout() int32 { if x != nil { return x.Timeout } return 0 } func (x *InvitationInfo) GetMediaType() string { if x != nil { return x.MediaType } return "" } func (x *InvitationInfo) GetPlatformID() int32 { if x != nil { return x.PlatformID } return 0 } func (x *InvitationInfo) GetSessionType() int32 { if x != nil { return x.SessionType } return 0 } func (x *InvitationInfo) GetInitiateTime() int32 { if x != nil { return x.InitiateTime } return 0 } type ParticipantMetaData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupInfo *GroupInfo `protobuf:"bytes,1,opt,name=groupInfo,proto3" json:"groupInfo,omitempty"` GroupMemberInfo *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=groupMemberInfo,proto3" json:"groupMemberInfo,omitempty"` UserInfo *PublicUserInfo `protobuf:"bytes,3,opt,name=userInfo,proto3" json:"userInfo,omitempty"` } func (x *ParticipantMetaData) Reset() { *x = ParticipantMetaData{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ParticipantMetaData) String() string { return protoimpl.X.MessageStringOf(x) } func (*ParticipantMetaData) ProtoMessage() {} func (x *ParticipantMetaData) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 ParticipantMetaData.ProtoReflect.Descriptor instead. func (*ParticipantMetaData) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{61} } func (x *ParticipantMetaData) GetGroupInfo() *GroupInfo { if x != nil { return x.GroupInfo } return nil } func (x *ParticipantMetaData) GetGroupMemberInfo() *GroupMemberFullInfo { if x != nil { return x.GroupMemberInfo } return nil } func (x *ParticipantMetaData) GetUserInfo() *PublicUserInfo { if x != nil { return x.UserInfo } return nil } type SignalInviteReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` } func (x *SignalInviteReq) Reset() { *x = SignalInviteReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalInviteReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalInviteReq) ProtoMessage() {} func (x *SignalInviteReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalInviteReq.ProtoReflect.Descriptor instead. func (*SignalInviteReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{62} } func (x *SignalInviteReq) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *SignalInviteReq) GetInvitation() *InvitationInfo { if x != nil { return x.Invitation } return nil } func (x *SignalInviteReq) GetOfflinePushInfo() *OfflinePushInfo { if x != nil { return x.OfflinePushInfo } return nil } func (x *SignalInviteReq) GetParticipant() *ParticipantMetaData { if x != nil { return x.Participant } return nil } type SignalInviteReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` RoomID string `protobuf:"bytes,2,opt,name=roomID,proto3" json:"roomID,omitempty"` LiveURL string `protobuf:"bytes,3,opt,name=liveURL,proto3" json:"liveURL,omitempty"` } func (x *SignalInviteReply) Reset() { *x = SignalInviteReply{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalInviteReply) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalInviteReply) ProtoMessage() {} func (x *SignalInviteReply) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalInviteReply.ProtoReflect.Descriptor instead. func (*SignalInviteReply) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{63} } func (x *SignalInviteReply) GetToken() string { if x != nil { return x.Token } return "" } func (x *SignalInviteReply) GetRoomID() string { if x != nil { return x.RoomID } return "" } func (x *SignalInviteReply) GetLiveURL() string { if x != nil { return x.LiveURL } return "" } type SignalInviteInGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` } func (x *SignalInviteInGroupReq) Reset() { *x = SignalInviteInGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalInviteInGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalInviteInGroupReq) ProtoMessage() {} func (x *SignalInviteInGroupReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalInviteInGroupReq.ProtoReflect.Descriptor instead. func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{64} } func (x *SignalInviteInGroupReq) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *SignalInviteInGroupReq) GetInvitation() *InvitationInfo { if x != nil { return x.Invitation } return nil } func (x *SignalInviteInGroupReq) GetOfflinePushInfo() *OfflinePushInfo { if x != nil { return x.OfflinePushInfo } return nil } func (x *SignalInviteInGroupReq) GetParticipant() *ParticipantMetaData { if x != nil { return x.Participant } return nil } type SignalInviteInGroupReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` RoomID string `protobuf:"bytes,2,opt,name=roomID,proto3" json:"roomID,omitempty"` LiveURL string `protobuf:"bytes,3,opt,name=liveURL,proto3" json:"liveURL,omitempty"` } func (x *SignalInviteInGroupReply) Reset() { *x = SignalInviteInGroupReply{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalInviteInGroupReply) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalInviteInGroupReply) ProtoMessage() {} func (x *SignalInviteInGroupReply) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalInviteInGroupReply.ProtoReflect.Descriptor instead. func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{65} } func (x *SignalInviteInGroupReply) GetToken() string { if x != nil { return x.Token } return "" } func (x *SignalInviteInGroupReply) GetRoomID() string { if x != nil { return x.RoomID } return "" } func (x *SignalInviteInGroupReply) GetLiveURL() string { if x != nil { return x.LiveURL } return "" } type SignalCancelReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` } func (x *SignalCancelReq) Reset() { *x = SignalCancelReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalCancelReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalCancelReq) ProtoMessage() {} func (x *SignalCancelReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalCancelReq.ProtoReflect.Descriptor instead. func (*SignalCancelReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{66} } func (x *SignalCancelReq) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *SignalCancelReq) GetInvitation() *InvitationInfo { if x != nil { return x.Invitation } return nil } func (x *SignalCancelReq) GetOfflinePushInfo() *OfflinePushInfo { if x != nil { return x.OfflinePushInfo } return nil } func (x *SignalCancelReq) GetParticipant() *ParticipantMetaData { if x != nil { return x.Participant } return nil } type SignalCancelReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SignalCancelReply) Reset() { *x = SignalCancelReply{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalCancelReply) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalCancelReply) ProtoMessage() {} func (x *SignalCancelReply) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalCancelReply.ProtoReflect.Descriptor instead. func (*SignalCancelReply) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{67} } type SignalAcceptReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` OpUserPlatformID int32 `protobuf:"varint,5,opt,name=opUserPlatformID,proto3" json:"opUserPlatformID,omitempty"` } func (x *SignalAcceptReq) Reset() { *x = SignalAcceptReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalAcceptReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalAcceptReq) ProtoMessage() {} func (x *SignalAcceptReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalAcceptReq.ProtoReflect.Descriptor instead. func (*SignalAcceptReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{68} } func (x *SignalAcceptReq) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *SignalAcceptReq) GetInvitation() *InvitationInfo { if x != nil { return x.Invitation } return nil } func (x *SignalAcceptReq) GetOfflinePushInfo() *OfflinePushInfo { if x != nil { return x.OfflinePushInfo } return nil } func (x *SignalAcceptReq) GetParticipant() *ParticipantMetaData { if x != nil { return x.Participant } return nil } func (x *SignalAcceptReq) GetOpUserPlatformID() int32 { if x != nil { return x.OpUserPlatformID } return 0 } type SignalAcceptReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` RoomID string `protobuf:"bytes,2,opt,name=roomID,proto3" json:"roomID,omitempty"` LiveURL string `protobuf:"bytes,3,opt,name=liveURL,proto3" json:"liveURL,omitempty"` } func (x *SignalAcceptReply) Reset() { *x = SignalAcceptReply{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalAcceptReply) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalAcceptReply) ProtoMessage() {} func (x *SignalAcceptReply) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalAcceptReply.ProtoReflect.Descriptor instead. func (*SignalAcceptReply) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{69} } func (x *SignalAcceptReply) GetToken() string { if x != nil { return x.Token } return "" } func (x *SignalAcceptReply) GetRoomID() string { if x != nil { return x.RoomID } return "" } func (x *SignalAcceptReply) GetLiveURL() string { if x != nil { return x.LiveURL } return "" } type SignalHungUpReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` } func (x *SignalHungUpReq) Reset() { *x = SignalHungUpReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalHungUpReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalHungUpReq) ProtoMessage() {} func (x *SignalHungUpReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalHungUpReq.ProtoReflect.Descriptor instead. func (*SignalHungUpReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{70} } func (x *SignalHungUpReq) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *SignalHungUpReq) GetInvitation() *InvitationInfo { if x != nil { return x.Invitation } return nil } func (x *SignalHungUpReq) GetOfflinePushInfo() *OfflinePushInfo { if x != nil { return x.OfflinePushInfo } return nil } type SignalHungUpReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SignalHungUpReply) Reset() { *x = SignalHungUpReply{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalHungUpReply) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalHungUpReply) ProtoMessage() {} func (x *SignalHungUpReply) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalHungUpReply.ProtoReflect.Descriptor instead. func (*SignalHungUpReply) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{71} } type SignalRejectReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` Invitation *InvitationInfo `protobuf:"bytes,2,opt,name=invitation,proto3" json:"invitation,omitempty"` OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,3,opt,name=offlinePushInfo,proto3" json:"offlinePushInfo,omitempty"` Participant *ParticipantMetaData `protobuf:"bytes,4,opt,name=participant,proto3" json:"participant,omitempty"` OpUserPlatformID int32 `protobuf:"varint,5,opt,name=opUserPlatformID,proto3" json:"opUserPlatformID,omitempty"` } func (x *SignalRejectReq) Reset() { *x = SignalRejectReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalRejectReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalRejectReq) ProtoMessage() {} func (x *SignalRejectReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalRejectReq.ProtoReflect.Descriptor instead. func (*SignalRejectReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{72} } func (x *SignalRejectReq) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *SignalRejectReq) GetInvitation() *InvitationInfo { if x != nil { return x.Invitation } return nil } func (x *SignalRejectReq) GetOfflinePushInfo() *OfflinePushInfo { if x != nil { return x.OfflinePushInfo } return nil } func (x *SignalRejectReq) GetParticipant() *ParticipantMetaData { if x != nil { return x.Participant } return nil } func (x *SignalRejectReq) GetOpUserPlatformID() int32 { if x != nil { return x.OpUserPlatformID } return 0 } type SignalRejectReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SignalRejectReply) Reset() { *x = SignalRejectReply{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalRejectReply) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalRejectReply) ProtoMessage() {} func (x *SignalRejectReply) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 SignalRejectReply.ProtoReflect.Descriptor instead. func (*SignalRejectReply) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{73} } type DelMsgListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpUserID string `protobuf:"bytes,1,opt,name=opUserID,proto3" json:"opUserID,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` SeqList []uint32 `protobuf:"varint,3,rep,packed,name=seqList,proto3" json:"seqList,omitempty"` OperationID string `protobuf:"bytes,4,opt,name=operationID,proto3" json:"operationID,omitempty"` } func (x *DelMsgListReq) Reset() { *x = DelMsgListReq{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelMsgListReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelMsgListReq) ProtoMessage() {} func (x *DelMsgListReq) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 DelMsgListReq.ProtoReflect.Descriptor instead. func (*DelMsgListReq) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{74} } func (x *DelMsgListReq) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *DelMsgListReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *DelMsgListReq) GetSeqList() []uint32 { if x != nil { return x.SeqList } return nil } func (x *DelMsgListReq) GetOperationID() string { if x != nil { return x.OperationID } return "" } type DelMsgListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ErrCode int32 `protobuf:"varint,1,opt,name=errCode,proto3" json:"errCode,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` } func (x *DelMsgListResp) Reset() { *x = DelMsgListResp{} if protoimpl.UnsafeEnabled { mi := &file_sdk_ws_ws_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelMsgListResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelMsgListResp) ProtoMessage() {} func (x *DelMsgListResp) ProtoReflect() protoreflect.Message { mi := &file_sdk_ws_ws_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 DelMsgListResp.ProtoReflect.Descriptor instead. func (*DelMsgListResp) Descriptor() ([]byte, []int) { return file_sdk_ws_ws_proto_rawDescGZIP(), []int{75} } func (x *DelMsgListResp) GetErrCode() int32 { if x != nil { return x.ErrCode } return 0 } func (x *DelMsgListResp) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } var File_sdk_ws_ws_proto protoreflect.FileDescriptor var file_sdk_ws_ws_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x73, 0x64, 0x6b, 0x5f, 0x77, 0x73, 0x2f, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x4f, 0x70, 0x65, 0x6e, 0x5f, 0x49, 0x4d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x64, 0x6b, 0x5f, 0x77, 0x73, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdf, 0x04, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x94, 0x03, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x47, 0x0a, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x49, 0x0a, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x22, 0xff, 0x02, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0xe6, 0x03, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x4d, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x22, 0xf9, 0x01, 0x0a, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0xec, 0x01, 0x0a, 0x09, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0d, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x97, 0x03, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0xdb, 0x03, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x6f, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0xb2, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x75, 0x62, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0xac, 0x02, 0x0a, 0x10, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0xc0, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x10, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xbc, 0x01, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x57, 0x0a, 0x14, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x14, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xac, 0x02, 0x0a, 0x17, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x5b, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x4b, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xd0, 0x02, 0x0a, 0x18, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x63, 0x0a, 0x15, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x70, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x3e, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x22, 0xcb, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x6b, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x1a, 0x65, 0x0a, 0x16, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x61, 0x78, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x53, 0x65, 0x71, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x71, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb6, 0x06, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x95, 0x01, 0x0a, 0x0f, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x4f, 0x53, 0x50, 0x75, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x4f, 0x53, 0x50, 0x75, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x4f, 0x53, 0x42, 0x61, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x4f, 0x53, 0x42, 0x61, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x64, 0x0a, 0x08, 0x54, 0x69, 0x70, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x69, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xc4, 0x02, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x75, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x75, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x22, 0xae, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x42, 0x0a, 0x08, 0x71, 0x75, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x71, 0x75, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x1c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0xb0, 0x01, 0x0a, 0x1c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0x83, 0x02, 0x0a, 0x19, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4b, 0x69, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x0e, 0x6b, 0x69, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x6b, 0x69, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x48, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9a, 0x02, 0x0a, 0x14, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x1a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0xaa, 0x01, 0x0a, 0x0e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x14, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x16, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x74, 0x54, 0x69, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0x74, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x61, 0x64, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x64, 0x64, 0x57, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x57, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4a, 0x0a, 0x0c, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x5c, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x82, 0x01, 0x0a, 0x1d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0x82, 0x01, 0x0a, 0x1d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0xa9, 0x01, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x22, 0x58, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x55, 0x0a, 0x0e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x57, 0x0a, 0x10, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x5c, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x2d, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x60, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x54, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x22, 0x61, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x56, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x9f, 0x03, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x68, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x48, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x68, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xac, 0x03, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x53, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x68, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x48, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x68, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xd4, 0x02, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x88, 0x02, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x8f, 0x02, 0x0a, 0x16, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x62, 0x0a, 0x18, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x88, 0x02, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0xb4, 0x02, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x5b, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x55, 0x52, 0x4c, 0x22, 0xbe, 0x01, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x48, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x48, 0x75, 0x6e, 0x67, 0x55, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0xb4, 0x02, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x7f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x65, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x42, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x42, 0x1c, 0x5a, 0x1a, 0x2e, 0x2f, 0x73, 0x64, 0x6b, 0x5f, 0x77, 0x73, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_sdk_ws_ws_proto_rawDescOnce sync.Once file_sdk_ws_ws_proto_rawDescData = file_sdk_ws_ws_proto_rawDesc ) func file_sdk_ws_ws_proto_rawDescGZIP() []byte { file_sdk_ws_ws_proto_rawDescOnce.Do(func() { file_sdk_ws_ws_proto_rawDescData = protoimpl.X.CompressGZIP(file_sdk_ws_ws_proto_rawDescData) }) return file_sdk_ws_ws_proto_rawDescData } var file_sdk_ws_ws_proto_msgTypes = make([]protoimpl.MessageInfo, 80) var file_sdk_ws_ws_proto_goTypes = []interface{}{ (*GroupInfo)(nil), // 0: server_api_params.GroupInfo (*GroupInfoForSet)(nil), // 1: server_api_params.GroupInfoForSet (*GroupMemberFullInfo)(nil), // 2: server_api_params.GroupMemberFullInfo (*PublicUserInfo)(nil), // 3: server_api_params.PublicUserInfo (*UserInfo)(nil), // 4: server_api_params.UserInfo (*FriendInfo)(nil), // 5: server_api_params.FriendInfo (*BlackInfo)(nil), // 6: server_api_params.BlackInfo (*GroupRequest)(nil), // 7: server_api_params.GroupRequest (*FriendRequest)(nil), // 8: server_api_params.FriendRequest (*Department)(nil), // 9: server_api_params.Department (*OrganizationUser)(nil), // 10: server_api_params.OrganizationUser (*DepartmentMember)(nil), // 11: server_api_params.DepartmentMember (*UserDepartmentMember)(nil), // 12: server_api_params.UserDepartmentMember (*UserInDepartment)(nil), // 13: server_api_params.UserInDepartment (*PullMessageBySeqListReq)(nil), // 14: server_api_params.PullMessageBySeqListReq (*SeqList)(nil), // 15: server_api_params.seqList (*MsgDataList)(nil), // 16: server_api_params.MsgDataList (*PullMessageBySeqListResp)(nil), // 17: server_api_params.PullMessageBySeqListResp (*GetMaxAndMinSeqReq)(nil), // 18: server_api_params.GetMaxAndMinSeqReq (*MaxAndMinSeq)(nil), // 19: server_api_params.MaxAndMinSeq (*GetMaxAndMinSeqResp)(nil), // 20: server_api_params.GetMaxAndMinSeqResp (*UserSendMsgResp)(nil), // 21: server_api_params.UserSendMsgResp (*MsgData)(nil), // 22: server_api_params.MsgData (*OfflinePushInfo)(nil), // 23: server_api_params.OfflinePushInfo (*TipsComm)(nil), // 24: server_api_params.TipsComm (*GroupCreatedTips)(nil), // 25: server_api_params.GroupCreatedTips (*GroupInfoSetTips)(nil), // 26: server_api_params.GroupInfoSetTips (*JoinGroupApplicationTips)(nil), // 27: server_api_params.JoinGroupApplicationTips (*MemberQuitTips)(nil), // 28: server_api_params.MemberQuitTips (*GroupApplicationAcceptedTips)(nil), // 29: server_api_params.GroupApplicationAcceptedTips (*GroupApplicationRejectedTips)(nil), // 30: server_api_params.GroupApplicationRejectedTips (*GroupOwnerTransferredTips)(nil), // 31: server_api_params.GroupOwnerTransferredTips (*MemberKickedTips)(nil), // 32: server_api_params.MemberKickedTips (*MemberInvitedTips)(nil), // 33: server_api_params.MemberInvitedTips (*MemberEnterTips)(nil), // 34: server_api_params.MemberEnterTips (*GroupDismissedTips)(nil), // 35: server_api_params.GroupDismissedTips (*GroupMemberMutedTips)(nil), // 36: server_api_params.GroupMemberMutedTips (*GroupMemberCancelMutedTips)(nil), // 37: server_api_params.GroupMemberCancelMutedTips (*GroupMutedTips)(nil), // 38: server_api_params.GroupMutedTips (*GroupCancelMutedTips)(nil), // 39: server_api_params.GroupCancelMutedTips (*GroupMemberInfoSetTips)(nil), // 40: server_api_params.GroupMemberInfoSetTips (*OrganizationChangedTips)(nil), // 41: server_api_params.OrganizationChangedTips (*FriendApplication)(nil), // 42: server_api_params.FriendApplication (*FromToUserID)(nil), // 43: server_api_params.FromToUserID (*FriendApplicationTips)(nil), // 44: server_api_params.FriendApplicationTips (*FriendApplicationApprovedTips)(nil), // 45: server_api_params.FriendApplicationApprovedTips (*FriendApplicationRejectedTips)(nil), // 46: server_api_params.FriendApplicationRejectedTips (*FriendAddedTips)(nil), // 47: server_api_params.FriendAddedTips (*FriendDeletedTips)(nil), // 48: server_api_params.FriendDeletedTips (*BlackAddedTips)(nil), // 49: server_api_params.BlackAddedTips (*BlackDeletedTips)(nil), // 50: server_api_params.BlackDeletedTips (*FriendInfoChangedTips)(nil), // 51: server_api_params.FriendInfoChangedTips (*UserInfoUpdatedTips)(nil), // 52: server_api_params.UserInfoUpdatedTips (*ConversationUpdateTips)(nil), // 53: server_api_params.ConversationUpdateTips (*ConversationSetPrivateTips)(nil), // 54: server_api_params.ConversationSetPrivateTips (*DeleteMessageTips)(nil), // 55: server_api_params.DeleteMessageTips (*RequestPagination)(nil), // 56: server_api_params.RequestPagination (*ResponsePagination)(nil), // 57: server_api_params.ResponsePagination (*SignalReq)(nil), // 58: server_api_params.SignalReq (*SignalResp)(nil), // 59: server_api_params.SignalResp (*InvitationInfo)(nil), // 60: server_api_params.InvitationInfo (*ParticipantMetaData)(nil), // 61: server_api_params.ParticipantMetaData (*SignalInviteReq)(nil), // 62: server_api_params.SignalInviteReq (*SignalInviteReply)(nil), // 63: server_api_params.SignalInviteReply (*SignalInviteInGroupReq)(nil), // 64: server_api_params.SignalInviteInGroupReq (*SignalInviteInGroupReply)(nil), // 65: server_api_params.SignalInviteInGroupReply (*SignalCancelReq)(nil), // 66: server_api_params.SignalCancelReq (*SignalCancelReply)(nil), // 67: server_api_params.SignalCancelReply (*SignalAcceptReq)(nil), // 68: server_api_params.SignalAcceptReq (*SignalAcceptReply)(nil), // 69: server_api_params.SignalAcceptReply (*SignalHungUpReq)(nil), // 70: server_api_params.SignalHungUpReq (*SignalHungUpReply)(nil), // 71: server_api_params.SignalHungUpReply (*SignalRejectReq)(nil), // 72: server_api_params.SignalRejectReq (*SignalRejectReply)(nil), // 73: server_api_params.SignalRejectReply (*DelMsgListReq)(nil), // 74: server_api_params.DelMsgListReq (*DelMsgListResp)(nil), // 75: server_api_params.DelMsgListResp nil, // 76: server_api_params.PullMessageBySeqListReq.GroupSeqListEntry nil, // 77: server_api_params.PullMessageBySeqListResp.GroupMsgDataListEntry nil, // 78: server_api_params.GetMaxAndMinSeqResp.GroupMaxAndMinSeqEntry nil, // 79: server_api_params.MsgData.OptionsEntry (*wrapperspb.Int32Value)(nil), // 80: google.protobuf.Int32Value } var file_sdk_ws_ws_proto_depIdxs = []int32{ 80, // 0: server_api_params.GroupInfoForSet.needVerification:type_name -> google.protobuf.Int32Value 80, // 1: server_api_params.GroupInfoForSet.lookMemberInfo:type_name -> google.protobuf.Int32Value 80, // 2: server_api_params.GroupInfoForSet.applyMemberFriend:type_name -> google.protobuf.Int32Value 4, // 3: server_api_params.FriendInfo.friendUser:type_name -> server_api_params.UserInfo 3, // 4: server_api_params.BlackInfo.blackUserInfo:type_name -> server_api_params.PublicUserInfo 3, // 5: server_api_params.GroupRequest.userInfo:type_name -> server_api_params.PublicUserInfo 0, // 6: server_api_params.GroupRequest.groupInfo:type_name -> server_api_params.GroupInfo 10, // 7: server_api_params.UserDepartmentMember.organizationUser:type_name -> server_api_params.OrganizationUser 11, // 8: server_api_params.UserDepartmentMember.departmentMember:type_name -> server_api_params.DepartmentMember 10, // 9: server_api_params.UserInDepartment.organizationUser:type_name -> server_api_params.OrganizationUser 11, // 10: server_api_params.UserInDepartment.departmentMemberList:type_name -> server_api_params.DepartmentMember 76, // 11: server_api_params.PullMessageBySeqListReq.groupSeqList:type_name -> server_api_params.PullMessageBySeqListReq.GroupSeqListEntry 22, // 12: server_api_params.MsgDataList.msgDataList:type_name -> server_api_params.MsgData 22, // 13: server_api_params.PullMessageBySeqListResp.list:type_name -> server_api_params.MsgData 77, // 14: server_api_params.PullMessageBySeqListResp.groupMsgDataList:type_name -> server_api_params.PullMessageBySeqListResp.GroupMsgDataListEntry 78, // 15: server_api_params.GetMaxAndMinSeqResp.groupMaxAndMinSeq:type_name -> server_api_params.GetMaxAndMinSeqResp.GroupMaxAndMinSeqEntry 79, // 16: server_api_params.MsgData.options:type_name -> server_api_params.MsgData.OptionsEntry 23, // 17: server_api_params.MsgData.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo 0, // 18: server_api_params.GroupCreatedTips.group:type_name -> server_api_params.GroupInfo 2, // 19: server_api_params.GroupCreatedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 20: server_api_params.GroupCreatedTips.memberList:type_name -> server_api_params.GroupMemberFullInfo 2, // 21: server_api_params.GroupCreatedTips.groupOwnerUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 22: server_api_params.GroupInfoSetTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 23: server_api_params.GroupInfoSetTips.group:type_name -> server_api_params.GroupInfo 0, // 24: server_api_params.JoinGroupApplicationTips.group:type_name -> server_api_params.GroupInfo 3, // 25: server_api_params.JoinGroupApplicationTips.applicant:type_name -> server_api_params.PublicUserInfo 0, // 26: server_api_params.MemberQuitTips.group:type_name -> server_api_params.GroupInfo 2, // 27: server_api_params.MemberQuitTips.quitUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 28: server_api_params.GroupApplicationAcceptedTips.group:type_name -> server_api_params.GroupInfo 2, // 29: server_api_params.GroupApplicationAcceptedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 30: server_api_params.GroupApplicationRejectedTips.group:type_name -> server_api_params.GroupInfo 2, // 31: server_api_params.GroupApplicationRejectedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 32: server_api_params.GroupOwnerTransferredTips.group:type_name -> server_api_params.GroupInfo 2, // 33: server_api_params.GroupOwnerTransferredTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 34: server_api_params.GroupOwnerTransferredTips.newGroupOwner:type_name -> server_api_params.GroupMemberFullInfo 0, // 35: server_api_params.MemberKickedTips.group:type_name -> server_api_params.GroupInfo 2, // 36: server_api_params.MemberKickedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 37: server_api_params.MemberKickedTips.kickedUserList:type_name -> server_api_params.GroupMemberFullInfo 0, // 38: server_api_params.MemberInvitedTips.group:type_name -> server_api_params.GroupInfo 2, // 39: server_api_params.MemberInvitedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 40: server_api_params.MemberInvitedTips.invitedUserList:type_name -> server_api_params.GroupMemberFullInfo 0, // 41: server_api_params.MemberEnterTips.group:type_name -> server_api_params.GroupInfo 2, // 42: server_api_params.MemberEnterTips.entrantUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 43: server_api_params.GroupDismissedTips.group:type_name -> server_api_params.GroupInfo 2, // 44: server_api_params.GroupDismissedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 45: server_api_params.GroupMemberMutedTips.group:type_name -> server_api_params.GroupInfo 2, // 46: server_api_params.GroupMemberMutedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 47: server_api_params.GroupMemberMutedTips.mutedUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 48: server_api_params.GroupMemberCancelMutedTips.group:type_name -> server_api_params.GroupInfo 2, // 49: server_api_params.GroupMemberCancelMutedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 50: server_api_params.GroupMemberCancelMutedTips.mutedUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 51: server_api_params.GroupMutedTips.group:type_name -> server_api_params.GroupInfo 2, // 52: server_api_params.GroupMutedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 53: server_api_params.GroupCancelMutedTips.group:type_name -> server_api_params.GroupInfo 2, // 54: server_api_params.GroupCancelMutedTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 0, // 55: server_api_params.GroupMemberInfoSetTips.group:type_name -> server_api_params.GroupInfo 2, // 56: server_api_params.GroupMemberInfoSetTips.opUser:type_name -> server_api_params.GroupMemberFullInfo 2, // 57: server_api_params.GroupMemberInfoSetTips.changedUser:type_name -> server_api_params.GroupMemberFullInfo 4, // 58: server_api_params.OrganizationChangedTips.opUser:type_name -> server_api_params.UserInfo 43, // 59: server_api_params.FriendApplicationTips.fromToUserID:type_name -> server_api_params.FromToUserID 43, // 60: server_api_params.FriendApplicationApprovedTips.fromToUserID:type_name -> server_api_params.FromToUserID 43, // 61: server_api_params.FriendApplicationRejectedTips.fromToUserID:type_name -> server_api_params.FromToUserID 5, // 62: server_api_params.FriendAddedTips.friend:type_name -> server_api_params.FriendInfo 3, // 63: server_api_params.FriendAddedTips.opUser:type_name -> server_api_params.PublicUserInfo 43, // 64: server_api_params.FriendDeletedTips.fromToUserID:type_name -> server_api_params.FromToUserID 43, // 65: server_api_params.BlackAddedTips.fromToUserID:type_name -> server_api_params.FromToUserID 43, // 66: server_api_params.BlackDeletedTips.fromToUserID:type_name -> server_api_params.FromToUserID 43, // 67: server_api_params.FriendInfoChangedTips.fromToUserID:type_name -> server_api_params.FromToUserID 62, // 68: server_api_params.SignalReq.invite:type_name -> server_api_params.SignalInviteReq 64, // 69: server_api_params.SignalReq.inviteInGroup:type_name -> server_api_params.SignalInviteInGroupReq 66, // 70: server_api_params.SignalReq.cancel:type_name -> server_api_params.SignalCancelReq 68, // 71: server_api_params.SignalReq.accept:type_name -> server_api_params.SignalAcceptReq 70, // 72: server_api_params.SignalReq.hungUp:type_name -> server_api_params.SignalHungUpReq 72, // 73: server_api_params.SignalReq.reject:type_name -> server_api_params.SignalRejectReq 63, // 74: server_api_params.SignalResp.invite:type_name -> server_api_params.SignalInviteReply 65, // 75: server_api_params.SignalResp.inviteInGroup:type_name -> server_api_params.SignalInviteInGroupReply 67, // 76: server_api_params.SignalResp.cancel:type_name -> server_api_params.SignalCancelReply 69, // 77: server_api_params.SignalResp.accept:type_name -> server_api_params.SignalAcceptReply 71, // 78: server_api_params.SignalResp.hungUp:type_name -> server_api_params.SignalHungUpReply 73, // 79: server_api_params.SignalResp.reject:type_name -> server_api_params.SignalRejectReply 0, // 80: server_api_params.ParticipantMetaData.groupInfo:type_name -> server_api_params.GroupInfo 2, // 81: server_api_params.ParticipantMetaData.groupMemberInfo:type_name -> server_api_params.GroupMemberFullInfo 3, // 82: server_api_params.ParticipantMetaData.userInfo:type_name -> server_api_params.PublicUserInfo 60, // 83: server_api_params.SignalInviteReq.invitation:type_name -> server_api_params.InvitationInfo 23, // 84: server_api_params.SignalInviteReq.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo 61, // 85: server_api_params.SignalInviteReq.participant:type_name -> server_api_params.ParticipantMetaData 60, // 86: server_api_params.SignalInviteInGroupReq.invitation:type_name -> server_api_params.InvitationInfo 23, // 87: server_api_params.SignalInviteInGroupReq.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo 61, // 88: server_api_params.SignalInviteInGroupReq.participant:type_name -> server_api_params.ParticipantMetaData 60, // 89: server_api_params.SignalCancelReq.invitation:type_name -> server_api_params.InvitationInfo 23, // 90: server_api_params.SignalCancelReq.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo 61, // 91: server_api_params.SignalCancelReq.participant:type_name -> server_api_params.ParticipantMetaData 60, // 92: server_api_params.SignalAcceptReq.invitation:type_name -> server_api_params.InvitationInfo 23, // 93: server_api_params.SignalAcceptReq.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo 61, // 94: server_api_params.SignalAcceptReq.participant:type_name -> server_api_params.ParticipantMetaData 60, // 95: server_api_params.SignalHungUpReq.invitation:type_name -> server_api_params.InvitationInfo 23, // 96: server_api_params.SignalHungUpReq.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo 60, // 97: server_api_params.SignalRejectReq.invitation:type_name -> server_api_params.InvitationInfo 23, // 98: server_api_params.SignalRejectReq.offlinePushInfo:type_name -> server_api_params.OfflinePushInfo 61, // 99: server_api_params.SignalRejectReq.participant:type_name -> server_api_params.ParticipantMetaData 15, // 100: server_api_params.PullMessageBySeqListReq.GroupSeqListEntry.value:type_name -> server_api_params.seqList 16, // 101: server_api_params.PullMessageBySeqListResp.GroupMsgDataListEntry.value:type_name -> server_api_params.MsgDataList 19, // 102: server_api_params.GetMaxAndMinSeqResp.GroupMaxAndMinSeqEntry.value:type_name -> server_api_params.MaxAndMinSeq 103, // [103:103] is the sub-list for method output_type 103, // [103:103] is the sub-list for method input_type 103, // [103:103] is the sub-list for extension type_name 103, // [103:103] is the sub-list for extension extendee 0, // [0:103] is the sub-list for field type_name } func init() { file_sdk_ws_ws_proto_init() } func file_sdk_ws_ws_proto_init() { if File_sdk_ws_ws_proto != nil { return } if !protoimpl.UnsafeEnabled { file_sdk_ws_ws_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfoForSet); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMemberFullInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PublicUserInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlackInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Department); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrganizationUser); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DepartmentMember); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserDepartmentMember); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserInDepartment); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullMessageBySeqListReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SeqList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgDataList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PullMessageBySeqListResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMaxAndMinSeqReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MaxAndMinSeq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMaxAndMinSeqResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserSendMsgResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OfflinePushInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TipsComm); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupCreatedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfoSetTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JoinGroupApplicationTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MemberQuitTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupApplicationAcceptedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupApplicationRejectedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupOwnerTransferredTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MemberKickedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MemberInvitedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MemberEnterTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupDismissedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMemberMutedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMemberCancelMutedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMutedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupCancelMutedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMemberInfoSetTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrganizationChangedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendApplication); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FromToUserID); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendApplicationTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendApplicationApprovedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendApplicationRejectedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendAddedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendDeletedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlackAddedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlackDeletedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendInfoChangedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserInfoUpdatedTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConversationUpdateTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConversationSetPrivateTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteMessageTips); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestPagination); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResponsePagination); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvitationInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParticipantMetaData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalInviteReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalInviteReply); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalInviteInGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalInviteInGroupReply); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalCancelReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalCancelReply); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalAcceptReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalAcceptReply); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalHungUpReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalHungUpReply); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalRejectReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalRejectReply); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelMsgListReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_sdk_ws_ws_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelMsgListResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_sdk_ws_ws_proto_msgTypes[58].OneofWrappers = []interface{}{ (*SignalReq_Invite)(nil), (*SignalReq_InviteInGroup)(nil), (*SignalReq_Cancel)(nil), (*SignalReq_Accept)(nil), (*SignalReq_HungUp)(nil), (*SignalReq_Reject)(nil), } file_sdk_ws_ws_proto_msgTypes[59].OneofWrappers = []interface{}{ (*SignalResp_Invite)(nil), (*SignalResp_InviteInGroup)(nil), (*SignalResp_Cancel)(nil), (*SignalResp_Accept)(nil), (*SignalResp_HungUp)(nil), (*SignalResp_Reject)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_sdk_ws_ws_proto_rawDesc, NumEnums: 0, NumMessages: 80, NumExtensions: 0, NumServices: 0, }, GoTypes: file_sdk_ws_ws_proto_goTypes, DependencyIndexes: file_sdk_ws_ws_proto_depIdxs, MessageInfos: file_sdk_ws_ws_proto_msgTypes, }.Build() File_sdk_ws_ws_proto = out.File file_sdk_ws_ws_proto_rawDesc = nil file_sdk_ws_ws_proto_goTypes = nil file_sdk_ws_ws_proto_depIdxs = nil }