From 6edec8d4d679f440bb80e292c9f1052923496bcb Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Thu, 16 Jul 2020 03:18:12 +0800 Subject: [PATCH] supported GroupInvitedEvent and UserJoinGroupRequestEvent. --- README.md | 3 +- client/builders.go | 43 + client/client.go | 25 +- client/decoders.go | 38 + client/entities.go | 17 + client/events.go | 32 + client/pb/structmsg/msg.pb.go | 3112 +++++++++++++++++++++++++++++++++ client/pb/structmsg/msg.proto | 241 +++ 8 files changed, 3498 insertions(+), 13 deletions(-) create mode 100644 client/pb/structmsg/msg.pb.go create mode 100644 client/pb/structmsg/msg.proto diff --git a/README.md b/README.md index 5d36f3bd..161ba721 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,8 @@ qq-android协议的golang实现 移植于Mirai - [x] 群消息撤回 - [x] 群禁言 - [x] 群成员权限变更 -- [ ] 被邀请进群 +- [x] 收到邀请进群通知 +- [x] 收到其他用户进群请求 - [ ] 新好友 #### 主动操作 diff --git a/client/builders.go b/client/builders.go index 863084b9..82e077f7 100644 --- a/client/builders.go +++ b/client/builders.go @@ -6,6 +6,7 @@ import ( "github.com/Mrs4s/MiraiGo/binary/jce" "github.com/Mrs4s/MiraiGo/client/pb" "github.com/Mrs4s/MiraiGo/client/pb/msg" + "github.com/Mrs4s/MiraiGo/client/pb/structmsg" "github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/MiraiGo/protocol/crypto" "github.com/Mrs4s/MiraiGo/protocol/packets" @@ -109,6 +110,7 @@ func (c *QQClient) buildCaptchaPacket(result string, sign []byte) (uint16, []byt return seq, packet } +// StatSvc.register func (c *QQClient) buildClientRegisterPacket() (uint16, []byte) { seq := c.nextSeq() svc := &jce.SvcReqRegister{ @@ -156,6 +158,7 @@ func (c *QQClient) buildClientRegisterPacket() (uint16, []byte) { return seq, packet } +// ConfigPushSvc.PushResp func (c *QQClient) buildConfPushRespPacket(t int32, pktSeq int64, jceBuf []byte) (uint16, []byte) { seq := c.nextSeq() req := jce.NewJceWriter() @@ -179,6 +182,7 @@ func (c *QQClient) buildConfPushRespPacket(t int32, pktSeq int64, jceBuf []byte) return seq, packet } +// friendlist.getFriendGroupList func (c *QQClient) buildFriendGroupListRequestPacket(friendStartIndex, friendListCount, groupStartIndex, groupListCount int16) (uint16, []byte) { seq := c.nextSeq() d50, _ := proto.Marshal(&pb.D50ReqBody{ @@ -238,6 +242,7 @@ func (c *QQClient) buildFriendGroupListRequestPacket(friendStartIndex, friendLis return seq, packet } +// friendlist.GetTroopListReqV2 func (c *QQClient) buildGroupListRequestPacket() (uint16, []byte) { seq := c.nextSeq() req := &jce.TroopListRequest{ @@ -270,6 +275,7 @@ func (c *QQClient) buildGroupListRequestPacket() (uint16, []byte) { return seq, packet } +// friendlist.GetTroopMemberListReq func (c *QQClient) buildGroupMemberListRequestPacket(groupUin, groupCode, nextUin int64) (uint16, []byte) { seq := c.nextSeq() req := &jce.TroopMemberListRequest{ @@ -297,6 +303,7 @@ func (c *QQClient) buildGroupMemberListRequestPacket(groupUin, groupCode, nextUi return seq, packet } +// MessageSvc.PbGetMsg func (c *QQClient) buildGetMessageRequestPacket(flag msg.SyncFlag, msgTime int64) (uint16, []byte) { seq := c.nextSeq() cook := c.syncCookie @@ -332,6 +339,7 @@ func (c *QQClient) buildStopGetMessagePacket(msgTime int64) []byte { return pkt } +// MessageSvc.PbDeleteMsg func (c *QQClient) buildDeleteMessageRequestPacket(msg []*pb.MessageItem) (uint16, []byte) { seq := c.nextSeq() req := &pb.DeleteMessageRequest{Items: msg} @@ -340,6 +348,7 @@ func (c *QQClient) buildDeleteMessageRequestPacket(msg []*pb.MessageItem) (uint1 return seq, packet } +// OnlinePush.RespPush func (c *QQClient) buildDeleteOnlinePushPacket(uin int64, seq uint16, delMsg []jce.PushMessageInfo) []byte { req := &jce.SvcRespPushMsg{Uin: uin} for _, m := range delMsg { @@ -367,6 +376,7 @@ func (c *QQClient) buildDeleteOnlinePushPacket(uin int64, seq uint16, delMsg []j return packets.BuildUniPacket(c.Uin, seq, "OnlinePush.RespPush", 1, c.OutGoingPacketSessionId, []byte{}, c.sigInfo.d2Key, pkt.ToBytes()) } +// MessageSvc.PbSendMsg func (c *QQClient) buildGroupSendingPacket(groupCode int64, r int32, m *message.SendingMessage) (uint16, []byte) { seq := c.nextSeq() req := &msg.SendMessageRequest{ @@ -388,6 +398,7 @@ func (c *QQClient) buildGroupSendingPacket(groupCode int64, r int32, m *message. return seq, packet } +// ImgStore.GroupPicUp func (c *QQClient) buildGroupImageStorePacket(groupCode int64, md5 [16]byte, size int32) (uint16, []byte) { seq := c.nextSeq() name := utils.RandomString(16) + ".gif" @@ -460,3 +471,35 @@ func (c *QQClient) buildImageUploadPacket(data, updKey []byte, commandId int32, }) return } + +// ProfileService.Pb.ReqSystemMsgNew.Group +func (c *QQClient) buildSystemMsgNewGroupPacket() (uint16, []byte) { + seq := c.nextSeq() + req := &structmsg.ReqSystemMsgNew{ + MsgNum: 5, + Version: 100, + Checktype: 3, + Flag: &structmsg.FlagInfo{ + GrpMsgKickAdmin: 1, + GrpMsgHiddenGrp: 1, + GrpMsgWordingDown: 1, + GrpMsgGetOfficialAccount: 1, + GrpMsgGetPayInGroup: 1, + FrdMsgDiscuss2ManyChat: 1, + GrpMsgNotAllowJoinGrpInviteNotFrd: 1, + FrdMsgNeedWaitingMsg: 1, + FrdMsgUint32NeedAllUnreadMsg: 1, + GrpMsgNeedAutoAdminWording: 1, + GrpMsgGetTransferGroupMsgFlag: 1, + GrpMsgGetQuitPayGroupMsgFlag: 1, + GrpMsgSupportInviteAutoJoin: 1, + GrpMsgMaskInviteAutoJoin: 1, + GrpMsgGetDisbandedByAdmin: 1, + GrpMsgGetC2CInviteJoinGroup: 1, + }, + FriendMsgTypeFlag: 1, + } + payload, _ := proto.Marshal(req) + packet := packets.BuildUniPacket(c.Uin, seq, "ProfileService.Pb.ReqSystemMsgNew.Group", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload) + return seq, packet +} diff --git a/client/client.go b/client/client.go index 48221c0a..caae27f9 100644 --- a/client/client.go +++ b/client/client.go @@ -95,18 +95,19 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { RandomKey: make([]byte, 16), OutGoingPacketSessionId: []byte{0x02, 0xB0, 0x5B, 0x8B}, decoders: map[string]func(*QQClient, uint16, []byte) (interface{}, error){ - "wtlogin.login": decodeLoginResponse, - "StatSvc.register": decodeClientRegisterResponse, - "MessageSvc.PushNotify": decodeSvcNotify, - "OnlinePush.PbPushGroupMsg": decodeGroupMessagePacket, - "OnlinePush.ReqPush": decodeOnlinePushReqPacket, - "OnlinePush.PbPushTransMsg": decodeOnlinePushTransPacket, - "ConfigPushSvc.PushReq": decodePushReqPacket, - "MessageSvc.PbGetMsg": decodeMessageSvcPacket, - "friendlist.getFriendGroupList": decodeFriendGroupListResponse, - "friendlist.GetTroopListReqV2": decodeGroupListResponse, - "friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse, - "ImgStore.GroupPicUp": decodeGroupImageStoreResponse, + "wtlogin.login": decodeLoginResponse, + "StatSvc.register": decodeClientRegisterResponse, + "MessageSvc.PushNotify": decodeSvcNotify, + "OnlinePush.PbPushGroupMsg": decodeGroupMessagePacket, + "OnlinePush.ReqPush": decodeOnlinePushReqPacket, + "OnlinePush.PbPushTransMsg": decodeOnlinePushTransPacket, + "ConfigPushSvc.PushReq": decodePushReqPacket, + "MessageSvc.PbGetMsg": decodeMessageSvcPacket, + "friendlist.getFriendGroupList": decodeFriendGroupListResponse, + "friendlist.GetTroopListReqV2": decodeGroupListResponse, + "friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse, + "ImgStore.GroupPicUp": decodeGroupImageStoreResponse, + "ProfileService.Pb.ReqSystemMsgNew.Group": decodeSystemMsgGroupPacket, }, handlers: map[uint16]func(interface{}, error){}, sigInfo: &loginSigInfo{}, diff --git a/client/decoders.go b/client/decoders.go index 9e43b1e2..f2b72779 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -6,6 +6,7 @@ import ( "github.com/Mrs4s/MiraiGo/binary/jce" "github.com/Mrs4s/MiraiGo/client/pb" "github.com/Mrs4s/MiraiGo/client/pb/msg" + "github.com/Mrs4s/MiraiGo/client/pb/structmsg" "github.com/golang/protobuf/proto" "sync" "time" @@ -181,6 +182,9 @@ func decodeMessageSvcPacket(c *QQClient, _ uint16, payload []byte) (interface{}, } } groupJoinLock.Unlock() + case 84, 87: + _, pkt := c.buildSystemMsgNewGroupPacket() + _ = c.send(pkt) case 141: // 临时会话 if message.Head.C2CTmpMsgHead == nil { continue @@ -514,3 +518,37 @@ func decodeOnlinePushTransPacket(c *QQClient, _ uint16, payload []byte) (interfa } return nil, nil } + +func decodeSystemMsgGroupPacket(c *QQClient, _ uint16, payload []byte) (interface{}, error) { + rsp := structmsg.RspSystemMsgNew{} + if err := proto.Unmarshal(payload, &rsp); err != nil { + return nil, err + } + if len(rsp.Groupmsgs) == 0 { + return nil, nil + } + st := rsp.Groupmsgs[0] + // 其他SubType不关心 + if st.Msg.SubType == 1 { + switch st.Msg.C2CInviteJoinGroupFlag { + case 0: //成员申请 + c.dispatchJoinGroupRequest(&UserJoinGroupRequest{ + RequestId: st.MsgSeq, + Message: st.Msg.MsgAdditional, + RequesterUin: st.ReqUin, + RequesterNick: st.Msg.ReqUinNick, + GroupCode: st.Msg.GroupCode, + GroupName: st.Msg.GroupName, + }) + case 1: // 被邀请 + c.dispatchGroupInvitedEvent(&GroupInvitedEvent{ + EventId: st.MsgSeq, + InvitorUin: st.Msg.ActionUin, + InvitorNick: st.Msg.ActionUinNick, + GroupCode: st.Msg.GroupCode, + GroupName: st.Msg.GroupName, + }) + } + } + return nil, nil +} diff --git a/client/entities.go b/client/entities.go index 4e0d2f8c..c0ae6e56 100644 --- a/client/entities.go +++ b/client/entities.go @@ -104,6 +104,23 @@ type ( NewPermission MemberPermission } + GroupInvitedEvent struct { + EventId int64 + InvitorUin int64 + InvitorNick string + GroupCode int64 + GroupName string + } + + UserJoinGroupRequest struct { + RequestId int64 + Message string + RequesterUin int64 + RequesterNick string + GroupCode int64 + GroupName string + } + groupMemberListResponse struct { NextUin int64 list []*GroupMemberInfo diff --git a/client/events.go b/client/events.go index 66558cea..0650b420 100644 --- a/client/events.go +++ b/client/events.go @@ -16,6 +16,8 @@ type eventHandlers struct { memberJoinedHandlers []func(*QQClient, *MemberJoinGroupEvent) memberLeavedHandlers []func(*QQClient, *MemberLeaveGroupEvent) permissionChangedHandlers []func(*QQClient, *MemberPermissionChangedEvent) + groupInvitedHandlers []func(*QQClient, *GroupInvitedEvent) + joinRequestHandlers []func(*QQClient, *UserJoinGroupRequest) groupMessageReceiptHandlers sync.Map } @@ -67,6 +69,14 @@ func (c *QQClient) OnGroupMessageRecalled(f func(*QQClient, *GroupMessageRecalle c.eventHandlers.groupRecalledHandlers = append(c.eventHandlers.groupRecalledHandlers, f) } +func (c *QQClient) OnGroupInvited(f func(*QQClient, *GroupInvitedEvent)) { + c.eventHandlers.groupInvitedHandlers = append(c.eventHandlers.groupInvitedHandlers, f) +} + +func (c *QQClient) OnUserWantJoinGroup(f func(*QQClient, *UserJoinGroupRequest)) { + c.eventHandlers.joinRequestHandlers = append(c.eventHandlers.joinRequestHandlers, f) +} + func NewUinFilterPrivate(uin int64) func(*message.PrivateMessage) bool { return func(msg *message.PrivateMessage) bool { return msg.Sender.Uin == uin @@ -198,6 +208,28 @@ func (c *QQClient) dispatchGroupMessageReceiptEvent(e *groupMessageReceiptEvent) }) } +func (c *QQClient) dispatchGroupInvitedEvent(e *GroupInvitedEvent) { + if e == nil { + return + } + for _, f := range c.eventHandlers.groupInvitedHandlers { + cover(func() { + f(c, e) + }) + } +} + +func (c *QQClient) dispatchJoinGroupRequest(r *UserJoinGroupRequest) { + if r == nil { + return + } + for _, f := range c.eventHandlers.joinRequestHandlers { + cover(func() { + f(c, r) + }) + } +} + func cover(f func()) { defer func() { if pan := recover(); pan != nil { diff --git a/client/pb/structmsg/msg.pb.go b/client/pb/structmsg/msg.pb.go new file mode 100644 index 00000000..43266dad --- /dev/null +++ b/client/pb/structmsg/msg.pb.go @@ -0,0 +1,3112 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.11.4 +// source: msg.proto + +package structmsg + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type AddFrdSNInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NotSeeDynamic int32 `protobuf:"varint,1,opt,name=notSeeDynamic,proto3" json:"notSeeDynamic,omitempty"` + SetSn int32 `protobuf:"varint,2,opt,name=setSn,proto3" json:"setSn,omitempty"` +} + +func (x *AddFrdSNInfo) Reset() { + *x = AddFrdSNInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddFrdSNInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddFrdSNInfo) ProtoMessage() {} + +func (x *AddFrdSNInfo) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 AddFrdSNInfo.ProtoReflect.Descriptor instead. +func (*AddFrdSNInfo) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{0} +} + +func (x *AddFrdSNInfo) GetNotSeeDynamic() int32 { + if x != nil { + return x.NotSeeDynamic + } + return 0 +} + +func (x *AddFrdSNInfo) GetSetSn() int32 { + if x != nil { + return x.SetSn + } + return 0 +} + +type FlagInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GrpMsgKickAdmin int32 `protobuf:"varint,1,opt,name=grpMsgKickAdmin,proto3" json:"grpMsgKickAdmin,omitempty"` + GrpMsgHiddenGrp int32 `protobuf:"varint,2,opt,name=grpMsgHiddenGrp,proto3" json:"grpMsgHiddenGrp,omitempty"` + GrpMsgWordingDown int32 `protobuf:"varint,3,opt,name=grpMsgWordingDown,proto3" json:"grpMsgWordingDown,omitempty"` + FrdMsgGetBusiCard int32 `protobuf:"varint,4,opt,name=frdMsgGetBusiCard,proto3" json:"frdMsgGetBusiCard,omitempty"` + GrpMsgGetOfficialAccount int32 `protobuf:"varint,5,opt,name=grpMsgGetOfficialAccount,proto3" json:"grpMsgGetOfficialAccount,omitempty"` + GrpMsgGetPayInGroup int32 `protobuf:"varint,6,opt,name=grpMsgGetPayInGroup,proto3" json:"grpMsgGetPayInGroup,omitempty"` + FrdMsgDiscuss2ManyChat int32 `protobuf:"varint,7,opt,name=frdMsgDiscuss2ManyChat,proto3" json:"frdMsgDiscuss2ManyChat,omitempty"` + GrpMsgNotAllowJoinGrpInviteNotFrd int32 `protobuf:"varint,8,opt,name=grpMsgNotAllowJoinGrpInviteNotFrd,proto3" json:"grpMsgNotAllowJoinGrpInviteNotFrd,omitempty"` + FrdMsgNeedWaitingMsg int32 `protobuf:"varint,9,opt,name=frdMsgNeedWaitingMsg,proto3" json:"frdMsgNeedWaitingMsg,omitempty"` + FrdMsgUint32NeedAllUnreadMsg int32 `protobuf:"varint,10,opt,name=frdMsgUint32NeedAllUnreadMsg,proto3" json:"frdMsgUint32NeedAllUnreadMsg,omitempty"` + GrpMsgNeedAutoAdminWording int32 `protobuf:"varint,11,opt,name=grpMsgNeedAutoAdminWording,proto3" json:"grpMsgNeedAutoAdminWording,omitempty"` + GrpMsgGetTransferGroupMsgFlag int32 `protobuf:"varint,12,opt,name=grpMsgGetTransferGroupMsgFlag,proto3" json:"grpMsgGetTransferGroupMsgFlag,omitempty"` + GrpMsgGetQuitPayGroupMsgFlag int32 `protobuf:"varint,13,opt,name=grpMsgGetQuitPayGroupMsgFlag,proto3" json:"grpMsgGetQuitPayGroupMsgFlag,omitempty"` + GrpMsgSupportInviteAutoJoin int32 `protobuf:"varint,14,opt,name=grpMsgSupportInviteAutoJoin,proto3" json:"grpMsgSupportInviteAutoJoin,omitempty"` + GrpMsgMaskInviteAutoJoin int32 `protobuf:"varint,15,opt,name=grpMsgMaskInviteAutoJoin,proto3" json:"grpMsgMaskInviteAutoJoin,omitempty"` + GrpMsgGetDisbandedByAdmin int32 `protobuf:"varint,16,opt,name=grpMsgGetDisbandedByAdmin,proto3" json:"grpMsgGetDisbandedByAdmin,omitempty"` + GrpMsgGetC2CInviteJoinGroup int32 `protobuf:"varint,17,opt,name=grpMsgGetC2cInviteJoinGroup,proto3" json:"grpMsgGetC2cInviteJoinGroup,omitempty"` +} + +func (x *FlagInfo) Reset() { + *x = FlagInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlagInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlagInfo) ProtoMessage() {} + +func (x *FlagInfo) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 FlagInfo.ProtoReflect.Descriptor instead. +func (*FlagInfo) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{1} +} + +func (x *FlagInfo) GetGrpMsgKickAdmin() int32 { + if x != nil { + return x.GrpMsgKickAdmin + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgHiddenGrp() int32 { + if x != nil { + return x.GrpMsgHiddenGrp + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgWordingDown() int32 { + if x != nil { + return x.GrpMsgWordingDown + } + return 0 +} + +func (x *FlagInfo) GetFrdMsgGetBusiCard() int32 { + if x != nil { + return x.FrdMsgGetBusiCard + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgGetOfficialAccount() int32 { + if x != nil { + return x.GrpMsgGetOfficialAccount + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgGetPayInGroup() int32 { + if x != nil { + return x.GrpMsgGetPayInGroup + } + return 0 +} + +func (x *FlagInfo) GetFrdMsgDiscuss2ManyChat() int32 { + if x != nil { + return x.FrdMsgDiscuss2ManyChat + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgNotAllowJoinGrpInviteNotFrd() int32 { + if x != nil { + return x.GrpMsgNotAllowJoinGrpInviteNotFrd + } + return 0 +} + +func (x *FlagInfo) GetFrdMsgNeedWaitingMsg() int32 { + if x != nil { + return x.FrdMsgNeedWaitingMsg + } + return 0 +} + +func (x *FlagInfo) GetFrdMsgUint32NeedAllUnreadMsg() int32 { + if x != nil { + return x.FrdMsgUint32NeedAllUnreadMsg + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgNeedAutoAdminWording() int32 { + if x != nil { + return x.GrpMsgNeedAutoAdminWording + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgGetTransferGroupMsgFlag() int32 { + if x != nil { + return x.GrpMsgGetTransferGroupMsgFlag + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgGetQuitPayGroupMsgFlag() int32 { + if x != nil { + return x.GrpMsgGetQuitPayGroupMsgFlag + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgSupportInviteAutoJoin() int32 { + if x != nil { + return x.GrpMsgSupportInviteAutoJoin + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgMaskInviteAutoJoin() int32 { + if x != nil { + return x.GrpMsgMaskInviteAutoJoin + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgGetDisbandedByAdmin() int32 { + if x != nil { + return x.GrpMsgGetDisbandedByAdmin + } + return 0 +} + +func (x *FlagInfo) GetGrpMsgGetC2CInviteJoinGroup() int32 { + if x != nil { + return x.GrpMsgGetC2CInviteJoinGroup + } + return 0 +} + +type FriendInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MsgJointFriend string `protobuf:"bytes,1,opt,name=msgJointFriend,proto3" json:"msgJointFriend,omitempty"` + MsgBlacklist string `protobuf:"bytes,2,opt,name=msgBlacklist,proto3" json:"msgBlacklist,omitempty"` +} + +func (x *FriendInfo) Reset() { + *x = FriendInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[2] + 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_msg_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 FriendInfo.ProtoReflect.Descriptor instead. +func (*FriendInfo) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{2} +} + +func (x *FriendInfo) GetMsgJointFriend() string { + if x != nil { + return x.MsgJointFriend + } + return "" +} + +func (x *FriendInfo) GetMsgBlacklist() string { + if x != nil { + return x.MsgBlacklist + } + return "" +} + +type GroupInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupAuthType int32 `protobuf:"varint,1,opt,name=groupAuthType,proto3" json:"groupAuthType,omitempty"` + DisplayAction int32 `protobuf:"varint,2,opt,name=displayAction,proto3" json:"displayAction,omitempty"` + MsgAlert string `protobuf:"bytes,3,opt,name=msgAlert,proto3" json:"msgAlert,omitempty"` + MsgDetailAlert string `protobuf:"bytes,4,opt,name=msgDetailAlert,proto3" json:"msgDetailAlert,omitempty"` + MsgOtherAdminDone string `protobuf:"bytes,5,opt,name=msgOtherAdminDone,proto3" json:"msgOtherAdminDone,omitempty"` + AppPrivilegeFlag int32 `protobuf:"varint,6,opt,name=appPrivilegeFlag,proto3" json:"appPrivilegeFlag,omitempty"` +} + +func (x *GroupInfo) Reset() { + *x = GroupInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[3] + 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_msg_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 GroupInfo.ProtoReflect.Descriptor instead. +func (*GroupInfo) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{3} +} + +func (x *GroupInfo) GetGroupAuthType() int32 { + if x != nil { + return x.GroupAuthType + } + return 0 +} + +func (x *GroupInfo) GetDisplayAction() int32 { + if x != nil { + return x.DisplayAction + } + return 0 +} + +func (x *GroupInfo) GetMsgAlert() string { + if x != nil { + return x.MsgAlert + } + return "" +} + +func (x *GroupInfo) GetMsgDetailAlert() string { + if x != nil { + return x.MsgDetailAlert + } + return "" +} + +func (x *GroupInfo) GetMsgOtherAdminDone() string { + if x != nil { + return x.MsgOtherAdminDone + } + return "" +} + +func (x *GroupInfo) GetAppPrivilegeFlag() int32 { + if x != nil { + return x.AppPrivilegeFlag + } + return 0 +} + +type MsgInviteExt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SrcType int32 `protobuf:"varint,1,opt,name=srcType,proto3" json:"srcType,omitempty"` + SrcCode int64 `protobuf:"varint,2,opt,name=srcCode,proto3" json:"srcCode,omitempty"` + WaitState int32 `protobuf:"varint,3,opt,name=waitState,proto3" json:"waitState,omitempty"` +} + +func (x *MsgInviteExt) Reset() { + *x = MsgInviteExt{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgInviteExt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgInviteExt) ProtoMessage() {} + +func (x *MsgInviteExt) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 MsgInviteExt.ProtoReflect.Descriptor instead. +func (*MsgInviteExt) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{4} +} + +func (x *MsgInviteExt) GetSrcType() int32 { + if x != nil { + return x.SrcType + } + return 0 +} + +func (x *MsgInviteExt) GetSrcCode() int64 { + if x != nil { + return x.SrcCode + } + return 0 +} + +func (x *MsgInviteExt) GetWaitState() int32 { + if x != nil { + return x.WaitState + } + return 0 +} + +type MsgPayGroupExt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + JoinGrpTime int64 `protobuf:"varint,1,opt,name=joinGrpTime,proto3" json:"joinGrpTime,omitempty"` + QuitGrpTime int64 `protobuf:"varint,2,opt,name=quitGrpTime,proto3" json:"quitGrpTime,omitempty"` +} + +func (x *MsgPayGroupExt) Reset() { + *x = MsgPayGroupExt{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgPayGroupExt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgPayGroupExt) ProtoMessage() {} + +func (x *MsgPayGroupExt) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 MsgPayGroupExt.ProtoReflect.Descriptor instead. +func (*MsgPayGroupExt) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{5} +} + +func (x *MsgPayGroupExt) GetJoinGrpTime() int64 { + if x != nil { + return x.JoinGrpTime + } + return 0 +} + +func (x *MsgPayGroupExt) GetQuitGrpTime() int64 { + if x != nil { + return x.QuitGrpTime + } + return 0 +} + +type ReqNextSystemMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MsgNum int32 `protobuf:"varint,1,opt,name=msgNum,proto3" json:"msgNum,omitempty"` + FollowingFriendSeq int64 `protobuf:"varint,2,opt,name=followingFriendSeq,proto3" json:"followingFriendSeq,omitempty"` + FollowingGroupSeq int64 `protobuf:"varint,3,opt,name=followingGroupSeq,proto3" json:"followingGroupSeq,omitempty"` + Checktype int32 `protobuf:"varint,4,opt,name=checktype,proto3" json:"checktype,omitempty"` + Flag *FlagInfo `protobuf:"bytes,5,opt,name=flag,proto3" json:"flag,omitempty"` + Language int32 `protobuf:"varint,6,opt,name=language,proto3" json:"language,omitempty"` + Version int32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"` + FriendMsgTypeFlag int64 `protobuf:"varint,8,opt,name=friendMsgTypeFlag,proto3" json:"friendMsgTypeFlag,omitempty"` +} + +func (x *ReqNextSystemMsg) Reset() { + *x = ReqNextSystemMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReqNextSystemMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqNextSystemMsg) ProtoMessage() {} + +func (x *ReqNextSystemMsg) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 ReqNextSystemMsg.ProtoReflect.Descriptor instead. +func (*ReqNextSystemMsg) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{6} +} + +func (x *ReqNextSystemMsg) GetMsgNum() int32 { + if x != nil { + return x.MsgNum + } + return 0 +} + +func (x *ReqNextSystemMsg) GetFollowingFriendSeq() int64 { + if x != nil { + return x.FollowingFriendSeq + } + return 0 +} + +func (x *ReqNextSystemMsg) GetFollowingGroupSeq() int64 { + if x != nil { + return x.FollowingGroupSeq + } + return 0 +} + +func (x *ReqNextSystemMsg) GetChecktype() int32 { + if x != nil { + return x.Checktype + } + return 0 +} + +func (x *ReqNextSystemMsg) GetFlag() *FlagInfo { + if x != nil { + return x.Flag + } + return nil +} + +func (x *ReqNextSystemMsg) GetLanguage() int32 { + if x != nil { + return x.Language + } + return 0 +} + +func (x *ReqNextSystemMsg) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ReqNextSystemMsg) GetFriendMsgTypeFlag() int64 { + if x != nil { + return x.FriendMsgTypeFlag + } + return 0 +} + +type ReqSystemMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MsgNum int32 `protobuf:"varint,1,opt,name=msgNum,proto3" json:"msgNum,omitempty"` + LatestFriendSeq int64 `protobuf:"varint,2,opt,name=latestFriendSeq,proto3" json:"latestFriendSeq,omitempty"` + LatestGroupSeq int64 `protobuf:"varint,3,opt,name=latestGroupSeq,proto3" json:"latestGroupSeq,omitempty"` + Version int32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` + Language int32 `protobuf:"varint,5,opt,name=language,proto3" json:"language,omitempty"` +} + +func (x *ReqSystemMsg) Reset() { + *x = ReqSystemMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReqSystemMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqSystemMsg) ProtoMessage() {} + +func (x *ReqSystemMsg) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 ReqSystemMsg.ProtoReflect.Descriptor instead. +func (*ReqSystemMsg) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{7} +} + +func (x *ReqSystemMsg) GetMsgNum() int32 { + if x != nil { + return x.MsgNum + } + return 0 +} + +func (x *ReqSystemMsg) GetLatestFriendSeq() int64 { + if x != nil { + return x.LatestFriendSeq + } + return 0 +} + +func (x *ReqSystemMsg) GetLatestGroupSeq() int64 { + if x != nil { + return x.LatestGroupSeq + } + return 0 +} + +func (x *ReqSystemMsg) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ReqSystemMsg) GetLanguage() int32 { + if x != nil { + return x.Language + } + return 0 +} + +type ReqSystemMsgAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MsgType int32 `protobuf:"varint,1,opt,name=msgType,proto3" json:"msgType,omitempty"` + MsgSeq int64 `protobuf:"varint,2,opt,name=msgSeq,proto3" json:"msgSeq,omitempty"` + ReqUin int64 `protobuf:"varint,3,opt,name=reqUin,proto3" json:"reqUin,omitempty"` + SubType int32 `protobuf:"varint,4,opt,name=subType,proto3" json:"subType,omitempty"` + SrcId int32 `protobuf:"varint,5,opt,name=srcId,proto3" json:"srcId,omitempty"` + SubSrcId int32 `protobuf:"varint,6,opt,name=subSrcId,proto3" json:"subSrcId,omitempty"` + GroupMsgType int32 `protobuf:"varint,7,opt,name=groupMsgType,proto3" json:"groupMsgType,omitempty"` + ActionInfo *SystemMsgActionInfo `protobuf:"bytes,8,opt,name=actionInfo,proto3" json:"actionInfo,omitempty"` + Language int32 `protobuf:"varint,9,opt,name=language,proto3" json:"language,omitempty"` +} + +func (x *ReqSystemMsgAction) Reset() { + *x = ReqSystemMsgAction{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReqSystemMsgAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqSystemMsgAction) ProtoMessage() {} + +func (x *ReqSystemMsgAction) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 ReqSystemMsgAction.ProtoReflect.Descriptor instead. +func (*ReqSystemMsgAction) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{8} +} + +func (x *ReqSystemMsgAction) GetMsgType() int32 { + if x != nil { + return x.MsgType + } + return 0 +} + +func (x *ReqSystemMsgAction) GetMsgSeq() int64 { + if x != nil { + return x.MsgSeq + } + return 0 +} + +func (x *ReqSystemMsgAction) GetReqUin() int64 { + if x != nil { + return x.ReqUin + } + return 0 +} + +func (x *ReqSystemMsgAction) GetSubType() int32 { + if x != nil { + return x.SubType + } + return 0 +} + +func (x *ReqSystemMsgAction) GetSrcId() int32 { + if x != nil { + return x.SrcId + } + return 0 +} + +func (x *ReqSystemMsgAction) GetSubSrcId() int32 { + if x != nil { + return x.SubSrcId + } + return 0 +} + +func (x *ReqSystemMsgAction) GetGroupMsgType() int32 { + if x != nil { + return x.GroupMsgType + } + return 0 +} + +func (x *ReqSystemMsgAction) GetActionInfo() *SystemMsgActionInfo { + if x != nil { + return x.ActionInfo + } + return nil +} + +func (x *ReqSystemMsgAction) GetLanguage() int32 { + if x != nil { + return x.Language + } + return 0 +} + +type ReqSystemMsgNew struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MsgNum int32 `protobuf:"varint,1,opt,name=msgNum,proto3" json:"msgNum,omitempty"` + LatestFriendSeq int64 `protobuf:"varint,2,opt,name=latestFriendSeq,proto3" json:"latestFriendSeq,omitempty"` + LatestGroupSeq int64 `protobuf:"varint,3,opt,name=latestGroupSeq,proto3" json:"latestGroupSeq,omitempty"` + Version int32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` + Checktype int32 `protobuf:"varint,5,opt,name=checktype,proto3" json:"checktype,omitempty"` + Flag *FlagInfo `protobuf:"bytes,6,opt,name=flag,proto3" json:"flag,omitempty"` + Language int32 `protobuf:"varint,7,opt,name=language,proto3" json:"language,omitempty"` + IsGetFrdRibbon bool `protobuf:"varint,8,opt,name=isGetFrdRibbon,proto3" json:"isGetFrdRibbon,omitempty"` + IsGetGrpRibbon bool `protobuf:"varint,9,opt,name=isGetGrpRibbon,proto3" json:"isGetGrpRibbon,omitempty"` + FriendMsgTypeFlag int64 `protobuf:"varint,10,opt,name=friendMsgTypeFlag,proto3" json:"friendMsgTypeFlag,omitempty"` +} + +func (x *ReqSystemMsgNew) Reset() { + *x = ReqSystemMsgNew{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReqSystemMsgNew) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqSystemMsgNew) ProtoMessage() {} + +func (x *ReqSystemMsgNew) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 ReqSystemMsgNew.ProtoReflect.Descriptor instead. +func (*ReqSystemMsgNew) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{9} +} + +func (x *ReqSystemMsgNew) GetMsgNum() int32 { + if x != nil { + return x.MsgNum + } + return 0 +} + +func (x *ReqSystemMsgNew) GetLatestFriendSeq() int64 { + if x != nil { + return x.LatestFriendSeq + } + return 0 +} + +func (x *ReqSystemMsgNew) GetLatestGroupSeq() int64 { + if x != nil { + return x.LatestGroupSeq + } + return 0 +} + +func (x *ReqSystemMsgNew) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ReqSystemMsgNew) GetChecktype() int32 { + if x != nil { + return x.Checktype + } + return 0 +} + +func (x *ReqSystemMsgNew) GetFlag() *FlagInfo { + if x != nil { + return x.Flag + } + return nil +} + +func (x *ReqSystemMsgNew) GetLanguage() int32 { + if x != nil { + return x.Language + } + return 0 +} + +func (x *ReqSystemMsgNew) GetIsGetFrdRibbon() bool { + if x != nil { + return x.IsGetFrdRibbon + } + return false +} + +func (x *ReqSystemMsgNew) GetIsGetGrpRibbon() bool { + if x != nil { + return x.IsGetGrpRibbon + } + return false +} + +func (x *ReqSystemMsgNew) GetFriendMsgTypeFlag() int64 { + if x != nil { + return x.FriendMsgTypeFlag + } + return 0 +} + +type ReqSystemMsgRead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LatestFriendSeq int64 `protobuf:"varint,1,opt,name=latestFriendSeq,proto3" json:"latestFriendSeq,omitempty"` + LatestGroupSeq int64 `protobuf:"varint,2,opt,name=latestGroupSeq,proto3" json:"latestGroupSeq,omitempty"` + Type int32 `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"` + Checktype int32 `protobuf:"varint,4,opt,name=checktype,proto3" json:"checktype,omitempty"` +} + +func (x *ReqSystemMsgRead) Reset() { + *x = ReqSystemMsgRead{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReqSystemMsgRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqSystemMsgRead) ProtoMessage() {} + +func (x *ReqSystemMsgRead) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 ReqSystemMsgRead.ProtoReflect.Descriptor instead. +func (*ReqSystemMsgRead) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{10} +} + +func (x *ReqSystemMsgRead) GetLatestFriendSeq() int64 { + if x != nil { + return x.LatestFriendSeq + } + return 0 +} + +func (x *ReqSystemMsgRead) GetLatestGroupSeq() int64 { + if x != nil { + return x.LatestGroupSeq + } + return 0 +} + +func (x *ReqSystemMsgRead) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *ReqSystemMsgRead) GetChecktype() int32 { + if x != nil { + return x.Checktype + } + return 0 +} + +type RspHead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result int32 `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"` + MsgFail string `protobuf:"bytes,2,opt,name=msgFail,proto3" json:"msgFail,omitempty"` +} + +func (x *RspHead) Reset() { + *x = RspHead{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspHead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspHead) ProtoMessage() {} + +func (x *RspHead) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 RspHead.ProtoReflect.Descriptor instead. +func (*RspHead) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{11} +} + +func (x *RspHead) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *RspHead) GetMsgFail() string { + if x != nil { + return x.MsgFail + } + return "" +} + +type RspNextSystemMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Head *RspHead `protobuf:"bytes,1,opt,name=head,proto3" json:"head,omitempty"` + Msgs []*StructMsg `protobuf:"bytes,2,rep,name=msgs,proto3" json:"msgs,omitempty"` + FollowingFriendSeq int64 `protobuf:"varint,3,opt,name=followingFriendSeq,proto3" json:"followingFriendSeq,omitempty"` + FollowingGroupSeq int64 `protobuf:"varint,4,opt,name=followingGroupSeq,proto3" json:"followingGroupSeq,omitempty"` + Checktype int32 `protobuf:"varint,5,opt,name=checktype,proto3" json:"checktype,omitempty"` + GameNick string `protobuf:"bytes,100,opt,name=gameNick,proto3" json:"gameNick,omitempty"` + UndecidForQim []byte `protobuf:"bytes,101,opt,name=undecidForQim,proto3" json:"undecidForQim,omitempty"` + UnReadCount3 int32 `protobuf:"varint,102,opt,name=unReadCount3,proto3" json:"unReadCount3,omitempty"` +} + +func (x *RspNextSystemMsg) Reset() { + *x = RspNextSystemMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspNextSystemMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspNextSystemMsg) ProtoMessage() {} + +func (x *RspNextSystemMsg) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 RspNextSystemMsg.ProtoReflect.Descriptor instead. +func (*RspNextSystemMsg) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{12} +} + +func (x *RspNextSystemMsg) GetHead() *RspHead { + if x != nil { + return x.Head + } + return nil +} + +func (x *RspNextSystemMsg) GetMsgs() []*StructMsg { + if x != nil { + return x.Msgs + } + return nil +} + +func (x *RspNextSystemMsg) GetFollowingFriendSeq() int64 { + if x != nil { + return x.FollowingFriendSeq + } + return 0 +} + +func (x *RspNextSystemMsg) GetFollowingGroupSeq() int64 { + if x != nil { + return x.FollowingGroupSeq + } + return 0 +} + +func (x *RspNextSystemMsg) GetChecktype() int32 { + if x != nil { + return x.Checktype + } + return 0 +} + +func (x *RspNextSystemMsg) GetGameNick() string { + if x != nil { + return x.GameNick + } + return "" +} + +func (x *RspNextSystemMsg) GetUndecidForQim() []byte { + if x != nil { + return x.UndecidForQim + } + return nil +} + +func (x *RspNextSystemMsg) GetUnReadCount3() int32 { + if x != nil { + return x.UnReadCount3 + } + return 0 +} + +type RspSystemMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Head *RspHead `protobuf:"bytes,1,opt,name=head,proto3" json:"head,omitempty"` + Msgs []*StructMsg `protobuf:"bytes,2,rep,name=msgs,proto3" json:"msgs,omitempty"` + UnreadCount int32 `protobuf:"varint,3,opt,name=unreadCount,proto3" json:"unreadCount,omitempty"` + LatestFriendSeq int64 `protobuf:"varint,4,opt,name=latestFriendSeq,proto3" json:"latestFriendSeq,omitempty"` + LatestGroupSeq int64 `protobuf:"varint,5,opt,name=latestGroupSeq,proto3" json:"latestGroupSeq,omitempty"` + FollowingFriendSeq int64 `protobuf:"varint,6,opt,name=followingFriendSeq,proto3" json:"followingFriendSeq,omitempty"` + FollowingGroupSeq int64 `protobuf:"varint,7,opt,name=followingGroupSeq,proto3" json:"followingGroupSeq,omitempty"` + MsgDisplay string `protobuf:"bytes,8,opt,name=msgDisplay,proto3" json:"msgDisplay,omitempty"` +} + +func (x *RspSystemMsg) Reset() { + *x = RspSystemMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspSystemMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspSystemMsg) ProtoMessage() {} + +func (x *RspSystemMsg) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 RspSystemMsg.ProtoReflect.Descriptor instead. +func (*RspSystemMsg) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{13} +} + +func (x *RspSystemMsg) GetHead() *RspHead { + if x != nil { + return x.Head + } + return nil +} + +func (x *RspSystemMsg) GetMsgs() []*StructMsg { + if x != nil { + return x.Msgs + } + return nil +} + +func (x *RspSystemMsg) GetUnreadCount() int32 { + if x != nil { + return x.UnreadCount + } + return 0 +} + +func (x *RspSystemMsg) GetLatestFriendSeq() int64 { + if x != nil { + return x.LatestFriendSeq + } + return 0 +} + +func (x *RspSystemMsg) GetLatestGroupSeq() int64 { + if x != nil { + return x.LatestGroupSeq + } + return 0 +} + +func (x *RspSystemMsg) GetFollowingFriendSeq() int64 { + if x != nil { + return x.FollowingFriendSeq + } + return 0 +} + +func (x *RspSystemMsg) GetFollowingGroupSeq() int64 { + if x != nil { + return x.FollowingGroupSeq + } + return 0 +} + +func (x *RspSystemMsg) GetMsgDisplay() string { + if x != nil { + return x.MsgDisplay + } + return "" +} + +type RspSystemMsgAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Head *RspHead `protobuf:"bytes,1,opt,name=head,proto3" json:"head,omitempty"` + MsgDetail string `protobuf:"bytes,2,opt,name=msgDetail,proto3" json:"msgDetail,omitempty"` + Type int32 `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"` + MsgInvalidDecided string `protobuf:"bytes,5,opt,name=msgInvalidDecided,proto3" json:"msgInvalidDecided,omitempty"` + RemarkResult int32 `protobuf:"varint,6,opt,name=remarkResult,proto3" json:"remarkResult,omitempty"` +} + +func (x *RspSystemMsgAction) Reset() { + *x = RspSystemMsgAction{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspSystemMsgAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspSystemMsgAction) ProtoMessage() {} + +func (x *RspSystemMsgAction) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 RspSystemMsgAction.ProtoReflect.Descriptor instead. +func (*RspSystemMsgAction) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{14} +} + +func (x *RspSystemMsgAction) GetHead() *RspHead { + if x != nil { + return x.Head + } + return nil +} + +func (x *RspSystemMsgAction) GetMsgDetail() string { + if x != nil { + return x.MsgDetail + } + return "" +} + +func (x *RspSystemMsgAction) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *RspSystemMsgAction) GetMsgInvalidDecided() string { + if x != nil { + return x.MsgInvalidDecided + } + return "" +} + +func (x *RspSystemMsgAction) GetRemarkResult() int32 { + if x != nil { + return x.RemarkResult + } + return 0 +} + +type RspSystemMsgNew struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Head *RspHead `protobuf:"bytes,1,opt,name=head,proto3" json:"head,omitempty"` + UnreadFriendCount int32 `protobuf:"varint,2,opt,name=unreadFriendCount,proto3" json:"unreadFriendCount,omitempty"` + UnreadGroupCount int32 `protobuf:"varint,3,opt,name=unreadGroupCount,proto3" json:"unreadGroupCount,omitempty"` + LatestFriendSeq int64 `protobuf:"varint,4,opt,name=latestFriendSeq,proto3" json:"latestFriendSeq,omitempty"` + LatestGroupSeq int64 `protobuf:"varint,5,opt,name=latestGroupSeq,proto3" json:"latestGroupSeq,omitempty"` + FollowingFriendSeq int64 `protobuf:"varint,6,opt,name=followingFriendSeq,proto3" json:"followingFriendSeq,omitempty"` + FollowingGroupSeq int64 `protobuf:"varint,7,opt,name=followingGroupSeq,proto3" json:"followingGroupSeq,omitempty"` + Friendmsgs []*StructMsg `protobuf:"bytes,9,rep,name=friendmsgs,proto3" json:"friendmsgs,omitempty"` + Groupmsgs []*StructMsg `protobuf:"bytes,10,rep,name=groupmsgs,proto3" json:"groupmsgs,omitempty"` + MsgRibbonFriend *StructMsg `protobuf:"bytes,11,opt,name=msgRibbonFriend,proto3" json:"msgRibbonFriend,omitempty"` + MsgRibbonGroup *StructMsg `protobuf:"bytes,12,opt,name=msgRibbonGroup,proto3" json:"msgRibbonGroup,omitempty"` + MsgDisplay string `protobuf:"bytes,13,opt,name=msgDisplay,proto3" json:"msgDisplay,omitempty"` + GrpMsgDisplay string `protobuf:"bytes,14,opt,name=grpMsgDisplay,proto3" json:"grpMsgDisplay,omitempty"` + Over int32 `protobuf:"varint,15,opt,name=over,proto3" json:"over,omitempty"` + Checktype int32 `protobuf:"varint,20,opt,name=checktype,proto3" json:"checktype,omitempty"` + GameNick string `protobuf:"bytes,100,opt,name=gameNick,proto3" json:"gameNick,omitempty"` + UndecidForQim []byte `protobuf:"bytes,101,opt,name=undecidForQim,proto3" json:"undecidForQim,omitempty"` + UnReadCount3 int32 `protobuf:"varint,102,opt,name=unReadCount3,proto3" json:"unReadCount3,omitempty"` +} + +func (x *RspSystemMsgNew) Reset() { + *x = RspSystemMsgNew{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspSystemMsgNew) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspSystemMsgNew) ProtoMessage() {} + +func (x *RspSystemMsgNew) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 RspSystemMsgNew.ProtoReflect.Descriptor instead. +func (*RspSystemMsgNew) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{15} +} + +func (x *RspSystemMsgNew) GetHead() *RspHead { + if x != nil { + return x.Head + } + return nil +} + +func (x *RspSystemMsgNew) GetUnreadFriendCount() int32 { + if x != nil { + return x.UnreadFriendCount + } + return 0 +} + +func (x *RspSystemMsgNew) GetUnreadGroupCount() int32 { + if x != nil { + return x.UnreadGroupCount + } + return 0 +} + +func (x *RspSystemMsgNew) GetLatestFriendSeq() int64 { + if x != nil { + return x.LatestFriendSeq + } + return 0 +} + +func (x *RspSystemMsgNew) GetLatestGroupSeq() int64 { + if x != nil { + return x.LatestGroupSeq + } + return 0 +} + +func (x *RspSystemMsgNew) GetFollowingFriendSeq() int64 { + if x != nil { + return x.FollowingFriendSeq + } + return 0 +} + +func (x *RspSystemMsgNew) GetFollowingGroupSeq() int64 { + if x != nil { + return x.FollowingGroupSeq + } + return 0 +} + +func (x *RspSystemMsgNew) GetFriendmsgs() []*StructMsg { + if x != nil { + return x.Friendmsgs + } + return nil +} + +func (x *RspSystemMsgNew) GetGroupmsgs() []*StructMsg { + if x != nil { + return x.Groupmsgs + } + return nil +} + +func (x *RspSystemMsgNew) GetMsgRibbonFriend() *StructMsg { + if x != nil { + return x.MsgRibbonFriend + } + return nil +} + +func (x *RspSystemMsgNew) GetMsgRibbonGroup() *StructMsg { + if x != nil { + return x.MsgRibbonGroup + } + return nil +} + +func (x *RspSystemMsgNew) GetMsgDisplay() string { + if x != nil { + return x.MsgDisplay + } + return "" +} + +func (x *RspSystemMsgNew) GetGrpMsgDisplay() string { + if x != nil { + return x.GrpMsgDisplay + } + return "" +} + +func (x *RspSystemMsgNew) GetOver() int32 { + if x != nil { + return x.Over + } + return 0 +} + +func (x *RspSystemMsgNew) GetChecktype() int32 { + if x != nil { + return x.Checktype + } + return 0 +} + +func (x *RspSystemMsgNew) GetGameNick() string { + if x != nil { + return x.GameNick + } + return "" +} + +func (x *RspSystemMsgNew) GetUndecidForQim() []byte { + if x != nil { + return x.UndecidForQim + } + return nil +} + +func (x *RspSystemMsgNew) GetUnReadCount3() int32 { + if x != nil { + return x.UnReadCount3 + } + return 0 +} + +type RspSystemMsgRead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Head *RspHead `protobuf:"bytes,1,opt,name=head,proto3" json:"head,omitempty"` + Type int32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` + Checktype int32 `protobuf:"varint,3,opt,name=checktype,proto3" json:"checktype,omitempty"` +} + +func (x *RspSystemMsgRead) Reset() { + *x = RspSystemMsgRead{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RspSystemMsgRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RspSystemMsgRead) ProtoMessage() {} + +func (x *RspSystemMsgRead) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 RspSystemMsgRead.ProtoReflect.Descriptor instead. +func (*RspSystemMsgRead) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{16} +} + +func (x *RspSystemMsgRead) GetHead() *RspHead { + if x != nil { + return x.Head + } + return nil +} + +func (x *RspSystemMsgRead) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *RspSystemMsgRead) GetChecktype() int32 { + if x != nil { + return x.Checktype + } + return 0 +} + +type StructMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + MsgType int32 `protobuf:"varint,2,opt,name=msgType,proto3" json:"msgType,omitempty"` + MsgSeq int64 `protobuf:"varint,3,opt,name=msgSeq,proto3" json:"msgSeq,omitempty"` + MsgTime int64 `protobuf:"varint,4,opt,name=msgTime,proto3" json:"msgTime,omitempty"` + ReqUin int64 `protobuf:"varint,5,opt,name=reqUin,proto3" json:"reqUin,omitempty"` + UnreadFlag int32 `protobuf:"varint,6,opt,name=unreadFlag,proto3" json:"unreadFlag,omitempty"` + Msg *SystemMsg `protobuf:"bytes,50,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *StructMsg) Reset() { + *x = StructMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StructMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StructMsg) ProtoMessage() {} + +func (x *StructMsg) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 StructMsg.ProtoReflect.Descriptor instead. +func (*StructMsg) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{17} +} + +func (x *StructMsg) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *StructMsg) GetMsgType() int32 { + if x != nil { + return x.MsgType + } + return 0 +} + +func (x *StructMsg) GetMsgSeq() int64 { + if x != nil { + return x.MsgSeq + } + return 0 +} + +func (x *StructMsg) GetMsgTime() int64 { + if x != nil { + return x.MsgTime + } + return 0 +} + +func (x *StructMsg) GetReqUin() int64 { + if x != nil { + return x.ReqUin + } + return 0 +} + +func (x *StructMsg) GetUnreadFlag() int32 { + if x != nil { + return x.UnreadFlag + } + return 0 +} + +func (x *StructMsg) GetMsg() *SystemMsg { + if x != nil { + return x.Msg + } + return nil +} + +type SystemMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubType int32 `protobuf:"varint,1,opt,name=subType,proto3" json:"subType,omitempty"` + MsgTitle string `protobuf:"bytes,2,opt,name=msgTitle,proto3" json:"msgTitle,omitempty"` + MsgDescribe string `protobuf:"bytes,3,opt,name=msgDescribe,proto3" json:"msgDescribe,omitempty"` + MsgAdditional string `protobuf:"bytes,4,opt,name=msgAdditional,proto3" json:"msgAdditional,omitempty"` + MsgSource string `protobuf:"bytes,5,opt,name=msgSource,proto3" json:"msgSource,omitempty"` + MsgDecided string `protobuf:"bytes,6,opt,name=msgDecided,proto3" json:"msgDecided,omitempty"` + SrcId int32 `protobuf:"varint,7,opt,name=srcId,proto3" json:"srcId,omitempty"` + SubSrcId int32 `protobuf:"varint,8,opt,name=subSrcId,proto3" json:"subSrcId,omitempty"` + Actions []*SystemMsgAction `protobuf:"bytes,9,rep,name=actions,proto3" json:"actions,omitempty"` + GroupCode int64 `protobuf:"varint,10,opt,name=groupCode,proto3" json:"groupCode,omitempty"` + ActionUin int64 `protobuf:"varint,11,opt,name=actionUin,proto3" json:"actionUin,omitempty"` + GroupMsgType int32 `protobuf:"varint,12,opt,name=groupMsgType,proto3" json:"groupMsgType,omitempty"` + GroupInviterRole int32 `protobuf:"varint,13,opt,name=groupInviterRole,proto3" json:"groupInviterRole,omitempty"` + FriendInfo *FriendInfo `protobuf:"bytes,14,opt,name=friendInfo,proto3" json:"friendInfo,omitempty"` + GroupInfo *GroupInfo `protobuf:"bytes,15,opt,name=groupInfo,proto3" json:"groupInfo,omitempty"` + ActorUin int64 `protobuf:"varint,16,opt,name=actorUin,proto3" json:"actorUin,omitempty"` + MsgActorDescribe string `protobuf:"bytes,17,opt,name=msgActorDescribe,proto3" json:"msgActorDescribe,omitempty"` + MsgAdditionalList string `protobuf:"bytes,18,opt,name=msgAdditionalList,proto3" json:"msgAdditionalList,omitempty"` + Relation int32 `protobuf:"varint,19,opt,name=relation,proto3" json:"relation,omitempty"` + Reqsubtype int32 `protobuf:"varint,20,opt,name=reqsubtype,proto3" json:"reqsubtype,omitempty"` + CloneUin int64 `protobuf:"varint,21,opt,name=cloneUin,proto3" json:"cloneUin,omitempty"` + DiscussUin int64 `protobuf:"varint,22,opt,name=discussUin,proto3" json:"discussUin,omitempty"` + EimGroupId int64 `protobuf:"varint,23,opt,name=eimGroupId,proto3" json:"eimGroupId,omitempty"` + MsgInviteExtinfo *MsgInviteExt `protobuf:"bytes,24,opt,name=msgInviteExtinfo,proto3" json:"msgInviteExtinfo,omitempty"` + MsgPayGroupExtinfo *MsgPayGroupExt `protobuf:"bytes,25,opt,name=msgPayGroupExtinfo,proto3" json:"msgPayGroupExtinfo,omitempty"` + SourceFlag int32 `protobuf:"varint,26,opt,name=sourceFlag,proto3" json:"sourceFlag,omitempty"` + GameNick []byte `protobuf:"bytes,27,opt,name=gameNick,proto3" json:"gameNick,omitempty"` + GameMsg []byte `protobuf:"bytes,28,opt,name=gameMsg,proto3" json:"gameMsg,omitempty"` + GroupFlagext3 int32 `protobuf:"varint,29,opt,name=groupFlagext3,proto3" json:"groupFlagext3,omitempty"` + GroupOwnerUin int64 `protobuf:"varint,30,opt,name=groupOwnerUin,proto3" json:"groupOwnerUin,omitempty"` + DoubtFlag int32 `protobuf:"varint,31,opt,name=doubtFlag,proto3" json:"doubtFlag,omitempty"` + WarningTips []byte `protobuf:"bytes,32,opt,name=warningTips,proto3" json:"warningTips,omitempty"` + NameMore []byte `protobuf:"bytes,33,opt,name=nameMore,proto3" json:"nameMore,omitempty"` + ReqUinFaceid int32 `protobuf:"varint,50,opt,name=reqUinFaceid,proto3" json:"reqUinFaceid,omitempty"` + ReqUinNick string `protobuf:"bytes,51,opt,name=reqUinNick,proto3" json:"reqUinNick,omitempty"` + GroupName string `protobuf:"bytes,52,opt,name=groupName,proto3" json:"groupName,omitempty"` + ActionUinNick string `protobuf:"bytes,53,opt,name=actionUinNick,proto3" json:"actionUinNick,omitempty"` + MsgQna string `protobuf:"bytes,54,opt,name=msgQna,proto3" json:"msgQna,omitempty"` + MsgDetail string `protobuf:"bytes,55,opt,name=msgDetail,proto3" json:"msgDetail,omitempty"` + GroupExtFlag int32 `protobuf:"varint,57,opt,name=groupExtFlag,proto3" json:"groupExtFlag,omitempty"` + ActorUinNick string `protobuf:"bytes,58,opt,name=actorUinNick,proto3" json:"actorUinNick,omitempty"` + PicUrl string `protobuf:"bytes,59,opt,name=picUrl,proto3" json:"picUrl,omitempty"` + CloneUinNick string `protobuf:"bytes,60,opt,name=cloneUinNick,proto3" json:"cloneUinNick,omitempty"` + ReqUinBusinessCard string `protobuf:"bytes,61,opt,name=reqUinBusinessCard,proto3" json:"reqUinBusinessCard,omitempty"` + EimGroupIdName string `protobuf:"bytes,63,opt,name=eimGroupIdName,proto3" json:"eimGroupIdName,omitempty"` + ReqUinPreRemark string `protobuf:"bytes,64,opt,name=reqUinPreRemark,proto3" json:"reqUinPreRemark,omitempty"` + ActionUinQqNick string `protobuf:"bytes,65,opt,name=actionUinQqNick,proto3" json:"actionUinQqNick,omitempty"` + ActionUinRemark string `protobuf:"bytes,66,opt,name=actionUinRemark,proto3" json:"actionUinRemark,omitempty"` + ReqUinGender int32 `protobuf:"varint,67,opt,name=reqUinGender,proto3" json:"reqUinGender,omitempty"` + ReqUinAge int32 `protobuf:"varint,68,opt,name=reqUinAge,proto3" json:"reqUinAge,omitempty"` + C2CInviteJoinGroupFlag int32 `protobuf:"varint,69,opt,name=c2cInviteJoinGroupFlag,proto3" json:"c2cInviteJoinGroupFlag,omitempty"` + CardSwitch int32 `protobuf:"varint,101,opt,name=cardSwitch,proto3" json:"cardSwitch,omitempty"` +} + +func (x *SystemMsg) Reset() { + *x = SystemMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemMsg) ProtoMessage() {} + +func (x *SystemMsg) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 SystemMsg.ProtoReflect.Descriptor instead. +func (*SystemMsg) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{18} +} + +func (x *SystemMsg) GetSubType() int32 { + if x != nil { + return x.SubType + } + return 0 +} + +func (x *SystemMsg) GetMsgTitle() string { + if x != nil { + return x.MsgTitle + } + return "" +} + +func (x *SystemMsg) GetMsgDescribe() string { + if x != nil { + return x.MsgDescribe + } + return "" +} + +func (x *SystemMsg) GetMsgAdditional() string { + if x != nil { + return x.MsgAdditional + } + return "" +} + +func (x *SystemMsg) GetMsgSource() string { + if x != nil { + return x.MsgSource + } + return "" +} + +func (x *SystemMsg) GetMsgDecided() string { + if x != nil { + return x.MsgDecided + } + return "" +} + +func (x *SystemMsg) GetSrcId() int32 { + if x != nil { + return x.SrcId + } + return 0 +} + +func (x *SystemMsg) GetSubSrcId() int32 { + if x != nil { + return x.SubSrcId + } + return 0 +} + +func (x *SystemMsg) GetActions() []*SystemMsgAction { + if x != nil { + return x.Actions + } + return nil +} + +func (x *SystemMsg) GetGroupCode() int64 { + if x != nil { + return x.GroupCode + } + return 0 +} + +func (x *SystemMsg) GetActionUin() int64 { + if x != nil { + return x.ActionUin + } + return 0 +} + +func (x *SystemMsg) GetGroupMsgType() int32 { + if x != nil { + return x.GroupMsgType + } + return 0 +} + +func (x *SystemMsg) GetGroupInviterRole() int32 { + if x != nil { + return x.GroupInviterRole + } + return 0 +} + +func (x *SystemMsg) GetFriendInfo() *FriendInfo { + if x != nil { + return x.FriendInfo + } + return nil +} + +func (x *SystemMsg) GetGroupInfo() *GroupInfo { + if x != nil { + return x.GroupInfo + } + return nil +} + +func (x *SystemMsg) GetActorUin() int64 { + if x != nil { + return x.ActorUin + } + return 0 +} + +func (x *SystemMsg) GetMsgActorDescribe() string { + if x != nil { + return x.MsgActorDescribe + } + return "" +} + +func (x *SystemMsg) GetMsgAdditionalList() string { + if x != nil { + return x.MsgAdditionalList + } + return "" +} + +func (x *SystemMsg) GetRelation() int32 { + if x != nil { + return x.Relation + } + return 0 +} + +func (x *SystemMsg) GetReqsubtype() int32 { + if x != nil { + return x.Reqsubtype + } + return 0 +} + +func (x *SystemMsg) GetCloneUin() int64 { + if x != nil { + return x.CloneUin + } + return 0 +} + +func (x *SystemMsg) GetDiscussUin() int64 { + if x != nil { + return x.DiscussUin + } + return 0 +} + +func (x *SystemMsg) GetEimGroupId() int64 { + if x != nil { + return x.EimGroupId + } + return 0 +} + +func (x *SystemMsg) GetMsgInviteExtinfo() *MsgInviteExt { + if x != nil { + return x.MsgInviteExtinfo + } + return nil +} + +func (x *SystemMsg) GetMsgPayGroupExtinfo() *MsgPayGroupExt { + if x != nil { + return x.MsgPayGroupExtinfo + } + return nil +} + +func (x *SystemMsg) GetSourceFlag() int32 { + if x != nil { + return x.SourceFlag + } + return 0 +} + +func (x *SystemMsg) GetGameNick() []byte { + if x != nil { + return x.GameNick + } + return nil +} + +func (x *SystemMsg) GetGameMsg() []byte { + if x != nil { + return x.GameMsg + } + return nil +} + +func (x *SystemMsg) GetGroupFlagext3() int32 { + if x != nil { + return x.GroupFlagext3 + } + return 0 +} + +func (x *SystemMsg) GetGroupOwnerUin() int64 { + if x != nil { + return x.GroupOwnerUin + } + return 0 +} + +func (x *SystemMsg) GetDoubtFlag() int32 { + if x != nil { + return x.DoubtFlag + } + return 0 +} + +func (x *SystemMsg) GetWarningTips() []byte { + if x != nil { + return x.WarningTips + } + return nil +} + +func (x *SystemMsg) GetNameMore() []byte { + if x != nil { + return x.NameMore + } + return nil +} + +func (x *SystemMsg) GetReqUinFaceid() int32 { + if x != nil { + return x.ReqUinFaceid + } + return 0 +} + +func (x *SystemMsg) GetReqUinNick() string { + if x != nil { + return x.ReqUinNick + } + return "" +} + +func (x *SystemMsg) GetGroupName() string { + if x != nil { + return x.GroupName + } + return "" +} + +func (x *SystemMsg) GetActionUinNick() string { + if x != nil { + return x.ActionUinNick + } + return "" +} + +func (x *SystemMsg) GetMsgQna() string { + if x != nil { + return x.MsgQna + } + return "" +} + +func (x *SystemMsg) GetMsgDetail() string { + if x != nil { + return x.MsgDetail + } + return "" +} + +func (x *SystemMsg) GetGroupExtFlag() int32 { + if x != nil { + return x.GroupExtFlag + } + return 0 +} + +func (x *SystemMsg) GetActorUinNick() string { + if x != nil { + return x.ActorUinNick + } + return "" +} + +func (x *SystemMsg) GetPicUrl() string { + if x != nil { + return x.PicUrl + } + return "" +} + +func (x *SystemMsg) GetCloneUinNick() string { + if x != nil { + return x.CloneUinNick + } + return "" +} + +func (x *SystemMsg) GetReqUinBusinessCard() string { + if x != nil { + return x.ReqUinBusinessCard + } + return "" +} + +func (x *SystemMsg) GetEimGroupIdName() string { + if x != nil { + return x.EimGroupIdName + } + return "" +} + +func (x *SystemMsg) GetReqUinPreRemark() string { + if x != nil { + return x.ReqUinPreRemark + } + return "" +} + +func (x *SystemMsg) GetActionUinQqNick() string { + if x != nil { + return x.ActionUinQqNick + } + return "" +} + +func (x *SystemMsg) GetActionUinRemark() string { + if x != nil { + return x.ActionUinRemark + } + return "" +} + +func (x *SystemMsg) GetReqUinGender() int32 { + if x != nil { + return x.ReqUinGender + } + return 0 +} + +func (x *SystemMsg) GetReqUinAge() int32 { + if x != nil { + return x.ReqUinAge + } + return 0 +} + +func (x *SystemMsg) GetC2CInviteJoinGroupFlag() int32 { + if x != nil { + return x.C2CInviteJoinGroupFlag + } + return 0 +} + +func (x *SystemMsg) GetCardSwitch() int32 { + if x != nil { + return x.CardSwitch + } + return 0 +} + +type SystemMsgAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + Action int32 `protobuf:"varint,3,opt,name=action,proto3" json:"action,omitempty"` + ActionInfo *SystemMsgActionInfo `protobuf:"bytes,4,opt,name=actionInfo,proto3" json:"actionInfo,omitempty"` + DetailName string `protobuf:"bytes,5,opt,name=detailName,proto3" json:"detailName,omitempty"` +} + +func (x *SystemMsgAction) Reset() { + *x = SystemMsgAction{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemMsgAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemMsgAction) ProtoMessage() {} + +func (x *SystemMsgAction) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 SystemMsgAction.ProtoReflect.Descriptor instead. +func (*SystemMsgAction) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{19} +} + +func (x *SystemMsgAction) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SystemMsgAction) GetResult() string { + if x != nil { + return x.Result + } + return "" +} + +func (x *SystemMsgAction) GetAction() int32 { + if x != nil { + return x.Action + } + return 0 +} + +func (x *SystemMsgAction) GetActionInfo() *SystemMsgActionInfo { + if x != nil { + return x.ActionInfo + } + return nil +} + +func (x *SystemMsgAction) GetDetailName() string { + if x != nil { + return x.DetailName + } + return "" +} + +type SystemMsgActionInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` + GroupCode int64 `protobuf:"varint,2,opt,name=groupCode,proto3" json:"groupCode,omitempty"` + Sig []byte `protobuf:"bytes,3,opt,name=sig,proto3" json:"sig,omitempty"` + Msg string `protobuf:"bytes,50,opt,name=msg,proto3" json:"msg,omitempty"` + GroupId int32 `protobuf:"varint,51,opt,name=groupId,proto3" json:"groupId,omitempty"` + Remark string `protobuf:"bytes,52,opt,name=remark,proto3" json:"remark,omitempty"` + Blacklist bool `protobuf:"varint,53,opt,name=blacklist,proto3" json:"blacklist,omitempty"` + AddFrdSNInfo *AddFrdSNInfo `protobuf:"bytes,54,opt,name=addFrdSNInfo,proto3" json:"addFrdSNInfo,omitempty"` +} + +func (x *SystemMsgActionInfo) Reset() { + *x = SystemMsgActionInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_msg_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemMsgActionInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemMsgActionInfo) ProtoMessage() {} + +func (x *SystemMsgActionInfo) ProtoReflect() protoreflect.Message { + mi := &file_msg_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 SystemMsgActionInfo.ProtoReflect.Descriptor instead. +func (*SystemMsgActionInfo) Descriptor() ([]byte, []int) { + return file_msg_proto_rawDescGZIP(), []int{20} +} + +func (x *SystemMsgActionInfo) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *SystemMsgActionInfo) GetGroupCode() int64 { + if x != nil { + return x.GroupCode + } + return 0 +} + +func (x *SystemMsgActionInfo) GetSig() []byte { + if x != nil { + return x.Sig + } + return nil +} + +func (x *SystemMsgActionInfo) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *SystemMsgActionInfo) GetGroupId() int32 { + if x != nil { + return x.GroupId + } + return 0 +} + +func (x *SystemMsgActionInfo) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +func (x *SystemMsgActionInfo) GetBlacklist() bool { + if x != nil { + return x.Blacklist + } + return false +} + +func (x *SystemMsgActionInfo) GetAddFrdSNInfo() *AddFrdSNInfo { + if x != nil { + return x.AddFrdSNInfo + } + return nil +} + +var File_msg_proto protoreflect.FileDescriptor + +var file_msg_proto_rawDesc = []byte{ + 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x41, + 0x64, 0x64, 0x46, 0x72, 0x64, 0x53, 0x4e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x6e, + 0x6f, 0x74, 0x53, 0x65, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x53, 0x65, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x53, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x65, 0x74, 0x53, 0x6e, 0x22, 0xee, 0x07, 0x0a, 0x08, 0x46, 0x6c, 0x61, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x4b, 0x69, + 0x63, 0x6b, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, + 0x72, 0x70, 0x4d, 0x73, 0x67, 0x4b, 0x69, 0x63, 0x6b, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, + 0x0a, 0x0f, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x47, 0x72, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x48, + 0x69, 0x64, 0x64, 0x65, 0x6e, 0x47, 0x72, 0x70, 0x12, 0x2c, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x4d, + 0x73, 0x67, 0x57, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x11, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x57, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x72, 0x64, 0x4d, 0x73, 0x67, + 0x47, 0x65, 0x74, 0x42, 0x75, 0x73, 0x69, 0x43, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x11, 0x66, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x42, 0x75, 0x73, 0x69, + 0x43, 0x61, 0x72, 0x64, 0x12, 0x3a, 0x0a, 0x18, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x47, 0x65, + 0x74, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x47, 0x65, + 0x74, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x30, 0x0a, 0x13, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, + 0x49, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x67, + 0x72, 0x70, 0x4d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x36, 0x0a, 0x16, 0x66, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x63, + 0x75, 0x73, 0x73, 0x32, 0x4d, 0x61, 0x6e, 0x79, 0x43, 0x68, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x16, 0x66, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x63, 0x75, 0x73, + 0x73, 0x32, 0x4d, 0x61, 0x6e, 0x79, 0x43, 0x68, 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x21, 0x67, 0x72, + 0x70, 0x4d, 0x73, 0x67, 0x4e, 0x6f, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x4a, 0x6f, 0x69, 0x6e, + 0x47, 0x72, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x72, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x21, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x4e, 0x6f, 0x74, + 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x70, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x66, 0x72, 0x64, 0x4d, + 0x73, 0x67, 0x4e, 0x65, 0x65, 0x64, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x66, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x4e, 0x65, + 0x65, 0x64, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, 0x12, 0x42, 0x0a, 0x1c, + 0x66, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x4e, 0x65, 0x65, 0x64, + 0x41, 0x6c, 0x6c, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x1c, 0x66, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, + 0x4e, 0x65, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, + 0x12, 0x3e, 0x0a, 0x1a, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x75, + 0x74, 0x6f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x4e, 0x65, 0x65, 0x64, + 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x44, 0x0a, 0x1d, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x46, 0x6c, 0x61, + 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x42, 0x0a, 0x1c, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, + 0x47, 0x65, 0x74, 0x51, 0x75, 0x69, 0x74, 0x50, 0x61, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1c, 0x67, 0x72, + 0x70, 0x4d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x51, 0x75, 0x69, 0x74, 0x50, 0x61, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x40, 0x0a, 0x1b, 0x67, 0x72, + 0x70, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x41, 0x75, 0x74, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x1b, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x18, + 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x4d, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x41, 0x75, 0x74, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, + 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x4d, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x41, 0x75, 0x74, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x19, 0x67, 0x72, 0x70, 0x4d, + 0x73, 0x67, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x79, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x67, 0x72, 0x70, + 0x4d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x42, + 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x1b, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, + 0x47, 0x65, 0x74, 0x43, 0x32, 0x63, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4a, 0x6f, 0x69, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x67, 0x72, 0x70, + 0x4d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x43, 0x32, 0x63, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4a, + 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x58, 0x0a, 0x0a, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x4a, 0x6f, 0x69, + 0x6e, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x6d, 0x73, 0x67, 0x4a, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x22, + 0x0a, 0x0c, 0x6d, 0x73, 0x67, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x73, 0x67, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, + 0x73, 0x74, 0x22, 0xf5, 0x01, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x75, + 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x6d, 0x73, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6d, 0x73, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x73, 0x67, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x44, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x73, 0x67, + 0x4f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x44, 0x6f, 0x6e, 0x65, 0x12, 0x2a, + 0x0a, 0x10, 0x61, 0x70, 0x70, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x61, 0x70, 0x70, 0x50, 0x72, 0x69, + 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x60, 0x0a, 0x0c, 0x4d, 0x73, + 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x45, 0x78, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x72, + 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x72, 0x63, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x72, 0x63, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x77, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x77, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x54, 0x0a, 0x0e, + 0x4d, 0x73, 0x67, 0x50, 0x61, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x74, 0x12, 0x20, + 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x70, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x71, 0x75, 0x69, 0x74, 0x47, 0x72, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x71, 0x75, 0x69, 0x74, 0x47, 0x72, 0x70, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0xa9, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x4e, 0x65, 0x78, 0x74, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x4e, 0x75, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x4e, 0x75, 0x6d, 0x12, + 0x2e, 0x0a, 0x12, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x66, 0x6f, 0x6c, + 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, + 0x2c, 0x0a, 0x11, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x66, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x04, 0x66, + 0x6c, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x46, 0x6c, 0x61, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, + 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x22, 0xae, + 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x12, + 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x6d, 0x73, 0x67, 0x4e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, + 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, + 0xa0, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x55, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x72, + 0x63, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x53, 0x72, 0x63, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x73, 0x75, 0x62, 0x53, 0x72, 0x63, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x34, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x22, 0xec, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x4d, 0x73, 0x67, 0x4e, 0x65, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x4e, 0x75, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x4e, 0x75, 0x6d, 0x12, 0x28, + 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, + 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x47, 0x65, 0x74, 0x46, 0x72, 0x64, 0x52, + 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, + 0x65, 0x74, 0x46, 0x72, 0x64, 0x52, 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x69, + 0x73, 0x47, 0x65, 0x74, 0x47, 0x72, 0x70, 0x52, 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x65, 0x74, 0x47, 0x72, 0x70, 0x52, 0x69, 0x62, + 0x62, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, + 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x96, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, + 0x73, 0x67, 0x52, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, + 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, + 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, 0x07, 0x52, 0x73, + 0x70, 0x48, 0x65, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x73, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x73, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x22, 0xb2, 0x02, 0x0a, 0x10, 0x52, 0x73, 0x70, 0x4e, + 0x65, 0x78, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x04, + 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x52, 0x73, 0x70, + 0x48, 0x65, 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x73, + 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x4d, 0x73, 0x67, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x6f, + 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, + 0x67, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x6f, + 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x4e, 0x69, + 0x63, 0x6b, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x4e, 0x69, + 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x6e, 0x64, 0x65, 0x63, 0x69, 0x64, 0x46, 0x6f, 0x72, + 0x51, 0x69, 0x6d, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x75, 0x6e, 0x64, 0x65, 0x63, + 0x69, 0x64, 0x46, 0x6f, 0x72, 0x51, 0x69, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x6e, 0x52, 0x65, + 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x33, 0x18, 0x66, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x75, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x33, 0x22, 0xbe, 0x02, 0x0a, + 0x0c, 0x52, 0x73, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, + 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x52, 0x73, + 0x70, 0x48, 0x65, 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, + 0x73, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x75, + 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, + 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x12, + 0x2e, 0x0a, 0x12, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x66, 0x6f, 0x6c, + 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, + 0x2c, 0x0a, 0x11, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x65, 0x71, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x66, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x22, 0xb6, 0x01, + 0x0a, 0x12, 0x52, 0x73, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x52, 0x73, 0x70, 0x48, 0x65, 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, + 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x44, 0x65, 0x63, 0x69, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 0x63, 0x69, 0x64, + 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xd7, 0x05, 0x0a, 0x0f, 0x52, 0x73, 0x70, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x4e, 0x65, 0x77, 0x12, 0x1c, 0x0a, 0x04, 0x68, 0x65, + 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x52, 0x73, 0x70, 0x48, 0x65, + 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x75, 0x6e, 0x72, 0x65, + 0x61, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x11, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, + 0x67, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x12, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x53, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, + 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x71, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x11, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, + 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6d, 0x73, 0x67, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, + 0x73, 0x67, 0x52, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x28, + 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x09, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x34, 0x0a, 0x0f, 0x6d, 0x73, 0x67, 0x52, + 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x0f, 0x6d, + 0x73, 0x67, 0x52, 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x32, + 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x52, 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, + 0x73, 0x67, 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x52, 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x70, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x72, 0x70, 0x4d, 0x73, + 0x67, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x76, 0x65, 0x72, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, + 0x6d, 0x65, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, + 0x6d, 0x65, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x6e, 0x64, 0x65, 0x63, 0x69, + 0x64, 0x46, 0x6f, 0x72, 0x51, 0x69, 0x6d, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x75, + 0x6e, 0x64, 0x65, 0x63, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x51, 0x69, 0x6d, 0x12, 0x22, 0x0a, 0x0c, + 0x75, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x33, 0x18, 0x66, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x75, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x33, + 0x22, 0x62, 0x0a, 0x10, 0x52, 0x73, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x52, 0x73, 0x70, 0x48, 0x65, 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, + 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x74, 0x79, 0x70, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, + 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, + 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x55, + 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, + 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, + 0x12, 0x1c, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xc2, + 0x0e, 0x0a, 0x09, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, + 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x73, 0x67, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x73, + 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, + 0x73, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x44, + 0x65, 0x63, 0x69, 0x64, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x73, + 0x67, 0x44, 0x65, 0x63, 0x69, 0x64, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x72, 0x63, 0x49, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x73, 0x75, 0x62, 0x53, 0x72, 0x63, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x73, 0x75, 0x62, 0x53, 0x72, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x07, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x69, + 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x52, 0x6f, + 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x28, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x73, 0x67, 0x41, 0x63, 0x74, 0x6f, + 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x6d, 0x73, 0x67, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x73, + 0x67, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x65, 0x71, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x72, 0x65, 0x71, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x69, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, + 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x75, + 0x73, 0x73, 0x55, 0x69, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x69, 0x73, + 0x63, 0x75, 0x73, 0x73, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x69, 0x6d, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x69, 0x6d, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x10, 0x6d, 0x73, 0x67, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x45, 0x78, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x45, 0x78, 0x74, + 0x52, 0x10, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x45, 0x78, 0x74, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x12, 0x6d, 0x73, 0x67, 0x50, 0x61, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x45, 0x78, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x61, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x74, 0x52, + 0x12, 0x6d, 0x73, 0x67, 0x50, 0x61, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x74, 0x69, + 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x6c, 0x61, + 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x4e, 0x69, 0x63, 0x6b, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x4e, 0x69, 0x63, 0x6b, 0x12, + 0x18, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x65, 0x78, 0x74, 0x33, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x65, 0x78, 0x74, 0x33, 0x12, + 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x6e, + 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x6f, 0x75, 0x62, 0x74, 0x46, 0x6c, + 0x61, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x6f, 0x75, 0x62, 0x74, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, + 0x70, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x54, 0x69, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x72, + 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x72, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x69, + 0x64, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x46, + 0x61, 0x63, 0x65, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x4e, + 0x69, 0x63, 0x6b, 0x18, 0x33, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x71, 0x55, 0x69, + 0x6e, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, + 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x35, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, + 0x51, 0x6e, 0x61, 0x18, 0x36, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x51, 0x6e, + 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x37, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x73, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, + 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x18, + 0x39, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x74, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x4e, + 0x69, 0x63, 0x6b, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x55, 0x69, 0x6e, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x63, 0x55, 0x72, + 0x6c, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x69, 0x63, 0x55, 0x72, 0x6c, 0x12, + 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x69, 0x6e, 0x4e, 0x69, 0x63, 0x6b, 0x18, + 0x3c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x69, 0x6e, 0x4e, + 0x69, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x42, 0x75, 0x73, + 0x69, 0x6e, 0x65, 0x73, 0x73, 0x43, 0x61, 0x72, 0x64, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x43, + 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x69, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x69, 0x6d, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x72, + 0x65, 0x71, 0x55, 0x69, 0x6e, 0x50, 0x72, 0x65, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x40, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x50, 0x72, 0x65, 0x52, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x69, 0x6e, 0x51, 0x71, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x41, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x51, 0x71, 0x4e, 0x69, 0x63, 0x6b, 0x12, + 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x52, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x18, 0x42, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x69, 0x6e, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x71, + 0x55, 0x69, 0x6e, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x43, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, + 0x09, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x72, 0x65, 0x71, 0x55, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x63, + 0x32, 0x63, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x45, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x63, 0x32, 0x63, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x72, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x18, 0x65, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x61, 0x72, 0x64, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x22, 0xab, 0x01, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, + 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x0a, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0xee, 0x01, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x73, 0x67, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, + 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x35, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x12, + 0x31, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x46, 0x72, 0x64, 0x53, 0x4e, 0x49, 0x6e, 0x66, 0x6f, 0x18, + 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x72, 0x64, 0x53, 0x4e, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x46, 0x72, 0x64, 0x53, 0x4e, 0x49, 0x6e, + 0x66, 0x6f, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x3b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6d, 0x73, + 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_msg_proto_rawDescOnce sync.Once + file_msg_proto_rawDescData = file_msg_proto_rawDesc +) + +func file_msg_proto_rawDescGZIP() []byte { + file_msg_proto_rawDescOnce.Do(func() { + file_msg_proto_rawDescData = protoimpl.X.CompressGZIP(file_msg_proto_rawDescData) + }) + return file_msg_proto_rawDescData +} + +var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_msg_proto_goTypes = []interface{}{ + (*AddFrdSNInfo)(nil), // 0: AddFrdSNInfo + (*FlagInfo)(nil), // 1: FlagInfo + (*FriendInfo)(nil), // 2: FriendInfo + (*GroupInfo)(nil), // 3: GroupInfo + (*MsgInviteExt)(nil), // 4: MsgInviteExt + (*MsgPayGroupExt)(nil), // 5: MsgPayGroupExt + (*ReqNextSystemMsg)(nil), // 6: ReqNextSystemMsg + (*ReqSystemMsg)(nil), // 7: ReqSystemMsg + (*ReqSystemMsgAction)(nil), // 8: ReqSystemMsgAction + (*ReqSystemMsgNew)(nil), // 9: ReqSystemMsgNew + (*ReqSystemMsgRead)(nil), // 10: ReqSystemMsgRead + (*RspHead)(nil), // 11: RspHead + (*RspNextSystemMsg)(nil), // 12: RspNextSystemMsg + (*RspSystemMsg)(nil), // 13: RspSystemMsg + (*RspSystemMsgAction)(nil), // 14: RspSystemMsgAction + (*RspSystemMsgNew)(nil), // 15: RspSystemMsgNew + (*RspSystemMsgRead)(nil), // 16: RspSystemMsgRead + (*StructMsg)(nil), // 17: StructMsg + (*SystemMsg)(nil), // 18: SystemMsg + (*SystemMsgAction)(nil), // 19: SystemMsgAction + (*SystemMsgActionInfo)(nil), // 20: SystemMsgActionInfo +} +var file_msg_proto_depIdxs = []int32{ + 1, // 0: ReqNextSystemMsg.flag:type_name -> FlagInfo + 20, // 1: ReqSystemMsgAction.actionInfo:type_name -> SystemMsgActionInfo + 1, // 2: ReqSystemMsgNew.flag:type_name -> FlagInfo + 11, // 3: RspNextSystemMsg.head:type_name -> RspHead + 17, // 4: RspNextSystemMsg.msgs:type_name -> StructMsg + 11, // 5: RspSystemMsg.head:type_name -> RspHead + 17, // 6: RspSystemMsg.msgs:type_name -> StructMsg + 11, // 7: RspSystemMsgAction.head:type_name -> RspHead + 11, // 8: RspSystemMsgNew.head:type_name -> RspHead + 17, // 9: RspSystemMsgNew.friendmsgs:type_name -> StructMsg + 17, // 10: RspSystemMsgNew.groupmsgs:type_name -> StructMsg + 17, // 11: RspSystemMsgNew.msgRibbonFriend:type_name -> StructMsg + 17, // 12: RspSystemMsgNew.msgRibbonGroup:type_name -> StructMsg + 11, // 13: RspSystemMsgRead.head:type_name -> RspHead + 18, // 14: StructMsg.msg:type_name -> SystemMsg + 19, // 15: SystemMsg.actions:type_name -> SystemMsgAction + 2, // 16: SystemMsg.friendInfo:type_name -> FriendInfo + 3, // 17: SystemMsg.groupInfo:type_name -> GroupInfo + 4, // 18: SystemMsg.msgInviteExtinfo:type_name -> MsgInviteExt + 5, // 19: SystemMsg.msgPayGroupExtinfo:type_name -> MsgPayGroupExt + 20, // 20: SystemMsgAction.actionInfo:type_name -> SystemMsgActionInfo + 0, // 21: SystemMsgActionInfo.addFrdSNInfo:type_name -> AddFrdSNInfo + 22, // [22:22] is the sub-list for method output_type + 22, // [22:22] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name +} + +func init() { file_msg_proto_init() } +func file_msg_proto_init() { + if File_msg_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddFrdSNInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlagInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[2].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_msg_proto_msgTypes[3].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_msg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgInviteExt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgPayGroupExt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqNextSystemMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqSystemMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqSystemMsgAction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqSystemMsgNew); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqSystemMsgRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspHead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspNextSystemMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspSystemMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspSystemMsgAction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspSystemMsgNew); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RspSystemMsgRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StructMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SystemMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SystemMsgAction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_msg_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SystemMsgActionInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_msg_proto_rawDesc, + NumEnums: 0, + NumMessages: 21, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_msg_proto_goTypes, + DependencyIndexes: file_msg_proto_depIdxs, + MessageInfos: file_msg_proto_msgTypes, + }.Build() + File_msg_proto = out.File + file_msg_proto_rawDesc = nil + file_msg_proto_goTypes = nil + file_msg_proto_depIdxs = nil +} diff --git a/client/pb/structmsg/msg.proto b/client/pb/structmsg/msg.proto new file mode 100644 index 00000000..699c88fb --- /dev/null +++ b/client/pb/structmsg/msg.proto @@ -0,0 +1,241 @@ +syntax = "proto3"; + +option go_package = ".;structmsg"; + +message AddFrdSNInfo { + int32 notSeeDynamic = 1; + int32 setSn = 2; +} + +message FlagInfo { + int32 grpMsgKickAdmin = 1; + int32 grpMsgHiddenGrp = 2; + int32 grpMsgWordingDown = 3; + int32 frdMsgGetBusiCard = 4; + int32 grpMsgGetOfficialAccount = 5; + int32 grpMsgGetPayInGroup = 6; + int32 frdMsgDiscuss2ManyChat = 7; + int32 grpMsgNotAllowJoinGrpInviteNotFrd = 8; + int32 frdMsgNeedWaitingMsg = 9; + int32 frdMsgUint32NeedAllUnreadMsg = 10; + int32 grpMsgNeedAutoAdminWording = 11; + int32 grpMsgGetTransferGroupMsgFlag = 12; + int32 grpMsgGetQuitPayGroupMsgFlag = 13; + int32 grpMsgSupportInviteAutoJoin = 14; + int32 grpMsgMaskInviteAutoJoin = 15; + int32 grpMsgGetDisbandedByAdmin = 16; + int32 grpMsgGetC2cInviteJoinGroup = 17; +} + +message FriendInfo { + string msgJointFriend = 1; + string msgBlacklist = 2; +} + +message GroupInfo { + int32 groupAuthType = 1; + int32 displayAction = 2; + string msgAlert = 3; + string msgDetailAlert = 4; + string msgOtherAdminDone = 5; + int32 appPrivilegeFlag = 6; +} + +message MsgInviteExt { + int32 srcType = 1; + int64 srcCode = 2; + int32 waitState = 3; +} + +message MsgPayGroupExt { + int64 joinGrpTime = 1; + int64 quitGrpTime = 2; +} + +message ReqNextSystemMsg { + int32 msgNum = 1; + int64 followingFriendSeq = 2; + int64 followingGroupSeq = 3; + int32 checktype = 4; + FlagInfo flag = 5; + int32 language = 6; + int32 version = 7; + int64 friendMsgTypeFlag = 8; +} + +message ReqSystemMsg { + int32 msgNum = 1; + int64 latestFriendSeq = 2; + int64 latestGroupSeq = 3; + int32 version = 4; + int32 language = 5; +} + +message ReqSystemMsgAction { + int32 msgType = 1; + int64 msgSeq = 2; + int64 reqUin = 3; + int32 subType = 4; + int32 srcId = 5; + int32 subSrcId = 6; + int32 groupMsgType = 7; + SystemMsgActionInfo actionInfo = 8; + int32 language = 9; +} + +message ReqSystemMsgNew { + int32 msgNum = 1; + int64 latestFriendSeq = 2; + int64 latestGroupSeq = 3; + int32 version = 4; + int32 checktype = 5; + FlagInfo flag = 6; + int32 language = 7; + bool isGetFrdRibbon = 8; + bool isGetGrpRibbon = 9; + int64 friendMsgTypeFlag = 10; +} +message ReqSystemMsgRead { + int64 latestFriendSeq = 1; + int64 latestGroupSeq = 2; + int32 type = 3; + int32 checktype = 4; +} +message RspHead { + int32 result = 1; + string msgFail = 2; +} +message RspNextSystemMsg { + RspHead head = 1; + repeated StructMsg msgs = 2; + int64 followingFriendSeq = 3; + int64 followingGroupSeq = 4; + int32 checktype = 5; + string gameNick = 100; + bytes undecidForQim = 101; + int32 unReadCount3 = 102; +} +message RspSystemMsg { + RspHead head = 1; + repeated StructMsg msgs = 2; + int32 unreadCount = 3; + int64 latestFriendSeq = 4; + int64 latestGroupSeq = 5; + int64 followingFriendSeq = 6; + int64 followingGroupSeq = 7; + string msgDisplay = 8; +} + +message RspSystemMsgAction { + RspHead head = 1; + string msgDetail = 2; + int32 type = 3; + string msgInvalidDecided = 5; + int32 remarkResult = 6; +} +message RspSystemMsgNew { + RspHead head = 1; + int32 unreadFriendCount = 2; + int32 unreadGroupCount = 3; + int64 latestFriendSeq = 4; + int64 latestGroupSeq = 5; + int64 followingFriendSeq = 6; + int64 followingGroupSeq = 7; + repeated StructMsg friendmsgs = 9; + repeated StructMsg groupmsgs = 10; + StructMsg msgRibbonFriend = 11; + StructMsg msgRibbonGroup = 12; + string msgDisplay = 13; + string grpMsgDisplay = 14; + int32 over = 15; + int32 checktype = 20; + string gameNick = 100; + bytes undecidForQim = 101; + int32 unReadCount3 = 102; +} +message RspSystemMsgRead { + RspHead head = 1; + int32 type = 2; + int32 checktype = 3; +} +message StructMsg { + int32 version = 1; + int32 msgType = 2; + int64 msgSeq = 3; + int64 msgTime = 4; + int64 reqUin = 5; + int32 unreadFlag = 6; + SystemMsg msg = 50; +} +message SystemMsg { + int32 subType = 1; + string msgTitle = 2; + string msgDescribe = 3; + string msgAdditional = 4; + string msgSource = 5; + string msgDecided = 6; + int32 srcId = 7; + int32 subSrcId = 8; + repeated SystemMsgAction actions = 9; + int64 groupCode = 10; + int64 actionUin = 11; + int32 groupMsgType = 12; + int32 groupInviterRole = 13; + FriendInfo friendInfo = 14; + GroupInfo groupInfo = 15; + int64 actorUin = 16; + string msgActorDescribe = 17; + string msgAdditionalList = 18; + int32 relation = 19; + int32 reqsubtype = 20; + int64 cloneUin = 21; + int64 discussUin = 22; + int64 eimGroupId = 23; + MsgInviteExt msgInviteExtinfo = 24; + MsgPayGroupExt msgPayGroupExtinfo = 25; + int32 sourceFlag = 26; + bytes gameNick = 27; + bytes gameMsg = 28; + int32 groupFlagext3 = 29; + int64 groupOwnerUin = 30; + int32 doubtFlag = 31; + bytes warningTips = 32; + bytes nameMore = 33; + int32 reqUinFaceid = 50; + string reqUinNick = 51; + string groupName = 52; + string actionUinNick = 53; + string msgQna = 54; + string msgDetail = 55; + int32 groupExtFlag = 57; + string actorUinNick = 58; + string picUrl = 59; + string cloneUinNick = 60; + string reqUinBusinessCard = 61; + string eimGroupIdName = 63; + string reqUinPreRemark = 64; + string actionUinQqNick = 65; + string actionUinRemark = 66; + int32 reqUinGender = 67; + int32 reqUinAge = 68; + int32 c2cInviteJoinGroupFlag = 69; + int32 cardSwitch = 101; +} +message SystemMsgAction { + string name = 1; + string result = 2; + int32 action = 3; + SystemMsgActionInfo actionInfo = 4; + string detailName = 5; +} +message SystemMsgActionInfo { + int32 type = 1; + int64 groupCode = 2; + bytes sig = 3; + string msg = 50; + int32 groupId = 51; + string remark = 52; + bool blacklist = 53; + AddFrdSNInfo addFrdSNInfo = 54; +} + \ No newline at end of file