diff --git a/internal/common/notification/c.go b/internal/common/notification/c.go new file mode 100644 index 000000000..32f1bef7a --- /dev/null +++ b/internal/common/notification/c.go @@ -0,0 +1,289 @@ +package notification + +import ( + "Open_IM/pkg/common/constant" + pbChat "Open_IM/pkg/proto/msg" + "strings" +) + +type NotificationMsg struct { + SendID string + RecvID string + Content []byte // sdkws.TipsComm + MsgFrom int32 + ContentType int32 + SessionType int32 + OperationID string + SenderNickname string + SenderFaceURL string +} + +func Notification(n *NotificationMsg) { + var req pbChat.SendMsgReq + var msg sdkws.MsgData + var offlineInfo sdkws.OfflinePushInfo + var title, desc, ex string + var pushSwitch, unReadCount bool + var reliabilityLevel int + req.OperationID = n.OperationID + msg.SendID = n.SendID + msg.RecvID = n.RecvID + msg.Content = n.Content + msg.MsgFrom = n.MsgFrom + msg.ContentType = n.ContentType + msg.SessionType = n.SessionType + msg.CreateTime = utils.GetCurrentTimestampByMill() + msg.ClientMsgID = utils.GetMsgID(n.SendID) + msg.Options = make(map[string]bool, 7) + msg.SenderNickname = n.SenderNickname + msg.SenderFaceURL = n.SenderFaceURL + switch n.SessionType { + case constant.GroupChatType, constant.SuperGroupChatType: + msg.RecvID = "" + msg.GroupID = n.RecvID + } + offlineInfo.IOSBadgeCount = config.Config.IOSPush.BadgeCount + offlineInfo.IOSPushSound = config.Config.IOSPush.PushSound + switch msg.ContentType { + case constant.GroupCreatedNotification: + pushSwitch = config.Config.Notification.GroupCreated.OfflinePush.PushSwitch + title = config.Config.Notification.GroupCreated.OfflinePush.Title + desc = config.Config.Notification.GroupCreated.OfflinePush.Desc + ex = config.Config.Notification.GroupCreated.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupCreated.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupCreated.Conversation.UnreadCount + case constant.GroupInfoSetNotification: + pushSwitch = config.Config.Notification.GroupInfoSet.OfflinePush.PushSwitch + title = config.Config.Notification.GroupInfoSet.OfflinePush.Title + desc = config.Config.Notification.GroupInfoSet.OfflinePush.Desc + ex = config.Config.Notification.GroupInfoSet.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupInfoSet.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupInfoSet.Conversation.UnreadCount + case constant.JoinGroupApplicationNotification: + pushSwitch = config.Config.Notification.JoinGroupApplication.OfflinePush.PushSwitch + title = config.Config.Notification.JoinGroupApplication.OfflinePush.Title + desc = config.Config.Notification.JoinGroupApplication.OfflinePush.Desc + ex = config.Config.Notification.JoinGroupApplication.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.JoinGroupApplication.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.JoinGroupApplication.Conversation.UnreadCount + case constant.MemberQuitNotification: + pushSwitch = config.Config.Notification.MemberQuit.OfflinePush.PushSwitch + title = config.Config.Notification.MemberQuit.OfflinePush.Title + desc = config.Config.Notification.MemberQuit.OfflinePush.Desc + ex = config.Config.Notification.MemberQuit.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.MemberQuit.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.MemberQuit.Conversation.UnreadCount + case constant.GroupApplicationAcceptedNotification: + pushSwitch = config.Config.Notification.GroupApplicationAccepted.OfflinePush.PushSwitch + title = config.Config.Notification.GroupApplicationAccepted.OfflinePush.Title + desc = config.Config.Notification.GroupApplicationAccepted.OfflinePush.Desc + ex = config.Config.Notification.GroupApplicationAccepted.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupApplicationAccepted.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupApplicationAccepted.Conversation.UnreadCount + case constant.GroupApplicationRejectedNotification: + pushSwitch = config.Config.Notification.GroupApplicationRejected.OfflinePush.PushSwitch + title = config.Config.Notification.GroupApplicationRejected.OfflinePush.Title + desc = config.Config.Notification.GroupApplicationRejected.OfflinePush.Desc + ex = config.Config.Notification.GroupApplicationRejected.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupApplicationRejected.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupApplicationRejected.Conversation.UnreadCount + case constant.GroupOwnerTransferredNotification: + pushSwitch = config.Config.Notification.GroupOwnerTransferred.OfflinePush.PushSwitch + title = config.Config.Notification.GroupOwnerTransferred.OfflinePush.Title + desc = config.Config.Notification.GroupOwnerTransferred.OfflinePush.Desc + ex = config.Config.Notification.GroupOwnerTransferred.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupOwnerTransferred.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupOwnerTransferred.Conversation.UnreadCount + case constant.MemberKickedNotification: + pushSwitch = config.Config.Notification.MemberKicked.OfflinePush.PushSwitch + title = config.Config.Notification.MemberKicked.OfflinePush.Title + desc = config.Config.Notification.MemberKicked.OfflinePush.Desc + ex = config.Config.Notification.MemberKicked.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.MemberKicked.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.MemberKicked.Conversation.UnreadCount + case constant.MemberInvitedNotification: + pushSwitch = config.Config.Notification.MemberInvited.OfflinePush.PushSwitch + title = config.Config.Notification.MemberInvited.OfflinePush.Title + desc = config.Config.Notification.MemberInvited.OfflinePush.Desc + ex = config.Config.Notification.MemberInvited.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.MemberInvited.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.MemberInvited.Conversation.UnreadCount + case constant.MemberEnterNotification: + pushSwitch = config.Config.Notification.MemberEnter.OfflinePush.PushSwitch + title = config.Config.Notification.MemberEnter.OfflinePush.Title + desc = config.Config.Notification.MemberEnter.OfflinePush.Desc + ex = config.Config.Notification.MemberEnter.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.MemberEnter.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.MemberEnter.Conversation.UnreadCount + case constant.UserInfoUpdatedNotification: + pushSwitch = config.Config.Notification.UserInfoUpdated.OfflinePush.PushSwitch + title = config.Config.Notification.UserInfoUpdated.OfflinePush.Title + desc = config.Config.Notification.UserInfoUpdated.OfflinePush.Desc + ex = config.Config.Notification.UserInfoUpdated.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.UserInfoUpdated.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.UserInfoUpdated.Conversation.UnreadCount + case constant.FriendApplicationNotification: + pushSwitch = config.Config.Notification.FriendApplication.OfflinePush.PushSwitch + title = config.Config.Notification.FriendApplication.OfflinePush.Title + desc = config.Config.Notification.FriendApplication.OfflinePush.Desc + ex = config.Config.Notification.FriendApplication.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendApplication.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendApplication.Conversation.UnreadCount + case constant.FriendApplicationApprovedNotification: + pushSwitch = config.Config.Notification.FriendApplicationApproved.OfflinePush.PushSwitch + title = config.Config.Notification.FriendApplicationApproved.OfflinePush.Title + desc = config.Config.Notification.FriendApplicationApproved.OfflinePush.Desc + ex = config.Config.Notification.FriendApplicationApproved.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendApplicationApproved.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendApplicationApproved.Conversation.UnreadCount + case constant.FriendApplicationRejectedNotification: + pushSwitch = config.Config.Notification.FriendApplicationRejected.OfflinePush.PushSwitch + title = config.Config.Notification.FriendApplicationRejected.OfflinePush.Title + desc = config.Config.Notification.FriendApplicationRejected.OfflinePush.Desc + ex = config.Config.Notification.FriendApplicationRejected.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendApplicationRejected.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendApplicationRejected.Conversation.UnreadCount + case constant.FriendAddedNotification: + pushSwitch = config.Config.Notification.FriendAdded.OfflinePush.PushSwitch + title = config.Config.Notification.FriendAdded.OfflinePush.Title + desc = config.Config.Notification.FriendAdded.OfflinePush.Desc + ex = config.Config.Notification.FriendAdded.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendAdded.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendAdded.Conversation.UnreadCount + case constant.FriendDeletedNotification: + pushSwitch = config.Config.Notification.FriendDeleted.OfflinePush.PushSwitch + title = config.Config.Notification.FriendDeleted.OfflinePush.Title + desc = config.Config.Notification.FriendDeleted.OfflinePush.Desc + ex = config.Config.Notification.FriendDeleted.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendDeleted.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendDeleted.Conversation.UnreadCount + case constant.FriendRemarkSetNotification: + pushSwitch = config.Config.Notification.FriendRemarkSet.OfflinePush.PushSwitch + title = config.Config.Notification.FriendRemarkSet.OfflinePush.Title + desc = config.Config.Notification.FriendRemarkSet.OfflinePush.Desc + ex = config.Config.Notification.FriendRemarkSet.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendRemarkSet.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendRemarkSet.Conversation.UnreadCount + case constant.BlackAddedNotification: + pushSwitch = config.Config.Notification.BlackAdded.OfflinePush.PushSwitch + title = config.Config.Notification.BlackAdded.OfflinePush.Title + desc = config.Config.Notification.BlackAdded.OfflinePush.Desc + ex = config.Config.Notification.BlackAdded.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.BlackAdded.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.BlackAdded.Conversation.UnreadCount + case constant.BlackDeletedNotification: + pushSwitch = config.Config.Notification.BlackDeleted.OfflinePush.PushSwitch + title = config.Config.Notification.BlackDeleted.OfflinePush.Title + desc = config.Config.Notification.BlackDeleted.OfflinePush.Desc + ex = config.Config.Notification.BlackDeleted.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.BlackDeleted.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.BlackDeleted.Conversation.UnreadCount + case constant.ConversationOptChangeNotification: + pushSwitch = config.Config.Notification.ConversationOptUpdate.OfflinePush.PushSwitch + title = config.Config.Notification.ConversationOptUpdate.OfflinePush.Title + desc = config.Config.Notification.ConversationOptUpdate.OfflinePush.Desc + ex = config.Config.Notification.ConversationOptUpdate.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.ConversationOptUpdate.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.ConversationOptUpdate.Conversation.UnreadCount + + case constant.GroupDismissedNotification: + pushSwitch = config.Config.Notification.GroupDismissed.OfflinePush.PushSwitch + title = config.Config.Notification.GroupDismissed.OfflinePush.Title + desc = config.Config.Notification.GroupDismissed.OfflinePush.Desc + ex = config.Config.Notification.GroupDismissed.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupDismissed.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupDismissed.Conversation.UnreadCount + + case constant.GroupMutedNotification: + pushSwitch = config.Config.Notification.GroupMuted.OfflinePush.PushSwitch + title = config.Config.Notification.GroupMuted.OfflinePush.Title + desc = config.Config.Notification.GroupMuted.OfflinePush.Desc + ex = config.Config.Notification.GroupMuted.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupMuted.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupMuted.Conversation.UnreadCount + + case constant.GroupCancelMutedNotification: + pushSwitch = config.Config.Notification.GroupCancelMuted.OfflinePush.PushSwitch + title = config.Config.Notification.GroupCancelMuted.OfflinePush.Title + desc = config.Config.Notification.GroupCancelMuted.OfflinePush.Desc + ex = config.Config.Notification.GroupCancelMuted.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupCancelMuted.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupCancelMuted.Conversation.UnreadCount + + case constant.GroupMemberMutedNotification: + pushSwitch = config.Config.Notification.GroupMemberMuted.OfflinePush.PushSwitch + title = config.Config.Notification.GroupMemberMuted.OfflinePush.Title + desc = config.Config.Notification.GroupMemberMuted.OfflinePush.Desc + ex = config.Config.Notification.GroupMemberMuted.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupMemberMuted.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupMemberMuted.Conversation.UnreadCount + + case constant.GroupMemberCancelMutedNotification: + pushSwitch = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.PushSwitch + title = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.Title + desc = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.Desc + ex = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupMemberCancelMuted.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupMemberCancelMuted.Conversation.UnreadCount + + case constant.GroupMemberInfoSetNotification: + pushSwitch = config.Config.Notification.GroupMemberInfoSet.OfflinePush.PushSwitch + title = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Title + desc = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Desc + ex = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupMemberInfoSet.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupMemberInfoSet.Conversation.UnreadCount + + case constant.ConversationPrivateChatNotification: + pushSwitch = config.Config.Notification.ConversationSetPrivate.OfflinePush.PushSwitch + title = config.Config.Notification.ConversationSetPrivate.OfflinePush.Title + desc = config.Config.Notification.ConversationSetPrivate.OfflinePush.Desc + ex = config.Config.Notification.ConversationSetPrivate.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.ConversationSetPrivate.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.ConversationSetPrivate.Conversation.UnreadCount + case constant.FriendInfoUpdatedNotification: + pushSwitch = config.Config.Notification.FriendInfoUpdated.OfflinePush.PushSwitch + title = config.Config.Notification.FriendInfoUpdated.OfflinePush.Title + desc = config.Config.Notification.FriendInfoUpdated.OfflinePush.Desc + ex = config.Config.Notification.FriendInfoUpdated.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendInfoUpdated.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendInfoUpdated.Conversation.UnreadCount + case constant.DeleteMessageNotification: + reliabilityLevel = constant.ReliableNotificationNoMsg + case constant.ConversationUnreadNotification, constant.SuperGroupUpdateNotification: + reliabilityLevel = constant.UnreliableNotification + } + switch reliabilityLevel { + case constant.UnreliableNotification: + utils.SetSwitchFromOptions(msg.Options, constant.IsHistory, false) + utils.SetSwitchFromOptions(msg.Options, constant.IsPersistent, false) + utils.SetSwitchFromOptions(msg.Options, constant.IsConversationUpdate, false) + utils.SetSwitchFromOptions(msg.Options, constant.IsSenderConversationUpdate, false) + case constant.ReliableNotificationNoMsg: + utils.SetSwitchFromOptions(msg.Options, constant.IsConversationUpdate, false) + utils.SetSwitchFromOptions(msg.Options, constant.IsSenderConversationUpdate, false) + case constant.ReliableNotificationMsg: + + } + utils.SetSwitchFromOptions(msg.Options, constant.IsUnreadCount, unReadCount) + utils.SetSwitchFromOptions(msg.Options, constant.IsOfflinePush, pushSwitch) + offlineInfo.Title = title + offlineInfo.Desc = desc + offlineInfo.Ex = ex + msg.OfflinePushInfo = &offlineInfo + req.MsgData = &msg + etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" + log.NewError(req.OperationID, errMsg) + return + } + + client := pbChat.NewMsgClient(etcdConn) + reply, err := client.SendMsg(context.Background(), &req) + if err != nil { + log.NewError(req.OperationID, "SendMsg rpc failed, ", req.String(), err.Error()) + } else if reply.ErrCode != 0 { + log.NewError(req.OperationID, "SendMsg rpc failed, ", req.String(), reply.ErrCode, reply.ErrMsg) + } +} diff --git a/internal/common/notification/conversation_notification.go b/internal/common/notification/conversation.go similarity index 100% rename from internal/common/notification/conversation_notification.go rename to internal/common/notification/conversation.go diff --git a/internal/common/notification/extend_msg.notification.go b/internal/common/notification/extend_msg.notification.go deleted file mode 100644 index 5a3b78a07..000000000 --- a/internal/common/notification/extend_msg.notification.go +++ /dev/null @@ -1,100 +0,0 @@ -package notification - -import ( - "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" - "Open_IM/pkg/proto/msg" - sdkws "Open_IM/pkg/proto/sdkws" - "Open_IM/pkg/utils" - "context" -) - -func ExtendMessageUpdatedNotification(operationID, sendID string, sourceID string, sessionType int32, - req *msg.SetMessageReactionExtensionsReq, resp *msg.SetMessageReactionExtensionsResp, isHistory bool, isReactionFromCache bool) { - var m apistruct.ReactionMessageModifierNotification - m.SourceID = req.SourceID - m.OpUserID = req.OpUserID - m.SessionType = req.SessionType - keyMap := make(map[string]*sdkws.KeyValue) - for _, valueResp := range resp.Result { - if valueResp.ErrCode == 0 { - keyMap[valueResp.KeyValue.TypeKey] = valueResp.KeyValue - } - } - if len(keyMap) == 0 { - log.NewWarn(operationID, "all key set failed can not send notification", *req) - return - } - m.SuccessReactionExtensionList = keyMap - m.ClientMsgID = req.ClientMsgID - m.IsReact = resp.IsReact - m.IsExternalExtensions = req.IsExternalExtensions - m.MsgFirstModifyTime = resp.MsgFirstModifyTime - messageReactionSender(operationID, sendID, sourceID, sessionType, constant.ReactionMessageModifier, utils.StructToJsonString(m), isHistory, isReactionFromCache) -} -func ExtendMessageDeleteNotification(operationID, sendID string, sourceID string, sessionType int32, - req *msg.DeleteMessageListReactionExtensionsReq, resp *msg.DeleteMessageListReactionExtensionsResp, isHistory bool, isReactionFromCache bool) { - var m apistruct.ReactionMessageDeleteNotification - m.SourceID = req.SourceID - m.OpUserID = req.OpUserID - m.SessionType = req.SessionType - keyMap := make(map[string]*sdkws.KeyValue) - for _, valueResp := range resp.Result { - if valueResp.ErrCode == 0 { - keyMap[valueResp.KeyValue.TypeKey] = valueResp.KeyValue - } - } - if len(keyMap) == 0 { - log.NewWarn(operationID, "all key set failed can not send notification", *req) - return - } - m.SuccessReactionExtensionList = keyMap - m.ClientMsgID = req.ClientMsgID - m.MsgFirstModifyTime = req.MsgFirstModifyTime - - messageReactionSender(operationID, sendID, sourceID, sessionType, constant.ReactionMessageDeleter, utils.StructToJsonString(m), isHistory, isReactionFromCache) -} -func messageReactionSender(operationID, sendID string, sourceID string, sessionType, contentType int32, content string, isHistory bool, isReactionFromCache bool) { - options := make(map[string]bool, 5) - utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false) - utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false) - utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false) - utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false) - utils.SetSwitchFromOptions(options, constant.IsReactionFromCache, isReactionFromCache) - if !isHistory { - utils.SetSwitchFromOptions(options, constant.IsHistory, false) - utils.SetSwitchFromOptions(options, constant.IsPersistent, false) - } - pbData := msg.SendMsgReq{ - OperationID: operationID, - MsgData: &sdkws.MsgData{ - SendID: sendID, - ClientMsgID: utils.GetMsgID(sendID), - SessionType: sessionType, - MsgFrom: constant.SysMsgType, - ContentType: contentType, - Content: []byte(content), - // ForceList: params.ForceList, - CreateTime: utils.GetCurrentTimestampByMill(), - Options: options, - }, - } - switch sessionType { - case constant.SingleChatType, constant.NotificationChatType: - pbData.MsgData.RecvID = sourceID - case constant.GroupChatType, constant.SuperGroupChatType: - pbData.MsgData.GroupID = sourceID - } - etcdConn, err := rpc.GetConn(context.Background(), config.Config.RpcRegisterName.OpenImMsgName) - if err != nil { - return - } - client := msg.NewMsgClient(etcdConn) - reply, err := client.SendMsg(context.Background(), &pbData) - if err != nil { - log.NewError(operationID, "SendMsg rpc failed, ", pbData.String(), err.Error()) - } else if reply.ErrCode != 0 { - log.NewError(operationID, "SendMsg rpc failed, ", pbData.String(), reply.ErrCode, reply.ErrMsg) - } -} diff --git a/internal/common/notification/extend_msg_callback.go b/internal/common/notification/extend_msg_callback.go deleted file mode 100644 index 39958e4f0..000000000 --- a/internal/common/notification/extend_msg_callback.go +++ /dev/null @@ -1,62 +0,0 @@ -package notification - -import ( - cbApi "Open_IM/pkg/callback_struct" - "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/http" - "Open_IM/pkg/common/log" - "Open_IM/pkg/proto/msg" - "Open_IM/pkg/utils" - http2 "net/http" -) - -func callbackSetMessageReactionExtensions(setReq *msg.SetMessageReactionExtensionsReq) *cbApi.CallbackBeforeSetMessageReactionExtResp { - callbackResp := cbApi.CommonCallbackResp{OperationID: setReq.OperationID} - log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), setReq.String()) - req := cbApi.CallbackBeforeSetMessageReactionExtReq{ - OperationID: setReq.OperationID, - CallbackCommand: constant.CallbackBeforeSetMessageReactionExtensionCommand, - SourceID: setReq.SourceID, - OpUserID: setReq.OpUserID, - SessionType: setReq.SessionType, - ReactionExtensionList: setReq.ReactionExtensionList, - ClientMsgID: setReq.ClientMsgID, - IsReact: setReq.IsReact, - IsExternalExtensions: setReq.IsExternalExtensions, - MsgFirstModifyTime: setReq.MsgFirstModifyTime, - } - resp := &cbApi.CallbackBeforeSetMessageReactionExtResp{CommonCallbackResp: &callbackResp} - defer log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), req, *resp) - if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSetMessageReactionExtensionCommand, - req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut, nil); err != nil { - callbackResp.ErrCode = http2.StatusInternalServerError - callbackResp.ErrMsg = err.Error() - } - return resp - -} - -func callbackDeleteMessageReactionExtensions(setReq *msg.DeleteMessageListReactionExtensionsReq) *cbApi.CallbackDeleteMessageReactionExtResp { - callbackResp := cbApi.CommonCallbackResp{OperationID: setReq.OperationID} - log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), setReq.String()) - req := cbApi.CallbackDeleteMessageReactionExtReq{ - OperationID: setReq.OperationID, - CallbackCommand: constant.CallbackBeforeDeleteMessageReactionExtensionsCommand, - SourceID: setReq.SourceID, - OpUserID: setReq.OpUserID, - SessionType: setReq.SessionType, - ReactionExtensionList: setReq.ReactionExtensionList, - ClientMsgID: setReq.ClientMsgID, - IsExternalExtensions: setReq.IsExternalExtensions, - MsgFirstModifyTime: setReq.MsgFirstModifyTime, - } - resp := &cbApi.CallbackDeleteMessageReactionExtResp{CommonCallbackResp: &callbackResp} - defer log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), req, *resp) - if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeDeleteMessageReactionExtensionsCommand, - req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut, nil); err != nil { - callbackResp.ErrCode = http2.StatusInternalServerError - callbackResp.ErrMsg = err.Error() - } - return resp -} diff --git a/internal/common/notification/friend_notification.go b/internal/common/notification/friend_notification.go deleted file mode 100644 index 2ade47709..000000000 --- a/internal/common/notification/friend_notification.go +++ /dev/null @@ -1,174 +0,0 @@ -package notification - -import ( - "Open_IM/internal/common/check" - "Open_IM/internal/rpc/msg" - "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" - "Open_IM/pkg/common/tracelog" - pbFriend "Open_IM/pkg/proto/friend" - sdkws "Open_IM/pkg/proto/sdkws" - "Open_IM/pkg/utils" - "context" - "github.com/golang/protobuf/jsonpb" - "github.com/golang/protobuf/proto" -) - -func getFromToUserNickname(fromUserID, toUserID string) (string, string, error) { - users, err := check.GetUsersInfo(context.Background(), fromUserID, toUserID) - if err != nil { - return "", "", nil - } - if users[0].UserID == fromUserID { - return users[0].Nickname, users[1].Nickname, nil - } - return users[1].Nickname, users[0].Nickname, nil - -} - -func friendNotification(operationID, fromUserID, toUserID string, contentType int32, m proto.Message) { - log.Info(operationID, utils.GetSelfFuncName(), "args: ", contentType) - var err error - var tips sdkws.TipsComm - tips.Detail, err = proto.Marshal(m) - if err != nil { - log.Error(operationID, "Marshal failed ", err.Error(), m.String()) - return - } - - marshaler := jsonpb.Marshaler{ - OrigName: true, - EnumsAsInts: false, - EmitDefaults: false, - } - - tips.JsonDetail, _ = marshaler.MarshalToString(m) - - fromUserNickname, toUserNickname, err := getFromToUserNickname(fromUserID, toUserID) - if err != nil { - log.Error(operationID, "getFromToUserNickname failed ", err.Error(), fromUserID, toUserID) - return - } - cn := config.Config.Notification - switch contentType { - case constant.FriendApplicationNotification: - tips.DefaultTips = fromUserNickname + cn.FriendApplication.DefaultTips.Tips - case constant.FriendApplicationApprovedNotification: - tips.DefaultTips = fromUserNickname + cn.FriendApplicationApproved.DefaultTips.Tips - case constant.FriendApplicationRejectedNotification: - tips.DefaultTips = fromUserNickname + cn.FriendApplicationRejected.DefaultTips.Tips - case constant.FriendAddedNotification: - tips.DefaultTips = cn.FriendAdded.DefaultTips.Tips - case constant.FriendDeletedNotification: - tips.DefaultTips = cn.FriendDeleted.DefaultTips.Tips + toUserNickname - case constant.FriendRemarkSetNotification: - tips.DefaultTips = fromUserNickname + cn.FriendRemarkSet.DefaultTips.Tips - case constant.BlackAddedNotification: - tips.DefaultTips = cn.BlackAdded.DefaultTips.Tips - case constant.BlackDeletedNotification: - tips.DefaultTips = cn.BlackDeleted.DefaultTips.Tips + toUserNickname - case constant.UserInfoUpdatedNotification: - tips.DefaultTips = cn.UserInfoUpdated.DefaultTips.Tips - case constant.FriendInfoUpdatedNotification: - tips.DefaultTips = cn.FriendInfoUpdated.DefaultTips.Tips + toUserNickname - default: - log.Error(operationID, "contentType failed ", contentType) - return - } - - var n msg.NotificationMsg - n.SendID = fromUserID - n.RecvID = toUserID - n.ContentType = contentType - n.SessionType = constant.SingleChatType - n.MsgFrom = constant.SysMsgType - n.OperationID = operationID - n.Content, err = proto.Marshal(&tips) - if err != nil { - log.Error(operationID, "Marshal failed ", err.Error(), tips.String()) - return - } - msg.Notification(&n) -} - -func FriendApplicationAddNotification(ctx context.Context, req *pbFriend.AddFriendReq) { - FriendApplicationTips := sdkws.FriendApplicationTips{FromToUserID: &sdkws.FromToUserID{}} - FriendApplicationTips.FromToUserID.FromUserID = req.FromUserID - FriendApplicationTips.FromToUserID.ToUserID = req.ToUserID - friendNotification(tracelog.GetOperationID(ctx), req.FromUserID, req.ToUserID, constant.FriendApplicationNotification, &FriendApplicationTips) -} - -func FriendApplicationAgreedNotification(ctx context.Context, req *pbFriend.RespondFriendApplyReq) { - FriendApplicationApprovedTips := sdkws.FriendApplicationApprovedTips{FromToUserID: &sdkws.FromToUserID{}} - FriendApplicationApprovedTips.FromToUserID.FromUserID = req.FromUserID - FriendApplicationApprovedTips.FromToUserID.ToUserID = req.ToUserID - FriendApplicationApprovedTips.HandleMsg = req.HandleMsg - friendNotification(tracelog.GetOperationID(ctx), req.ToUserID, req.FromUserID, constant.FriendApplicationApprovedNotification, &FriendApplicationApprovedTips) -} - -func FriendApplicationRefusedNotification(ctx context.Context, req *pbFriend.RespondFriendApplyReq) { - FriendApplicationApprovedTips := sdkws.FriendApplicationApprovedTips{FromToUserID: &sdkws.FromToUserID{}} - FriendApplicationApprovedTips.FromToUserID.FromUserID = req.FromUserID - FriendApplicationApprovedTips.FromToUserID.ToUserID = req.ToUserID - FriendApplicationApprovedTips.HandleMsg = req.HandleMsg - friendNotification(tracelog.GetOperationID(ctx), req.ToUserID, req.FromUserID, constant.FriendApplicationRejectedNotification, &FriendApplicationApprovedTips) -} - -func FriendAddedNotification(ctx context.Context, operationID, opUserID, fromUserID, toUserID string) { - friendAddedTips := sdkws.FriendAddedTips{Friend: &sdkws.FriendInfo{}, OpUser: &sdkws.PublicUserInfo{}} - user, err := check.GetUsersInfo(context.Background(), opUserID) - if err != nil { - return - } - friendAddedTips.OpUser.UserID = user[0].UserID - friendAddedTips.OpUser.Ex = user[0].Ex - friendAddedTips.OpUser.Nickname = user[0].Nickname - friendAddedTips.OpUser.FaceURL = user[0].FaceURL - - friend, err := check.GetFriendsInfo(ctx, fromUserID, toUserID) - if err != nil { - return - } - friendAddedTips.Friend = friend - friendNotification(operationID, fromUserID, toUserID, constant.FriendAddedNotification, &friendAddedTips) -} - -func FriendDeletedNotification(ctx context.Context, req *pbFriend.DeleteFriendReq) { - friendDeletedTips := sdkws.FriendDeletedTips{FromToUserID: &sdkws.FromToUserID{}} - friendDeletedTips.FromToUserID.FromUserID = req.OwnerUserID - friendDeletedTips.FromToUserID.ToUserID = req.FriendUserID - friendNotification(tracelog.GetOperationID(ctx), req.OwnerUserID, req.FriendUserID, constant.FriendDeletedNotification, &friendDeletedTips) -} - -func FriendRemarkSetNotification(ctx context.Context, fromUserID, toUserID string) { - friendInfoChangedTips := sdkws.FriendInfoChangedTips{FromToUserID: &sdkws.FromToUserID{}} - friendInfoChangedTips.FromToUserID.FromUserID = fromUserID - friendInfoChangedTips.FromToUserID.ToUserID = toUserID - friendNotification(tracelog.GetOperationID(ctx), fromUserID, toUserID, constant.FriendRemarkSetNotification, &friendInfoChangedTips) -} - -func BlackAddedNotification(ctx context.Context, req *pbFriend.AddBlackReq) { - blackAddedTips := sdkws.BlackAddedTips{FromToUserID: &sdkws.FromToUserID{}} - blackAddedTips.FromToUserID.FromUserID = req.OwnerUserID - blackAddedTips.FromToUserID.ToUserID = req.BlackUserID - friendNotification(tracelog.GetOperationID(ctx), req.OwnerUserID, req.BlackUserID, constant.BlackAddedNotification, &blackAddedTips) -} - -func BlackDeletedNotification(ctx context.Context, req *pbFriend.RemoveBlackReq) { - blackDeletedTips := sdkws.BlackDeletedTips{FromToUserID: &sdkws.FromToUserID{}} - blackDeletedTips.FromToUserID.FromUserID = req.OwnerUserID - blackDeletedTips.FromToUserID.ToUserID = req.BlackUserID - friendNotification(tracelog.GetOperationID(ctx), req.OwnerUserID, req.BlackUserID, constant.BlackDeletedNotification, &blackDeletedTips) -} - -// send to myself -func UserInfoUpdatedNotification(ctx context.Context, opUserID string, changedUserID string) { - selfInfoUpdatedTips := sdkws.UserInfoUpdatedTips{UserID: changedUserID} - friendNotification(tracelog.GetOperationID(ctx), opUserID, changedUserID, constant.UserInfoUpdatedNotification, &selfInfoUpdatedTips) -} - -func FriendInfoUpdatedNotification(ctx context.Context, changedUserID string, needNotifiedUserID string, opUserID string) { - selfInfoUpdatedTips := sdkws.UserInfoUpdatedTips{UserID: changedUserID} - friendNotification(tracelog.GetOperationID(ctx), opUserID, needNotifiedUserID, constant.FriendInfoUpdatedNotification, &selfInfoUpdatedTips) -} diff --git a/internal/common/notification/group_notification.go b/internal/common/notification/group_notification.go deleted file mode 100644 index c3982ed6d..000000000 --- a/internal/common/notification/group_notification.go +++ /dev/null @@ -1,622 +0,0 @@ -package notification - -import ( - "Open_IM/internal/rpc/msg" - "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" - "Open_IM/pkg/common/log" - "Open_IM/pkg/common/tokenverify" - utils2 "Open_IM/pkg/common/utils" - pbGroup "Open_IM/pkg/proto/group" - "Open_IM/pkg/proto/sdkws" - "Open_IM/pkg/utils" - "context" - "github.com/golang/protobuf/jsonpb" - "github.com/golang/protobuf/proto" - "google.golang.org/protobuf/types/known/wrapperspb" -) - -//message GroupCreatedTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo Creator = 2; -// repeated GroupMemberFullInfo MemberList = 3; -// uint64 OperationTime = 4; -//} creator->group - -func setOpUserInfo(opUserID, groupID string, groupMemberInfo *sdkws.GroupMemberFullInfo) error { - if tokenverify.IsManagerUserID(opUserID) { - u, err := imdb.GetUserByUserID(opUserID) - if err != nil { - return utils.Wrap(err, "GetUserByUserID failed") - } - utils.CopyStructFields(groupMemberInfo, u) - groupMemberInfo.GroupID = groupID - } else { - u, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(groupID, opUserID) - if err == nil { - if err = utils2.GroupMemberDBCopyOpenIM(groupMemberInfo, u); err != nil { - return utils.Wrap(err, "") - } - } - user, err := imdb.GetUserByUserID(opUserID) - if err != nil { - return utils.Wrap(err, "") - } - groupMemberInfo.GroupID = groupID - groupMemberInfo.UserID = user.UserID - groupMemberInfo.Nickname = user.Nickname - groupMemberInfo.AppMangerLevel = user.AppMangerLevel - groupMemberInfo.FaceURL = user.FaceURL - } - return nil -} - -func setGroupInfo(groupID string, groupInfo *sdkws.GroupInfo) error { - group, err := imdb.GetGroupInfoByGroupID(groupID) - if err != nil { - return utils.Wrap(err, "GetGroupInfoByGroupID failed") - } - err = utils2.GroupDBCopyOpenIM(groupInfo, group) - if err != nil { - log.NewWarn("", "GroupDBCopyOpenIM failed ", groupID, err.Error()) - return nil - } - return nil -} - -func setGroupMemberInfo(groupID, userID string, groupMemberInfo *sdkws.GroupMemberFullInfo) error { - groupMember, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(groupID, userID) - if err == nil { - return utils.Wrap(utils2.GroupMemberDBCopyOpenIM(groupMemberInfo, groupMember), "") - } - - user, err := imdb.GetUserByUserID(userID) - if err != nil { - return utils.Wrap(err, "") - } - groupMemberInfo.GroupID = groupID - groupMemberInfo.UserID = user.UserID - groupMemberInfo.Nickname = user.Nickname - groupMemberInfo.AppMangerLevel = user.AppMangerLevel - groupMemberInfo.FaceURL = user.FaceURL - return nil -} - -func setGroupOwnerInfo(groupID string, groupMemberInfo *sdkws.GroupMemberFullInfo) error { - groupMember, err := imdb.GetGroupOwnerInfoByGroupID(groupID) - if err != nil { - return utils.Wrap(err, "") - } - if err = utils2.GroupMemberDBCopyOpenIM(groupMemberInfo, groupMember); err != nil { - return utils.Wrap(err, "") - } - return nil -} - -func setPublicUserInfo(userID string, publicUserInfo *sdkws.PublicUserInfo) error { - user, err := imdb.GetUserByUserID(userID) - if err != nil { - return utils.Wrap(err, "") - } - utils2.UserDBCopyOpenIMPublicUser(publicUserInfo, user) - return nil -} - -func groupNotification(contentType int32, m proto.Message, sendID, groupID, recvUserID, operationID string) { - log.Info(operationID, utils.GetSelfFuncName(), "args: ", contentType, sendID, groupID, recvUserID) - - var err error - var tips sdkws.TipsComm - tips.Detail, err = proto.Marshal(m) - if err != nil { - log.Error(operationID, "Marshal failed ", err.Error(), m.String()) - return - } - marshaler := jsonpb.Marshaler{ - OrigName: true, - EnumsAsInts: false, - EmitDefaults: false, - } - - tips.JsonDetail, _ = marshaler.MarshalToString(m) - var nickname string - - from, err := imdb.GetUserByUserID(sendID) - if err != nil { - log.Error(operationID, "GetUserByUserID failed ", err.Error(), sendID) - } - if from != nil { - nickname = from.Nickname - } - - to, err := imdb.GetUserByUserID(recvUserID) - if err != nil { - log.NewWarn(operationID, "GetUserByUserID failed ", err.Error(), recvUserID) - } - toNickname := "" - if to != nil { - toNickname = to.Nickname - } - - cn := config.Config.Notification - switch contentType { - case constant.GroupCreatedNotification: - tips.DefaultTips = nickname + " " + cn.GroupCreated.DefaultTips.Tips - case constant.GroupInfoSetNotification: - tips.DefaultTips = nickname + " " + cn.GroupInfoSet.DefaultTips.Tips - case constant.JoinGroupApplicationNotification: - tips.DefaultTips = nickname + " " + cn.JoinGroupApplication.DefaultTips.Tips - case constant.MemberQuitNotification: - tips.DefaultTips = nickname + " " + cn.MemberQuit.DefaultTips.Tips - case constant.GroupApplicationAcceptedNotification: // - tips.DefaultTips = toNickname + " " + cn.GroupApplicationAccepted.DefaultTips.Tips - case constant.GroupApplicationRejectedNotification: // - tips.DefaultTips = toNickname + " " + cn.GroupApplicationRejected.DefaultTips.Tips - case constant.GroupOwnerTransferredNotification: // - tips.DefaultTips = toNickname + " " + cn.GroupOwnerTransferred.DefaultTips.Tips - case constant.MemberKickedNotification: // - tips.DefaultTips = toNickname + " " + cn.MemberKicked.DefaultTips.Tips - case constant.MemberInvitedNotification: // - tips.DefaultTips = toNickname + " " + cn.MemberInvited.DefaultTips.Tips - case constant.MemberEnterNotification: - tips.DefaultTips = toNickname + " " + cn.MemberEnter.DefaultTips.Tips - case constant.GroupDismissedNotification: - tips.DefaultTips = toNickname + "" + cn.GroupDismissed.DefaultTips.Tips - case constant.GroupMutedNotification: - tips.DefaultTips = toNickname + "" + cn.GroupMuted.DefaultTips.Tips - case constant.GroupCancelMutedNotification: - tips.DefaultTips = toNickname + "" + cn.GroupCancelMuted.DefaultTips.Tips - case constant.GroupMemberMutedNotification: - tips.DefaultTips = toNickname + "" + cn.GroupMemberMuted.DefaultTips.Tips - case constant.GroupMemberCancelMutedNotification: - tips.DefaultTips = toNickname + "" + cn.GroupMemberCancelMuted.DefaultTips.Tips - case constant.GroupMemberInfoSetNotification: - tips.DefaultTips = toNickname + "" + cn.GroupMemberInfoSet.DefaultTips.Tips - case constant.GroupMemberSetToAdminNotification: - tips.DefaultTips = toNickname + "" + cn.GroupMemberSetToAdmin.DefaultTips.Tips - case constant.GroupMemberSetToOrdinaryUserNotification: - tips.DefaultTips = toNickname + "" + cn.GroupMemberSetToOrdinary.DefaultTips.Tips - default: - log.Error(operationID, "contentType failed ", contentType) - return - } - - var n msg.NotificationMsg - n.SendID = sendID - if groupID != "" { - n.RecvID = groupID - group, err := imdb.GetGroupInfoByGroupID(groupID) - if err != nil { - log.NewError(operationID, "GetGroupInfoByGroupID failed ", err.Error(), groupID) - } - switch group.GroupType { - case constant.NormalGroup: - n.SessionType = constant.GroupChatType - default: - n.SessionType = constant.SuperGroupChatType - } - } else { - n.RecvID = recvUserID - n.SessionType = constant.SingleChatType - } - n.ContentType = contentType - n.OperationID = operationID - n.Content, err = proto.Marshal(&tips) - if err != nil { - log.Error(operationID, "Marshal failed ", err.Error(), tips.String()) - return - } - msg.Notification(&n) -} - -// 创建群后调用 -func GroupCreatedNotification(operationID, opUserID, groupID string, initMemberList []string) { - GroupCreatedTips := sdkws.GroupCreatedTips{Group: &sdkws.GroupInfo{}, - OpUser: &sdkws.GroupMemberFullInfo{}, GroupOwnerUser: &sdkws.GroupMemberFullInfo{}} - if err := setOpUserInfo(opUserID, groupID, GroupCreatedTips.OpUser); err != nil { - log.NewError(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID, GroupCreatedTips.OpUser) - return - } - err := setGroupInfo(groupID, GroupCreatedTips.Group) - if err != nil { - log.Error(operationID, "setGroupInfo failed ", groupID, GroupCreatedTips.Group) - return - } - imdb.GetGroupOwnerInfoByGroupID(groupID) - if err := setGroupOwnerInfo(groupID, GroupCreatedTips.GroupOwnerUser); err != nil { - log.Error(operationID, "setGroupOwnerInfo failed", err.Error(), groupID) - return - } - for _, v := range initMemberList { - var groupMemberInfo sdkws.GroupMemberFullInfo - if err := setGroupMemberInfo(groupID, v, &groupMemberInfo); err != nil { - log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID, v) - continue - } - GroupCreatedTips.MemberList = append(GroupCreatedTips.MemberList, &groupMemberInfo) - if len(GroupCreatedTips.MemberList) == constant.MaxNotificationNum { - break - } - } - groupNotification(constant.GroupCreatedNotification, &GroupCreatedTips, opUserID, groupID, "", operationID) -} - -// 群信息改变后掉用 -// groupName := "" -// -// notification := "" -// introduction := "" -// faceURL := "" -func GroupInfoSetNotification(operationID, opUserID, groupID string, groupName, notification, introduction, faceURL string, needVerification *wrapperspb.Int32Value) { - GroupInfoChangedTips := sdkws.GroupInfoSetTips{Group: &sdkws.GroupInfo{}, OpUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, GroupInfoChangedTips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - GroupInfoChangedTips.Group.GroupName = groupName - GroupInfoChangedTips.Group.Notification = notification - GroupInfoChangedTips.Group.Introduction = introduction - GroupInfoChangedTips.Group.FaceURL = faceURL - if needVerification != nil { - GroupInfoChangedTips.Group.NeedVerification = needVerification.Value - } - - if err := setOpUserInfo(opUserID, groupID, GroupInfoChangedTips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - groupNotification(constant.GroupInfoSetNotification, &GroupInfoChangedTips, opUserID, groupID, "", operationID) -} - -func GroupMutedNotification(operationID, opUserID, groupID string) { - tips := sdkws.GroupMutedTips{Group: &sdkws.GroupInfo{}, - OpUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, tips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - if err := setOpUserInfo(opUserID, groupID, tips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - groupNotification(constant.GroupMutedNotification, &tips, opUserID, groupID, "", operationID) -} - -func GroupCancelMutedNotification(operationID, opUserID, groupID string) { - tips := sdkws.GroupCancelMutedTips{Group: &sdkws.GroupInfo{}, - OpUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, tips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - if err := setOpUserInfo(opUserID, groupID, tips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - groupNotification(constant.GroupCancelMutedNotification, &tips, opUserID, groupID, "", operationID) -} - -func GroupMemberMutedNotification(operationID, opUserID, groupID, groupMemberUserID string, mutedSeconds uint32) { - tips := sdkws.GroupMemberMutedTips{Group: &sdkws.GroupInfo{}, - OpUser: &sdkws.GroupMemberFullInfo{}, MutedUser: &sdkws.GroupMemberFullInfo{}} - tips.MutedSeconds = mutedSeconds - if err := setGroupInfo(groupID, tips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - if err := setOpUserInfo(opUserID, groupID, tips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - if err := setGroupMemberInfo(groupID, groupMemberUserID, tips.MutedUser); err != nil { - log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID, groupMemberUserID) - return - } - groupNotification(constant.GroupMemberMutedNotification, &tips, opUserID, groupID, "", operationID) -} - -func GroupMemberInfoSetNotification(operationID, opUserID, groupID, groupMemberUserID string) { - tips := sdkws.GroupMemberInfoSetTips{Group: &sdkws.GroupInfo{}, - OpUser: &sdkws.GroupMemberFullInfo{}, ChangedUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, tips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - if err := setOpUserInfo(opUserID, groupID, tips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - if err := setGroupMemberInfo(groupID, groupMemberUserID, tips.ChangedUser); err != nil { - log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID, groupMemberUserID) - return - } - groupNotification(constant.GroupMemberInfoSetNotification, &tips, opUserID, groupID, "", operationID) -} - -func GroupMemberRoleLevelChangeNotification(operationID, opUserID, groupID, groupMemberUserID string, notificationType int32) { - if notificationType != constant.GroupMemberSetToAdminNotification && notificationType != constant.GroupMemberSetToOrdinaryUserNotification { - log.NewError(operationID, utils.GetSelfFuncName(), "invalid notificationType: ", notificationType) - return - } - tips := sdkws.GroupMemberInfoSetTips{Group: &sdkws.GroupInfo{}, - OpUser: &sdkws.GroupMemberFullInfo{}, ChangedUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, tips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - if err := setOpUserInfo(opUserID, groupID, tips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - if err := setGroupMemberInfo(groupID, groupMemberUserID, tips.ChangedUser); err != nil { - log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID, groupMemberUserID) - return - } - groupNotification(notificationType, &tips, opUserID, groupID, "", operationID) -} - -func GroupMemberCancelMutedNotification(operationID, opUserID, groupID, groupMemberUserID string) { - tips := sdkws.GroupMemberCancelMutedTips{Group: &sdkws.GroupInfo{}, - OpUser: &sdkws.GroupMemberFullInfo{}, MutedUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, tips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - if err := setOpUserInfo(opUserID, groupID, tips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - if err := setGroupMemberInfo(groupID, groupMemberUserID, tips.MutedUser); err != nil { - log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID, groupMemberUserID) - return - } - groupNotification(constant.GroupMemberCancelMutedNotification, &tips, opUserID, groupID, "", operationID) -} - -// message ReceiveJoinApplicationTips{ -// GroupInfo Group = 1; -// PublicUserInfo Applicant = 2; -// string Reason = 3; -// } apply->all managers GroupID string `protobuf:"bytes,1,opt,name=GroupID" json:"GroupID,omitempty"` -// -// ReqMessage string `protobuf:"bytes,2,opt,name=ReqMessage" json:"ReqMessage,omitempty"` -// OpUserID string `protobuf:"bytes,3,opt,name=OpUserID" json:"OpUserID,omitempty"` -// OperationID string `protobuf:"bytes,4,opt,name=OperationID" json:"OperationID,omitempty"` -// -// 申请进群后调用 -func JoinGroupApplicationNotification(ctx context.Context, req *pbGroup.JoinGroupReq) { - JoinGroupApplicationTips := sdkws.JoinGroupApplicationTips{Group: &sdkws.GroupInfo{}, Applicant: &sdkws.PublicUserInfo{}} - err := setGroupInfo(req.GroupID, JoinGroupApplicationTips.Group) - if err != nil { - log.Error(utils.OperationID(ctx), "setGroupInfo failed ", err.Error(), req.GroupID) - return - } - if err = setPublicUserInfo(utils.OpUserID(ctx), JoinGroupApplicationTips.Applicant); err != nil { - log.Error(utils.OperationID(ctx), "setPublicUserInfo failed ", err.Error(), utils.OpUserID(ctx)) - return - } - JoinGroupApplicationTips.ReqMsg = req.ReqMessage - - managerList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) - if err != nil { - log.NewError(utils.OperationID(ctx), "GetOwnerManagerByGroupId failed ", err.Error(), req.GroupID) - return - } - for _, v := range managerList { - groupNotification(constant.JoinGroupApplicationNotification, &JoinGroupApplicationTips, utils.OpUserID(ctx), "", v.UserID, utils.OperationID(ctx)) - log.NewInfo(utils.OperationID(ctx), "Notification ", v) - } -} - -func MemberQuitNotification(req *pbGroup.QuitGroupReq) { - MemberQuitTips := sdkws.MemberQuitTips{Group: &sdkws.GroupInfo{}, QuitUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(req.GroupID, MemberQuitTips.Group); err != nil { - log.Error(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID) - return - } - if err := setOpUserInfo(req.OpUserID, req.GroupID, MemberQuitTips.QuitUser); err != nil { - log.Error(req.OperationID, "setOpUserInfo failed ", err.Error(), req.OpUserID, req.GroupID) - return - } - - groupNotification(constant.MemberQuitNotification, &MemberQuitTips, req.OpUserID, req.GroupID, "", req.OperationID) -} - -// message ApplicationProcessedTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo OpUser = 2; -// int32 Result = 3; -// string Reason = 4; -// } -// -// 处理进群请求后调用 -func GroupApplicationAcceptedNotification(req *pbGroup.GroupApplicationResponseReq) { - GroupApplicationAcceptedTips := sdkws.GroupApplicationAcceptedTips{Group: &sdkws.GroupInfo{}, OpUser: &sdkws.GroupMemberFullInfo{}, HandleMsg: req.HandledMsg} - if err := setGroupInfo(req.GroupID, GroupApplicationAcceptedTips.Group); err != nil { - log.NewError(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID, GroupApplicationAcceptedTips.Group) - return - } - if err := setOpUserInfo(req.OpUserID, req.GroupID, GroupApplicationAcceptedTips.OpUser); err != nil { - log.Error(req.OperationID, "setOpUserInfo failed", req.OpUserID, req.GroupID, GroupApplicationAcceptedTips.OpUser) - return - } - - groupNotification(constant.GroupApplicationAcceptedNotification, &GroupApplicationAcceptedTips, req.OpUserID, "", req.FromUserID, req.OperationID) - adminList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) - if err != nil { - log.Error(req.OperationID, "GetOwnerManagerByGroupID failed", req.GroupID) - return - } - for _, v := range adminList { - if v.UserID == req.OpUserID { - continue - } - GroupApplicationAcceptedTips.ReceiverAs = 1 - groupNotification(constant.GroupApplicationAcceptedNotification, &GroupApplicationAcceptedTips, req.OpUserID, "", v.UserID, req.OperationID) - } -} - -func GroupApplicationRejectedNotification(req *pbGroup.GroupApplicationResponseReq) { - GroupApplicationRejectedTips := sdkws.GroupApplicationRejectedTips{Group: &sdkws.GroupInfo{}, OpUser: &sdkws.GroupMemberFullInfo{}, HandleMsg: req.HandledMsg} - if err := setGroupInfo(req.GroupID, GroupApplicationRejectedTips.Group); err != nil { - log.NewError(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID, GroupApplicationRejectedTips.Group) - return - } - if err := setOpUserInfo(req.OpUserID, req.GroupID, GroupApplicationRejectedTips.OpUser); err != nil { - log.Error(req.OperationID, "setOpUserInfo failed", req.OpUserID, req.GroupID, GroupApplicationRejectedTips.OpUser) - return - } - groupNotification(constant.GroupApplicationRejectedNotification, &GroupApplicationRejectedTips, req.OpUserID, "", req.FromUserID, req.OperationID) - adminList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) - if err != nil { - log.Error(req.OperationID, "GetOwnerManagerByGroupID failed", req.GroupID) - return - } - for _, v := range adminList { - if v.UserID == req.OpUserID { - continue - } - GroupApplicationRejectedTips.ReceiverAs = 1 - groupNotification(constant.GroupApplicationRejectedNotification, &GroupApplicationRejectedTips, req.OpUserID, "", v.UserID, req.OperationID) - } -} - -func GroupOwnerTransferredNotification(req *pbGroup.TransferGroupOwnerReq) { - GroupOwnerTransferredTips := sdkws.GroupOwnerTransferredTips{Group: &sdkws.GroupInfo{}, OpUser: &sdkws.GroupMemberFullInfo{}, NewGroupOwner: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(req.GroupID, GroupOwnerTransferredTips.Group); err != nil { - log.NewError(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID) - return - } - if err := setOpUserInfo(req.OpUserID, req.GroupID, GroupOwnerTransferredTips.OpUser); err != nil { - log.Error(req.OperationID, "setOpUserInfo failed", req.OpUserID, req.GroupID) - return - } - if err := setGroupMemberInfo(req.GroupID, req.NewOwnerUserID, GroupOwnerTransferredTips.NewGroupOwner); err != nil { - log.Error(req.OperationID, "setGroupMemberInfo failed", req.GroupID, req.NewOwnerUserID) - return - } - groupNotification(constant.GroupOwnerTransferredNotification, &GroupOwnerTransferredTips, req.OpUserID, req.GroupID, "", req.OperationID) -} - -func GroupDismissedNotification(req *pbGroup.DismissGroupReq) { - tips := sdkws.GroupDismissedTips{Group: &sdkws.GroupInfo{}, OpUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(req.GroupID, tips.Group); err != nil { - log.NewError(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID) - return - } - if err := setOpUserInfo(req.OpUserID, req.GroupID, tips.OpUser); err != nil { - log.Error(req.OperationID, "setOpUserInfo failed", req.OpUserID, req.GroupID) - return - } - groupNotification(constant.GroupDismissedNotification, &tips, req.OpUserID, req.GroupID, "", req.OperationID) -} - -// message MemberKickedTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo OpUser = 2; -// GroupMemberFullInfo KickedUser = 3; -// uint64 OperationTime = 4; -// } -// -// 被踢后调用 -func MemberKickedNotification(req *pbGroup.KickGroupMemberReq, kickedUserIDList []string) { - MemberKickedTips := sdkws.MemberKickedTips{Group: &sdkws.GroupInfo{}, OpUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(req.GroupID, MemberKickedTips.Group); err != nil { - log.Error(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID) - return - } - if err := setOpUserInfo(req.OpUserID, req.GroupID, MemberKickedTips.OpUser); err != nil { - log.Error(req.OperationID, "setOpUserInfo failed ", err.Error(), req.OpUserID) - return - } - for _, v := range kickedUserIDList { - var groupMemberInfo sdkws.GroupMemberFullInfo - if err := setGroupMemberInfo(req.GroupID, v, &groupMemberInfo); err != nil { - log.Error(req.OperationID, "setGroupMemberInfo failed ", err.Error(), req.GroupID, v) - continue - } - MemberKickedTips.KickedUserList = append(MemberKickedTips.KickedUserList, &groupMemberInfo) - } - groupNotification(constant.MemberKickedNotification, &MemberKickedTips, req.OpUserID, req.GroupID, "", req.OperationID) - // - //for _, v := range kickedUserIDList { - // groupNotification(constant.MemberKickedNotification, &MemberKickedTips, req.OpUserID, "", v, req.OperationID) - //} -} - -// message MemberInvitedTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo OpUser = 2; -// GroupMemberFullInfo InvitedUser = 3; -// uint64 OperationTime = 4; -// } -// -// 被邀请进群后调用 -func MemberInvitedNotification(operationID, groupID, opUserID, reason string, invitedUserIDList []string) { - MemberInvitedTips := sdkws.MemberInvitedTips{Group: &sdkws.GroupInfo{}, OpUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, MemberInvitedTips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) - return - } - if err := setOpUserInfo(opUserID, groupID, MemberInvitedTips.OpUser); err != nil { - log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) - return - } - for _, v := range invitedUserIDList { - var groupMemberInfo sdkws.GroupMemberFullInfo - if err := setGroupMemberInfo(groupID, v, &groupMemberInfo); err != nil { - log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID) - continue - } - MemberInvitedTips.InvitedUserList = append(MemberInvitedTips.InvitedUserList, &groupMemberInfo) - } - groupNotification(constant.MemberInvitedNotification, &MemberInvitedTips, opUserID, groupID, "", operationID) -} - -//message GroupInfoChangedTips{ -// int32 ChangedType = 1; //bitwise operators: 1:groupName; 10:Notification 100:Introduction; 1000:FaceUrl -// GroupInfo Group = 2; -// GroupMemberFullInfo OpUser = 3; -//} - -//message MemberLeaveTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo LeaverUser = 2; -// uint64 OperationTime = 3; -//} - -//群成员退群后调用 - -// message MemberEnterTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo EntrantUser = 2; -// uint64 OperationTime = 3; -// } -// -// 群成员主动申请进群,管理员同意后调用, -func MemberEnterNotification(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) { - MemberEnterTips := sdkws.MemberEnterTips{Group: &sdkws.GroupInfo{}, EntrantUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(req.GroupID, MemberEnterTips.Group); err != nil { - log.Error(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID, MemberEnterTips.Group) - return - } - if err := setGroupMemberInfo(req.GroupID, req.FromUserID, MemberEnterTips.EntrantUser); err != nil { - log.Error(req.OperationID, "setGroupMemberInfo failed ", err.Error(), req.OpUserID, req.GroupID, MemberEnterTips.EntrantUser) - return - } - groupNotification(constant.MemberEnterNotification, &MemberEnterTips, req.OpUserID, req.GroupID, "", req.OperationID) -} - -func MemberEnterDirectlyNotification(groupID string, entrantUserID string, operationID string) { - MemberEnterTips := sdkws.MemberEnterTips{Group: &sdkws.GroupInfo{}, EntrantUser: &sdkws.GroupMemberFullInfo{}} - if err := setGroupInfo(groupID, MemberEnterTips.Group); err != nil { - log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID, MemberEnterTips.Group) - return - } - if err := setGroupMemberInfo(groupID, entrantUserID, MemberEnterTips.EntrantUser); err != nil { - log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID, entrantUserID, MemberEnterTips.EntrantUser) - return - } - groupNotification(constant.MemberEnterNotification, &MemberEnterTips, entrantUserID, groupID, "", operationID) -} diff --git a/internal/common/notification/msg_notification.go b/internal/common/notification/msg_notification.go deleted file mode 100644 index a846ce738..000000000 --- a/internal/common/notification/msg_notification.go +++ /dev/null @@ -1,48 +0,0 @@ -package notification - -import ( - "Open_IM/internal/rpc/msg" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" - sdkws "Open_IM/pkg/proto/sdkws" - "Open_IM/pkg/utils" - "github.com/golang/protobuf/jsonpb" - "github.com/golang/protobuf/proto" -) - -func DeleteMessageNotification(opUserID, userID string, seqList []uint32, operationID string) { - DeleteMessageTips := sdkws.DeleteMessageTips{OpUserID: opUserID, UserID: userID, SeqList: seqList} - MessageNotification(operationID, userID, userID, constant.DeleteMessageNotification, &DeleteMessageTips) -} - -func MessageNotification(operationID, sendID, recvID string, contentType int32, m proto.Message) { - log.Debug(operationID, utils.GetSelfFuncName(), "args: ", m.String(), contentType) - var err error - var tips sdkws.TipsComm - tips.Detail, err = proto.Marshal(m) - if err != nil { - log.Error(operationID, "Marshal failed ", err.Error(), m.String()) - return - } - - marshaler := jsonpb.Marshaler{ - OrigName: true, - EnumsAsInts: false, - EmitDefaults: false, - } - - tips.JsonDetail, _ = marshaler.MarshalToString(m) - var n msg.NotificationMsg - n.SendID = sendID - n.RecvID = recvID - n.ContentType = contentType - n.SessionType = constant.SingleChatType - n.MsgFrom = constant.SysMsgType - n.OperationID = operationID - n.Content, err = proto.Marshal(&tips) - if err != nil { - log.Error(operationID, "Marshal failed ", err.Error(), tips.String()) - return - } - msg.Notification(&n) -} diff --git a/internal/common/notification/super_group_notification.go b/internal/common/notification/super_group_notification.go deleted file mode 100644 index 19d08dd98..000000000 --- a/internal/common/notification/super_group_notification.go +++ /dev/null @@ -1,24 +0,0 @@ -package notification - -import ( - "Open_IM/internal/rpc/msg" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" - //sdk "Open_IM/pkg/proto/sdkws" - "Open_IM/pkg/utils" - //"github.com/golang/protobuf/jsonpb" - //"github.com/golang/protobuf/proto" -) - -func SuperGroupNotification(operationID, sendID, recvID string) { - n := &msg.NotificationMsg{ - SendID: sendID, - RecvID: recvID, - MsgFrom: constant.SysMsgType, - ContentType: constant.SuperGroupUpdateNotification, - SessionType: constant.SingleChatType, - OperationID: operationID, - } - log.NewInfo(operationID, utils.GetSelfFuncName(), string(n.Content)) - msg.Notification(n) -} diff --git a/internal/rpc/friend/friend.go b/internal/rpc/friend/friend.go index 218ed13a7..28b146281 100644 --- a/internal/rpc/friend/friend.go +++ b/internal/rpc/friend/friend.go @@ -24,7 +24,6 @@ import ( type friendServer struct { *rpcserver.RpcServer - controller.FriendInterface controller.BlackInterface } diff --git a/internal/rpc/msg/chat.go b/internal/rpc/msg/chat.go deleted file mode 100644 index ff2debcb8..000000000 --- a/internal/rpc/msg/chat.go +++ /dev/null @@ -1,63 +0,0 @@ -package msg - -import ( - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/db" - "Open_IM/pkg/common/log" - "Open_IM/pkg/common/tokenverify" - pbChat "Open_IM/pkg/proto/msg" - "Open_IM/pkg/utils" - "context" -) - -func (rpc *rpcChat) ClearMsg(_ context.Context, req *pbChat.ClearMsgReq) (*pbChat.ClearMsgResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc req: ", req.String()) - if req.OpUserID != req.UserID && !tokenverify.IsManagerUserID(req.UserID) { - errMsg := "No permission" + req.OpUserID + req.UserID - log.Error(req.OperationID, errMsg) - return &pbChat.ClearMsgResp{ErrCode: constant.ErrNoPermission.ErrCode, ErrMsg: errMsg}, nil - } - log.Debug(req.OperationID, "CleanUpOneUserAllMsgFromRedis args", req.UserID) - err := db.DB.CleanUpOneUserAllMsgFromRedis(req.UserID, req.OperationID) - if err != nil { - errMsg := "CleanUpOneUserAllMsgFromRedis failed " + err.Error() + req.OperationID + req.UserID - log.Error(req.OperationID, errMsg) - return &pbChat.ClearMsgResp{ErrCode: constant.ErrDatabase.ErrCode, ErrMsg: errMsg}, nil - } - log.Debug(req.OperationID, "CleanUpUserMsgFromMongo args", req.UserID) - err = db.DB.CleanUpUserMsgFromMongo(req.UserID, req.OperationID) - if err != nil { - errMsg := "CleanUpUserMsgFromMongo failed " + err.Error() + req.OperationID + req.UserID - log.Error(req.OperationID, errMsg) - return &pbChat.ClearMsgResp{ErrCode: constant.ErrDatabase.ErrCode, ErrMsg: errMsg}, nil - } - - resp := pbChat.ClearMsgResp{ErrCode: 0} - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) - return &resp, nil -} - -func (rpc *rpcChat) SetMsgMinSeq(_ context.Context, req *pbChat.SetMsgMinSeqReq) (*pbChat.SetMsgMinSeqResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc req: ", req.String()) - if req.OpUserID != req.UserID && !tokenverify.IsManagerUserID(req.UserID) { - errMsg := "No permission" + req.OpUserID + req.UserID - log.Error(req.OperationID, errMsg) - return &pbChat.SetMsgMinSeqResp{ErrCode: constant.ErrNoPermission.ErrCode, ErrMsg: errMsg}, nil - } - if req.GroupID == "" { - err := db.DB.SetUserMinSeq(req.UserID, req.MinSeq) - if err != nil { - errMsg := "SetUserMinSeq failed " + err.Error() + req.OperationID + req.UserID + utils.Uint32ToString(req.MinSeq) - log.Error(req.OperationID, errMsg) - return &pbChat.SetMsgMinSeqResp{ErrCode: constant.ErrDatabase.ErrCode, ErrMsg: errMsg}, nil - } - return &pbChat.SetMsgMinSeqResp{}, nil - } - err := db.DB.SetGroupUserMinSeq(req.GroupID, req.UserID, uint64(req.MinSeq)) - if err != nil { - errMsg := "SetGroupUserMinSeq failed " + err.Error() + req.OperationID + req.GroupID + req.UserID + utils.Uint32ToString(req.MinSeq) - log.Error(req.OperationID, errMsg) - return &pbChat.SetMsgMinSeqResp{ErrCode: constant.ErrDatabase.ErrCode, ErrMsg: errMsg}, nil - } - return &pbChat.SetMsgMinSeqResp{}, nil -} diff --git a/internal/rpc/msg/del_msg.go b/internal/rpc/msg/delete.go similarity index 59% rename from internal/rpc/msg/del_msg.go rename to internal/rpc/msg/delete.go index 39559d00b..954126134 100644 --- a/internal/rpc/msg/del_msg.go +++ b/internal/rpc/msg/delete.go @@ -54,3 +54,30 @@ func (rpc *rpcChat) DelSuperGroupMsg(ctx context.Context, req *msg.DelSuperGroup log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } + +func (rpc *rpcChat) ClearMsg(_ context.Context, req *pbChat.ClearMsgReq) (*pbChat.ClearMsgResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc req: ", req.String()) + if req.OpUserID != req.UserID && !tokenverify.IsManagerUserID(req.UserID) { + errMsg := "No permission" + req.OpUserID + req.UserID + log.Error(req.OperationID, errMsg) + return &pbChat.ClearMsgResp{ErrCode: constant.ErrNoPermission.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "CleanUpOneUserAllMsgFromRedis args", req.UserID) + err := db.DB.CleanUpOneUserAllMsgFromRedis(req.UserID, req.OperationID) + if err != nil { + errMsg := "CleanUpOneUserAllMsgFromRedis failed " + err.Error() + req.OperationID + req.UserID + log.Error(req.OperationID, errMsg) + return &pbChat.ClearMsgResp{ErrCode: constant.ErrDatabase.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "CleanUpUserMsgFromMongo args", req.UserID) + err = db.DB.CleanUpUserMsgFromMongo(req.UserID, req.OperationID) + if err != nil { + errMsg := "CleanUpUserMsgFromMongo failed " + err.Error() + req.OperationID + req.UserID + log.Error(req.OperationID, errMsg) + return &pbChat.ClearMsgResp{ErrCode: constant.ErrDatabase.ErrCode, ErrMsg: errMsg}, nil + } + + resp := pbChat.ClearMsgResp{ErrCode: 0} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return &resp, nil +} diff --git a/internal/rpc/msg/pull_message.go b/internal/rpc/msg/pull_message.go deleted file mode 100644 index 265c1e264..000000000 --- a/internal/rpc/msg/pull_message.go +++ /dev/null @@ -1,126 +0,0 @@ -package msg - -import ( - "Open_IM/pkg/utils" - "context" - go_redis "github.com/go-redis/redis/v8" - - commonDB "Open_IM/pkg/common/db" - "Open_IM/pkg/common/log" - sdkws "Open_IM/pkg/proto/sdkws" - - promePkg "Open_IM/pkg/common/prometheus" -) - -func (rpc *rpcChat) GetMaxAndMinSeq(_ context.Context, in *sdkws.GetMaxAndMinSeqReq) (*sdkws.GetMaxAndMinSeqResp, error) { - log.NewInfo(in.OperationID, "rpc getMaxAndMinSeq is arriving", in.String()) - resp := new(sdkws.GetMaxAndMinSeqResp) - m := make(map[string]*sdkws.MaxAndMinSeq) - var maxSeq, minSeq uint64 - var err1, err2 error - maxSeq, err1 = commonDB.DB.GetUserMaxSeq(in.UserID) - minSeq, err2 = commonDB.DB.GetUserMinSeq(in.UserID) - if (err1 != nil && err1 != go_redis.Nil) || (err2 != nil && err2 != go_redis.Nil) { - log.NewError(in.OperationID, "getMaxSeq from redis error", in.String()) - if err1 != nil { - log.NewError(in.OperationID, utils.GetSelfFuncName(), err1.Error()) - } - if err2 != nil { - log.NewError(in.OperationID, utils.GetSelfFuncName(), err2.Error()) - } - resp.ErrCode = 200 - resp.ErrMsg = "redis get err" - return resp, nil - } - resp.MaxSeq = uint32(maxSeq) - resp.MinSeq = uint32(minSeq) - for _, groupID := range in.GroupIDList { - x := new(sdkws.MaxAndMinSeq) - maxSeq, _ := commonDB.DB.GetGroupMaxSeq(groupID) - minSeq, _ := commonDB.DB.GetGroupUserMinSeq(groupID, in.UserID) - x.MaxSeq = uint32(maxSeq) - x.MinSeq = uint32(minSeq) - m[groupID] = x - } - resp.GroupMaxAndMinSeq = m - return resp, nil -} - -func (rpc *rpcChat) PullMessageBySeqList(_ context.Context, in *sdkws.PullMessageBySeqListReq) (*sdkws.PullMessageBySeqListResp, error) { - log.NewInfo(in.OperationID, "rpc PullMessageBySeqList is arriving", in.String()) - resp := new(sdkws.PullMessageBySeqListResp) - m := make(map[string]*sdkws.MsgDataList) - redisMsgList, failedSeqList, err := commonDB.DB.GetMessageListBySeq(in.UserID, in.SeqList, in.OperationID) - if err != nil { - if err != go_redis.Nil { - promePkg.PromeAdd(promePkg.MsgPullFromRedisFailedCounter, len(failedSeqList)) - log.Error(in.OperationID, "get message from redis exception", err.Error(), failedSeqList) - } else { - log.Debug(in.OperationID, "get message from redis is nil", failedSeqList) - } - msgList, err1 := commonDB.DB.GetMsgBySeqListMongo2(in.UserID, failedSeqList, in.OperationID) - if err1 != nil { - promePkg.PromeAdd(promePkg.MsgPullFromMongoFailedCounter, len(failedSeqList)) - log.Error(in.OperationID, "PullMessageBySeqList data error", in.String(), err1.Error()) - resp.ErrCode = 201 - resp.ErrMsg = err1.Error() - return resp, nil - } else { - promePkg.PromeAdd(promePkg.MsgPullFromMongoSuccessCounter, len(msgList)) - redisMsgList = append(redisMsgList, msgList...) - resp.List = redisMsgList - } - } else { - promePkg.PromeAdd(promePkg.MsgPullFromRedisSuccessCounter, len(redisMsgList)) - resp.List = redisMsgList - } - - for k, v := range in.GroupSeqList { - x := new(sdkws.MsgDataList) - redisMsgList, failedSeqList, err := commonDB.DB.GetMessageListBySeq(k, v.SeqList, in.OperationID) - if err != nil { - if err != go_redis.Nil { - promePkg.PromeAdd(promePkg.MsgPullFromRedisFailedCounter, len(failedSeqList)) - log.Error(in.OperationID, "get message from redis exception", err.Error(), failedSeqList) - } else { - log.Debug(in.OperationID, "get message from redis is nil", failedSeqList) - } - msgList, err1 := commonDB.DB.GetSuperGroupMsgBySeqListMongo(k, failedSeqList, in.OperationID) - if err1 != nil { - promePkg.PromeAdd(promePkg.MsgPullFromMongoFailedCounter, len(failedSeqList)) - log.Error(in.OperationID, "PullMessageBySeqList data error", in.String(), err1.Error()) - resp.ErrCode = 201 - resp.ErrMsg = err1.Error() - return resp, nil - } else { - promePkg.PromeAdd(promePkg.MsgPullFromMongoSuccessCounter, len(msgList)) - redisMsgList = append(redisMsgList, msgList...) - x.MsgDataList = redisMsgList - m[k] = x - } - } else { - promePkg.PromeAdd(promePkg.MsgPullFromRedisSuccessCounter, len(redisMsgList)) - x.MsgDataList = redisMsgList - m[k] = x - } - } - resp.GroupMsgDataList = m - return resp, nil -} - -type MsgFormats []*sdkws.MsgData - -// Implement the sort.Interface interface to get the number of elements method -func (s MsgFormats) Len() int { - return len(s) -} - -//Implement the sort.Interface interface comparison element method -func (s MsgFormats) Less(i, j int) bool { - return s[i].SendTime < s[j].SendTime -} - -//Implement the sort.Interface interface exchange element method -func (s MsgFormats) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} diff --git a/internal/rpc/msg/query_msg.go b/internal/rpc/msg/query_msg.go index f8a2afc7c..1bdc98fac 100644 --- a/internal/rpc/msg/query_msg.go +++ b/internal/rpc/msg/query_msg.go @@ -45,7 +45,3 @@ func (rpc *rpcChat) GetSuperGroupMsg(context context.Context, req *msg.GetSuperG log.Debug(req.OperationID, utils.GetSelfFuncName(), resp.String()) return resp, nil } - -func (rpc *rpcChat) GetWriteDiffMsg(context context.Context, req *msg.GetWriteDiffMsgReq) (*msg.GetWriteDiffMsgResp, error) { - panic("implement me") -} diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 2060e8998..6da381df9 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -7,10 +7,8 @@ import ( rocksCache "Open_IM/pkg/common/db/rocks_cache" "Open_IM/pkg/common/log" "Open_IM/pkg/common/tokenverify" - "Open_IM/pkg/getcdv3" cacheRpc "Open_IM/pkg/proto/cache" - pbConversation "Open_IM/pkg/proto/conversation" - pbChat "Open_IM/pkg/proto/msg" + "Open_IM/pkg/proto/msg" pbPush "Open_IM/pkg/proto/push" pbRelay "Open_IM/pkg/proto/relay" sdkws "Open_IM/pkg/proto/sdkws" @@ -23,26 +21,17 @@ import ( "sync" "time" - promePkg "Open_IM/pkg/common/prometheus" go_redis "github.com/go-redis/redis/v8" - "github.com/golang/protobuf/proto" ) -//When the number of group members is greater than this value,Online users will be sent first,Guaranteed service availability -const GroupMemberNum = 500 - var ( ExcludeContentType = []int{constant.HasReadReceipt, constant.GroupHasReadReceipt} ) type Validator interface { - validate(pb *pbChat.SendMsgReq) (bool, int32, string) + validate(pb *msg.SendMsgReq) (bool, int32, string) } -//type MessageValidator struct { -// -//} - type MessageRevoked struct { RevokerID string `json:"revokerID"` RevokerRole int32 `json:"revokerRole"` @@ -77,7 +66,7 @@ type MsgCallBackResp struct { } } -func isMessageHasReadEnabled(pb *pbChat.SendMsgReq) (bool, int32, string) { +func isMessageHasReadEnabled(pb *msg.SendMsgReq) (bool, int32, string) { switch pb.MsgData.ContentType { case constant.HasReadReceipt: if config.Config.SingleMessageHasReadReceiptEnable { @@ -341,298 +330,6 @@ func (rpc *rpcChat) encapsulateMsgData(msg *sdkws.MsgData) { utils.SetSwitchFromOptions(msg.Options, constant.IsOfflinePush, false) } } -func (rpc *rpcChat) SendMsg(ctx context.Context, pb *pbChat.SendMsgReq) (*pbChat.SendMsgResp, error) { - replay := pbChat.SendMsgResp{} - log.Info(pb.OperationID, "rpc sendMsg come here ", pb.String()) - flag, errCode, errMsg := isMessageHasReadEnabled(pb) - if !flag { - return returnMsg(&replay, pb, errCode, errMsg, "", 0) - } - t1 := time.Now() - rpc.encapsulateMsgData(pb.MsgData) - log.Debug(pb.OperationID, "encapsulateMsgData ", " cost time: ", time.Since(t1)) - msgToMQSingle := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} - // callback - t1 = time.Now() - callbackResp := callbackMsgModify(pb) - log.Debug(pb.OperationID, "callbackMsgModify ", callbackResp, "cost time: ", time.Since(t1)) - if callbackResp.ErrCode != 0 { - log.Error(pb.OperationID, utils.GetSelfFuncName(), "callbackMsgModify resp: ", callbackResp) - } - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackResp: ", callbackResp) - if callbackResp.ActionCode != constant.ActionAllow { - if callbackResp.ErrCode == 0 { - callbackResp.ErrCode = 201 - } - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackMsgModify result", "end rpc and return", pb.MsgData) - return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) - } - switch pb.MsgData.SessionType { - case constant.SingleChatType: - promePkg.PromeInc(promePkg.SingleChatMsgRecvSuccessCounter) - // callback - t1 = time.Now() - callbackResp := callbackBeforeSendSingleMsg(pb) - log.Debug(pb.OperationID, "callbackBeforeSendSingleMsg ", " cost time: ", time.Since(t1)) - if callbackResp.ErrCode != 0 { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg resp: ", callbackResp) - } - if callbackResp.ActionCode != constant.ActionAllow { - if callbackResp.ErrCode == 0 { - callbackResp.ErrCode = 201 - } - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) - promePkg.PromeInc(promePkg.SingleChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) - } - t1 = time.Now() - flag, errCode, errMsg, _ = rpc.messageVerification(ctx, pb) - log.Debug(pb.OperationID, "messageVerification ", flag, " cost time: ", time.Since(t1)) - if !flag { - return returnMsg(&replay, pb, errCode, errMsg, "", 0) - } - t1 = time.Now() - isSend := modifyMessageByUserMessageReceiveOpt(pb.MsgData.RecvID, pb.MsgData.SendID, constant.SingleChatType, pb) - log.Info(pb.OperationID, "modifyMessageByUserMessageReceiveOpt ", " cost time: ", time.Since(t1)) - if isSend { - msgToMQSingle.MsgData = pb.MsgData - log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) - t1 = time.Now() - err1 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.RecvID, constant.OnlineStatus) - log.Info(pb.OperationID, "sendMsgToWriter ", " cost time: ", time.Since(t1)) - if err1 != nil { - log.NewError(msgToMQSingle.OperationID, "kafka send msg err :RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String(), err1.Error()) - promePkg.PromeInc(promePkg.SingleChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) - } - } - if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself - t1 = time.Now() - err2 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.SendID, constant.OnlineStatus) - log.Info(pb.OperationID, "sendMsgToWriter ", " cost time: ", time.Since(t1)) - if err2 != nil { - log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) - promePkg.PromeInc(promePkg.SingleChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) - } - } - // callback - t1 = time.Now() - callbackResp = callbackAfterSendSingleMsg(pb) - log.Info(pb.OperationID, "callbackAfterSendSingleMsg ", " cost time: ", time.Since(t1)) - if callbackResp.ErrCode != 0 { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendSingleMsg resp: ", callbackResp) - } - promePkg.PromeInc(promePkg.SingleChatMsgProcessSuccessCounter) - return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) - case constant.GroupChatType: - // callback - promePkg.PromeInc(promePkg.GroupChatMsgRecvSuccessCounter) - callbackResp := callbackBeforeSendGroupMsg(pb) - if callbackResp.ErrCode != 0 { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendGroupMsg resp:", callbackResp) - } - if callbackResp.ActionCode != constant.ActionAllow { - if callbackResp.ErrCode == 0 { - callbackResp.ErrCode = 201 - } - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) - promePkg.PromeInc(promePkg.GroupChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) - } - var memberUserIDList []string - if flag, errCode, errMsg, memberUserIDList = rpc.messageVerification(ctx, pb); !flag { - promePkg.PromeInc(promePkg.GroupChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, errCode, errMsg, "", 0) - } - log.Debug(pb.OperationID, "GetGroupAllMember userID list", memberUserIDList, "len: ", len(memberUserIDList)) - var addUidList []string - switch pb.MsgData.ContentType { - case constant.MemberKickedNotification: - var tips sdkws.TipsComm - var memberKickedTips sdkws.MemberKickedTips - err := proto.Unmarshal(pb.MsgData.Content, &tips) - if err != nil { - log.Error(pb.OperationID, "Unmarshal err", err.Error()) - } - err = proto.Unmarshal(tips.Detail, &memberKickedTips) - if err != nil { - log.Error(pb.OperationID, "Unmarshal err", err.Error()) - } - log.Info(pb.OperationID, "data is ", memberKickedTips) - for _, v := range memberKickedTips.KickedUserList { - addUidList = append(addUidList, v.UserID) - } - case constant.MemberQuitNotification: - addUidList = append(addUidList, pb.MsgData.SendID) - - default: - } - if len(addUidList) > 0 { - memberUserIDList = append(memberUserIDList, addUidList...) - } - m := make(map[string][]string, 2) - m[constant.OnlineStatus] = memberUserIDList - t1 = time.Now() - - //split parallel send - var wg sync.WaitGroup - var sendTag bool - var split = 20 - for k, v := range m { - remain := len(v) % split - for i := 0; i < len(v)/split; i++ { - wg.Add(1) - tmp := valueCopy(pb) - // go rpc.sendMsgToGroup(v[i*split:(i+1)*split], *pb, k, &sendTag, &wg) - go rpc.sendMsgToGroupOptimization(ctx, v[i*split:(i+1)*split], tmp, k, &sendTag, &wg) - } - if remain > 0 { - wg.Add(1) - tmp := valueCopy(pb) - // go rpc.sendMsgToGroup(v[split*(len(v)/split):], *pb, k, &sendTag, &wg) - go rpc.sendMsgToGroupOptimization(ctx, v[split*(len(v)/split):], tmp, k, &sendTag, &wg) - } - } - log.Debug(pb.OperationID, "send msg cost time22 ", time.Since(t1), pb.MsgData.ClientMsgID, "uidList : ", len(addUidList)) - //wg.Add(1) - //go rpc.sendMsgToGroup(addUidList, *pb, constant.OnlineStatus, &sendTag, &wg) - wg.Wait() - t1 = time.Now() - // callback - callbackResp = callbackAfterSendGroupMsg(pb) - if callbackResp.ErrCode != 0 { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendGroupMsg resp: ", callbackResp) - } - if !sendTag { - log.NewWarn(pb.OperationID, "send tag is ", sendTag) - promePkg.PromeInc(promePkg.GroupChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) - } else { - if pb.MsgData.ContentType == constant.AtText { - go func() { - var conversationReq pbConversation.ModifyConversationFieldReq - var tag bool - var atUserID []string - conversation := pbConversation.Conversation{ - OwnerUserID: pb.MsgData.SendID, - ConversationID: utils.GetConversationIDBySessionType(pb.MsgData.GroupID, constant.GroupChatType), - ConversationType: constant.GroupChatType, - GroupID: pb.MsgData.GroupID, - } - conversationReq.Conversation = &conversation - conversationReq.OperationID = pb.OperationID - conversationReq.FieldType = constant.FieldGroupAtType - tagAll := utils.IsContain(constant.AtAllString, pb.MsgData.AtUserIDList) - if tagAll { - atUserID = utils.DifferenceString([]string{constant.AtAllString}, pb.MsgData.AtUserIDList) - if len(atUserID) == 0 { //just @everyone - conversationReq.UserIDList = memberUserIDList - conversation.GroupAtType = constant.AtAll - } else { //@Everyone and @other people - conversationReq.UserIDList = atUserID - conversation.GroupAtType = constant.AtAllAtMe - tag = true - } - } else { - conversationReq.UserIDList = pb.MsgData.AtUserIDList - conversation.GroupAtType = constant.AtMe - } - etcdConn, err := rpc.GetConn(ctx, config.Config.RpcRegisterName.OpenImConversationName) - if err != nil { - errMsg := pb.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(pb.OperationID, errMsg) - return - } - client := pbConversation.NewConversationClient(etcdConn) - conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq) - if err != nil { - log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error()) - } else if conversationReply.CommonResp.ErrCode != 0 { - log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String()) - } - if tag { - conversationReq.UserIDList = utils.DifferenceString(atUserID, memberUserIDList) - conversation.GroupAtType = constant.AtAll - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName, pb.OperationID) - if etcdConn == nil { - errMsg := pb.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(pb.OperationID, errMsg) - return - } - client := pbConversation.NewConversationClient(etcdConn) - conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq) - if err != nil { - log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error()) - } else if conversationReply.CommonResp.ErrCode != 0 { - log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String()) - } - } - }() - } - log.Debug(pb.OperationID, "send msg cost time3 ", time.Since(t1), pb.MsgData.ClientMsgID) - promePkg.PromeInc(promePkg.GroupChatMsgProcessSuccessCounter) - return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) - } - case constant.NotificationChatType: - t1 = time.Now() - msgToMQSingle.MsgData = pb.MsgData - log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) - err1 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.RecvID, constant.OnlineStatus) - if err1 != nil { - log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) - return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) - } - - if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself - err2 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.SendID, constant.OnlineStatus) - if err2 != nil { - log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) - return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) - } - } - - log.Debug(pb.OperationID, "send msg cost time ", time.Since(t1), pb.MsgData.ClientMsgID) - return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) - case constant.SuperGroupChatType: - promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgRecvSuccessCounter) - // callback - callbackResp := callbackBeforeSendGroupMsg(pb) - if callbackResp.ErrCode != 0 { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSuperGroupMsg resp: ", callbackResp) - } - if callbackResp.ActionCode != constant.ActionAllow { - if callbackResp.ErrCode == 0 { - callbackResp.ErrCode = 201 - } - promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessFailedCounter) - log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSuperGroupMsg result", "end rpc and return", callbackResp) - return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) - } - if flag, errCode, errMsg, _ = rpc.messageVerification(ctx, pb); !flag { - promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, errCode, errMsg, "", 0) - } - msgToMQSingle.MsgData = pb.MsgData - log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) - err1 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.GroupID, constant.OnlineStatus) - if err1 != nil { - log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) - promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessFailedCounter) - return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) - } - // callback - callbackResp = callbackAfterSendGroupMsg(pb) - if callbackResp.ErrCode != 0 { - log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendSuperGroupMsg resp: ", callbackResp) - } - promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessSuccessCounter) - return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) - - default: - return returnMsg(&replay, pb, 203, "unknown sessionType", "", 0) - } -} func (rpc *rpcChat) sendMsgToWriter(ctx context.Context, m *pbChat.MsgDataToMQ, key string, status string) error { switch status { @@ -747,288 +444,6 @@ func modifyMessageByUserMessageReceiveOptoptimization(userID, sourceID string, s return true } -type NotificationMsg struct { - SendID string - RecvID string - Content []byte // sdkws.TipsComm - MsgFrom int32 - ContentType int32 - SessionType int32 - OperationID string - SenderNickname string - SenderFaceURL string -} - -func Notification(n *NotificationMsg) { - var req pbChat.SendMsgReq - var msg sdkws.MsgData - var offlineInfo sdkws.OfflinePushInfo - var title, desc, ex string - var pushSwitch, unReadCount bool - var reliabilityLevel int - req.OperationID = n.OperationID - msg.SendID = n.SendID - msg.RecvID = n.RecvID - msg.Content = n.Content - msg.MsgFrom = n.MsgFrom - msg.ContentType = n.ContentType - msg.SessionType = n.SessionType - msg.CreateTime = utils.GetCurrentTimestampByMill() - msg.ClientMsgID = utils.GetMsgID(n.SendID) - msg.Options = make(map[string]bool, 7) - msg.SenderNickname = n.SenderNickname - msg.SenderFaceURL = n.SenderFaceURL - switch n.SessionType { - case constant.GroupChatType, constant.SuperGroupChatType: - msg.RecvID = "" - msg.GroupID = n.RecvID - } - offlineInfo.IOSBadgeCount = config.Config.IOSPush.BadgeCount - offlineInfo.IOSPushSound = config.Config.IOSPush.PushSound - switch msg.ContentType { - case constant.GroupCreatedNotification: - pushSwitch = config.Config.Notification.GroupCreated.OfflinePush.PushSwitch - title = config.Config.Notification.GroupCreated.OfflinePush.Title - desc = config.Config.Notification.GroupCreated.OfflinePush.Desc - ex = config.Config.Notification.GroupCreated.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupCreated.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupCreated.Conversation.UnreadCount - case constant.GroupInfoSetNotification: - pushSwitch = config.Config.Notification.GroupInfoSet.OfflinePush.PushSwitch - title = config.Config.Notification.GroupInfoSet.OfflinePush.Title - desc = config.Config.Notification.GroupInfoSet.OfflinePush.Desc - ex = config.Config.Notification.GroupInfoSet.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupInfoSet.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupInfoSet.Conversation.UnreadCount - case constant.JoinGroupApplicationNotification: - pushSwitch = config.Config.Notification.JoinGroupApplication.OfflinePush.PushSwitch - title = config.Config.Notification.JoinGroupApplication.OfflinePush.Title - desc = config.Config.Notification.JoinGroupApplication.OfflinePush.Desc - ex = config.Config.Notification.JoinGroupApplication.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.JoinGroupApplication.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.JoinGroupApplication.Conversation.UnreadCount - case constant.MemberQuitNotification: - pushSwitch = config.Config.Notification.MemberQuit.OfflinePush.PushSwitch - title = config.Config.Notification.MemberQuit.OfflinePush.Title - desc = config.Config.Notification.MemberQuit.OfflinePush.Desc - ex = config.Config.Notification.MemberQuit.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.MemberQuit.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.MemberQuit.Conversation.UnreadCount - case constant.GroupApplicationAcceptedNotification: - pushSwitch = config.Config.Notification.GroupApplicationAccepted.OfflinePush.PushSwitch - title = config.Config.Notification.GroupApplicationAccepted.OfflinePush.Title - desc = config.Config.Notification.GroupApplicationAccepted.OfflinePush.Desc - ex = config.Config.Notification.GroupApplicationAccepted.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupApplicationAccepted.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupApplicationAccepted.Conversation.UnreadCount - case constant.GroupApplicationRejectedNotification: - pushSwitch = config.Config.Notification.GroupApplicationRejected.OfflinePush.PushSwitch - title = config.Config.Notification.GroupApplicationRejected.OfflinePush.Title - desc = config.Config.Notification.GroupApplicationRejected.OfflinePush.Desc - ex = config.Config.Notification.GroupApplicationRejected.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupApplicationRejected.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupApplicationRejected.Conversation.UnreadCount - case constant.GroupOwnerTransferredNotification: - pushSwitch = config.Config.Notification.GroupOwnerTransferred.OfflinePush.PushSwitch - title = config.Config.Notification.GroupOwnerTransferred.OfflinePush.Title - desc = config.Config.Notification.GroupOwnerTransferred.OfflinePush.Desc - ex = config.Config.Notification.GroupOwnerTransferred.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupOwnerTransferred.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupOwnerTransferred.Conversation.UnreadCount - case constant.MemberKickedNotification: - pushSwitch = config.Config.Notification.MemberKicked.OfflinePush.PushSwitch - title = config.Config.Notification.MemberKicked.OfflinePush.Title - desc = config.Config.Notification.MemberKicked.OfflinePush.Desc - ex = config.Config.Notification.MemberKicked.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.MemberKicked.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.MemberKicked.Conversation.UnreadCount - case constant.MemberInvitedNotification: - pushSwitch = config.Config.Notification.MemberInvited.OfflinePush.PushSwitch - title = config.Config.Notification.MemberInvited.OfflinePush.Title - desc = config.Config.Notification.MemberInvited.OfflinePush.Desc - ex = config.Config.Notification.MemberInvited.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.MemberInvited.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.MemberInvited.Conversation.UnreadCount - case constant.MemberEnterNotification: - pushSwitch = config.Config.Notification.MemberEnter.OfflinePush.PushSwitch - title = config.Config.Notification.MemberEnter.OfflinePush.Title - desc = config.Config.Notification.MemberEnter.OfflinePush.Desc - ex = config.Config.Notification.MemberEnter.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.MemberEnter.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.MemberEnter.Conversation.UnreadCount - case constant.UserInfoUpdatedNotification: - pushSwitch = config.Config.Notification.UserInfoUpdated.OfflinePush.PushSwitch - title = config.Config.Notification.UserInfoUpdated.OfflinePush.Title - desc = config.Config.Notification.UserInfoUpdated.OfflinePush.Desc - ex = config.Config.Notification.UserInfoUpdated.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.UserInfoUpdated.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.UserInfoUpdated.Conversation.UnreadCount - case constant.FriendApplicationNotification: - pushSwitch = config.Config.Notification.FriendApplication.OfflinePush.PushSwitch - title = config.Config.Notification.FriendApplication.OfflinePush.Title - desc = config.Config.Notification.FriendApplication.OfflinePush.Desc - ex = config.Config.Notification.FriendApplication.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.FriendApplication.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.FriendApplication.Conversation.UnreadCount - case constant.FriendApplicationApprovedNotification: - pushSwitch = config.Config.Notification.FriendApplicationApproved.OfflinePush.PushSwitch - title = config.Config.Notification.FriendApplicationApproved.OfflinePush.Title - desc = config.Config.Notification.FriendApplicationApproved.OfflinePush.Desc - ex = config.Config.Notification.FriendApplicationApproved.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.FriendApplicationApproved.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.FriendApplicationApproved.Conversation.UnreadCount - case constant.FriendApplicationRejectedNotification: - pushSwitch = config.Config.Notification.FriendApplicationRejected.OfflinePush.PushSwitch - title = config.Config.Notification.FriendApplicationRejected.OfflinePush.Title - desc = config.Config.Notification.FriendApplicationRejected.OfflinePush.Desc - ex = config.Config.Notification.FriendApplicationRejected.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.FriendApplicationRejected.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.FriendApplicationRejected.Conversation.UnreadCount - case constant.FriendAddedNotification: - pushSwitch = config.Config.Notification.FriendAdded.OfflinePush.PushSwitch - title = config.Config.Notification.FriendAdded.OfflinePush.Title - desc = config.Config.Notification.FriendAdded.OfflinePush.Desc - ex = config.Config.Notification.FriendAdded.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.FriendAdded.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.FriendAdded.Conversation.UnreadCount - case constant.FriendDeletedNotification: - pushSwitch = config.Config.Notification.FriendDeleted.OfflinePush.PushSwitch - title = config.Config.Notification.FriendDeleted.OfflinePush.Title - desc = config.Config.Notification.FriendDeleted.OfflinePush.Desc - ex = config.Config.Notification.FriendDeleted.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.FriendDeleted.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.FriendDeleted.Conversation.UnreadCount - case constant.FriendRemarkSetNotification: - pushSwitch = config.Config.Notification.FriendRemarkSet.OfflinePush.PushSwitch - title = config.Config.Notification.FriendRemarkSet.OfflinePush.Title - desc = config.Config.Notification.FriendRemarkSet.OfflinePush.Desc - ex = config.Config.Notification.FriendRemarkSet.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.FriendRemarkSet.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.FriendRemarkSet.Conversation.UnreadCount - case constant.BlackAddedNotification: - pushSwitch = config.Config.Notification.BlackAdded.OfflinePush.PushSwitch - title = config.Config.Notification.BlackAdded.OfflinePush.Title - desc = config.Config.Notification.BlackAdded.OfflinePush.Desc - ex = config.Config.Notification.BlackAdded.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.BlackAdded.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.BlackAdded.Conversation.UnreadCount - case constant.BlackDeletedNotification: - pushSwitch = config.Config.Notification.BlackDeleted.OfflinePush.PushSwitch - title = config.Config.Notification.BlackDeleted.OfflinePush.Title - desc = config.Config.Notification.BlackDeleted.OfflinePush.Desc - ex = config.Config.Notification.BlackDeleted.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.BlackDeleted.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.BlackDeleted.Conversation.UnreadCount - case constant.ConversationOptChangeNotification: - pushSwitch = config.Config.Notification.ConversationOptUpdate.OfflinePush.PushSwitch - title = config.Config.Notification.ConversationOptUpdate.OfflinePush.Title - desc = config.Config.Notification.ConversationOptUpdate.OfflinePush.Desc - ex = config.Config.Notification.ConversationOptUpdate.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.ConversationOptUpdate.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.ConversationOptUpdate.Conversation.UnreadCount - - case constant.GroupDismissedNotification: - pushSwitch = config.Config.Notification.GroupDismissed.OfflinePush.PushSwitch - title = config.Config.Notification.GroupDismissed.OfflinePush.Title - desc = config.Config.Notification.GroupDismissed.OfflinePush.Desc - ex = config.Config.Notification.GroupDismissed.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupDismissed.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupDismissed.Conversation.UnreadCount - - case constant.GroupMutedNotification: - pushSwitch = config.Config.Notification.GroupMuted.OfflinePush.PushSwitch - title = config.Config.Notification.GroupMuted.OfflinePush.Title - desc = config.Config.Notification.GroupMuted.OfflinePush.Desc - ex = config.Config.Notification.GroupMuted.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupMuted.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupMuted.Conversation.UnreadCount - - case constant.GroupCancelMutedNotification: - pushSwitch = config.Config.Notification.GroupCancelMuted.OfflinePush.PushSwitch - title = config.Config.Notification.GroupCancelMuted.OfflinePush.Title - desc = config.Config.Notification.GroupCancelMuted.OfflinePush.Desc - ex = config.Config.Notification.GroupCancelMuted.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupCancelMuted.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupCancelMuted.Conversation.UnreadCount - - case constant.GroupMemberMutedNotification: - pushSwitch = config.Config.Notification.GroupMemberMuted.OfflinePush.PushSwitch - title = config.Config.Notification.GroupMemberMuted.OfflinePush.Title - desc = config.Config.Notification.GroupMemberMuted.OfflinePush.Desc - ex = config.Config.Notification.GroupMemberMuted.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupMemberMuted.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupMemberMuted.Conversation.UnreadCount - - case constant.GroupMemberCancelMutedNotification: - pushSwitch = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.PushSwitch - title = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.Title - desc = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.Desc - ex = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupMemberCancelMuted.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupMemberCancelMuted.Conversation.UnreadCount - - case constant.GroupMemberInfoSetNotification: - pushSwitch = config.Config.Notification.GroupMemberInfoSet.OfflinePush.PushSwitch - title = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Title - desc = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Desc - ex = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.GroupMemberInfoSet.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.GroupMemberInfoSet.Conversation.UnreadCount - - case constant.ConversationPrivateChatNotification: - pushSwitch = config.Config.Notification.ConversationSetPrivate.OfflinePush.PushSwitch - title = config.Config.Notification.ConversationSetPrivate.OfflinePush.Title - desc = config.Config.Notification.ConversationSetPrivate.OfflinePush.Desc - ex = config.Config.Notification.ConversationSetPrivate.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.ConversationSetPrivate.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.ConversationSetPrivate.Conversation.UnreadCount - case constant.FriendInfoUpdatedNotification: - pushSwitch = config.Config.Notification.FriendInfoUpdated.OfflinePush.PushSwitch - title = config.Config.Notification.FriendInfoUpdated.OfflinePush.Title - desc = config.Config.Notification.FriendInfoUpdated.OfflinePush.Desc - ex = config.Config.Notification.FriendInfoUpdated.OfflinePush.Ext - reliabilityLevel = config.Config.Notification.FriendInfoUpdated.Conversation.ReliabilityLevel - unReadCount = config.Config.Notification.FriendInfoUpdated.Conversation.UnreadCount - case constant.DeleteMessageNotification: - reliabilityLevel = constant.ReliableNotificationNoMsg - case constant.ConversationUnreadNotification, constant.SuperGroupUpdateNotification: - reliabilityLevel = constant.UnreliableNotification - } - switch reliabilityLevel { - case constant.UnreliableNotification: - utils.SetSwitchFromOptions(msg.Options, constant.IsHistory, false) - utils.SetSwitchFromOptions(msg.Options, constant.IsPersistent, false) - utils.SetSwitchFromOptions(msg.Options, constant.IsConversationUpdate, false) - utils.SetSwitchFromOptions(msg.Options, constant.IsSenderConversationUpdate, false) - case constant.ReliableNotificationNoMsg: - utils.SetSwitchFromOptions(msg.Options, constant.IsConversationUpdate, false) - utils.SetSwitchFromOptions(msg.Options, constant.IsSenderConversationUpdate, false) - case constant.ReliableNotificationMsg: - - } - utils.SetSwitchFromOptions(msg.Options, constant.IsUnreadCount, unReadCount) - utils.SetSwitchFromOptions(msg.Options, constant.IsOfflinePush, pushSwitch) - offlineInfo.Title = title - offlineInfo.Desc = desc - offlineInfo.Ex = ex - msg.OfflinePushInfo = &offlineInfo - req.MsgData = &msg - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - return - } - - client := pbChat.NewMsgClient(etcdConn) - reply, err := client.SendMsg(context.Background(), &req) - if err != nil { - log.NewError(req.OperationID, "SendMsg rpc failed, ", req.String(), err.Error()) - } else if reply.ErrCode != 0 { - log.NewError(req.OperationID, "SendMsg rpc failed, ", req.String(), reply.ErrCode, reply.ErrMsg) - } -} - func getOnlineAndOfflineUserIDList(memberList []string, m map[string][]string, operationID string) { var onllUserIDList, offlUserIDList []string var wsResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult diff --git a/internal/rpc/msg/send_pull.go b/internal/rpc/msg/send_pull.go new file mode 100644 index 000000000..04159886a --- /dev/null +++ b/internal/rpc/msg/send_pull.go @@ -0,0 +1,403 @@ +package msg + +import ( + "Open_IM/pkg/common/constant" + promePkg "Open_IM/pkg/common/prometheus" + pbConversation "Open_IM/pkg/proto/conversation" + pbChat "Open_IM/pkg/proto/msg" + "Open_IM/pkg/proto/sdkws" + "context" + go_redis "github.com/go-redis/redis/v8" + "strings" + "sync" + "time" +) + +func (m *msgServer) SendMsg(ctx context.Context, pb *pbChat.SendMsgReq) (*pbChat.SendMsgResp, error) { + replay := pbChat.SendMsgResp{} + + flag, errCode, errMsg := isMessageHasReadEnabled(pb) + if !flag { + return returnMsg(&replay, pb, errCode, errMsg, "", 0) + } + t1 := time.Now() + rpc.encapsulateMsgData(pb.MsgData) + log.Debug(pb.OperationID, "encapsulateMsgData ", " cost time: ", time.Since(t1)) + msgToMQSingle := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} + // callback + t1 = time.Now() + callbackResp := callbackMsgModify(pb) + log.Debug(pb.OperationID, "callbackMsgModify ", callbackResp, "cost time: ", time.Since(t1)) + if callbackResp.ErrCode != 0 { + log.Error(pb.OperationID, utils.GetSelfFuncName(), "callbackMsgModify resp: ", callbackResp) + } + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackResp: ", callbackResp) + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackMsgModify result", "end rpc and return", pb.MsgData) + return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) + } + switch pb.MsgData.SessionType { + case constant.SingleChatType: + promePkg.PromeInc(promePkg.SingleChatMsgRecvSuccessCounter) + // callback + t1 = time.Now() + callbackResp := callbackBeforeSendSingleMsg(pb) + log.Debug(pb.OperationID, "callbackBeforeSendSingleMsg ", " cost time: ", time.Since(t1)) + if callbackResp.ErrCode != 0 { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) + promePkg.PromeInc(promePkg.SingleChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) + } + t1 = time.Now() + flag, errCode, errMsg, _ = rpc.messageVerification(ctx, pb) + log.Debug(pb.OperationID, "messageVerification ", flag, " cost time: ", time.Since(t1)) + if !flag { + return returnMsg(&replay, pb, errCode, errMsg, "", 0) + } + t1 = time.Now() + isSend := modifyMessageByUserMessageReceiveOpt(pb.MsgData.RecvID, pb.MsgData.SendID, constant.SingleChatType, pb) + log.Info(pb.OperationID, "modifyMessageByUserMessageReceiveOpt ", " cost time: ", time.Since(t1)) + if isSend { + msgToMQSingle.MsgData = pb.MsgData + log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) + t1 = time.Now() + err1 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.RecvID, constant.OnlineStatus) + log.Info(pb.OperationID, "sendMsgToWriter ", " cost time: ", time.Since(t1)) + if err1 != nil { + log.NewError(msgToMQSingle.OperationID, "kafka send msg err :RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String(), err1.Error()) + promePkg.PromeInc(promePkg.SingleChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) + } + } + if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself + t1 = time.Now() + err2 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.SendID, constant.OnlineStatus) + log.Info(pb.OperationID, "sendMsgToWriter ", " cost time: ", time.Since(t1)) + if err2 != nil { + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) + promePkg.PromeInc(promePkg.SingleChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) + } + } + // callback + t1 = time.Now() + callbackResp = callbackAfterSendSingleMsg(pb) + log.Info(pb.OperationID, "callbackAfterSendSingleMsg ", " cost time: ", time.Since(t1)) + if callbackResp.ErrCode != 0 { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendSingleMsg resp: ", callbackResp) + } + promePkg.PromeInc(promePkg.SingleChatMsgProcessSuccessCounter) + return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) + case constant.GroupChatType: + // callback + promePkg.PromeInc(promePkg.GroupChatMsgRecvSuccessCounter) + callbackResp := callbackBeforeSendGroupMsg(pb) + if callbackResp.ErrCode != 0 { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendGroupMsg resp:", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) + promePkg.PromeInc(promePkg.GroupChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) + } + var memberUserIDList []string + if flag, errCode, errMsg, memberUserIDList = rpc.messageVerification(ctx, pb); !flag { + promePkg.PromeInc(promePkg.GroupChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, errCode, errMsg, "", 0) + } + log.Debug(pb.OperationID, "GetGroupAllMember userID list", memberUserIDList, "len: ", len(memberUserIDList)) + var addUidList []string + switch pb.MsgData.ContentType { + case constant.MemberKickedNotification: + var tips sdkws.TipsComm + var memberKickedTips sdkws.MemberKickedTips + err := proto.Unmarshal(pb.MsgData.Content, &tips) + if err != nil { + log.Error(pb.OperationID, "Unmarshal err", err.Error()) + } + err = proto.Unmarshal(tips.Detail, &memberKickedTips) + if err != nil { + log.Error(pb.OperationID, "Unmarshal err", err.Error()) + } + log.Info(pb.OperationID, "data is ", memberKickedTips) + for _, v := range memberKickedTips.KickedUserList { + addUidList = append(addUidList, v.UserID) + } + case constant.MemberQuitNotification: + addUidList = append(addUidList, pb.MsgData.SendID) + + default: + } + if len(addUidList) > 0 { + memberUserIDList = append(memberUserIDList, addUidList...) + } + m := make(map[string][]string, 2) + m[constant.OnlineStatus] = memberUserIDList + t1 = time.Now() + + //split parallel send + var wg sync.WaitGroup + var sendTag bool + var split = 20 + for k, v := range m { + remain := len(v) % split + for i := 0; i < len(v)/split; i++ { + wg.Add(1) + tmp := valueCopy(pb) + // go rpc.sendMsgToGroup(v[i*split:(i+1)*split], *pb, k, &sendTag, &wg) + go rpc.sendMsgToGroupOptimization(ctx, v[i*split:(i+1)*split], tmp, k, &sendTag, &wg) + } + if remain > 0 { + wg.Add(1) + tmp := valueCopy(pb) + // go rpc.sendMsgToGroup(v[split*(len(v)/split):], *pb, k, &sendTag, &wg) + go rpc.sendMsgToGroupOptimization(ctx, v[split*(len(v)/split):], tmp, k, &sendTag, &wg) + } + } + log.Debug(pb.OperationID, "send msg cost time22 ", time.Since(t1), pb.MsgData.ClientMsgID, "uidList : ", len(addUidList)) + //wg.Add(1) + //go rpc.sendMsgToGroup(addUidList, *pb, constant.OnlineStatus, &sendTag, &wg) + wg.Wait() + t1 = time.Now() + // callback + callbackResp = callbackAfterSendGroupMsg(pb) + if callbackResp.ErrCode != 0 { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendGroupMsg resp: ", callbackResp) + } + if !sendTag { + log.NewWarn(pb.OperationID, "send tag is ", sendTag) + promePkg.PromeInc(promePkg.GroupChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) + } else { + if pb.MsgData.ContentType == constant.AtText { + go func() { + var conversationReq pbConversation.ModifyConversationFieldReq + var tag bool + var atUserID []string + conversation := pbConversation.Conversation{ + OwnerUserID: pb.MsgData.SendID, + ConversationID: utils.GetConversationIDBySessionType(pb.MsgData.GroupID, constant.GroupChatType), + ConversationType: constant.GroupChatType, + GroupID: pb.MsgData.GroupID, + } + conversationReq.Conversation = &conversation + conversationReq.OperationID = pb.OperationID + conversationReq.FieldType = constant.FieldGroupAtType + tagAll := utils.IsContain(constant.AtAllString, pb.MsgData.AtUserIDList) + if tagAll { + atUserID = utils.DifferenceString([]string{constant.AtAllString}, pb.MsgData.AtUserIDList) + if len(atUserID) == 0 { //just @everyone + conversationReq.UserIDList = memberUserIDList + conversation.GroupAtType = constant.AtAll + } else { //@Everyone and @other people + conversationReq.UserIDList = atUserID + conversation.GroupAtType = constant.AtAllAtMe + tag = true + } + } else { + conversationReq.UserIDList = pb.MsgData.AtUserIDList + conversation.GroupAtType = constant.AtMe + } + etcdConn, err := rpc.GetConn(ctx, config.Config.RpcRegisterName.OpenImConversationName) + if err != nil { + errMsg := pb.OperationID + "getcdv3.GetDefaultConn == nil" + log.NewError(pb.OperationID, errMsg) + return + } + client := pbConversation.NewConversationClient(etcdConn) + conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq) + if err != nil { + log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error()) + } else if conversationReply.CommonResp.ErrCode != 0 { + log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String()) + } + if tag { + conversationReq.UserIDList = utils.DifferenceString(atUserID, memberUserIDList) + conversation.GroupAtType = constant.AtAll + etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName, pb.OperationID) + if etcdConn == nil { + errMsg := pb.OperationID + "getcdv3.GetDefaultConn == nil" + log.NewError(pb.OperationID, errMsg) + return + } + client := pbConversation.NewConversationClient(etcdConn) + conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq) + if err != nil { + log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error()) + } else if conversationReply.CommonResp.ErrCode != 0 { + log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String()) + } + } + }() + } + log.Debug(pb.OperationID, "send msg cost time3 ", time.Since(t1), pb.MsgData.ClientMsgID) + promePkg.PromeInc(promePkg.GroupChatMsgProcessSuccessCounter) + return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) + } + case constant.NotificationChatType: + t1 = time.Now() + msgToMQSingle.MsgData = pb.MsgData + log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) + err1 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.RecvID, constant.OnlineStatus) + if err1 != nil { + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) + return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) + } + + if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself + err2 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.SendID, constant.OnlineStatus) + if err2 != nil { + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) + return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) + } + } + + log.Debug(pb.OperationID, "send msg cost time ", time.Since(t1), pb.MsgData.ClientMsgID) + return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) + case constant.SuperGroupChatType: + promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgRecvSuccessCounter) + // callback + callbackResp := callbackBeforeSendGroupMsg(pb) + if callbackResp.ErrCode != 0 { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSuperGroupMsg resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessFailedCounter) + log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSuperGroupMsg result", "end rpc and return", callbackResp) + return returnMsg(&replay, pb, int32(callbackResp.ErrCode), callbackResp.ErrMsg, "", 0) + } + if flag, errCode, errMsg, _ = rpc.messageVerification(ctx, pb); !flag { + promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, errCode, errMsg, "", 0) + } + msgToMQSingle.MsgData = pb.MsgData + log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) + err1 := rpc.sendMsgToWriter(ctx, &msgToMQSingle, msgToMQSingle.MsgData.GroupID, constant.OnlineStatus) + if err1 != nil { + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) + promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessFailedCounter) + return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) + } + // callback + callbackResp = callbackAfterSendGroupMsg(pb) + if callbackResp.ErrCode != 0 { + log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendSuperGroupMsg resp: ", callbackResp) + } + promePkg.PromeInc(promePkg.WorkSuperGroupChatMsgProcessSuccessCounter) + return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) + + default: + return returnMsg(&replay, pb, 203, "unknown sessionType", "", 0) + } +} + +func (rpc *rpcChat) GetMaxAndMinSeq(_ context.Context, in *sdkws.GetMaxAndMinSeqReq) (*sdkws.GetMaxAndMinSeqResp, error) { + log.NewInfo(in.OperationID, "rpc getMaxAndMinSeq is arriving", in.String()) + resp := new(sdkws.GetMaxAndMinSeqResp) + m := make(map[string]*sdkws.MaxAndMinSeq) + var maxSeq, minSeq uint64 + var err1, err2 error + maxSeq, err1 = commonDB.DB.GetUserMaxSeq(in.UserID) + minSeq, err2 = commonDB.DB.GetUserMinSeq(in.UserID) + if (err1 != nil && err1 != go_redis.Nil) || (err2 != nil && err2 != go_redis.Nil) { + log.NewError(in.OperationID, "getMaxSeq from redis error", in.String()) + if err1 != nil { + log.NewError(in.OperationID, utils.GetSelfFuncName(), err1.Error()) + } + if err2 != nil { + log.NewError(in.OperationID, utils.GetSelfFuncName(), err2.Error()) + } + resp.ErrCode = 200 + resp.ErrMsg = "redis get err" + return resp, nil + } + resp.MaxSeq = uint32(maxSeq) + resp.MinSeq = uint32(minSeq) + for _, groupID := range in.GroupIDList { + x := new(sdkws.MaxAndMinSeq) + maxSeq, _ := commonDB.DB.GetGroupMaxSeq(groupID) + minSeq, _ := commonDB.DB.GetGroupUserMinSeq(groupID, in.UserID) + x.MaxSeq = uint32(maxSeq) + x.MinSeq = uint32(minSeq) + m[groupID] = x + } + resp.GroupMaxAndMinSeq = m + return resp, nil +} + +func (rpc *rpcChat) PullMessageBySeqList(_ context.Context, in *sdkws.PullMessageBySeqListReq) (*sdkws.PullMessageBySeqListResp, error) { + log.NewInfo(in.OperationID, "rpc PullMessageBySeqList is arriving", in.String()) + resp := new(sdkws.PullMessageBySeqListResp) + m := make(map[string]*sdkws.MsgDataList) + redisMsgList, failedSeqList, err := commonDB.DB.GetMessageListBySeq(in.UserID, in.SeqList, in.OperationID) + if err != nil { + if err != go_redis.Nil { + promePkg.PromeAdd(promePkg.MsgPullFromRedisFailedCounter, len(failedSeqList)) + log.Error(in.OperationID, "get message from redis exception", err.Error(), failedSeqList) + } else { + log.Debug(in.OperationID, "get message from redis is nil", failedSeqList) + } + msgList, err1 := commonDB.DB.GetMsgBySeqListMongo2(in.UserID, failedSeqList, in.OperationID) + if err1 != nil { + promePkg.PromeAdd(promePkg.MsgPullFromMongoFailedCounter, len(failedSeqList)) + log.Error(in.OperationID, "PullMessageBySeqList data error", in.String(), err1.Error()) + resp.ErrCode = 201 + resp.ErrMsg = err1.Error() + return resp, nil + } else { + promePkg.PromeAdd(promePkg.MsgPullFromMongoSuccessCounter, len(msgList)) + redisMsgList = append(redisMsgList, msgList...) + resp.List = redisMsgList + } + } else { + promePkg.PromeAdd(promePkg.MsgPullFromRedisSuccessCounter, len(redisMsgList)) + resp.List = redisMsgList + } + + for k, v := range in.GroupSeqList { + x := new(sdkws.MsgDataList) + redisMsgList, failedSeqList, err := commonDB.DB.GetMessageListBySeq(k, v.SeqList, in.OperationID) + if err != nil { + if err != go_redis.Nil { + promePkg.PromeAdd(promePkg.MsgPullFromRedisFailedCounter, len(failedSeqList)) + log.Error(in.OperationID, "get message from redis exception", err.Error(), failedSeqList) + } else { + log.Debug(in.OperationID, "get message from redis is nil", failedSeqList) + } + msgList, err1 := commonDB.DB.GetSuperGroupMsgBySeqListMongo(k, failedSeqList, in.OperationID) + if err1 != nil { + promePkg.PromeAdd(promePkg.MsgPullFromMongoFailedCounter, len(failedSeqList)) + log.Error(in.OperationID, "PullMessageBySeqList data error", in.String(), err1.Error()) + resp.ErrCode = 201 + resp.ErrMsg = err1.Error() + return resp, nil + } else { + promePkg.PromeAdd(promePkg.MsgPullFromMongoSuccessCounter, len(msgList)) + redisMsgList = append(redisMsgList, msgList...) + x.MsgDataList = redisMsgList + m[k] = x + } + } else { + promePkg.PromeAdd(promePkg.MsgPullFromRedisSuccessCounter, len(redisMsgList)) + x.MsgDataList = redisMsgList + m[k] = x + } + } + resp.GroupMsgDataList = m + return resp, nil +} diff --git a/internal/rpc/msg/rpc_chat.go b/internal/rpc/msg/server.go similarity index 91% rename from internal/rpc/msg/rpc_chat.go rename to internal/rpc/msg/server.go index 6f65ca1ed..659a70a3a 100644 --- a/internal/rpc/msg/rpc_chat.go +++ b/internal/rpc/msg/server.go @@ -2,9 +2,10 @@ package msg import ( "Open_IM/internal/common/notification" + "Open_IM/internal/common/rpcserver" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/db" + "Open_IM/pkg/common/kafka" "Open_IM/pkg/common/log" promePkg "Open_IM/pkg/common/prometheus" @@ -15,25 +16,13 @@ import ( "strconv" "strings" - "github.com/golang/protobuf/proto" - grpcPrometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "google.golang.org/grpc" ) -type MessageWriter interface { - SendMessage(m proto.Message, key string, operationID string) (int32, int64, error) -} -type rpcChat struct { - rpcPort int - rpcRegisterName string - etcdSchema string - etcdAddr []string - messageWriter MessageWriter - //offlineProducer *kafka.Producer - delMsgCh chan deleteMsg - dMessageLocker MessageLocker +type msgServer struct { + *rpcserver.RpcServer } type deleteMsg struct { diff --git a/pkg/common/db/controller/msg.go b/pkg/common/db/controller/msg.go index ae427442a..15cbe872a 100644 --- a/pkg/common/db/controller/msg.go +++ b/pkg/common/db/controller/msg.go @@ -1,11 +1,15 @@ package controller import ( + "Open_IM/pkg/proto/msg" pbMsg "Open_IM/pkg/proto/msg" "context" ) type MsgInterface interface { + //消息写入队列 + MsgToMQ(ctx context.Context, key string, m *msg.MsgDataToMQ) error + BatchInsertChat2DB(ctx context.Context, userID string, msgList []*pbMsg.MsgDataToMQ, currentMaxSeq uint64) error BatchInsertChat2Cache(ctx context.Context, insertID string, msgList []*pbMsg.MsgDataToMQ) (error, uint64) diff --git a/pkg/proto/msg/msg.pb.go b/pkg/proto/msg/msg.pb.go index bb5fa819c..08cdde4fc 100644 --- a/pkg/proto/msg/msg.pb.go +++ b/pkg/proto/msg/msg.pb.go @@ -6,7 +6,7 @@ package msg // import "Open_IM/pkg/proto/msg" import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" -import sdk_ws "Open_IM/pkg/proto/sdk_ws" +import sdkws "Open_IM/pkg/proto/sdkws" import wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" import ( @@ -26,19 +26,19 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package type MsgDataToMQ struct { - Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - MsgData *sdk_ws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + MsgData *sdkws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *MsgDataToMQ) Reset() { *m = MsgDataToMQ{} } func (m *MsgDataToMQ) String() string { return proto.CompactTextString(m) } func (*MsgDataToMQ) ProtoMessage() {} func (*MsgDataToMQ) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{0} + return fileDescriptor_msg_9bd9d9abca588885, []int{0} } func (m *MsgDataToMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToMQ.Unmarshal(m, b) @@ -72,7 +72,7 @@ func (m *MsgDataToMQ) GetOperationID() string { return "" } -func (m *MsgDataToMQ) GetMsgData() *sdk_ws.MsgData { +func (m *MsgDataToMQ) GetMsgData() *sdkws.MsgData { if m != nil { return m.MsgData } @@ -80,18 +80,18 @@ func (m *MsgDataToMQ) GetMsgData() *sdk_ws.MsgData { } type MsgDataToDB struct { - MsgData *sdk_ws.MsgData `protobuf:"bytes,1,opt,name=msgData" json:"msgData,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MsgData *sdkws.MsgData `protobuf:"bytes,1,opt,name=msgData" json:"msgData,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *MsgDataToDB) Reset() { *m = MsgDataToDB{} } func (m *MsgDataToDB) String() string { return proto.CompactTextString(m) } func (*MsgDataToDB) ProtoMessage() {} func (*MsgDataToDB) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{1} + return fileDescriptor_msg_9bd9d9abca588885, []int{1} } func (m *MsgDataToDB) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToDB.Unmarshal(m, b) @@ -111,7 +111,7 @@ func (m *MsgDataToDB) XXX_DiscardUnknown() { var xxx_messageInfo_MsgDataToDB proto.InternalMessageInfo -func (m *MsgDataToDB) GetMsgData() *sdk_ws.MsgData { +func (m *MsgDataToDB) GetMsgData() *sdkws.MsgData { if m != nil { return m.MsgData } @@ -126,19 +126,19 @@ func (m *MsgDataToDB) GetOperationID() string { } type PushMsgDataToMQ struct { - OperationID string `protobuf:"bytes,1,opt,name=OperationID" json:"OperationID,omitempty"` - MsgData *sdk_ws.MsgData `protobuf:"bytes,2,opt,name=msgData" json:"msgData,omitempty"` - PushToUserID string `protobuf:"bytes,3,opt,name=pushToUserID" json:"pushToUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OperationID string `protobuf:"bytes,1,opt,name=OperationID" json:"OperationID,omitempty"` + MsgData *sdkws.MsgData `protobuf:"bytes,2,opt,name=msgData" json:"msgData,omitempty"` + PushToUserID string `protobuf:"bytes,3,opt,name=pushToUserID" json:"pushToUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *PushMsgDataToMQ) Reset() { *m = PushMsgDataToMQ{} } func (m *PushMsgDataToMQ) String() string { return proto.CompactTextString(m) } func (*PushMsgDataToMQ) ProtoMessage() {} func (*PushMsgDataToMQ) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{2} + return fileDescriptor_msg_9bd9d9abca588885, []int{2} } func (m *PushMsgDataToMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PushMsgDataToMQ.Unmarshal(m, b) @@ -165,7 +165,7 @@ func (m *PushMsgDataToMQ) GetOperationID() string { return "" } -func (m *PushMsgDataToMQ) GetMsgData() *sdk_ws.MsgData { +func (m *PushMsgDataToMQ) GetMsgData() *sdkws.MsgData { if m != nil { return m.MsgData } @@ -193,7 +193,7 @@ func (m *MsgDataToMongoByMQ) Reset() { *m = MsgDataToMongoByMQ{} } func (m *MsgDataToMongoByMQ) String() string { return proto.CompactTextString(m) } func (*MsgDataToMongoByMQ) ProtoMessage() {} func (*MsgDataToMongoByMQ) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{3} + return fileDescriptor_msg_9bd9d9abca588885, []int{3} } func (m *MsgDataToMongoByMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToMongoByMQ.Unmarshal(m, b) @@ -253,7 +253,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{4} + return fileDescriptor_msg_9bd9d9abca588885, []int{4} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -301,7 +301,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{5} + return fileDescriptor_msg_9bd9d9abca588885, []int{5} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -350,17 +350,17 @@ func (m *GetMaxAndMinSeqResp) GetMinSeq() uint32 { } type SendMsgReq struct { - MsgData *sdk_ws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MsgData *sdkws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *SendMsgReq) Reset() { *m = SendMsgReq{} } func (m *SendMsgReq) String() string { return proto.CompactTextString(m) } func (*SendMsgReq) ProtoMessage() {} func (*SendMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{6} + return fileDescriptor_msg_9bd9d9abca588885, []int{6} } func (m *SendMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsgReq.Unmarshal(m, b) @@ -380,7 +380,7 @@ func (m *SendMsgReq) XXX_DiscardUnknown() { var xxx_messageInfo_SendMsgReq proto.InternalMessageInfo -func (m *SendMsgReq) GetMsgData() *sdk_ws.MsgData { +func (m *SendMsgReq) GetMsgData() *sdkws.MsgData { if m != nil { return m.MsgData } @@ -400,7 +400,7 @@ func (m *SendMsgResp) Reset() { *m = SendMsgResp{} } func (m *SendMsgResp) String() string { return proto.CompactTextString(m) } func (*SendMsgResp) ProtoMessage() {} func (*SendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{7} + return fileDescriptor_msg_9bd9d9abca588885, []int{7} } func (m *SendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsgResp.Unmarshal(m, b) @@ -452,7 +452,7 @@ func (m *ClearMsgReq) Reset() { *m = ClearMsgReq{} } func (m *ClearMsgReq) String() string { return proto.CompactTextString(m) } func (*ClearMsgReq) ProtoMessage() {} func (*ClearMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{8} + return fileDescriptor_msg_9bd9d9abca588885, []int{8} } func (m *ClearMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearMsgReq.Unmarshal(m, b) @@ -489,7 +489,7 @@ func (m *ClearMsgResp) Reset() { *m = ClearMsgResp{} } func (m *ClearMsgResp) String() string { return proto.CompactTextString(m) } func (*ClearMsgResp) ProtoMessage() {} func (*ClearMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{9} + return fileDescriptor_msg_9bd9d9abca588885, []int{9} } func (m *ClearMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearMsgResp.Unmarshal(m, b) @@ -522,7 +522,7 @@ func (m *SetMsgMinSeqReq) Reset() { *m = SetMsgMinSeqReq{} } func (m *SetMsgMinSeqReq) String() string { return proto.CompactTextString(m) } func (*SetMsgMinSeqReq) ProtoMessage() {} func (*SetMsgMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{10} + return fileDescriptor_msg_9bd9d9abca588885, []int{10} } func (m *SetMsgMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMsgMinSeqReq.Unmarshal(m, b) @@ -573,7 +573,7 @@ func (m *SetMsgMinSeqResp) Reset() { *m = SetMsgMinSeqResp{} } func (m *SetMsgMinSeqResp) String() string { return proto.CompactTextString(m) } func (*SetMsgMinSeqResp) ProtoMessage() {} func (*SetMsgMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{11} + return fileDescriptor_msg_9bd9d9abca588885, []int{11} } func (m *SetMsgMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMsgMinSeqResp.Unmarshal(m, b) @@ -604,7 +604,7 @@ func (m *SetSendMsgStatusReq) Reset() { *m = SetSendMsgStatusReq{} } func (m *SetSendMsgStatusReq) String() string { return proto.CompactTextString(m) } func (*SetSendMsgStatusReq) ProtoMessage() {} func (*SetSendMsgStatusReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{12} + return fileDescriptor_msg_9bd9d9abca588885, []int{12} } func (m *SetSendMsgStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetSendMsgStatusReq.Unmarshal(m, b) @@ -641,7 +641,7 @@ func (m *SetSendMsgStatusResp) Reset() { *m = SetSendMsgStatusResp{} } func (m *SetSendMsgStatusResp) String() string { return proto.CompactTextString(m) } func (*SetSendMsgStatusResp) ProtoMessage() {} func (*SetSendMsgStatusResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{13} + return fileDescriptor_msg_9bd9d9abca588885, []int{13} } func (m *SetSendMsgStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetSendMsgStatusResp.Unmarshal(m, b) @@ -672,7 +672,7 @@ func (m *GetSendMsgStatusReq) Reset() { *m = GetSendMsgStatusReq{} } func (m *GetSendMsgStatusReq) String() string { return proto.CompactTextString(m) } func (*GetSendMsgStatusReq) ProtoMessage() {} func (*GetSendMsgStatusReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{14} + return fileDescriptor_msg_9bd9d9abca588885, []int{14} } func (m *GetSendMsgStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSendMsgStatusReq.Unmarshal(m, b) @@ -712,7 +712,7 @@ func (m *GetSendMsgStatusResp) Reset() { *m = GetSendMsgStatusResp{} } func (m *GetSendMsgStatusResp) String() string { return proto.CompactTextString(m) } func (*GetSendMsgStatusResp) ProtoMessage() {} func (*GetSendMsgStatusResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{15} + return fileDescriptor_msg_9bd9d9abca588885, []int{15} } func (m *GetSendMsgStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSendMsgStatusResp.Unmarshal(m, b) @@ -765,7 +765,7 @@ func (m *DelSuperGroupMsgReq) Reset() { *m = DelSuperGroupMsgReq{} } func (m *DelSuperGroupMsgReq) String() string { return proto.CompactTextString(m) } func (*DelSuperGroupMsgReq) ProtoMessage() {} func (*DelSuperGroupMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{16} + return fileDescriptor_msg_9bd9d9abca588885, []int{16} } func (m *DelSuperGroupMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelSuperGroupMsgReq.Unmarshal(m, b) @@ -809,7 +809,7 @@ func (m *DelSuperGroupMsgResp) Reset() { *m = DelSuperGroupMsgResp{} } func (m *DelSuperGroupMsgResp) String() string { return proto.CompactTextString(m) } func (*DelSuperGroupMsgResp) ProtoMessage() {} func (*DelSuperGroupMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{17} + return fileDescriptor_msg_9bd9d9abca588885, []int{17} } func (m *DelSuperGroupMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelSuperGroupMsgResp.Unmarshal(m, b) @@ -842,7 +842,7 @@ func (m *GetSuperGroupMsgReq) Reset() { *m = GetSuperGroupMsgReq{} } func (m *GetSuperGroupMsgReq) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupMsgReq) ProtoMessage() {} func (*GetSuperGroupMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{18} + return fileDescriptor_msg_9bd9d9abca588885, []int{18} } func (m *GetSuperGroupMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupMsgReq.Unmarshal(m, b) @@ -884,19 +884,19 @@ func (m *GetSuperGroupMsgReq) GetGroupID() string { } type GetSuperGroupMsgResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - MsgData *sdk_ws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + MsgData *sdkws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *GetSuperGroupMsgResp) Reset() { *m = GetSuperGroupMsgResp{} } func (m *GetSuperGroupMsgResp) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupMsgResp) ProtoMessage() {} func (*GetSuperGroupMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{19} + return fileDescriptor_msg_9bd9d9abca588885, []int{19} } func (m *GetSuperGroupMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupMsgResp.Unmarshal(m, b) @@ -930,7 +930,7 @@ func (m *GetSuperGroupMsgResp) GetErrMsg() string { return "" } -func (m *GetSuperGroupMsgResp) GetMsgData() *sdk_ws.MsgData { +func (m *GetSuperGroupMsgResp) GetMsgData() *sdkws.MsgData { if m != nil { return m.MsgData } @@ -949,7 +949,7 @@ func (m *GetWriteDiffMsgReq) Reset() { *m = GetWriteDiffMsgReq{} } func (m *GetWriteDiffMsgReq) String() string { return proto.CompactTextString(m) } func (*GetWriteDiffMsgReq) ProtoMessage() {} func (*GetWriteDiffMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{20} + return fileDescriptor_msg_9bd9d9abca588885, []int{20} } func (m *GetWriteDiffMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWriteDiffMsgReq.Unmarshal(m, b) @@ -984,19 +984,19 @@ func (m *GetWriteDiffMsgReq) GetSeq() uint32 { } type GetWriteDiffMsgResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - MsgData *sdk_ws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + MsgData *sdkws.MsgData `protobuf:"bytes,3,opt,name=msgData" json:"msgData,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *GetWriteDiffMsgResp) Reset() { *m = GetWriteDiffMsgResp{} } func (m *GetWriteDiffMsgResp) String() string { return proto.CompactTextString(m) } func (*GetWriteDiffMsgResp) ProtoMessage() {} func (*GetWriteDiffMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{21} + return fileDescriptor_msg_9bd9d9abca588885, []int{21} } func (m *GetWriteDiffMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWriteDiffMsgResp.Unmarshal(m, b) @@ -1030,7 +1030,7 @@ func (m *GetWriteDiffMsgResp) GetErrMsg() string { return "" } -func (m *GetWriteDiffMsgResp) GetMsgData() *sdk_ws.MsgData { +func (m *GetWriteDiffMsgResp) GetMsgData() *sdkws.MsgData { if m != nil { return m.MsgData } @@ -1038,27 +1038,27 @@ func (m *GetWriteDiffMsgResp) GetMsgData() *sdk_ws.MsgData { } type ModifyMessageReactionExtensionsReq struct { - OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` - SourceID string `protobuf:"bytes,2,opt,name=sourceID" json:"sourceID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` - ReactionExtensionList map[string]*sdk_ws.KeyValue `protobuf:"bytes,5,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - ClientMsgID string `protobuf:"bytes,6,opt,name=clientMsgID" json:"clientMsgID,omitempty"` - Ex *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` - AttachedInfo *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=attachedInfo" json:"attachedInfo,omitempty"` - IsReact bool `protobuf:"varint,9,opt,name=isReact" json:"isReact,omitempty"` - IsExternalExtensions bool `protobuf:"varint,10,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` - MsgFirstModifyTime int64 `protobuf:"varint,11,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + SourceID string `protobuf:"bytes,2,opt,name=sourceID" json:"sourceID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` + ReactionExtensionList map[string]*sdkws.KeyValue `protobuf:"bytes,5,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,6,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + Ex *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` + AttachedInfo *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=attachedInfo" json:"attachedInfo,omitempty"` + IsReact bool `protobuf:"varint,9,opt,name=isReact" json:"isReact,omitempty"` + IsExternalExtensions bool `protobuf:"varint,10,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,11,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ModifyMessageReactionExtensionsReq) Reset() { *m = ModifyMessageReactionExtensionsReq{} } func (m *ModifyMessageReactionExtensionsReq) String() string { return proto.CompactTextString(m) } func (*ModifyMessageReactionExtensionsReq) ProtoMessage() {} func (*ModifyMessageReactionExtensionsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{22} + return fileDescriptor_msg_9bd9d9abca588885, []int{22} } func (m *ModifyMessageReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ModifyMessageReactionExtensionsReq.Unmarshal(m, b) @@ -1106,7 +1106,7 @@ func (m *ModifyMessageReactionExtensionsReq) GetSessionType() int32 { return 0 } -func (m *ModifyMessageReactionExtensionsReq) GetReactionExtensionList() map[string]*sdk_ws.KeyValue { +func (m *ModifyMessageReactionExtensionsReq) GetReactionExtensionList() map[string]*sdkws.KeyValue { if m != nil { return m.ReactionExtensionList } @@ -1156,27 +1156,27 @@ func (m *ModifyMessageReactionExtensionsReq) GetMsgFirstModifyTime() int64 { } type SetMessageReactionExtensionsReq struct { - OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` - SourceID string `protobuf:"bytes,2,opt,name=sourceID" json:"sourceID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` - ReactionExtensionList map[string]*sdk_ws.KeyValue `protobuf:"bytes,5,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - ClientMsgID string `protobuf:"bytes,6,opt,name=clientMsgID" json:"clientMsgID,omitempty"` - Ex *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` - AttachedInfo *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=attachedInfo" json:"attachedInfo,omitempty"` - IsReact bool `protobuf:"varint,9,opt,name=isReact" json:"isReact,omitempty"` - IsExternalExtensions bool `protobuf:"varint,10,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` - MsgFirstModifyTime int64 `protobuf:"varint,11,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + SourceID string `protobuf:"bytes,2,opt,name=sourceID" json:"sourceID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` + ReactionExtensionList map[string]*sdkws.KeyValue `protobuf:"bytes,5,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,6,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + Ex *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` + AttachedInfo *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=attachedInfo" json:"attachedInfo,omitempty"` + IsReact bool `protobuf:"varint,9,opt,name=isReact" json:"isReact,omitempty"` + IsExternalExtensions bool `protobuf:"varint,10,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,11,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *SetMessageReactionExtensionsReq) Reset() { *m = SetMessageReactionExtensionsReq{} } func (m *SetMessageReactionExtensionsReq) String() string { return proto.CompactTextString(m) } func (*SetMessageReactionExtensionsReq) ProtoMessage() {} func (*SetMessageReactionExtensionsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{23} + return fileDescriptor_msg_9bd9d9abca588885, []int{23} } func (m *SetMessageReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMessageReactionExtensionsReq.Unmarshal(m, b) @@ -1224,7 +1224,7 @@ func (m *SetMessageReactionExtensionsReq) GetSessionType() int32 { return 0 } -func (m *SetMessageReactionExtensionsReq) GetReactionExtensionList() map[string]*sdk_ws.KeyValue { +func (m *SetMessageReactionExtensionsReq) GetReactionExtensionList() map[string]*sdkws.KeyValue { if m != nil { return m.ReactionExtensionList } @@ -1289,7 +1289,7 @@ func (m *SetMessageReactionExtensionsResp) Reset() { *m = SetMessageReac func (m *SetMessageReactionExtensionsResp) String() string { return proto.CompactTextString(m) } func (*SetMessageReactionExtensionsResp) ProtoMessage() {} func (*SetMessageReactionExtensionsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{24} + return fileDescriptor_msg_9bd9d9abca588885, []int{24} } func (m *SetMessageReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMessageReactionExtensionsResp.Unmarshal(m, b) @@ -1366,7 +1366,7 @@ func (m *GetMessageListReactionExtensionsReq) Reset() { *m = GetMessageL func (m *GetMessageListReactionExtensionsReq) String() string { return proto.CompactTextString(m) } func (*GetMessageListReactionExtensionsReq) ProtoMessage() {} func (*GetMessageListReactionExtensionsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{25} + return fileDescriptor_msg_9bd9d9abca588885, []int{25} } func (m *GetMessageListReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMessageListReactionExtensionsReq.Unmarshal(m, b) @@ -1437,7 +1437,7 @@ func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) String() string } func (*GetMessageListReactionExtensionsReq_MessageReactionKey) ProtoMessage() {} func (*GetMessageListReactionExtensionsReq_MessageReactionKey) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{25, 0} + return fileDescriptor_msg_9bd9d9abca588885, []int{25, 0} } func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey.Unmarshal(m, b) @@ -1484,7 +1484,7 @@ func (m *GetMessageListReactionExtensionsResp) Reset() { *m = GetMessage func (m *GetMessageListReactionExtensionsResp) String() string { return proto.CompactTextString(m) } func (*GetMessageListReactionExtensionsResp) ProtoMessage() {} func (*GetMessageListReactionExtensionsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{26} + return fileDescriptor_msg_9bd9d9abca588885, []int{26} } func (m *GetMessageListReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMessageListReactionExtensionsResp.Unmarshal(m, b) @@ -1526,20 +1526,20 @@ func (m *GetMessageListReactionExtensionsResp) GetSingleMessageResult() []*Singl } type SingleMessageExtensionResult struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - ReactionExtensionList map[string]*sdk_ws.KeyValue `protobuf:"bytes,3,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - ClientMsgID string `protobuf:"bytes,4,opt,name=clientMsgID" json:"clientMsgID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + ReactionExtensionList map[string]*sdkws.KeyValue `protobuf:"bytes,3,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,4,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *SingleMessageExtensionResult) Reset() { *m = SingleMessageExtensionResult{} } func (m *SingleMessageExtensionResult) String() string { return proto.CompactTextString(m) } func (*SingleMessageExtensionResult) ProtoMessage() {} func (*SingleMessageExtensionResult) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{27} + return fileDescriptor_msg_9bd9d9abca588885, []int{27} } func (m *SingleMessageExtensionResult) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SingleMessageExtensionResult.Unmarshal(m, b) @@ -1573,7 +1573,7 @@ func (m *SingleMessageExtensionResult) GetErrMsg() string { return "" } -func (m *SingleMessageExtensionResult) GetReactionExtensionList() map[string]*sdk_ws.KeyValue { +func (m *SingleMessageExtensionResult) GetReactionExtensionList() map[string]*sdkws.KeyValue { if m != nil { return m.ReactionExtensionList } @@ -1601,7 +1601,7 @@ func (m *ModifyMessageReactionExtensionsResp) Reset() { *m = ModifyMessa func (m *ModifyMessageReactionExtensionsResp) String() string { return proto.CompactTextString(m) } func (*ModifyMessageReactionExtensionsResp) ProtoMessage() {} func (*ModifyMessageReactionExtensionsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{28} + return fileDescriptor_msg_9bd9d9abca588885, []int{28} } func (m *ModifyMessageReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ModifyMessageReactionExtensionsResp.Unmarshal(m, b) @@ -1650,17 +1650,17 @@ func (m *ModifyMessageReactionExtensionsResp) GetFailedList() []*ExtendMsgResp { } type DeleteMessageListReactionExtensionsReq struct { - OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` - SourceID string `protobuf:"bytes,3,opt,name=sourceID" json:"sourceID,omitempty"` - SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` - ClientMsgID string `protobuf:"bytes,5,opt,name=clientMsgID" json:"clientMsgID,omitempty"` - IsExternalExtensions bool `protobuf:"varint,6,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` - MsgFirstModifyTime int64 `protobuf:"varint,7,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` - ReactionExtensionList []*sdk_ws.KeyValue `protobuf:"bytes,8,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + SourceID string `protobuf:"bytes,3,opt,name=sourceID" json:"sourceID,omitempty"` + SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` + ClientMsgID string `protobuf:"bytes,5,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + IsExternalExtensions bool `protobuf:"varint,6,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,7,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + ReactionExtensionList []*sdkws.KeyValue `protobuf:"bytes,8,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *DeleteMessageListReactionExtensionsReq) Reset() { @@ -1669,7 +1669,7 @@ func (m *DeleteMessageListReactionExtensionsReq) Reset() { func (m *DeleteMessageListReactionExtensionsReq) String() string { return proto.CompactTextString(m) } func (*DeleteMessageListReactionExtensionsReq) ProtoMessage() {} func (*DeleteMessageListReactionExtensionsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{29} + return fileDescriptor_msg_9bd9d9abca588885, []int{29} } func (m *DeleteMessageListReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteMessageListReactionExtensionsReq.Unmarshal(m, b) @@ -1738,7 +1738,7 @@ func (m *DeleteMessageListReactionExtensionsReq) GetMsgFirstModifyTime() int64 { return 0 } -func (m *DeleteMessageListReactionExtensionsReq) GetReactionExtensionList() []*sdk_ws.KeyValue { +func (m *DeleteMessageListReactionExtensionsReq) GetReactionExtensionList() []*sdkws.KeyValue { if m != nil { return m.ReactionExtensionList } @@ -1760,7 +1760,7 @@ func (m *DeleteMessageListReactionExtensionsResp) Reset() { func (m *DeleteMessageListReactionExtensionsResp) String() string { return proto.CompactTextString(m) } func (*DeleteMessageListReactionExtensionsResp) ProtoMessage() {} func (*DeleteMessageListReactionExtensionsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{30} + return fileDescriptor_msg_9bd9d9abca588885, []int{30} } func (m *DeleteMessageListReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteMessageListReactionExtensionsResp.Unmarshal(m, b) @@ -1814,7 +1814,7 @@ func (m *ExtendMsgResp) Reset() { *m = ExtendMsgResp{} } func (m *ExtendMsgResp) String() string { return proto.CompactTextString(m) } func (*ExtendMsgResp) ProtoMessage() {} func (*ExtendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{31} + return fileDescriptor_msg_9bd9d9abca588885, []int{31} } func (m *ExtendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtendMsgResp.Unmarshal(m, b) @@ -1870,7 +1870,7 @@ func (m *ExtendMsg) Reset() { *m = ExtendMsg{} } func (m *ExtendMsg) String() string { return proto.CompactTextString(m) } func (*ExtendMsg) ProtoMessage() {} func (*ExtendMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{32} + return fileDescriptor_msg_9bd9d9abca588885, []int{32} } func (m *ExtendMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtendMsg.Unmarshal(m, b) @@ -1926,19 +1926,19 @@ func (m *ExtendMsg) GetEx() string { } type KeyValueResp struct { - KeyValue *sdk_ws.KeyValue `protobuf:"bytes,1,opt,name=keyValue" json:"keyValue,omitempty"` - ErrCode int32 `protobuf:"varint,2,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,3,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KeyValue *sdkws.KeyValue `protobuf:"bytes,1,opt,name=keyValue" json:"keyValue,omitempty"` + ErrCode int32 `protobuf:"varint,2,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,3,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *KeyValueResp) Reset() { *m = KeyValueResp{} } func (m *KeyValueResp) String() string { return proto.CompactTextString(m) } func (*KeyValueResp) ProtoMessage() {} func (*KeyValueResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{33} + return fileDescriptor_msg_9bd9d9abca588885, []int{33} } func (m *KeyValueResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KeyValueResp.Unmarshal(m, b) @@ -1958,7 +1958,7 @@ func (m *KeyValueResp) XXX_DiscardUnknown() { var xxx_messageInfo_KeyValueResp proto.InternalMessageInfo -func (m *KeyValueResp) GetKeyValue() *sdk_ws.KeyValue { +func (m *KeyValueResp) GetKeyValue() *sdkws.KeyValue { if m != nil { return m.KeyValue } @@ -1992,7 +1992,7 @@ func (m *MsgDataToModifyByMQ) Reset() { *m = MsgDataToModifyByMQ{} } func (m *MsgDataToModifyByMQ) String() string { return proto.CompactTextString(m) } func (*MsgDataToModifyByMQ) ProtoMessage() {} func (*MsgDataToModifyByMQ) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_69316330d19ec9fa, []int{34} + return fileDescriptor_msg_9bd9d9abca588885, []int{34} } func (m *MsgDataToModifyByMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToModifyByMQ.Unmarshal(m, b) @@ -2057,15 +2057,15 @@ func init() { proto.RegisterType((*GetWriteDiffMsgReq)(nil), "msg.GetWriteDiffMsgReq") proto.RegisterType((*GetWriteDiffMsgResp)(nil), "msg.GetWriteDiffMsgResp") proto.RegisterType((*ModifyMessageReactionExtensionsReq)(nil), "msg.ModifyMessageReactionExtensionsReq") - proto.RegisterMapType((map[string]*sdk_ws.KeyValue)(nil), "msg.ModifyMessageReactionExtensionsReq.ReactionExtensionListEntry") + proto.RegisterMapType((map[string]*sdkws.KeyValue)(nil), "msg.ModifyMessageReactionExtensionsReq.ReactionExtensionListEntry") proto.RegisterType((*SetMessageReactionExtensionsReq)(nil), "msg.SetMessageReactionExtensionsReq") - proto.RegisterMapType((map[string]*sdk_ws.KeyValue)(nil), "msg.SetMessageReactionExtensionsReq.ReactionExtensionListEntry") + proto.RegisterMapType((map[string]*sdkws.KeyValue)(nil), "msg.SetMessageReactionExtensionsReq.ReactionExtensionListEntry") proto.RegisterType((*SetMessageReactionExtensionsResp)(nil), "msg.SetMessageReactionExtensionsResp") proto.RegisterType((*GetMessageListReactionExtensionsReq)(nil), "msg.GetMessageListReactionExtensionsReq") proto.RegisterType((*GetMessageListReactionExtensionsReq_MessageReactionKey)(nil), "msg.GetMessageListReactionExtensionsReq.MessageReactionKey") proto.RegisterType((*GetMessageListReactionExtensionsResp)(nil), "msg.GetMessageListReactionExtensionsResp") proto.RegisterType((*SingleMessageExtensionResult)(nil), "msg.SingleMessageExtensionResult") - proto.RegisterMapType((map[string]*sdk_ws.KeyValue)(nil), "msg.SingleMessageExtensionResult.ReactionExtensionListEntry") + proto.RegisterMapType((map[string]*sdkws.KeyValue)(nil), "msg.SingleMessageExtensionResult.ReactionExtensionListEntry") proto.RegisterType((*ModifyMessageReactionExtensionsResp)(nil), "msg.ModifyMessageReactionExtensionsResp") proto.RegisterType((*DeleteMessageListReactionExtensionsReq)(nil), "msg.DeleteMessageListReactionExtensionsReq") proto.RegisterType((*DeleteMessageListReactionExtensionsResp)(nil), "msg.DeleteMessageListReactionExtensionsResp") @@ -2088,13 +2088,13 @@ const _ = grpc.SupportPackageIsVersion4 type MsgClient interface { // 获取最小最大seq(包括用户的,以及指定群组的) - GetMaxAndMinSeq(ctx context.Context, in *sdk_ws.GetMaxAndMinSeqReq, opts ...grpc.CallOption) (*sdk_ws.GetMaxAndMinSeqResp, error) + GetMaxAndMinSeq(ctx context.Context, in *sdkws.GetMaxAndMinSeqReq, opts ...grpc.CallOption) (*sdkws.GetMaxAndMinSeqResp, error) // 拉取历史消息(包括用户的,以及指定群组的) - PullMessageBySeqList(ctx context.Context, in *sdk_ws.PullMessageBySeqListReq, opts ...grpc.CallOption) (*sdk_ws.PullMessageBySeqListResp, error) + PullMessageBySeqList(ctx context.Context, in *sdkws.PullMessageBySeqListReq, opts ...grpc.CallOption) (*sdkws.PullMessageBySeqListResp, error) // 发送消息 SendMsg(ctx context.Context, in *SendMsgReq, opts ...grpc.CallOption) (*SendMsgResp, error) // 删除某人消息 - DelMsgList(ctx context.Context, in *sdk_ws.DelMsgListReq, opts ...grpc.CallOption) (*sdk_ws.DelMsgListResp, error) + DelMsgList(ctx context.Context, in *sdkws.DelMsgListReq, opts ...grpc.CallOption) (*sdkws.DelMsgListResp, error) // 删除某个用户某个大群消息 DelSuperGroupMsg(ctx context.Context, in *DelSuperGroupMsgReq, opts ...grpc.CallOption) (*DelSuperGroupMsgResp, error) // 清空某人所有消息 @@ -2118,8 +2118,8 @@ func NewMsgClient(cc *grpc.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) GetMaxAndMinSeq(ctx context.Context, in *sdk_ws.GetMaxAndMinSeqReq, opts ...grpc.CallOption) (*sdk_ws.GetMaxAndMinSeqResp, error) { - out := new(sdk_ws.GetMaxAndMinSeqResp) +func (c *msgClient) GetMaxAndMinSeq(ctx context.Context, in *sdkws.GetMaxAndMinSeqReq, opts ...grpc.CallOption) (*sdkws.GetMaxAndMinSeqResp, error) { + out := new(sdkws.GetMaxAndMinSeqResp) err := grpc.Invoke(ctx, "/msg.msg/GetMaxAndMinSeq", in, out, c.cc, opts...) if err != nil { return nil, err @@ -2127,8 +2127,8 @@ func (c *msgClient) GetMaxAndMinSeq(ctx context.Context, in *sdk_ws.GetMaxAndMin return out, nil } -func (c *msgClient) PullMessageBySeqList(ctx context.Context, in *sdk_ws.PullMessageBySeqListReq, opts ...grpc.CallOption) (*sdk_ws.PullMessageBySeqListResp, error) { - out := new(sdk_ws.PullMessageBySeqListResp) +func (c *msgClient) PullMessageBySeqList(ctx context.Context, in *sdkws.PullMessageBySeqListReq, opts ...grpc.CallOption) (*sdkws.PullMessageBySeqListResp, error) { + out := new(sdkws.PullMessageBySeqListResp) err := grpc.Invoke(ctx, "/msg.msg/PullMessageBySeqList", in, out, c.cc, opts...) if err != nil { return nil, err @@ -2145,8 +2145,8 @@ func (c *msgClient) SendMsg(ctx context.Context, in *SendMsgReq, opts ...grpc.Ca return out, nil } -func (c *msgClient) DelMsgList(ctx context.Context, in *sdk_ws.DelMsgListReq, opts ...grpc.CallOption) (*sdk_ws.DelMsgListResp, error) { - out := new(sdk_ws.DelMsgListResp) +func (c *msgClient) DelMsgList(ctx context.Context, in *sdkws.DelMsgListReq, opts ...grpc.CallOption) (*sdkws.DelMsgListResp, error) { + out := new(sdkws.DelMsgListResp) err := grpc.Invoke(ctx, "/msg.msg/DelMsgList", in, out, c.cc, opts...) if err != nil { return nil, err @@ -2230,13 +2230,13 @@ func (c *msgClient) DeleteMessageReactionExtensions(ctx context.Context, in *Del type MsgServer interface { // 获取最小最大seq(包括用户的,以及指定群组的) - GetMaxAndMinSeq(context.Context, *sdk_ws.GetMaxAndMinSeqReq) (*sdk_ws.GetMaxAndMinSeqResp, error) + GetMaxAndMinSeq(context.Context, *sdkws.GetMaxAndMinSeqReq) (*sdkws.GetMaxAndMinSeqResp, error) // 拉取历史消息(包括用户的,以及指定群组的) - PullMessageBySeqList(context.Context, *sdk_ws.PullMessageBySeqListReq) (*sdk_ws.PullMessageBySeqListResp, error) + PullMessageBySeqList(context.Context, *sdkws.PullMessageBySeqListReq) (*sdkws.PullMessageBySeqListResp, error) // 发送消息 SendMsg(context.Context, *SendMsgReq) (*SendMsgResp, error) // 删除某人消息 - DelMsgList(context.Context, *sdk_ws.DelMsgListReq) (*sdk_ws.DelMsgListResp, error) + DelMsgList(context.Context, *sdkws.DelMsgListReq) (*sdkws.DelMsgListResp, error) // 删除某个用户某个大群消息 DelSuperGroupMsg(context.Context, *DelSuperGroupMsgReq) (*DelSuperGroupMsgResp, error) // 清空某人所有消息 @@ -2257,7 +2257,7 @@ func RegisterMsgServer(s *grpc.Server, srv MsgServer) { } func _Msg_GetMaxAndMinSeq_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(sdk_ws.GetMaxAndMinSeqReq) + in := new(sdkws.GetMaxAndMinSeqReq) if err := dec(in); err != nil { return nil, err } @@ -2269,13 +2269,13 @@ func _Msg_GetMaxAndMinSeq_Handler(srv interface{}, ctx context.Context, dec func FullMethod: "/msg.msg/GetMaxAndMinSeq", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).GetMaxAndMinSeq(ctx, req.(*sdk_ws.GetMaxAndMinSeqReq)) + return srv.(MsgServer).GetMaxAndMinSeq(ctx, req.(*sdkws.GetMaxAndMinSeqReq)) } return interceptor(ctx, in, info, handler) } func _Msg_PullMessageBySeqList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(sdk_ws.PullMessageBySeqListReq) + in := new(sdkws.PullMessageBySeqListReq) if err := dec(in); err != nil { return nil, err } @@ -2287,7 +2287,7 @@ func _Msg_PullMessageBySeqList_Handler(srv interface{}, ctx context.Context, dec FullMethod: "/msg.msg/PullMessageBySeqList", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).PullMessageBySeqList(ctx, req.(*sdk_ws.PullMessageBySeqListReq)) + return srv.(MsgServer).PullMessageBySeqList(ctx, req.(*sdkws.PullMessageBySeqListReq)) } return interceptor(ctx, in, info, handler) } @@ -2311,7 +2311,7 @@ func _Msg_SendMsg_Handler(srv interface{}, ctx context.Context, dec func(interfa } func _Msg_DelMsgList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(sdk_ws.DelMsgListReq) + in := new(sdkws.DelMsgListReq) if err := dec(in); err != nil { return nil, err } @@ -2323,7 +2323,7 @@ func _Msg_DelMsgList_Handler(srv interface{}, ctx context.Context, dec func(inte FullMethod: "/msg.msg/DelMsgList", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).DelMsgList(ctx, req.(*sdk_ws.DelMsgListReq)) + return srv.(MsgServer).DelMsgList(ctx, req.(*sdkws.DelMsgListReq)) } return interceptor(ctx, in, info, handler) } @@ -2529,107 +2529,107 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "msg/msg.proto", } -func init() { proto.RegisterFile("msg/msg.proto", fileDescriptor_msg_69316330d19ec9fa) } +func init() { proto.RegisterFile("msg/msg.proto", fileDescriptor_msg_9bd9d9abca588885) } -var fileDescriptor_msg_69316330d19ec9fa = []byte{ - // 1572 bytes of a gzipped FileDescriptorProto +var fileDescriptor_msg_9bd9d9abca588885 = []byte{ + // 1569 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcd, 0x6e, 0xdb, 0x46, 0x10, 0x06, 0x49, 0x4b, 0xb6, 0x47, 0x76, 0xec, 0xac, 0x1d, 0x43, 0x61, 0x8d, 0x46, 0x65, 0x92, - 0x46, 0x41, 0x12, 0x19, 0x70, 0x8b, 0xfe, 0xa5, 0x40, 0x1b, 0x47, 0xae, 0x62, 0xa4, 0x6c, 0x12, - 0xca, 0x6d, 0x90, 0xe6, 0x90, 0x32, 0xd6, 0x9a, 0x21, 0xc4, 0x3f, 0x73, 0xa9, 0x58, 0x02, 0x7a, + 0x5a, 0x41, 0x62, 0x19, 0x70, 0x8b, 0xfe, 0xa5, 0x40, 0x1b, 0x47, 0xae, 0x62, 0xa4, 0x6c, 0x12, + 0xca, 0x6d, 0x90, 0xe6, 0x90, 0x32, 0xd6, 0x9a, 0x21, 0xcc, 0x3f, 0x73, 0xa9, 0x58, 0x02, 0x7a, 0xe9, 0xa1, 0xbd, 0xf5, 0x35, 0x7a, 0xeb, 0x43, 0xe4, 0x09, 0xfa, 0x20, 0x3d, 0x15, 0xe8, 0xb9, 0x2d, 0x76, 0xb9, 0xa2, 0xf8, 0x2b, 0xd1, 0x0a, 0x02, 0xe4, 0xd0, 0x9b, 0x67, 0x76, 0x76, 0x7e, - 0xbf, 0x19, 0x2d, 0xc7, 0xb0, 0x6a, 0x13, 0x63, 0xc7, 0x26, 0x46, 0xcb, 0xf3, 0xdd, 0xc0, 0x45, - 0x92, 0x4d, 0x0c, 0xb9, 0xf9, 0xc0, 0xc3, 0xce, 0xad, 0x03, 0xf5, 0x56, 0x17, 0xfb, 0x2f, 0xb1, - 0xbf, 0xe3, 0xf5, 0x8d, 0x1d, 0x76, 0xbc, 0x43, 0x7a, 0xfd, 0x67, 0xa7, 0x64, 0xe7, 0x94, 0x84, - 0xe2, 0x72, 0x6b, 0xa6, 0xa4, 0xaf, 0x7b, 0x1e, 0xf6, 0xb9, 0xbc, 0xe2, 0x42, 0x4d, 0x25, 0x46, - 0x5b, 0x0f, 0xf4, 0x43, 0x57, 0x7d, 0x84, 0x36, 0xa1, 0x12, 0xb8, 0x7d, 0xec, 0xd4, 0x85, 0x86, - 0xd0, 0x5c, 0xd6, 0x42, 0x02, 0x35, 0xa0, 0xe6, 0x7a, 0xd8, 0xd7, 0x03, 0xd3, 0x75, 0x0e, 0xda, - 0x75, 0x91, 0x9d, 0xc5, 0x59, 0xa8, 0x09, 0x8b, 0x76, 0xa8, 0xa6, 0x2e, 0x35, 0x84, 0x66, 0x6d, - 0xf7, 0x5c, 0x8b, 0xf4, 0xfa, 0xa7, 0xa4, 0xc5, 0x95, 0x6b, 0xe3, 0x63, 0xe5, 0x49, 0xcc, 0x60, - 0x7b, 0x2f, 0x7e, 0x51, 0x98, 0x7a, 0x71, 0xb6, 0x13, 0xca, 0x4f, 0x02, 0xac, 0x3d, 0x1c, 0x90, - 0x17, 0xf1, 0x80, 0x1a, 0x50, 0x7b, 0x10, 0xbb, 0x15, 0x86, 0x15, 0x67, 0xc5, 0x3d, 0x10, 0xa7, - 0x7b, 0xa0, 0xc0, 0x8a, 0x37, 0x20, 0x2f, 0x0e, 0xdd, 0x6f, 0x09, 0xf6, 0x0f, 0xda, 0x2c, 0xd2, - 0x65, 0x2d, 0xc1, 0x53, 0x7e, 0x13, 0x00, 0x4d, 0xec, 0xbb, 0x8e, 0xe1, 0xee, 0x8d, 0xd4, 0x47, - 0xa8, 0x0e, 0x8b, 0x96, 0x4e, 0x82, 0x2e, 0x3e, 0x61, 0x2e, 0x2c, 0x68, 0x63, 0x12, 0x5d, 0x81, - 0x55, 0xdd, 0x30, 0x7c, 0x6c, 0x24, 0x03, 0x4b, 0x32, 0xd1, 0x2e, 0xd4, 0x6c, 0x4c, 0x88, 0x6e, - 0xe0, 0xaf, 0x4d, 0x12, 0xd4, 0xa5, 0x86, 0xd4, 0xac, 0xed, 0xae, 0xb7, 0x28, 0x4c, 0x62, 0xd1, - 0x6a, 0x71, 0x21, 0xb4, 0x0d, 0xcb, 0x81, 0x6f, 0x1a, 0x06, 0xf3, 0x75, 0x81, 0x69, 0x9d, 0x30, - 0x94, 0x6f, 0x00, 0x75, 0x70, 0xa0, 0xea, 0xc3, 0x3b, 0x4e, 0x4f, 0x35, 0x9d, 0x2e, 0x3e, 0xd1, - 0xf0, 0x09, 0xda, 0x82, 0x2a, 0x0f, 0x2e, 0xcc, 0x14, 0xa7, 0xd2, 0x69, 0x14, 0x33, 0x69, 0x54, - 0x4e, 0x61, 0x23, 0xa3, 0x8f, 0x78, 0x34, 0xf0, 0x7d, 0xdf, 0xbf, 0xeb, 0xf6, 0x30, 0xd3, 0x58, - 0xd1, 0xc6, 0x24, 0x35, 0xb5, 0xef, 0xfb, 0x2a, 0x31, 0xb8, 0x36, 0x4e, 0x51, 0xbe, 0xaa, 0x0f, - 0x69, 0xa6, 0x68, 0x7e, 0x57, 0x35, 0x4e, 0x31, 0x3e, 0xd3, 0xcb, 0x62, 0xa1, 0x7c, 0x46, 0x29, - 0x1f, 0x01, 0x74, 0xb1, 0xd3, 0x53, 0x89, 0x41, 0x03, 0x28, 0x0f, 0x44, 0x1b, 0x6a, 0xd1, 0x3d, - 0xe2, 0xd1, 0x08, 0x09, 0x6b, 0x19, 0x95, 0x18, 0x51, 0xbe, 0xe2, 0x2c, 0x2a, 0x71, 0x64, 0x99, - 0xd8, 0x09, 0x42, 0x89, 0x4a, 0x28, 0x11, 0x63, 0x21, 0x19, 0x96, 0x08, 0x76, 0x7a, 0x87, 0xa6, - 0x8d, 0xeb, 0xd5, 0x86, 0xd0, 0x94, 0xb4, 0x88, 0x56, 0xae, 0x42, 0xed, 0xae, 0x85, 0x75, 0x9f, - 0xfb, 0xb9, 0x05, 0xd5, 0x41, 0x22, 0xd1, 0x21, 0xa5, 0x9c, 0x83, 0x95, 0x89, 0x18, 0xf1, 0x94, - 0xa7, 0xb0, 0xd6, 0xc5, 0x54, 0x7d, 0xa2, 0x46, 0x79, 0x57, 0x69, 0xaa, 0x0d, 0xdf, 0x1d, 0x78, - 0x51, 0x7d, 0xc6, 0x24, 0xbd, 0x61, 0x87, 0xa9, 0xe3, 0x29, 0x0d, 0x29, 0x05, 0xc1, 0x7a, 0x52, - 0x39, 0xf1, 0x94, 0x5b, 0xb0, 0xd1, 0xc5, 0x01, 0xcf, 0x4c, 0x37, 0xd0, 0x83, 0x01, 0xe1, 0x46, - 0x09, 0x23, 0x98, 0xee, 0x8a, 0xc6, 0x29, 0x65, 0x0b, 0x36, 0xb3, 0xe2, 0xc4, 0x53, 0x3e, 0x66, - 0x70, 0xc8, 0xa8, 0x49, 0x35, 0xb1, 0x90, 0x6d, 0xe2, 0x1f, 0x60, 0xb3, 0x93, 0xa3, 0x90, 0x46, - 0x87, 0x93, 0x40, 0xc2, 0x13, 0x20, 0xe1, 0x04, 0x90, 0x70, 0x04, 0x24, 0xee, 0xb2, 0x94, 0x70, - 0xb9, 0x03, 0x1b, 0x6d, 0x6c, 0x75, 0x07, 0x1e, 0xf6, 0x3b, 0x34, 0x41, 0x99, 0x8a, 0x88, 0x45, - 0x69, 0x95, 0x12, 0x69, 0xa5, 0xb1, 0x67, 0x15, 0x11, 0x4f, 0x39, 0x0a, 0x63, 0x4f, 0x1b, 0x98, - 0x19, 0x3b, 0x5a, 0x07, 0x89, 0x16, 0x49, 0x64, 0x45, 0xa2, 0x7f, 0x4e, 0x31, 0xee, 0x87, 0x79, - 0x4a, 0x1b, 0x9f, 0x23, 0x4f, 0xe5, 0x5b, 0xe6, 0x1e, 0x9b, 0x19, 0x8f, 0x7d, 0x33, 0xc0, 0x6d, - 0xf3, 0xf8, 0x78, 0xfe, 0xb8, 0x94, 0x13, 0x96, 0xa2, 0xa4, 0xa6, 0x37, 0xec, 0xfc, 0xcf, 0x15, - 0x50, 0x54, 0xb7, 0x67, 0x1e, 0x8f, 0xd4, 0x70, 0x48, 0x6a, 0x58, 0x3f, 0xa2, 0x0e, 0xee, 0x0f, - 0x03, 0xec, 0x10, 0xd3, 0x75, 0xca, 0x21, 0x94, 0x75, 0xb9, 0x3b, 0xf0, 0x8f, 0x70, 0x04, 0x95, - 0x88, 0xa6, 0x67, 0xae, 0x97, 0xf8, 0x79, 0x88, 0xe8, 0x70, 0xc2, 0x10, 0x6a, 0xe8, 0x70, 0xe4, - 0x61, 0x36, 0x61, 0x2a, 0x5a, 0x9c, 0x85, 0x86, 0x70, 0xc1, 0x4f, 0x3b, 0xc5, 0xe6, 0x7d, 0x85, - 0xcd, 0xfb, 0xbd, 0x70, 0xde, 0xcf, 0x8c, 0xa1, 0xa5, 0xe5, 0x29, 0xd9, 0x77, 0x02, 0x7f, 0xa4, - 0xe5, 0x1b, 0x48, 0xcf, 0xb6, 0x6a, 0x76, 0xb6, 0xdd, 0x04, 0x11, 0x0f, 0xeb, 0x8b, 0x2c, 0xc7, - 0xdb, 0x2d, 0xc3, 0x75, 0x0d, 0x0b, 0x87, 0x6f, 0x88, 0xe7, 0x83, 0xe3, 0x56, 0x37, 0xf0, 0x4d, - 0xc7, 0xf8, 0x4e, 0xb7, 0x06, 0x58, 0x13, 0xf1, 0x10, 0x7d, 0x09, 0x2b, 0x7a, 0x10, 0xe8, 0x47, - 0x2f, 0x70, 0xef, 0xc0, 0x39, 0x76, 0xeb, 0x4b, 0x25, 0xee, 0x25, 0x6e, 0x50, 0x28, 0x98, 0x84, - 0x05, 0x52, 0x5f, 0x6e, 0x08, 0xcd, 0x25, 0x6d, 0x4c, 0xa2, 0x5d, 0xd8, 0x34, 0x09, 0x75, 0xdf, - 0x77, 0x74, 0x6b, 0x12, 0x78, 0x1d, 0x98, 0x58, 0xee, 0x19, 0x6a, 0x01, 0xb2, 0x89, 0xf1, 0x95, - 0xe9, 0x93, 0x20, 0xcc, 0x1f, 0x9b, 0xd1, 0x35, 0x36, 0xa3, 0x73, 0x4e, 0xe4, 0x27, 0x20, 0x17, - 0x27, 0x91, 0xe2, 0xb9, 0x8f, 0x47, 0x1c, 0x1b, 0xf4, 0x4f, 0x74, 0x15, 0x2a, 0x2f, 0x69, 0x10, - 0xfc, 0x09, 0xb1, 0xc6, 0x41, 0x78, 0x1f, 0x8f, 0xc2, 0xd8, 0xc2, 0xd3, 0xcf, 0xc4, 0x4f, 0x04, - 0xe5, 0xdf, 0x05, 0xb8, 0x44, 0xa7, 0xee, 0xdb, 0x0a, 0xc2, 0xc1, 0x74, 0x10, 0x7e, 0xc1, 0x40, - 0x38, 0x23, 0x80, 0xff, 0x11, 0xf8, 0x36, 0x23, 0xf0, 0x4f, 0x01, 0x1a, 0xd3, 0x0b, 0x38, 0xd7, - 0x28, 0x4e, 0x55, 0x50, 0xca, 0x56, 0x30, 0x3f, 0x07, 0x0b, 0x45, 0x39, 0x88, 0x57, 0xa0, 0x92, - 0xac, 0xc0, 0x75, 0xa8, 0xfa, 0x98, 0x0c, 0xac, 0xa0, 0x5e, 0x65, 0xa8, 0x3c, 0xcf, 0x50, 0x19, - 0x05, 0x8b, 0x89, 0xa7, 0x71, 0x01, 0xe5, 0x1f, 0x11, 0x2e, 0x77, 0xa2, 0x68, 0x69, 0x0a, 0x5f, - 0xa3, 0xe7, 0xa2, 0xbe, 0x12, 0x53, 0x7d, 0x15, 0xef, 0x47, 0x29, 0xd5, 0x8f, 0xb3, 0x7b, 0x8e, - 0xc0, 0x96, 0x9d, 0xac, 0xc6, 0x7d, 0x3c, 0x8a, 0x35, 0xdd, 0x6d, 0x16, 0x5e, 0x89, 0x28, 0x5a, - 0x6a, 0x46, 0x8d, 0x56, 0xa0, 0x5a, 0x3e, 0x06, 0x94, 0x95, 0x4e, 0x57, 0x51, 0x28, 0x5b, 0x45, - 0xb1, 0xa8, 0x8a, 0xca, 0xef, 0x02, 0x5c, 0x99, 0xed, 0xfa, 0x5c, 0x90, 0xeb, 0xc2, 0x06, 0x31, - 0x1d, 0xc3, 0xc2, 0x51, 0x20, 0x0c, 0x13, 0xe1, 0xe7, 0xd1, 0x7b, 0xe1, 0xa4, 0x8a, 0x9f, 0x47, - 0x06, 0x43, 0x41, 0x2d, 0xef, 0xb6, 0xf2, 0x4a, 0x84, 0xed, 0x69, 0xb7, 0xe6, 0xf0, 0xd3, 0x2f, - 0x9a, 0xa9, 0xa1, 0xa7, 0x9f, 0xcf, 0xf4, 0xf4, 0xf5, 0x07, 0xea, 0x42, 0xa6, 0x90, 0x6f, 0x72, - 0xc4, 0xbc, 0x12, 0xe0, 0xf2, 0xcc, 0x87, 0xca, 0x5c, 0x25, 0xff, 0x10, 0x6a, 0x64, 0x70, 0x74, - 0x84, 0x09, 0x89, 0x25, 0x10, 0xb1, 0x04, 0x32, 0xdd, 0xe3, 0x0f, 0x3a, 0x2d, 0x2e, 0x86, 0x76, - 0x01, 0x8e, 0x75, 0xd3, 0xc2, 0x3d, 0x76, 0x69, 0xa1, 0xf0, 0x52, 0x4c, 0x4a, 0xf9, 0x4b, 0x84, - 0xf7, 0xdb, 0xd8, 0xc2, 0x01, 0x7e, 0xab, 0x67, 0xc7, 0xec, 0xcf, 0xd2, 0xa2, 0x9f, 0xab, 0xea, - 0x99, 0x7f, 0xae, 0x16, 0x0b, 0x47, 0xf5, 0x7e, 0x11, 0xc2, 0x97, 0x58, 0xae, 0x33, 0x58, 0xc9, - 0x97, 0x56, 0x7e, 0x11, 0xe0, 0x5a, 0xa9, 0x9c, 0xcf, 0x85, 0x9d, 0x33, 0xfc, 0x6a, 0xb8, 0xb0, - 0x9a, 0x40, 0x06, 0xba, 0x09, 0xcb, 0x78, 0xcc, 0x88, 0x56, 0x55, 0x49, 0x00, 0x4d, 0x04, 0xe2, - 0xbe, 0x89, 0x45, 0xbe, 0x49, 0x71, 0xdf, 0x94, 0x3f, 0x44, 0x58, 0x8e, 0x54, 0xa1, 0x67, 0x45, - 0xe9, 0x14, 0x98, 0xe3, 0xd7, 0x93, 0x96, 0x5f, 0x7f, 0x3a, 0x88, 0x65, 0xc7, 0xbc, 0x54, 0x88, - 0x00, 0x25, 0xf5, 0xe0, 0x0a, 0x07, 0x4e, 0xf2, 0x49, 0x75, 0x8e, 0x3d, 0xe1, 0x42, 0x88, 0x8a, - 0x78, 0x28, 0x3f, 0x3d, 0xe3, 0x04, 0xba, 0x96, 0x9c, 0x40, 0x39, 0xf5, 0x8b, 0xcd, 0x20, 0x1b, - 0x56, 0xe2, 0x47, 0xe8, 0x06, 0x2c, 0xf5, 0x39, 0xcd, 0x0b, 0x98, 0x41, 0x65, 0x24, 0x30, 0x47, - 0x01, 0x7f, 0x15, 0x60, 0x23, 0xb6, 0xf9, 0xa3, 0x79, 0x61, 0xab, 0xbf, 0xcc, 0x82, 0x4f, 0x28, - 0xb1, 0xe0, 0x13, 0xcf, 0xbc, 0xe0, 0x93, 0x52, 0x0b, 0xbe, 0xdd, 0xbf, 0x17, 0x41, 0xb2, 0x89, - 0x81, 0xee, 0xc1, 0x5a, 0x6a, 0x31, 0x87, 0x2e, 0xf2, 0xb8, 0xb3, 0x0b, 0x40, 0x59, 0x2e, 0x3a, - 0x22, 0x1e, 0x7a, 0x0c, 0x9b, 0x0f, 0x07, 0x96, 0xc5, 0x3b, 0x73, 0x6f, 0xd4, 0xc5, 0x27, 0xcc, - 0x8f, 0x77, 0xf9, 0x9d, 0xbc, 0x43, 0xaa, 0xf3, 0xd2, 0xd4, 0x73, 0xd6, 0x5b, 0x8b, 0x7c, 0xe1, - 0x83, 0xd6, 0xf8, 0xe7, 0xc5, 0x78, 0xa1, 0x27, 0xaf, 0x27, 0x19, 0xc4, 0x43, 0x9f, 0x02, 0xb4, - 0xb1, 0xa5, 0x12, 0x83, 0x19, 0xdf, 0xe4, 0xca, 0x27, 0x2c, 0x7a, 0xeb, 0x42, 0x0e, 0x97, 0x78, - 0xa8, 0x03, 0xeb, 0xe9, 0x8d, 0x0d, 0xaa, 0x33, 0x03, 0x39, 0x1b, 0x21, 0xf9, 0x62, 0xc1, 0x09, - 0xf1, 0xd0, 0x0e, 0x2c, 0x8d, 0xd7, 0x74, 0x28, 0xf4, 0x30, 0xb6, 0xdc, 0x93, 0xcf, 0xa7, 0x38, - 0xa1, 0xe5, 0xf4, 0x9e, 0x8c, 0x5b, 0xce, 0xd9, 0xb6, 0x71, 0xcb, 0x79, 0x8b, 0x35, 0xaa, 0xa8, - 0x93, 0xaf, 0xa8, 0x53, 0xa8, 0x28, 0x77, 0xa1, 0xd6, 0x87, 0xed, 0x69, 0x1f, 0x01, 0xe8, 0x4a, - 0x99, 0x0f, 0x3d, 0xf9, 0x6a, 0x09, 0x29, 0xe2, 0xa1, 0x53, 0x68, 0xcc, 0x7a, 0x02, 0xa2, 0x66, - 0xd9, 0x47, 0xae, 0x7c, 0xbd, 0xa4, 0x24, 0xf1, 0xd0, 0x09, 0x6c, 0xdf, 0xe9, 0xf5, 0x8a, 0xa3, - 0xbc, 0x56, 0x72, 0xa7, 0x22, 0x37, 0xcb, 0x09, 0x12, 0x0f, 0xfd, 0x08, 0x97, 0x12, 0x3f, 0x61, - 0x39, 0x56, 0x6f, 0x8c, 0x91, 0x55, 0xe2, 0x71, 0x21, 0xdf, 0x2c, 0x2f, 0x4c, 0xbc, 0xbd, 0x77, - 0xbe, 0xbf, 0xf8, 0xc0, 0xc3, 0xce, 0xb3, 0x03, 0x35, 0xf6, 0xbf, 0x1f, 0x9b, 0x18, 0xb7, 0x6d, - 0x62, 0x3c, 0xaf, 0x32, 0xf2, 0x83, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x01, 0x9d, 0x0b, 0x79, - 0x64, 0x1a, 0x00, 0x00, + 0xbf, 0x19, 0x2d, 0xc7, 0xb0, 0x6c, 0x13, 0x63, 0xc7, 0x26, 0x46, 0xcb, 0xf3, 0xdd, 0xc0, 0x45, + 0x92, 0x4d, 0x0c, 0x79, 0xeb, 0x81, 0x87, 0x9d, 0xed, 0x03, 0x75, 0xbb, 0x8b, 0xfd, 0x97, 0xd8, + 0xdf, 0xf1, 0x4e, 0x8c, 0x1d, 0x76, 0xbc, 0x43, 0x7a, 0x27, 0x67, 0x64, 0xe7, 0x8c, 0x84, 0xd2, + 0xf2, 0xf6, 0x34, 0x41, 0x5f, 0xf7, 0x3c, 0xec, 0x73, 0x71, 0xc5, 0x85, 0x9a, 0x4a, 0x8c, 0xb6, + 0x1e, 0xe8, 0x87, 0xae, 0xfa, 0x08, 0xad, 0x43, 0x25, 0x70, 0x4f, 0xb0, 0x53, 0x17, 0x1a, 0x42, + 0x73, 0x51, 0x0b, 0x09, 0xd4, 0x80, 0x9a, 0xeb, 0x61, 0x5f, 0x0f, 0x4c, 0xd7, 0x39, 0x68, 0xd7, + 0x45, 0x76, 0x16, 0x67, 0xa1, 0x26, 0xcc, 0xdb, 0xa1, 0x9a, 0xba, 0xd4, 0x10, 0x9a, 0xb5, 0xdd, + 0x0b, 0x2d, 0x66, 0xae, 0xc5, 0x95, 0x6b, 0xa3, 0x63, 0xe5, 0x49, 0xcc, 0x60, 0x7b, 0x2f, 0x7e, + 0x51, 0x98, 0x78, 0x71, 0xba, 0x13, 0xca, 0x4f, 0x02, 0xac, 0x3c, 0xec, 0x93, 0x17, 0xf1, 0x80, + 0x1a, 0x50, 0x7b, 0x10, 0xbb, 0x15, 0x86, 0x15, 0x67, 0xc5, 0x3d, 0x10, 0x27, 0x7b, 0xa0, 0xc0, + 0x92, 0xd7, 0x27, 0x2f, 0x0e, 0xdd, 0x6f, 0x09, 0xf6, 0x0f, 0xda, 0x2c, 0xd2, 0x45, 0x2d, 0xc1, + 0x53, 0x7e, 0x13, 0x00, 0x8d, 0xed, 0xbb, 0x8e, 0xe1, 0xee, 0x0d, 0xd5, 0x47, 0xa8, 0x0e, 0xf3, + 0x96, 0x4e, 0x82, 0x2e, 0x3e, 0x65, 0x2e, 0xcc, 0x69, 0x23, 0x12, 0x5d, 0x83, 0x65, 0xdd, 0x30, + 0x7c, 0x6c, 0x24, 0x03, 0x4b, 0x32, 0xd1, 0x2e, 0xd4, 0x6c, 0x4c, 0x88, 0x6e, 0xe0, 0xaf, 0x4d, + 0x12, 0xd4, 0xa5, 0x86, 0xd4, 0xac, 0xed, 0xae, 0xb6, 0x28, 0x48, 0x62, 0xd1, 0x6a, 0x71, 0x21, + 0xb4, 0x09, 0x8b, 0x81, 0x6f, 0x1a, 0x06, 0xf3, 0x75, 0x8e, 0x69, 0x1d, 0x33, 0x94, 0x6f, 0x00, + 0x75, 0x70, 0xa0, 0xea, 0x83, 0x3b, 0x4e, 0x4f, 0x35, 0x9d, 0x2e, 0x3e, 0xd5, 0xf0, 0x29, 0xda, + 0x80, 0x2a, 0x0f, 0x2e, 0xcc, 0x14, 0xa7, 0xd2, 0x69, 0x14, 0x33, 0x69, 0x54, 0xce, 0x60, 0x2d, + 0xa3, 0x8f, 0x78, 0x34, 0xf0, 0x7d, 0xdf, 0xbf, 0xeb, 0xf6, 0x30, 0xd3, 0x58, 0xd1, 0x46, 0x24, + 0x35, 0xb5, 0xef, 0xfb, 0x2a, 0x31, 0xb8, 0x36, 0x4e, 0x51, 0xbe, 0xaa, 0x0f, 0x68, 0xa6, 0x68, + 0x7e, 0x97, 0x35, 0x4e, 0x31, 0x3e, 0xd3, 0xcb, 0x62, 0xa1, 0x7c, 0x46, 0x29, 0x1f, 0x01, 0x74, + 0xb1, 0xd3, 0x53, 0x89, 0x41, 0x03, 0x28, 0x0f, 0x44, 0x1b, 0x6a, 0xd1, 0x3d, 0xe2, 0xd1, 0x08, + 0x09, 0xeb, 0x18, 0x95, 0x18, 0x51, 0xbe, 0xe2, 0x2c, 0x2a, 0x71, 0x64, 0x99, 0xd8, 0x09, 0x42, + 0x89, 0x4a, 0x28, 0x11, 0x63, 0x21, 0x19, 0x16, 0x08, 0x76, 0x7a, 0x87, 0xa6, 0x8d, 0xeb, 0xd5, + 0x86, 0xd0, 0x94, 0xb4, 0x88, 0x56, 0xae, 0x43, 0xed, 0xae, 0x85, 0x75, 0x9f, 0xfb, 0xb9, 0x01, + 0xd5, 0x7e, 0x22, 0xd1, 0x21, 0xa5, 0x5c, 0x80, 0xa5, 0xb1, 0x18, 0xf1, 0x94, 0xa7, 0xb0, 0xd2, + 0xc5, 0x54, 0x7d, 0xa2, 0x46, 0x79, 0x57, 0x69, 0xaa, 0x0d, 0xdf, 0xed, 0x7b, 0x51, 0x7d, 0x46, + 0x24, 0xbd, 0x61, 0x87, 0xa9, 0xe3, 0x29, 0x0d, 0x29, 0x05, 0xc1, 0x6a, 0x52, 0x39, 0xf1, 0x94, + 0x6d, 0x58, 0xeb, 0xe2, 0x80, 0x67, 0xa6, 0x1b, 0xe8, 0x41, 0x9f, 0x70, 0xa3, 0x84, 0x11, 0x4c, + 0x77, 0x45, 0xe3, 0x94, 0xb2, 0x01, 0xeb, 0x59, 0x71, 0xe2, 0x29, 0x1f, 0x33, 0x38, 0x64, 0xd4, + 0xa4, 0x9a, 0x58, 0xc8, 0x36, 0xf1, 0x0f, 0xb0, 0xde, 0xc9, 0x51, 0x48, 0xa3, 0xc3, 0x49, 0x20, + 0xe1, 0x31, 0x90, 0x70, 0x02, 0x48, 0x38, 0x02, 0x12, 0x77, 0x59, 0x4a, 0xb8, 0xdc, 0x81, 0xb5, + 0x36, 0xb6, 0xba, 0x7d, 0x0f, 0xfb, 0x1d, 0x9a, 0xa0, 0x4c, 0x45, 0xc4, 0xa2, 0xb4, 0x4a, 0x89, + 0xb4, 0xd2, 0xd8, 0xb3, 0x8a, 0x88, 0xa7, 0x1c, 0x85, 0xb1, 0xa7, 0x0d, 0x4c, 0x8d, 0x1d, 0xad, + 0x82, 0x44, 0x8b, 0x24, 0xb2, 0x22, 0xd1, 0x3f, 0x27, 0x18, 0xf7, 0xc3, 0x3c, 0xa5, 0x8d, 0xcf, + 0x90, 0xa7, 0xf2, 0x2d, 0x73, 0x8f, 0xcd, 0x8c, 0xc7, 0xbe, 0x19, 0xe0, 0xb6, 0x79, 0x7c, 0x3c, + 0x7b, 0x5c, 0xca, 0x29, 0x4b, 0x51, 0x52, 0xd3, 0x1b, 0x76, 0xfe, 0xe7, 0x0a, 0x28, 0xaa, 0xdb, + 0x33, 0x8f, 0x87, 0x6a, 0x38, 0x24, 0x35, 0xac, 0x1f, 0x51, 0x07, 0xf7, 0x07, 0x01, 0x76, 0x88, + 0xe9, 0x3a, 0xe5, 0x10, 0xca, 0xba, 0xdc, 0xed, 0xfb, 0x47, 0x38, 0x82, 0x4a, 0x44, 0xd3, 0x33, + 0xd7, 0x4b, 0xfc, 0x3c, 0x44, 0x74, 0x38, 0x61, 0x08, 0x35, 0x74, 0x38, 0xf4, 0x30, 0x9b, 0x30, + 0x15, 0x2d, 0xce, 0x42, 0x03, 0xb8, 0xe4, 0xa7, 0x9d, 0x62, 0xf3, 0xbe, 0xc2, 0xe6, 0xfd, 0x5e, + 0x38, 0xef, 0xa7, 0xc6, 0xd0, 0xd2, 0xf2, 0x94, 0xec, 0x3b, 0x81, 0x3f, 0xd4, 0xf2, 0x0d, 0xa4, + 0x67, 0x5b, 0x35, 0x3b, 0xdb, 0x6e, 0x81, 0x88, 0x07, 0xf5, 0x79, 0x96, 0xe3, 0xcd, 0x96, 0xe1, + 0xba, 0x86, 0x85, 0xc3, 0x37, 0xc4, 0xf3, 0xfe, 0x71, 0xab, 0x1b, 0xf8, 0xa6, 0x63, 0x7c, 0xa7, + 0x5b, 0x7d, 0xac, 0x89, 0x78, 0x80, 0xbe, 0x84, 0x25, 0x3d, 0x08, 0xf4, 0xa3, 0x17, 0xb8, 0x77, + 0xe0, 0x1c, 0xbb, 0xf5, 0x85, 0x12, 0xf7, 0x12, 0x37, 0x28, 0x14, 0x4c, 0xc2, 0x02, 0xa9, 0x2f, + 0x36, 0x84, 0xe6, 0x82, 0x36, 0x22, 0xd1, 0x2e, 0xac, 0x9b, 0x84, 0xba, 0xef, 0x3b, 0xba, 0x35, + 0x0e, 0xbc, 0x0e, 0x4c, 0x2c, 0xf7, 0x0c, 0xb5, 0x00, 0xd9, 0xc4, 0xf8, 0xca, 0xf4, 0x49, 0x10, + 0xe6, 0x8f, 0xcd, 0xe8, 0x1a, 0x9b, 0xd1, 0x39, 0x27, 0xf2, 0x13, 0x90, 0x8b, 0x93, 0x48, 0xf1, + 0x7c, 0x82, 0x87, 0x1c, 0x1b, 0xf4, 0x4f, 0x74, 0x1d, 0x2a, 0x2f, 0x69, 0x10, 0xfc, 0x09, 0xb1, + 0xc2, 0x41, 0x78, 0x1f, 0x0f, 0xc3, 0xd8, 0xc2, 0xd3, 0xcf, 0xc4, 0x4f, 0x04, 0xe5, 0xdf, 0x39, + 0xb8, 0x42, 0xa7, 0xee, 0xdb, 0x0a, 0xc2, 0xfe, 0x64, 0x10, 0x7e, 0xc1, 0x40, 0x38, 0x25, 0x80, + 0xff, 0x11, 0xf8, 0x36, 0x23, 0xf0, 0x4f, 0x01, 0x1a, 0x93, 0x0b, 0x38, 0xd3, 0x28, 0x4e, 0x55, + 0x50, 0xca, 0x56, 0x30, 0x3f, 0x07, 0x73, 0x45, 0x39, 0x88, 0x57, 0xa0, 0x92, 0xac, 0xc0, 0x0d, + 0xa8, 0xfa, 0x98, 0xf4, 0xad, 0xa0, 0x5e, 0x65, 0xa8, 0xbc, 0xc8, 0x50, 0x19, 0x05, 0x8b, 0x89, + 0xa7, 0x71, 0x01, 0xe5, 0x1f, 0x11, 0xae, 0x76, 0xa2, 0x68, 0x69, 0x0a, 0x5f, 0xa3, 0xe7, 0xa2, + 0xbe, 0x12, 0x53, 0x7d, 0x15, 0xef, 0x47, 0x29, 0xd5, 0x8f, 0xd3, 0x7b, 0x8e, 0xc0, 0x86, 0x9d, + 0xac, 0xc6, 0x7d, 0x3c, 0x8c, 0x35, 0xdd, 0x6d, 0x16, 0x5e, 0x89, 0x28, 0x5a, 0x6a, 0x46, 0x8d, + 0x56, 0xa0, 0x5a, 0x3e, 0x06, 0x94, 0x95, 0x4e, 0x57, 0x51, 0x28, 0x5b, 0x45, 0xb1, 0xa8, 0x8a, + 0xca, 0xef, 0x02, 0x5c, 0x9b, 0xee, 0xfa, 0x4c, 0x90, 0xeb, 0xc2, 0x1a, 0x31, 0x1d, 0xc3, 0xc2, + 0x51, 0x20, 0x0c, 0x13, 0xe1, 0xe7, 0xd1, 0x7b, 0xe1, 0xa4, 0x8a, 0x9f, 0x47, 0x06, 0x43, 0x41, + 0x2d, 0xef, 0xb6, 0xf2, 0x4a, 0x84, 0xcd, 0x49, 0xb7, 0x66, 0xf0, 0xd3, 0x2f, 0x9a, 0xa9, 0xa1, + 0xa7, 0x9f, 0x4f, 0xf5, 0xf4, 0xf5, 0x07, 0xea, 0x5c, 0xa6, 0x90, 0x6f, 0x72, 0xc4, 0xbc, 0x12, + 0xe0, 0xea, 0xd4, 0x87, 0xca, 0x4c, 0x25, 0xff, 0x10, 0x6a, 0xa4, 0x7f, 0x74, 0x84, 0x09, 0x89, + 0x25, 0x10, 0xb1, 0x04, 0x32, 0xdd, 0xa3, 0x0f, 0x3a, 0x2d, 0x2e, 0x86, 0x76, 0x01, 0x8e, 0x75, + 0xd3, 0xc2, 0x3d, 0x76, 0x69, 0xae, 0xf0, 0x52, 0x4c, 0x4a, 0xf9, 0x4b, 0x84, 0xf7, 0xdb, 0xd8, + 0xc2, 0x01, 0x7e, 0xab, 0x67, 0xc7, 0xf4, 0xcf, 0xd2, 0xa2, 0x9f, 0xab, 0xea, 0xb9, 0x7f, 0xae, + 0xe6, 0x0b, 0x47, 0xf5, 0x7e, 0x11, 0xc2, 0x17, 0x58, 0xae, 0x33, 0x58, 0xc9, 0x97, 0x56, 0x7e, + 0x11, 0x60, 0xab, 0x54, 0xce, 0x67, 0xc2, 0xce, 0x39, 0x7e, 0x35, 0x5c, 0x58, 0x4e, 0x20, 0x03, + 0xdd, 0x82, 0x45, 0x3c, 0x62, 0x44, 0xab, 0xaa, 0x24, 0x80, 0xc6, 0x02, 0x71, 0xdf, 0xc4, 0x22, + 0xdf, 0xa4, 0xb8, 0x6f, 0xca, 0x1f, 0x22, 0x2c, 0x46, 0xaa, 0xd0, 0xb3, 0xa2, 0x74, 0x0a, 0xcc, + 0xf1, 0x1b, 0x49, 0xcb, 0xaf, 0x3f, 0x1d, 0xc4, 0xb2, 0x63, 0x5e, 0x2a, 0x44, 0x80, 0x92, 0x7a, + 0x70, 0x85, 0x03, 0x27, 0xf9, 0xa4, 0xba, 0xc0, 0x9e, 0x70, 0x21, 0x44, 0x45, 0x3c, 0x90, 0x9f, + 0x9e, 0x73, 0x02, 0x6d, 0x25, 0x27, 0x50, 0x4e, 0xfd, 0x62, 0x33, 0xc8, 0x86, 0xa5, 0xf8, 0x11, + 0xba, 0x09, 0x0b, 0x27, 0x9c, 0xe6, 0x05, 0xcc, 0xa0, 0x32, 0x12, 0x98, 0xa1, 0x80, 0xbf, 0x0a, + 0xb0, 0x16, 0xdb, 0xfc, 0xd1, 0xbc, 0xb0, 0xd5, 0x5f, 0x66, 0xc1, 0x27, 0x94, 0x58, 0xf0, 0x89, + 0xe7, 0x5e, 0xf0, 0x49, 0xa9, 0x05, 0xdf, 0xee, 0xdf, 0xf3, 0x20, 0xd9, 0xc4, 0x40, 0xf7, 0x60, + 0x25, 0xb5, 0x98, 0x43, 0x97, 0x79, 0xdc, 0xd9, 0x05, 0xa0, 0x2c, 0x17, 0x1d, 0x11, 0x0f, 0x3d, + 0x86, 0xf5, 0x87, 0x7d, 0xcb, 0xe2, 0x9d, 0xb9, 0x37, 0xec, 0xe2, 0x53, 0xe6, 0xc7, 0xbb, 0xfc, + 0x4e, 0xde, 0x21, 0xd5, 0x79, 0x65, 0xe2, 0x39, 0xeb, 0xad, 0x79, 0xbe, 0xf0, 0x41, 0x2b, 0xfc, + 0xf3, 0x62, 0xb4, 0xd0, 0x93, 0x57, 0x93, 0x0c, 0xe2, 0xa1, 0x4f, 0x01, 0xda, 0xd8, 0x52, 0x89, + 0xc1, 0x8c, 0xaf, 0x73, 0xe5, 0x63, 0x16, 0xbd, 0x75, 0x29, 0x87, 0x4b, 0x3c, 0xd4, 0x81, 0xd5, + 0xf4, 0xc6, 0x06, 0xd5, 0x99, 0x81, 0x9c, 0x8d, 0x90, 0x7c, 0xb9, 0xe0, 0x84, 0x78, 0x68, 0x07, + 0x16, 0x46, 0x6b, 0x3a, 0x14, 0x7a, 0x18, 0x5b, 0xee, 0xc9, 0x17, 0x53, 0x9c, 0xd0, 0x72, 0x7a, + 0x4f, 0xc6, 0x2d, 0xe7, 0x6c, 0xdb, 0xb8, 0xe5, 0xbc, 0xc5, 0x1a, 0x55, 0xd4, 0xc9, 0x57, 0xd4, + 0x29, 0x54, 0x94, 0xbb, 0x50, 0x3b, 0x81, 0xcd, 0x49, 0x1f, 0x01, 0xe8, 0x5a, 0x99, 0x0f, 0x3d, + 0xf9, 0x7a, 0x09, 0x29, 0xe2, 0xa1, 0x33, 0x68, 0x4c, 0x7b, 0x02, 0xa2, 0x66, 0xd9, 0x47, 0xae, + 0x7c, 0xa3, 0xa4, 0x24, 0xf1, 0xd0, 0x29, 0x6c, 0xde, 0xe9, 0xf5, 0x8a, 0xa3, 0xdc, 0x2a, 0xb9, + 0x53, 0x91, 0x9b, 0xe5, 0x04, 0x89, 0x87, 0x7e, 0x84, 0x2b, 0x89, 0x9f, 0xb0, 0x1c, 0xab, 0x37, + 0x47, 0xc8, 0x2a, 0xf1, 0xb8, 0x90, 0x6f, 0x95, 0x17, 0x26, 0xde, 0xde, 0x3b, 0xdf, 0x5f, 0x7e, + 0xe0, 0x61, 0xe7, 0xd9, 0x81, 0x1a, 0xfb, 0xd7, 0x8f, 0x4d, 0x8c, 0xdb, 0x36, 0x31, 0x9e, 0x57, + 0x19, 0xf9, 0xc1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb1, 0x5e, 0x2e, 0xb4, 0x62, 0x1a, 0x00, + 0x00, } diff --git a/pkg/proto/msg/msg.proto b/pkg/proto/msg/msg.proto index f4cac8ccc..45962720a 100644 --- a/pkg/proto/msg/msg.proto +++ b/pkg/proto/msg/msg.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -import "Open-IM-Server/pkg/proto/sdk_ws/ws.proto"; -import "Open-IM-Server/pkg/proto/sdk_ws/wrappers.proto"; +import "Open-IM-Server/pkg/proto/sdkws/ws.proto"; +import "Open-IM-Server/pkg/proto/sdkws/wrappers.proto"; option go_package = "Open_IM/pkg/proto/msg;msg"; package msg; diff --git a/pkg/proto/sdkws/ws.pb.go b/pkg/proto/sdkws/ws.pb.go index 2bba6281c..265075a49 100644 --- a/pkg/proto/sdkws/ws.pb.go +++ b/pkg/proto/sdkws/ws.pb.go @@ -46,7 +46,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} } func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{0} + return fileDescriptor_ws_a0747f665ef3b307, []int{0} } func (m *GroupInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfo.Unmarshal(m, b) @@ -204,7 +204,7 @@ func (m *GroupInfoForSet) Reset() { *m = GroupInfoForSet{} } func (m *GroupInfoForSet) String() string { return proto.CompactTextString(m) } func (*GroupInfoForSet) ProtoMessage() {} func (*GroupInfoForSet) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{1} + return fileDescriptor_ws_a0747f665ef3b307, []int{1} } func (m *GroupInfoForSet) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoForSet.Unmarshal(m, b) @@ -309,7 +309,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{2} + return fileDescriptor_ws_a0747f665ef3b307, []int{2} } func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) @@ -428,7 +428,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{3} + return fileDescriptor_ws_a0747f665ef3b307, []int{3} } func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) @@ -505,7 +505,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} } func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (*UserInfo) ProtoMessage() {} func (*UserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{4} + return fileDescriptor_ws_a0747f665ef3b307, []int{4} } func (m *UserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfo.Unmarshal(m, b) @@ -626,7 +626,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} } func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{5} + return fileDescriptor_ws_a0747f665ef3b307, []int{5} } func (m *FriendInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfo.Unmarshal(m, b) @@ -711,7 +711,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} } func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{6} + return fileDescriptor_ws_a0747f665ef3b307, []int{6} } func (m *BlackInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackInfo.Unmarshal(m, b) @@ -794,7 +794,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} } func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{7} + return fileDescriptor_ws_a0747f665ef3b307, []int{7} } func (m *GroupRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupRequest.Unmarshal(m, b) @@ -916,7 +916,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} } func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{8} + return fileDescriptor_ws_a0747f665ef3b307, []int{8} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -1041,424 +1041,9 @@ func (m *FriendRequest) GetEx() string { return "" } -type Department struct { - DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` - FaceURL string `protobuf:"bytes,2,opt,name=faceURL" json:"faceURL,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - ParentID string `protobuf:"bytes,4,opt,name=parentID" json:"parentID,omitempty"` - Order int32 `protobuf:"varint,5,opt,name=order" json:"order,omitempty"` - DepartmentType int32 `protobuf:"varint,6,opt,name=departmentType" json:"departmentType,omitempty"` - CreateTime int64 `protobuf:"varint,7,opt,name=createTime" json:"createTime,omitempty"` - SubDepartmentNum uint32 `protobuf:"varint,8,opt,name=subDepartmentNum" json:"subDepartmentNum,omitempty"` - MemberNum uint32 `protobuf:"varint,9,opt,name=memberNum" json:"memberNum,omitempty"` - Ex string `protobuf:"bytes,10,opt,name=ex" json:"ex,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Department) Reset() { *m = Department{} } -func (m *Department) String() string { return proto.CompactTextString(m) } -func (*Department) ProtoMessage() {} -func (*Department) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{9} -} -func (m *Department) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Department.Unmarshal(m, b) -} -func (m *Department) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Department.Marshal(b, m, deterministic) -} -func (dst *Department) XXX_Merge(src proto.Message) { - xxx_messageInfo_Department.Merge(dst, src) -} -func (m *Department) XXX_Size() int { - return xxx_messageInfo_Department.Size(m) -} -func (m *Department) XXX_DiscardUnknown() { - xxx_messageInfo_Department.DiscardUnknown(m) -} - -var xxx_messageInfo_Department proto.InternalMessageInfo - -func (m *Department) GetDepartmentID() string { - if m != nil { - return m.DepartmentID - } - return "" -} - -func (m *Department) GetFaceURL() string { - if m != nil { - return m.FaceURL - } - return "" -} - -func (m *Department) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Department) GetParentID() string { - if m != nil { - return m.ParentID - } - return "" -} - -func (m *Department) GetOrder() int32 { - if m != nil { - return m.Order - } - return 0 -} - -func (m *Department) GetDepartmentType() int32 { - if m != nil { - return m.DepartmentType - } - return 0 -} - -func (m *Department) GetCreateTime() int64 { - if m != nil { - return m.CreateTime - } - return 0 -} - -func (m *Department) GetSubDepartmentNum() uint32 { - if m != nil { - return m.SubDepartmentNum - } - return 0 -} - -func (m *Department) GetMemberNum() uint32 { - if m != nil { - return m.MemberNum - } - return 0 -} - -func (m *Department) GetEx() string { - if m != nil { - return m.Ex - } - return "" -} - -type OrganizationUser struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` - EnglishName string `protobuf:"bytes,3,opt,name=englishName" json:"englishName,omitempty"` - FaceURL string `protobuf:"bytes,4,opt,name=faceURL" json:"faceURL,omitempty"` - Gender int32 `protobuf:"varint,5,opt,name=gender" json:"gender,omitempty"` - Mobile string `protobuf:"bytes,6,opt,name=mobile" json:"mobile,omitempty"` - Telephone string `protobuf:"bytes,7,opt,name=telephone" json:"telephone,omitempty"` - Birth uint32 `protobuf:"varint,8,opt,name=birth" json:"birth,omitempty"` - Email string `protobuf:"bytes,9,opt,name=email" json:"email,omitempty"` - CreateTime int64 `protobuf:"varint,10,opt,name=createTime" json:"createTime,omitempty"` - Ex string `protobuf:"bytes,11,opt,name=ex" json:"ex,omitempty"` - BirthStr string `protobuf:"bytes,12,opt,name=birthStr" json:"birthStr,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *OrganizationUser) Reset() { *m = OrganizationUser{} } -func (m *OrganizationUser) String() string { return proto.CompactTextString(m) } -func (*OrganizationUser) ProtoMessage() {} -func (*OrganizationUser) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{10} -} -func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) -} -func (m *OrganizationUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OrganizationUser.Marshal(b, m, deterministic) -} -func (dst *OrganizationUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrganizationUser.Merge(dst, src) -} -func (m *OrganizationUser) XXX_Size() int { - return xxx_messageInfo_OrganizationUser.Size(m) -} -func (m *OrganizationUser) XXX_DiscardUnknown() { - xxx_messageInfo_OrganizationUser.DiscardUnknown(m) -} - -var xxx_messageInfo_OrganizationUser proto.InternalMessageInfo - -func (m *OrganizationUser) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *OrganizationUser) GetNickname() string { - if m != nil { - return m.Nickname - } - return "" -} - -func (m *OrganizationUser) GetEnglishName() string { - if m != nil { - return m.EnglishName - } - return "" -} - -func (m *OrganizationUser) GetFaceURL() string { - if m != nil { - return m.FaceURL - } - return "" -} - -func (m *OrganizationUser) GetGender() int32 { - if m != nil { - return m.Gender - } - return 0 -} - -func (m *OrganizationUser) GetMobile() string { - if m != nil { - return m.Mobile - } - return "" -} - -func (m *OrganizationUser) GetTelephone() string { - if m != nil { - return m.Telephone - } - return "" -} - -func (m *OrganizationUser) GetBirth() uint32 { - if m != nil { - return m.Birth - } - return 0 -} - -func (m *OrganizationUser) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *OrganizationUser) GetCreateTime() int64 { - if m != nil { - return m.CreateTime - } - return 0 -} - -func (m *OrganizationUser) GetEx() string { - if m != nil { - return m.Ex - } - return "" -} - -func (m *OrganizationUser) GetBirthStr() string { - if m != nil { - return m.BirthStr - } - return "" -} - -type DepartmentMember struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - DepartmentID string `protobuf:"bytes,2,opt,name=departmentID" json:"departmentID,omitempty"` - Order int32 `protobuf:"varint,3,opt,name=order" json:"order,omitempty"` - Position string `protobuf:"bytes,4,opt,name=position" json:"position,omitempty"` - Leader int32 `protobuf:"varint,5,opt,name=leader" json:"leader,omitempty"` - Status int32 `protobuf:"varint,6,opt,name=status" json:"status,omitempty"` - Ex string `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DepartmentMember) Reset() { *m = DepartmentMember{} } -func (m *DepartmentMember) String() string { return proto.CompactTextString(m) } -func (*DepartmentMember) ProtoMessage() {} -func (*DepartmentMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{11} -} -func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) -} -func (m *DepartmentMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DepartmentMember.Marshal(b, m, deterministic) -} -func (dst *DepartmentMember) XXX_Merge(src proto.Message) { - xxx_messageInfo_DepartmentMember.Merge(dst, src) -} -func (m *DepartmentMember) XXX_Size() int { - return xxx_messageInfo_DepartmentMember.Size(m) -} -func (m *DepartmentMember) XXX_DiscardUnknown() { - xxx_messageInfo_DepartmentMember.DiscardUnknown(m) -} - -var xxx_messageInfo_DepartmentMember proto.InternalMessageInfo - -func (m *DepartmentMember) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *DepartmentMember) GetDepartmentID() string { - if m != nil { - return m.DepartmentID - } - return "" -} - -func (m *DepartmentMember) GetOrder() int32 { - if m != nil { - return m.Order - } - return 0 -} - -func (m *DepartmentMember) GetPosition() string { - if m != nil { - return m.Position - } - return "" -} - -func (m *DepartmentMember) GetLeader() int32 { - if m != nil { - return m.Leader - } - return 0 -} - -func (m *DepartmentMember) GetStatus() int32 { - if m != nil { - return m.Status - } - return 0 -} - -func (m *DepartmentMember) GetEx() string { - if m != nil { - return m.Ex - } - return "" -} - -type UserDepartmentMember struct { - OrganizationUser *OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` - DepartmentMember *DepartmentMember `protobuf:"bytes,2,opt,name=departmentMember" json:"departmentMember,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UserDepartmentMember) Reset() { *m = UserDepartmentMember{} } -func (m *UserDepartmentMember) String() string { return proto.CompactTextString(m) } -func (*UserDepartmentMember) ProtoMessage() {} -func (*UserDepartmentMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{12} -} -func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b) -} -func (m *UserDepartmentMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserDepartmentMember.Marshal(b, m, deterministic) -} -func (dst *UserDepartmentMember) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserDepartmentMember.Merge(dst, src) -} -func (m *UserDepartmentMember) XXX_Size() int { - return xxx_messageInfo_UserDepartmentMember.Size(m) -} -func (m *UserDepartmentMember) XXX_DiscardUnknown() { - xxx_messageInfo_UserDepartmentMember.DiscardUnknown(m) -} - -var xxx_messageInfo_UserDepartmentMember proto.InternalMessageInfo - -func (m *UserDepartmentMember) GetOrganizationUser() *OrganizationUser { - if m != nil { - return m.OrganizationUser - } - return nil -} - -func (m *UserDepartmentMember) GetDepartmentMember() *DepartmentMember { - if m != nil { - return m.DepartmentMember - } - return nil -} - -type UserInDepartment struct { - OrganizationUser *OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` - DepartmentMemberList []*DepartmentMember `protobuf:"bytes,2,rep,name=departmentMemberList" json:"departmentMemberList,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UserInDepartment) Reset() { *m = UserInDepartment{} } -func (m *UserInDepartment) String() string { return proto.CompactTextString(m) } -func (*UserInDepartment) ProtoMessage() {} -func (*UserInDepartment) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{13} -} -func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) -} -func (m *UserInDepartment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserInDepartment.Marshal(b, m, deterministic) -} -func (dst *UserInDepartment) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserInDepartment.Merge(dst, src) -} -func (m *UserInDepartment) XXX_Size() int { - return xxx_messageInfo_UserInDepartment.Size(m) -} -func (m *UserInDepartment) XXX_DiscardUnknown() { - xxx_messageInfo_UserInDepartment.DiscardUnknown(m) -} - -var xxx_messageInfo_UserInDepartment proto.InternalMessageInfo - -func (m *UserInDepartment) GetOrganizationUser() *OrganizationUser { - if m != nil { - return m.OrganizationUser - } - return nil -} - -func (m *UserInDepartment) GetDepartmentMemberList() []*DepartmentMember { - if m != nil { - return m.DepartmentMemberList - } - return nil -} - // /////////////////////////////////base end///////////////////////////////////// type PullMessageBySeqListReq struct { UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` SeqList []uint32 `protobuf:"varint,3,rep,packed,name=seqList" json:"seqList,omitempty"` GroupSeqList map[string]*SeqList `protobuf:"bytes,4,rep,name=groupSeqList" json:"groupSeqList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1470,7 +1055,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{14} + return fileDescriptor_ws_a0747f665ef3b307, []int{9} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1497,13 +1082,6 @@ func (m *PullMessageBySeqListReq) GetUserID() string { return "" } -func (m *PullMessageBySeqListReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - func (m *PullMessageBySeqListReq) GetSeqList() []uint32 { if m != nil { return m.SeqList @@ -1529,7 +1107,7 @@ func (m *SeqList) Reset() { *m = SeqList{} } func (m *SeqList) String() string { return proto.CompactTextString(m) } func (*SeqList) ProtoMessage() {} func (*SeqList) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{15} + return fileDescriptor_ws_a0747f665ef3b307, []int{10} } func (m *SeqList) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SeqList.Unmarshal(m, b) @@ -1567,7 +1145,7 @@ func (m *MsgDataList) Reset() { *m = MsgDataList{} } func (m *MsgDataList) String() string { return proto.CompactTextString(m) } func (*MsgDataList) ProtoMessage() {} func (*MsgDataList) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{16} + return fileDescriptor_ws_a0747f665ef3b307, []int{11} } func (m *MsgDataList) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataList.Unmarshal(m, b) @@ -1608,7 +1186,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{17} + return fileDescriptor_ws_a0747f665ef3b307, []int{12} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1659,7 +1237,6 @@ func (m *PullMessageBySeqListResp) GetGroupMsgDataList() map[string]*MsgDataList type GetMaxAndMinSeqReq struct { GroupIDList []string `protobuf:"bytes,1,rep,name=groupIDList" json:"groupIDList,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1669,7 +1246,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{18} + return fileDescriptor_ws_a0747f665ef3b307, []int{13} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1703,13 +1280,6 @@ func (m *GetMaxAndMinSeqReq) GetUserID() string { return "" } -func (m *GetMaxAndMinSeqReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - type MaxAndMinSeq struct { MaxSeq uint32 `protobuf:"varint,1,opt,name=maxSeq" json:"maxSeq,omitempty"` MinSeq uint32 `protobuf:"varint,2,opt,name=minSeq" json:"minSeq,omitempty"` @@ -1722,7 +1292,7 @@ func (m *MaxAndMinSeq) Reset() { *m = MaxAndMinSeq{} } func (m *MaxAndMinSeq) String() string { return proto.CompactTextString(m) } func (*MaxAndMinSeq) ProtoMessage() {} func (*MaxAndMinSeq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{19} + return fileDescriptor_ws_a0747f665ef3b307, []int{14} } func (m *MaxAndMinSeq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MaxAndMinSeq.Unmarshal(m, b) @@ -1759,8 +1329,6 @@ func (m *MaxAndMinSeq) GetMinSeq() uint32 { type GetMaxAndMinSeqResp struct { MaxSeq uint32 `protobuf:"varint,1,opt,name=maxSeq" json:"maxSeq,omitempty"` MinSeq uint32 `protobuf:"varint,2,opt,name=minSeq" json:"minSeq,omitempty"` - ErrCode int32 `protobuf:"varint,3,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,4,opt,name=errMsg" json:"errMsg,omitempty"` GroupMaxAndMinSeq map[string]*MaxAndMinSeq `protobuf:"bytes,5,rep,name=groupMaxAndMinSeq" json:"groupMaxAndMinSeq,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1771,7 +1339,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{20} + return fileDescriptor_ws_a0747f665ef3b307, []int{15} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1805,20 +1373,6 @@ func (m *GetMaxAndMinSeqResp) GetMinSeq() uint32 { return 0 } -func (m *GetMaxAndMinSeqResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *GetMaxAndMinSeqResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - func (m *GetMaxAndMinSeqResp) GetGroupMaxAndMinSeq() map[string]*MaxAndMinSeq { if m != nil { return m.GroupMaxAndMinSeq @@ -1839,7 +1393,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{21} + return fileDescriptor_ws_a0747f665ef3b307, []int{16} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1912,7 +1466,7 @@ func (m *MsgData) Reset() { *m = MsgData{} } func (m *MsgData) String() string { return proto.CompactTextString(m) } func (*MsgData) ProtoMessage() {} func (*MsgData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{22} + return fileDescriptor_ws_a0747f665ef3b307, []int{17} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -2101,7 +1655,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} } func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } func (*OfflinePushInfo) ProtoMessage() {} func (*OfflinePushInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{23} + return fileDescriptor_ws_a0747f665ef3b307, []int{18} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -2169,7 +1723,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} } func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (*TipsComm) ProtoMessage() {} func (*TipsComm) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{24} + return fileDescriptor_ws_a0747f665ef3b307, []int{19} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -2226,7 +1780,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{25} + return fileDescriptor_ws_a0747f665ef3b307, []int{20} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -2295,7 +1849,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{26} + return fileDescriptor_ws_a0747f665ef3b307, []int{21} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -2350,7 +1904,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{27} + return fileDescriptor_ws_a0747f665ef3b307, []int{22} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -2407,7 +1961,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{28} + return fileDescriptor_ws_a0747f665ef3b307, []int{23} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2463,7 +2017,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{29} + return fileDescriptor_ws_a0747f665ef3b307, []int{24} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2526,7 +2080,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{30} + return fileDescriptor_ws_a0747f665ef3b307, []int{25} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2589,7 +2143,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{31} + return fileDescriptor_ws_a0747f665ef3b307, []int{26} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2652,7 +2206,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{32} + return fileDescriptor_ws_a0747f665ef3b307, []int{27} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2715,7 +2269,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{33} + return fileDescriptor_ws_a0747f665ef3b307, []int{28} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2777,7 +2331,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{34} + return fileDescriptor_ws_a0747f665ef3b307, []int{29} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2831,7 +2385,7 @@ func (m *GroupDismissedTips) Reset() { *m = GroupDismissedTips{} } func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) } func (*GroupDismissedTips) ProtoMessage() {} func (*GroupDismissedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{35} + return fileDescriptor_ws_a0747f665ef3b307, []int{30} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2887,7 +2441,7 @@ func (m *GroupMemberMutedTips) Reset() { *m = GroupMemberMutedTips{} } func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberMutedTips) ProtoMessage() {} func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{36} + return fileDescriptor_ws_a0747f665ef3b307, []int{31} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2956,7 +2510,7 @@ func (m *GroupMemberCancelMutedTips) Reset() { *m = GroupMemberCancelMut func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{37} + return fileDescriptor_ws_a0747f665ef3b307, []int{32} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -3017,7 +2571,7 @@ func (m *GroupMutedTips) Reset() { *m = GroupMutedTips{} } func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMutedTips) ProtoMessage() {} func (*GroupMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{38} + return fileDescriptor_ws_a0747f665ef3b307, []int{33} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -3071,7 +2625,7 @@ func (m *GroupCancelMutedTips) Reset() { *m = GroupCancelMutedTips{} } func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupCancelMutedTips) ProtoMessage() {} func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{39} + return fileDescriptor_ws_a0747f665ef3b307, []int{34} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -3126,7 +2680,7 @@ func (m *GroupMemberInfoSetTips) Reset() { *m = GroupMemberInfoSetTips{} func (m *GroupMemberInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberInfoSetTips) ProtoMessage() {} func (*GroupMemberInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{40} + return fileDescriptor_ws_a0747f665ef3b307, []int{35} } func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) @@ -3186,7 +2740,7 @@ func (m *OrganizationChangedTips) Reset() { *m = OrganizationChangedTips func (m *OrganizationChangedTips) String() string { return proto.CompactTextString(m) } func (*OrganizationChangedTips) ProtoMessage() {} func (*OrganizationChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{41} + return fileDescriptor_ws_a0747f665ef3b307, []int{36} } func (m *OrganizationChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationChangedTips.Unmarshal(m, b) @@ -3233,7 +2787,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} } func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{42} + return fileDescriptor_ws_a0747f665ef3b307, []int{37} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -3286,7 +2840,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} } func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{43} + return fileDescriptor_ws_a0747f665ef3b307, []int{38} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -3332,7 +2886,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{44} + return fileDescriptor_ws_a0747f665ef3b307, []int{39} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -3372,7 +2926,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{45} + return fileDescriptor_ws_a0747f665ef3b307, []int{40} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -3419,7 +2973,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{46} + return fileDescriptor_ws_a0747f665ef3b307, []int{41} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -3467,7 +3021,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{47} + return fileDescriptor_ws_a0747f665ef3b307, []int{42} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -3520,7 +3074,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{48} + return fileDescriptor_ws_a0747f665ef3b307, []int{43} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -3558,7 +3112,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{49} + return fileDescriptor_ws_a0747f665ef3b307, []int{44} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3596,7 +3150,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{50} + return fileDescriptor_ws_a0747f665ef3b307, []int{45} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3634,7 +3188,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{51} + return fileDescriptor_ws_a0747f665ef3b307, []int{46} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3673,7 +3227,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{52} + return fileDescriptor_ws_a0747f665ef3b307, []int{47} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3714,7 +3268,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{} func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{53} + return fileDescriptor_ws_a0747f665ef3b307, []int{48} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3768,7 +3322,7 @@ func (m *ConversationSetPrivateTips) Reset() { *m = ConversationSetPriva func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) } func (*ConversationSetPrivateTips) ProtoMessage() {} func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{54} + return fileDescriptor_ws_a0747f665ef3b307, []int{49} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3823,7 +3377,7 @@ func (m *DeleteMessageTips) Reset() { *m = DeleteMessageTips{} } func (m *DeleteMessageTips) String() string { return proto.CompactTextString(m) } func (*DeleteMessageTips) ProtoMessage() {} func (*DeleteMessageTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{55} + return fileDescriptor_ws_a0747f665ef3b307, []int{50} } func (m *DeleteMessageTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteMessageTips.Unmarshal(m, b) @@ -3877,7 +3431,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} } func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{56} + return fileDescriptor_ws_a0747f665ef3b307, []int{51} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3934,7 +3488,7 @@ func (m *SignalReq) Reset() { *m = SignalReq{} } func (m *SignalReq) String() string { return proto.CompactTextString(m) } func (*SignalReq) ProtoMessage() {} func (*SignalReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{57} + return fileDescriptor_ws_a0747f665ef3b307, []int{52} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -4323,7 +3877,7 @@ func (m *SignalResp) Reset() { *m = SignalResp{} } func (m *SignalResp) String() string { return proto.CompactTextString(m) } func (*SignalResp) ProtoMessage() {} func (*SignalResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{58} + return fileDescriptor_ws_a0747f665ef3b307, []int{53} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -4653,7 +4207,7 @@ func (m *InvitationInfo) Reset() { *m = InvitationInfo{} } func (m *InvitationInfo) String() string { return proto.CompactTextString(m) } func (*InvitationInfo) ProtoMessage() {} func (*InvitationInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{59} + return fileDescriptor_ws_a0747f665ef3b307, []int{54} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -4763,7 +4317,7 @@ func (m *ParticipantMetaData) Reset() { *m = ParticipantMetaData{} } func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) } func (*ParticipantMetaData) ProtoMessage() {} func (*ParticipantMetaData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{60} + return fileDescriptor_ws_a0747f665ef3b307, []int{55} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4818,7 +4372,7 @@ func (m *SignalInviteReq) Reset() { *m = SignalInviteReq{} } func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteReq) ProtoMessage() {} func (*SignalInviteReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{61} + return fileDescriptor_ws_a0747f665ef3b307, []int{56} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4880,7 +4434,7 @@ func (m *SignalInviteReply) Reset() { *m = SignalInviteReply{} } func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteReply) ProtoMessage() {} func (*SignalInviteReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{62} + return fileDescriptor_ws_a0747f665ef3b307, []int{57} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4942,7 +4496,7 @@ func (m *SignalInviteInGroupReq) Reset() { *m = SignalInviteInGroupReq{} func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReq) ProtoMessage() {} func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{63} + return fileDescriptor_ws_a0747f665ef3b307, []int{58} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -5004,7 +4558,7 @@ func (m *SignalInviteInGroupReply) Reset() { *m = SignalInviteInGroupRep func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReply) ProtoMessage() {} func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{64} + return fileDescriptor_ws_a0747f665ef3b307, []int{59} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -5066,7 +4620,7 @@ func (m *SignalCancelReq) Reset() { *m = SignalCancelReq{} } func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) } func (*SignalCancelReq) ProtoMessage() {} func (*SignalCancelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{65} + return fileDescriptor_ws_a0747f665ef3b307, []int{60} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -5124,7 +4678,7 @@ func (m *SignalCancelReply) Reset() { *m = SignalCancelReply{} } func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) } func (*SignalCancelReply) ProtoMessage() {} func (*SignalCancelReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{66} + return fileDescriptor_ws_a0747f665ef3b307, []int{61} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -5159,7 +4713,7 @@ func (m *SignalAcceptReq) Reset() { *m = SignalAcceptReq{} } func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReq) ProtoMessage() {} func (*SignalAcceptReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{67} + return fileDescriptor_ws_a0747f665ef3b307, []int{62} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -5227,7 +4781,7 @@ func (m *SignalAcceptReply) Reset() { *m = SignalAcceptReply{} } func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReply) ProtoMessage() {} func (*SignalAcceptReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{68} + return fileDescriptor_ws_a0747f665ef3b307, []int{63} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -5281,7 +4835,7 @@ func (m *SignalHungUpReq) Reset() { *m = SignalHungUpReq{} } func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReq) ProtoMessage() {} func (*SignalHungUpReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{69} + return fileDescriptor_ws_a0747f665ef3b307, []int{64} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -5332,7 +4886,7 @@ func (m *SignalHungUpReply) Reset() { *m = SignalHungUpReply{} } func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReply) ProtoMessage() {} func (*SignalHungUpReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{70} + return fileDescriptor_ws_a0747f665ef3b307, []int{65} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -5367,7 +4921,7 @@ func (m *SignalRejectReq) Reset() { *m = SignalRejectReq{} } func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) } func (*SignalRejectReq) ProtoMessage() {} func (*SignalRejectReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{71} + return fileDescriptor_ws_a0747f665ef3b307, []int{66} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -5432,7 +4986,7 @@ func (m *SignalRejectReply) Reset() { *m = SignalRejectReply{} } func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) } func (*SignalRejectReply) ProtoMessage() {} func (*SignalRejectReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{72} + return fileDescriptor_ws_a0747f665ef3b307, []int{67} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -5465,7 +5019,7 @@ func (m *SignalGetRoomByGroupIDReq) Reset() { *m = SignalGetRoomByGroupI func (m *SignalGetRoomByGroupIDReq) String() string { return proto.CompactTextString(m) } func (*SignalGetRoomByGroupIDReq) ProtoMessage() {} func (*SignalGetRoomByGroupIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{73} + return fileDescriptor_ws_a0747f665ef3b307, []int{68} } func (m *SignalGetRoomByGroupIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetRoomByGroupIDReq.Unmarshal(m, b) @@ -5519,7 +5073,7 @@ func (m *SignalGetRoomByGroupIDReply) Reset() { *m = SignalGetRoomByGrou func (m *SignalGetRoomByGroupIDReply) String() string { return proto.CompactTextString(m) } func (*SignalGetRoomByGroupIDReply) ProtoMessage() {} func (*SignalGetRoomByGroupIDReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{74} + return fileDescriptor_ws_a0747f665ef3b307, []int{69} } func (m *SignalGetRoomByGroupIDReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetRoomByGroupIDReply.Unmarshal(m, b) @@ -5573,7 +5127,7 @@ func (m *SignalOnRoomParticipantConnectedReq) Reset() { *m = SignalOnRoo func (m *SignalOnRoomParticipantConnectedReq) String() string { return proto.CompactTextString(m) } func (*SignalOnRoomParticipantConnectedReq) ProtoMessage() {} func (*SignalOnRoomParticipantConnectedReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{75} + return fileDescriptor_ws_a0747f665ef3b307, []int{70} } func (m *SignalOnRoomParticipantConnectedReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalOnRoomParticipantConnectedReq.Unmarshal(m, b) @@ -5629,7 +5183,7 @@ func (m *SignalOnRoomParticipantDisconnectedReq) Reset() { func (m *SignalOnRoomParticipantDisconnectedReq) String() string { return proto.CompactTextString(m) } func (*SignalOnRoomParticipantDisconnectedReq) ProtoMessage() {} func (*SignalOnRoomParticipantDisconnectedReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{76} + return fileDescriptor_ws_a0747f665ef3b307, []int{71} } func (m *SignalOnRoomParticipantDisconnectedReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalOnRoomParticipantDisconnectedReq.Unmarshal(m, b) @@ -5684,7 +5238,7 @@ func (m *SignalGetTokenByRoomIDReq) Reset() { *m = SignalGetTokenByRoomI func (m *SignalGetTokenByRoomIDReq) String() string { return proto.CompactTextString(m) } func (*SignalGetTokenByRoomIDReq) ProtoMessage() {} func (*SignalGetTokenByRoomIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{77} + return fileDescriptor_ws_a0747f665ef3b307, []int{72} } func (m *SignalGetTokenByRoomIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetTokenByRoomIDReq.Unmarshal(m, b) @@ -5744,7 +5298,7 @@ func (m *SignalGetTokenByRoomIDReply) Reset() { *m = SignalGetTokenByRoo func (m *SignalGetTokenByRoomIDReply) String() string { return proto.CompactTextString(m) } func (*SignalGetTokenByRoomIDReply) ProtoMessage() {} func (*SignalGetTokenByRoomIDReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{78} + return fileDescriptor_ws_a0747f665ef3b307, []int{73} } func (m *SignalGetTokenByRoomIDReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetTokenByRoomIDReply.Unmarshal(m, b) @@ -5779,10 +5333,8 @@ func (m *SignalGetTokenByRoomIDReply) GetLiveURL() string { } type DelMsgListReq struct { - OpUserID string `protobuf:"bytes,1,opt,name=opUserID" json:"opUserID,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` SeqList []uint32 `protobuf:"varint,3,rep,packed,name=seqList" json:"seqList,omitempty"` - OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -5792,7 +5344,7 @@ func (m *DelMsgListReq) Reset() { *m = DelMsgListReq{} } func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) } func (*DelMsgListReq) ProtoMessage() {} func (*DelMsgListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{79} + return fileDescriptor_ws_a0747f665ef3b307, []int{74} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -5812,13 +5364,6 @@ func (m *DelMsgListReq) XXX_DiscardUnknown() { var xxx_messageInfo_DelMsgListReq proto.InternalMessageInfo -func (m *DelMsgListReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - func (m *DelMsgListReq) GetUserID() string { if m != nil { return m.UserID @@ -5833,16 +5378,7 @@ func (m *DelMsgListReq) GetSeqList() []uint32 { return nil } -func (m *DelMsgListReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - type DelMsgListResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -5852,7 +5388,7 @@ func (m *DelMsgListResp) Reset() { *m = DelMsgListResp{} } func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) } func (*DelMsgListResp) ProtoMessage() {} func (*DelMsgListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{80} + return fileDescriptor_ws_a0747f665ef3b307, []int{75} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -5872,20 +5408,6 @@ func (m *DelMsgListResp) XXX_DiscardUnknown() { var xxx_messageInfo_DelMsgListResp proto.InternalMessageInfo -func (m *DelMsgListResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *DelMsgListResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - type SetAppBackgroundStatusReq struct { UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` IsBackground bool `protobuf:"varint,2,opt,name=isBackground" json:"isBackground,omitempty"` @@ -5898,7 +5420,7 @@ func (m *SetAppBackgroundStatusReq) Reset() { *m = SetAppBackgroundStatu func (m *SetAppBackgroundStatusReq) String() string { return proto.CompactTextString(m) } func (*SetAppBackgroundStatusReq) ProtoMessage() {} func (*SetAppBackgroundStatusReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{81} + return fileDescriptor_ws_a0747f665ef3b307, []int{76} } func (m *SetAppBackgroundStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetAppBackgroundStatusReq.Unmarshal(m, b) @@ -5944,7 +5466,7 @@ func (m *SetAppBackgroundStatusResp) Reset() { *m = SetAppBackgroundStat func (m *SetAppBackgroundStatusResp) String() string { return proto.CompactTextString(m) } func (*SetAppBackgroundStatusResp) ProtoMessage() {} func (*SetAppBackgroundStatusResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{82} + return fileDescriptor_ws_a0747f665ef3b307, []int{77} } func (m *SetAppBackgroundStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetAppBackgroundStatusResp.Unmarshal(m, b) @@ -5994,7 +5516,7 @@ func (m *ExtendMsgSet) Reset() { *m = ExtendMsgSet{} } func (m *ExtendMsgSet) String() string { return proto.CompactTextString(m) } func (*ExtendMsgSet) ProtoMessage() {} func (*ExtendMsgSet) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{83} + return fileDescriptor_ws_a0747f665ef3b307, []int{78} } func (m *ExtendMsgSet) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtendMsgSet.Unmarshal(m, b) @@ -6071,7 +5593,7 @@ func (m *ExtendMsg) Reset() { *m = ExtendMsg{} } func (m *ExtendMsg) String() string { return proto.CompactTextString(m) } func (*ExtendMsg) ProtoMessage() {} func (*ExtendMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{84} + return fileDescriptor_ws_a0747f665ef3b307, []int{79} } func (m *ExtendMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtendMsg.Unmarshal(m, b) @@ -6139,7 +5661,7 @@ func (m *KeyValue) Reset() { *m = KeyValue{} } func (m *KeyValue) String() string { return proto.CompactTextString(m) } func (*KeyValue) ProtoMessage() {} func (*KeyValue) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{85} + return fileDescriptor_ws_a0747f665ef3b307, []int{80} } func (m *KeyValue) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KeyValue.Unmarshal(m, b) @@ -6192,7 +5714,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_e08a07288a333e78, []int{86} + return fileDescriptor_ws_a0747f665ef3b307, []int{81} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -6236,11 +5758,6 @@ func init() { proto.RegisterType((*BlackInfo)(nil), "sdkws.BlackInfo") proto.RegisterType((*GroupRequest)(nil), "sdkws.GroupRequest") proto.RegisterType((*FriendRequest)(nil), "sdkws.FriendRequest") - proto.RegisterType((*Department)(nil), "sdkws.Department") - proto.RegisterType((*OrganizationUser)(nil), "sdkws.OrganizationUser") - proto.RegisterType((*DepartmentMember)(nil), "sdkws.DepartmentMember") - proto.RegisterType((*UserDepartmentMember)(nil), "sdkws.UserDepartmentMember") - proto.RegisterType((*UserInDepartment)(nil), "sdkws.UserInDepartment") proto.RegisterType((*PullMessageBySeqListReq)(nil), "sdkws.PullMessageBySeqListReq") proto.RegisterMapType((map[string]*SeqList)(nil), "sdkws.PullMessageBySeqListReq.GroupSeqListEntry") proto.RegisterType((*SeqList)(nil), "sdkws.seqList") @@ -6322,266 +5839,244 @@ func init() { proto.RegisterType((*ResponsePagination)(nil), "sdkws.ResponsePagination") } -func init() { proto.RegisterFile("sdkws/ws.proto", fileDescriptor_ws_e08a07288a333e78) } +func init() { proto.RegisterFile("sdkws/ws.proto", fileDescriptor_ws_a0747f665ef3b307) } -var fileDescriptor_ws_e08a07288a333e78 = []byte{ - // 4125 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x5b, 0x6f, 0x1c, 0x59, - 0x5a, 0x53, 0xd5, 0x17, 0x77, 0x7f, 0xed, 0x4b, 0xbb, 0x92, 0x78, 0x7a, 0xbc, 0x99, 0x60, 0x6a, - 0xa2, 0x10, 0x42, 0xc6, 0x81, 0xcc, 0xee, 0xc2, 0xce, 0xce, 0x06, 0xf9, 0x92, 0x38, 0xde, 0xa4, - 0x6d, 0x6f, 0x75, 0x32, 0x41, 0x3b, 0x23, 0x85, 0x72, 0xd7, 0x71, 0xbb, 0xc6, 0xd5, 0x55, 0xe5, - 0xba, 0x38, 0x31, 0x0f, 0x20, 0x01, 0x02, 0x24, 0x1e, 0x90, 0x10, 0x17, 0x09, 0xde, 0x78, 0x41, - 0x20, 0x34, 0x42, 0x08, 0x10, 0x12, 0x08, 0x21, 0xc4, 0x03, 0x12, 0x48, 0xcc, 0x3b, 0x12, 0x08, - 0x5e, 0x40, 0x88, 0x3f, 0x80, 0x84, 0x34, 0xe8, 0x9c, 0xef, 0x54, 0xd5, 0x39, 0x55, 0xd5, 0x97, - 0x58, 0xd6, 0x24, 0x51, 0x78, 0xf3, 0xf7, 0xd5, 0xf9, 0xbe, 0xf3, 0xdd, 0xcf, 0x77, 0x2e, 0x6d, - 0x58, 0x08, 0xad, 0xa3, 0xa7, 0xcf, 0xc2, 0x5b, 0xcf, 0xc2, 0x55, 0x3f, 0xf0, 0x22, 0x4f, 0x5b, - 0x0c, 0x49, 0x70, 0x42, 0x82, 0xa7, 0xa6, 0x6f, 0x3f, 0xf5, 0xcd, 0xc0, 0x1c, 0x86, 0xcb, 0xab, - 0xbb, 0x3e, 0x71, 0xdf, 0xdf, 0xee, 0xbe, 0xdf, 0x63, 0x9f, 0x6e, 0xf9, 0x47, 0x83, 0x5b, 0x6c, - 0xf0, 0xad, 0x84, 0x38, 0x30, 0x7d, 0x9f, 0x04, 0x9c, 0x85, 0xfe, 0xaf, 0x55, 0x68, 0x6e, 0x05, - 0x5e, 0xec, 0x6f, 0xbb, 0x07, 0x9e, 0xd6, 0x81, 0x99, 0x01, 0x03, 0x36, 0x3b, 0xca, 0x8a, 0x72, - 0xbd, 0x69, 0x24, 0xa0, 0x76, 0x19, 0x9a, 0xec, 0xcf, 0x1d, 0x73, 0x48, 0x3a, 0x2a, 0xfb, 0x96, - 0x21, 0x34, 0x1d, 0x66, 0x5d, 0x2f, 0xb2, 0x0f, 0xec, 0xbe, 0x19, 0xd9, 0x9e, 0xdb, 0xa9, 0xb0, - 0x01, 0x12, 0x8e, 0x8e, 0xb1, 0xdd, 0x28, 0xf0, 0xac, 0xb8, 0xcf, 0xc6, 0x54, 0x71, 0x8c, 0x88, - 0xa3, 0xf3, 0x1f, 0x98, 0x7d, 0xf2, 0xd8, 0x78, 0xd8, 0xa9, 0xe1, 0xfc, 0x1c, 0xd4, 0x56, 0xa0, - 0xe5, 0x3d, 0x73, 0x49, 0xf0, 0x38, 0x24, 0xc1, 0xf6, 0x66, 0xa7, 0xce, 0xbe, 0x8a, 0x28, 0xed, - 0x0a, 0x40, 0x3f, 0x20, 0x66, 0x44, 0x1e, 0xd9, 0x43, 0xd2, 0x99, 0x59, 0x51, 0xae, 0x57, 0x0c, - 0x01, 0x43, 0x39, 0x0c, 0xc9, 0x70, 0x9f, 0x04, 0x1b, 0x5e, 0xec, 0x46, 0x9d, 0xc6, 0x8a, 0x72, - 0x7d, 0xce, 0x10, 0x51, 0xda, 0x3c, 0xa8, 0xe4, 0x79, 0xa7, 0xc9, 0x58, 0xab, 0xe4, 0xb9, 0xb6, - 0x04, 0xf5, 0x30, 0x32, 0xa3, 0x38, 0xec, 0xc0, 0x8a, 0x72, 0xbd, 0x66, 0x70, 0x48, 0xbb, 0x0a, - 0x73, 0x8c, 0xaf, 0x97, 0x48, 0xd3, 0x62, 0x24, 0x32, 0x32, 0xb5, 0xd8, 0xa3, 0x53, 0x9f, 0x74, - 0x66, 0x19, 0x83, 0x0c, 0xa1, 0xdd, 0x80, 0xb6, 0x4b, 0x88, 0xf5, 0x31, 0x09, 0x32, 0xab, 0xcd, - 0xb1, 0x41, 0x05, 0xbc, 0x76, 0x0d, 0xe6, 0x1d, 0xcf, 0x3b, 0xea, 0x32, 0x51, 0xa9, 0x9f, 0x3a, - 0xf3, 0x6c, 0x64, 0x0e, 0xab, 0xdd, 0x84, 0x45, 0xd3, 0xf7, 0x9d, 0x53, 0x44, 0xdd, 0x0b, 0x6c, - 0xe2, 0x5a, 0x9d, 0x05, 0x36, 0xb4, 0xf8, 0x41, 0xfb, 0x26, 0x2c, 0x89, 0xfe, 0x79, 0xec, 0x5b, - 0x89, 0xed, 0xda, 0xcc, 0x76, 0x23, 0xbe, 0x6a, 0xab, 0xa0, 0x49, 0x5f, 0xd0, 0x04, 0x8b, 0xcc, - 0x04, 0x25, 0x5f, 0xf4, 0xdf, 0xa8, 0xc0, 0x42, 0x1a, 0x61, 0xf7, 0xbc, 0xa0, 0x47, 0xa2, 0x57, - 0x38, 0xce, 0x30, 0x06, 0xea, 0x69, 0x0c, 0x6c, 0x95, 0xf8, 0x89, 0xc6, 0x56, 0xeb, 0xf6, 0xd7, - 0x56, 0x07, 0x9e, 0x37, 0x70, 0x08, 0x26, 0xd2, 0x7e, 0x7c, 0xb0, 0xba, 0xed, 0x46, 0x1f, 0xdc, - 0xfe, 0xd8, 0x74, 0x62, 0x52, 0xe2, 0xc4, 0x8d, 0x82, 0x13, 0x1b, 0x93, 0xd9, 0xe4, 0x3d, 0xbc, - 0x5d, 0xe6, 0xe1, 0xe6, 0x64, 0x3e, 0x45, 0x2a, 0xfd, 0x4b, 0x15, 0x2e, 0x30, 0xb7, 0x70, 0x6c, - 0xec, 0x38, 0x13, 0x4a, 0xc0, 0x12, 0xd4, 0x63, 0x74, 0x36, 0xfa, 0x85, 0x43, 0xd4, 0x65, 0x81, - 0xe7, 0x90, 0x87, 0xe4, 0x84, 0x38, 0xcc, 0x23, 0x35, 0x23, 0x43, 0x68, 0xcb, 0xd0, 0xf8, 0xcc, - 0xb3, 0x5d, 0x16, 0x58, 0x55, 0x16, 0x58, 0x29, 0x4c, 0xbf, 0xb9, 0x76, 0xff, 0xc8, 0xa5, 0xbe, - 0x46, 0x3f, 0xa4, 0xb0, 0xe8, 0xa2, 0xba, 0xec, 0xa2, 0x6b, 0x30, 0x6f, 0xfa, 0x7e, 0xd7, 0x74, - 0x07, 0x24, 0xc0, 0x49, 0x67, 0x30, 0x1d, 0x64, 0x2c, 0x2d, 0x08, 0x74, 0xa6, 0x9e, 0x17, 0x07, - 0x7d, 0xc2, 0xac, 0x5d, 0x33, 0x04, 0x0c, 0xe5, 0xe3, 0xf9, 0x24, 0x10, 0xf2, 0x18, 0x53, 0x3f, - 0x87, 0xe5, 0x21, 0x01, 0x69, 0x48, 0xd0, 0x42, 0x12, 0x47, 0xe4, 0xae, 0x6b, 0x31, 0xa5, 0x5a, - 0x4c, 0x29, 0x11, 0x45, 0x0b, 0x84, 0xed, 0x9e, 0xd8, 0x51, 0x5a, 0xae, 0x66, 0xb1, 0x40, 0x48, - 0x48, 0xfd, 0x97, 0x14, 0x98, 0xdf, 0x8b, 0xf7, 0x1d, 0xbb, 0xcf, 0x10, 0xd4, 0xf8, 0x99, 0x89, - 0x15, 0xc9, 0xc4, 0xa2, 0xa1, 0xd4, 0xd1, 0x86, 0xaa, 0xc8, 0x86, 0x5a, 0x82, 0xfa, 0x80, 0xb8, - 0x16, 0x09, 0x98, 0xe1, 0x6b, 0x06, 0x87, 0xb8, 0x42, 0xb5, 0x44, 0x21, 0xfd, 0x5f, 0x54, 0x68, - 0x7c, 0xc5, 0x22, 0xac, 0x40, 0xcb, 0x3f, 0xf4, 0x5c, 0xb2, 0x13, 0xd3, 0xe0, 0xe3, 0xb2, 0x88, - 0x28, 0xed, 0x22, 0xd4, 0xf6, 0xed, 0x20, 0x3a, 0x64, 0xde, 0x9f, 0x33, 0x10, 0xa0, 0x58, 0x32, - 0x34, 0x6d, 0x74, 0x79, 0xd3, 0x40, 0x80, 0x2b, 0xd4, 0x48, 0x3d, 0x24, 0x2f, 0x05, 0xcd, 0xc2, - 0x52, 0x50, 0x8c, 0x20, 0x28, 0x8d, 0xa0, 0x1b, 0xd0, 0x1e, 0x38, 0xde, 0xbe, 0xe9, 0x18, 0xa4, - 0x7f, 0xd2, 0x0d, 0x07, 0xbb, 0x7e, 0xc4, 0xdc, 0x5d, 0x33, 0x0a, 0x78, 0x6a, 0x1f, 0x26, 0xa2, - 0x65, 0x9e, 0xb2, 0x42, 0x5e, 0x31, 0x52, 0x58, 0xff, 0x1f, 0x05, 0x00, 0xd3, 0x8e, 0x99, 0x38, - 0xb7, 0x96, 0x29, 0xc5, 0xb5, 0x6c, 0x09, 0xea, 0x01, 0x19, 0x9a, 0xc1, 0x51, 0x92, 0x6a, 0x08, - 0xe5, 0x14, 0xab, 0x14, 0x14, 0xfb, 0x36, 0xc0, 0x01, 0x9b, 0x87, 0xf2, 0x61, 0x26, 0xa7, 0x85, - 0xa1, 0xd0, 0x25, 0xac, 0x26, 0xde, 0x36, 0x84, 0xe1, 0x34, 0x8f, 0x4d, 0xcb, 0xe2, 0xe9, 0x52, - 0xc3, 0x3c, 0x4e, 0x11, 0x25, 0xd9, 0x52, 0x1f, 0x93, 0x2d, 0x33, 0x69, 0x70, 0xfd, 0xb7, 0x02, - 0xcd, 0x75, 0xc7, 0xec, 0x1f, 0x4d, 0xa9, 0xba, 0xac, 0xa2, 0x5a, 0x50, 0x71, 0x0b, 0xe6, 0xf6, - 0x29, 0xbb, 0x44, 0x05, 0x66, 0x85, 0xd6, 0xed, 0x1f, 0x2c, 0xd1, 0x52, 0x4e, 0x2e, 0x43, 0xa6, - 0x93, 0xd5, 0xad, 0x4e, 0x56, 0xb7, 0x36, 0x46, 0xdd, 0x74, 0xbd, 0xd0, 0x7f, 0xbb, 0x02, 0xb3, - 0xac, 0xac, 0x1a, 0xe4, 0x38, 0x26, 0x61, 0xa4, 0x7d, 0x07, 0x1a, 0x71, 0x22, 0xaa, 0x32, 0xad, - 0xa8, 0x29, 0x89, 0xf6, 0x21, 0x5f, 0x0f, 0x19, 0xbd, 0xca, 0xe8, 0x2f, 0x97, 0xd0, 0xa7, 0x0b, - 0xac, 0x91, 0x0d, 0xa7, 0x2b, 0xe1, 0xa1, 0xe9, 0x5a, 0x0e, 0x31, 0x48, 0x18, 0x3b, 0x11, 0xaf, - 0xcd, 0x12, 0x0e, 0x23, 0xed, 0xb8, 0x1b, 0x0e, 0xf8, 0x3a, 0xc9, 0x21, 0x6a, 0x1d, 0x1c, 0x47, - 0x3f, 0xa1, 0xea, 0x19, 0x82, 0x26, 0x7c, 0x40, 0x8e, 0x99, 0x87, 0xea, 0xcc, 0x43, 0x09, 0x98, - 0xcd, 0xc9, 0xad, 0x86, 0x81, 0x20, 0xe1, 0xa8, 0x8b, 0x11, 0x66, 0x0c, 0x1a, 0xe8, 0xe2, 0x0c, - 0x53, 0xe8, 0xc3, 0xe4, 0x42, 0x0e, 0x85, 0x42, 0x5e, 0x28, 0xb7, 0xad, 0xb2, 0x72, 0xfb, 0xcf, - 0x15, 0x98, 0xc3, 0x24, 0x4c, 0x5c, 0x73, 0x85, 0x66, 0x8b, 0x37, 0x94, 0x62, 0x51, 0xc0, 0x50, - 0x5d, 0x28, 0xb4, 0x23, 0x97, 0x3d, 0x09, 0x47, 0x03, 0x9a, 0xc2, 0xf7, 0xa4, 0xf2, 0x27, 0xa2, - 0x92, 0x59, 0xb6, 0xc4, 0x32, 0x28, 0x60, 0x68, 0xe1, 0x88, 0x3c, 0x29, 0xc6, 0x52, 0x98, 0xd2, - 0x46, 0x5e, 0x3a, 0x3f, 0x46, 0x99, 0x80, 0xa1, 0x5e, 0x8a, 0xbc, 0x64, 0x6e, 0x34, 0x75, 0x86, - 0x40, 0xce, 0x7c, 0x5e, 0x5c, 0xfe, 0x52, 0xb8, 0x10, 0x1b, 0xcd, 0xb1, 0xb1, 0x01, 0x52, 0x6c, - 0xc8, 0x29, 0xda, 0x2a, 0xa4, 0xe8, 0x55, 0x98, 0x43, 0x3e, 0xb9, 0xe5, 0x4f, 0x42, 0xca, 0x11, - 0x36, 0x97, 0x8f, 0x30, 0x39, 0x46, 0xe6, 0x47, 0xc4, 0xc8, 0x42, 0x9a, 0x77, 0x7f, 0xa2, 0x02, - 0x6c, 0x12, 0xdf, 0x0c, 0xa2, 0x21, 0x71, 0x23, 0xaa, 0x9e, 0x95, 0x42, 0xa9, 0x73, 0x25, 0x9c, - 0xb8, 0x6a, 0xa9, 0xf2, 0xaa, 0xa5, 0x41, 0x95, 0x19, 0x1c, 0xbd, 0xc9, 0xfe, 0xa6, 0xc6, 0xf4, - 0xcd, 0x00, 0xb9, 0x61, 0xaa, 0xa4, 0x30, 0x5d, 0x95, 0xbc, 0xc0, 0xe2, 0xeb, 0x58, 0xcd, 0x40, - 0x80, 0x96, 0x90, 0x6c, 0x3e, 0xb6, 0x0b, 0xa8, 0xe3, 0x2a, 0x23, 0x63, 0x27, 0x6e, 0x5c, 0x6e, - 0x40, 0x3b, 0x8c, 0xf7, 0x33, 0xe5, 0x76, 0xe2, 0x21, 0xdf, 0xbd, 0x14, 0xf0, 0xd4, 0xa8, 0xb8, - 0xa3, 0xa1, 0x83, 0x9a, 0x6c, 0x50, 0x86, 0xc8, 0x77, 0x32, 0xfa, 0xdf, 0xab, 0xd0, 0xde, 0x0d, - 0x06, 0xa6, 0x6b, 0xff, 0x4c, 0xda, 0xb1, 0x9f, 0xa9, 0x01, 0x58, 0x81, 0x16, 0x71, 0x07, 0x8e, - 0x1d, 0x1e, 0xee, 0x64, 0x76, 0x13, 0x51, 0xa2, 0xb1, 0xab, 0xa3, 0x5a, 0x84, 0x9a, 0xd4, 0x22, - 0x2c, 0x41, 0x7d, 0xe8, 0xed, 0xdb, 0x4e, 0x12, 0xf7, 0x1c, 0x62, 0x31, 0x4f, 0x1c, 0xc2, 0x7a, - 0x85, 0x34, 0xe6, 0x13, 0x44, 0xd6, 0x36, 0x34, 0x4a, 0xdb, 0x86, 0xa6, 0xd8, 0x36, 0xc8, 0x86, - 0x87, 0x82, 0xe1, 0xd1, 0x5c, 0xad, 0xb4, 0x0e, 0x25, 0x4b, 0x7c, 0x2f, 0x0a, 0x78, 0x48, 0xa7, - 0xb0, 0xfe, 0x37, 0x0a, 0xb4, 0x33, 0x57, 0x60, 0x4f, 0x3d, 0xd2, 0x94, 0xf9, 0xe8, 0x54, 0x4b, - 0xa2, 0x33, 0x8d, 0xa9, 0x8a, 0x18, 0x53, 0x34, 0x0a, 0xbd, 0xd0, 0x16, 0x36, 0x36, 0x29, 0x4c, - 0x67, 0x73, 0x88, 0x29, 0x18, 0x12, 0x21, 0x61, 0x1b, 0x5b, 0x97, 0xb6, 0xb1, 0xf9, 0x95, 0xfa, - 0x2f, 0x14, 0xb8, 0x48, 0x23, 0xa0, 0xa0, 0xc6, 0x2e, 0xb4, 0xbd, 0x5c, 0x94, 0xf0, 0xa5, 0xec, - 0xbd, 0x92, 0xa5, 0x28, 0x1f, 0x50, 0x46, 0x81, 0x98, 0x32, 0xb4, 0x72, 0x93, 0xf0, 0xb5, 0xad, - 0x8c, 0x61, 0x5e, 0x1e, 0xa3, 0x40, 0xac, 0xff, 0x95, 0x02, 0x6d, 0x5c, 0x3c, 0x85, 0x1a, 0x70, - 0xee, 0x62, 0x3f, 0x81, 0x8b, 0xf9, 0x99, 0x1f, 0xda, 0x61, 0xd4, 0x51, 0x57, 0x2a, 0xd3, 0x8a, - 0x5e, 0xca, 0x40, 0xff, 0x23, 0x15, 0xde, 0xde, 0x8b, 0x1d, 0xa7, 0x4b, 0xc2, 0xd0, 0x1c, 0x90, - 0xf5, 0xd3, 0x1e, 0x39, 0xa6, 0x1f, 0x0c, 0x72, 0x3c, 0x32, 0x86, 0x68, 0x27, 0xc5, 0x5a, 0x11, - 0xdb, 0x73, 0xd3, 0x10, 0x12, 0x51, 0x34, 0xe5, 0x42, 0xe4, 0xd3, 0xa9, 0xac, 0x54, 0xae, 0xcf, - 0x19, 0x09, 0xa8, 0xfd, 0x34, 0xcc, 0xb2, 0x2e, 0x81, 0x4f, 0xd3, 0xa9, 0x32, 0x05, 0x3e, 0x2a, - 0xed, 0x4b, 0x4a, 0xa5, 0xc2, 0x7e, 0x83, 0xc3, 0x77, 0xdd, 0x28, 0x38, 0x35, 0x24, 0x8e, 0xcb, - 0x9f, 0xc0, 0x62, 0x61, 0x88, 0xd6, 0x86, 0xca, 0x11, 0x39, 0xe5, 0x7a, 0xd0, 0x3f, 0xb5, 0x1f, - 0x85, 0xda, 0x09, 0xdd, 0xa0, 0x72, 0xef, 0x2f, 0x97, 0x48, 0xc0, 0x65, 0x36, 0x70, 0xe0, 0x87, - 0xea, 0x4f, 0x28, 0xfa, 0x7b, 0xa9, 0x62, 0xa2, 0x8e, 0x8a, 0xa4, 0xa3, 0xfe, 0x00, 0x5a, 0xdd, - 0x70, 0xb0, 0x69, 0x46, 0x26, 0x1b, 0xf8, 0x11, 0xb4, 0x86, 0x19, 0xc8, 0x06, 0x97, 0xcf, 0xc7, - 0x89, 0x0c, 0x71, 0xb8, 0xfe, 0x85, 0x0a, 0x9d, 0x72, 0x53, 0x84, 0x3e, 0x95, 0x81, 0x04, 0xc1, - 0x86, 0x67, 0x11, 0xa6, 0x5a, 0xcd, 0x48, 0x40, 0xea, 0x3b, 0x12, 0x04, 0x74, 0x7d, 0xe3, 0x6d, - 0x3c, 0x42, 0xda, 0x2a, 0x54, 0x9d, 0xc4, 0x2d, 0xe3, 0xa5, 0x60, 0xe3, 0xb4, 0x21, 0xb4, 0x99, - 0x75, 0x05, 0x85, 0xb8, 0xcf, 0xd6, 0xa6, 0xf6, 0x59, 0xe8, 0xa3, 0xd3, 0x04, 0x1e, 0xe8, 0xb8, - 0x02, 0xeb, 0xe5, 0x3e, 0x5c, 0x2a, 0x1d, 0x5a, 0xe2, 0xc0, 0xaf, 0xcb, 0x0e, 0xbc, 0x32, 0x5a, - 0x95, 0xbc, 0x13, 0x7d, 0xd0, 0xb6, 0x48, 0xd4, 0x35, 0x9f, 0xaf, 0xb9, 0x56, 0xd7, 0x76, 0x7b, - 0xe4, 0x98, 0x46, 0xfb, 0x0a, 0xb4, 0xf8, 0x71, 0x43, 0xea, 0xa6, 0xa6, 0x21, 0xa2, 0x46, 0x9e, - 0x42, 0xe4, 0xf2, 0xa1, 0x52, 0xc8, 0x07, 0xfd, 0x0e, 0xcc, 0x8a, 0xd3, 0xb1, 0x05, 0xc6, 0x7c, - 0xde, 0x23, 0xc7, 0x4c, 0xa1, 0x39, 0x83, 0x43, 0x0c, 0xcf, 0x46, 0xb0, 0x19, 0x28, 0x9e, 0x41, - 0xfa, 0x3f, 0xa8, 0x70, 0xa1, 0x20, 0x72, 0xe8, 0xbf, 0x28, 0x1f, 0x31, 0x5e, 0x2a, 0xa3, 0xe2, - 0xa5, 0x2a, 0xc5, 0xcb, 0x11, 0x2c, 0xa2, 0x93, 0x84, 0xa9, 0x3b, 0x35, 0x16, 0x00, 0xdf, 0x29, - 0xdb, 0x0c, 0x14, 0x85, 0xe4, 0xbe, 0x17, 0xb0, 0xe8, 0xfc, 0x22, 0xdf, 0x65, 0x02, 0x4b, 0xe5, - 0x83, 0x4b, 0xdc, 0xff, 0x0d, 0xd9, 0xfd, 0x3f, 0x50, 0xe6, 0x7e, 0x51, 0x12, 0xc1, 0xff, 0xc7, - 0xb0, 0x40, 0x8b, 0x6a, 0x8f, 0xb8, 0x56, 0x37, 0x1c, 0x30, 0x43, 0xae, 0x40, 0x0b, 0xe9, 0xbb, - 0xe1, 0x20, 0xdb, 0x1c, 0x0a, 0x28, 0x3a, 0xa2, 0xef, 0xd8, 0xb4, 0x78, 0xb2, 0x11, 0xbc, 0xe8, - 0x09, 0x28, 0xba, 0x40, 0x86, 0x84, 0x9f, 0xcc, 0xe0, 0xfe, 0x38, 0x85, 0xf5, 0x3f, 0xaf, 0xc3, - 0x0c, 0x8f, 0x46, 0xb6, 0x28, 0xd2, 0xfd, 0x78, 0x5a, 0x56, 0x11, 0xc2, 0x9e, 0xb7, 0x7f, 0x92, - 0x85, 0x17, 0x42, 0xe2, 0xb1, 0x58, 0x45, 0x3e, 0x16, 0xcb, 0xc9, 0x54, 0x2d, 0xca, 0x94, 0xd3, - 0xab, 0x56, 0xd4, 0x8b, 0xb6, 0x78, 0xac, 0xeb, 0xd9, 0x73, 0xcc, 0xe8, 0xc0, 0x0b, 0x86, 0x7c, - 0x7b, 0x5d, 0x33, 0x0a, 0x78, 0xda, 0x56, 0x22, 0x2e, 0xdd, 0x17, 0xe0, 0x12, 0x9e, 0xc3, 0xd2, - 0x2e, 0x1c, 0x31, 0xc9, 0xfe, 0x00, 0xcf, 0x47, 0x64, 0x24, 0xca, 0x16, 0x86, 0xb6, 0xe7, 0xb2, - 0x0e, 0x15, 0xb7, 0x01, 0x22, 0x8a, 0x6a, 0x3e, 0x0c, 0x07, 0xf7, 0x02, 0x6f, 0xc8, 0xb7, 0x5e, - 0x09, 0xc8, 0x34, 0xf7, 0xdc, 0x28, 0xe9, 0x6e, 0xf1, 0x64, 0x44, 0x44, 0x51, 0x5a, 0x0e, 0xb2, - 0x86, 0x69, 0xd6, 0x48, 0x40, 0x1a, 0x4b, 0x21, 0x39, 0x66, 0x8d, 0xfd, 0x9c, 0x41, 0xff, 0x94, - 0x3c, 0xb7, 0x20, 0x7b, 0x2e, 0xd7, 0xa9, 0xb5, 0x0b, 0x9d, 0x5a, 0xd6, 0xe2, 0x2c, 0x4a, 0x2d, - 0xce, 0x1a, 0xcc, 0x78, 0x3e, 0x4d, 0xff, 0xb0, 0xa3, 0xb1, 0x74, 0xf9, 0xa1, 0xd1, 0x05, 0x6a, - 0x75, 0x17, 0x47, 0x62, 0x62, 0x24, 0x74, 0xda, 0x43, 0x58, 0xf0, 0x0e, 0x0e, 0x1c, 0xdb, 0x25, - 0x7b, 0x71, 0x78, 0xc8, 0xb6, 0xe1, 0x17, 0x58, 0xb0, 0xeb, 0x65, 0x4d, 0x84, 0x3c, 0xd2, 0xc8, - 0x93, 0xd2, 0xce, 0xcf, 0x8c, 0x70, 0x03, 0xc4, 0x0a, 0xdc, 0x45, 0x56, 0xe0, 0x24, 0x1c, 0x3b, - 0x5f, 0x14, 0x0a, 0xfd, 0x25, 0x66, 0x38, 0x11, 0x85, 0x5c, 0x22, 0xb3, 0x7f, 0x48, 0xd8, 0x81, - 0x52, 0x67, 0x09, 0xfb, 0x47, 0x11, 0xc7, 0xbb, 0xbb, 0xb7, 0x93, 0xee, 0x6e, 0xf9, 0x43, 0x98, - 0x15, 0x15, 0x2c, 0x49, 0xe6, 0x8b, 0x62, 0x32, 0x37, 0xc4, 0x5c, 0xfd, 0x4d, 0x05, 0x16, 0x72, - 0xaa, 0xd1, 0xd1, 0x91, 0x1d, 0x39, 0x84, 0x73, 0x40, 0x80, 0xee, 0x9c, 0x2c, 0x12, 0xf6, 0x79, - 0xf2, 0xb0, 0xbf, 0xb9, 0x24, 0x95, 0xb4, 0x8d, 0xd6, 0x61, 0xd6, 0xde, 0xed, 0x51, 0x46, 0x3d, - 0x2f, 0x76, 0xad, 0xf4, 0x80, 0x5e, 0xc0, 0xb1, 0x2d, 0xfd, 0x6e, 0x6f, 0xdd, 0xb4, 0x06, 0x04, - 0xaf, 0x6b, 0x6a, 0x4c, 0x26, 0x19, 0xa9, 0x5b, 0xd0, 0x78, 0x64, 0xfb, 0xe1, 0x86, 0x37, 0x1c, - 0xd2, 0x10, 0xb0, 0x48, 0x44, 0x7b, 0x7c, 0x85, 0x19, 0x8c, 0x43, 0xd4, 0x9a, 0x16, 0x39, 0x30, - 0x63, 0x27, 0xa2, 0x43, 0x93, 0x92, 0x21, 0xa0, 0xd8, 0xf1, 0x42, 0xe8, 0xb9, 0x9b, 0x48, 0x8d, - 0x72, 0x0a, 0x18, 0xfd, 0xef, 0x54, 0x68, 0xb3, 0x8a, 0xb8, 0xc1, 0x02, 0xce, 0x62, 0x44, 0xb7, - 0xa1, 0xc6, 0x0a, 0x00, 0xef, 0x28, 0xc7, 0x9f, 0xc9, 0xe0, 0x50, 0xed, 0x0e, 0xd4, 0x3d, 0x9f, - 0xb5, 0xa1, 0x58, 0x2e, 0xaf, 0x8d, 0x22, 0x92, 0x8f, 0xe4, 0x0d, 0x4e, 0xa5, 0xdd, 0x03, 0x18, - 0x66, 0x5d, 0x27, 0x36, 0x0f, 0xd3, 0xf2, 0x10, 0x28, 0xa9, 0x71, 0xd3, 0x75, 0x51, 0x38, 0x97, - 0x97, 0x91, 0xda, 0x0e, 0xcc, 0x33, 0xb1, 0x77, 0x93, 0xc3, 0x39, 0xe6, 0x83, 0xe9, 0x67, 0xcc, - 0x51, 0xeb, 0xbf, 0xa7, 0x70, 0x33, 0xd2, 0xaf, 0x3d, 0x82, 0xb6, 0xcf, 0x4c, 0xa2, 0x9c, 0xc9, - 0x24, 0xcb, 0xd0, 0x18, 0xc6, 0xd2, 0x59, 0x61, 0x0a, 0x67, 0x2e, 0xaa, 0x4c, 0xed, 0x22, 0xfd, - 0xf7, 0x15, 0xe8, 0x7c, 0xd7, 0xb3, 0x5d, 0xf6, 0x61, 0xcd, 0xf7, 0x1d, 0x7e, 0x7d, 0x73, 0x66, - 0x9f, 0xff, 0x24, 0x34, 0x4d, 0x64, 0xe3, 0x46, 0xdc, 0xed, 0x53, 0x9c, 0xff, 0x65, 0x34, 0xc2, - 0x21, 0x4c, 0x45, 0x3c, 0x84, 0xd1, 0x3f, 0x57, 0x60, 0x1e, 0x8d, 0xf2, 0xbd, 0xd8, 0x8e, 0xce, - 0x2c, 0xdf, 0x3a, 0x34, 0x8e, 0x63, 0x3b, 0x3a, 0x43, 0x54, 0xa6, 0x74, 0xc5, 0x78, 0xaa, 0x94, - 0xc4, 0x93, 0xfe, 0x85, 0x02, 0x97, 0xf3, 0x66, 0x5d, 0xeb, 0xf7, 0x89, 0xff, 0x32, 0x53, 0x4a, - 0x3a, 0x84, 0xaa, 0x96, 0x1c, 0x42, 0x05, 0xa4, 0x4f, 0xec, 0x13, 0x12, 0xac, 0x85, 0x7c, 0x57, - 0x2d, 0x60, 0x4a, 0x55, 0x32, 0xc8, 0x67, 0xa4, 0xff, 0xfa, 0xaa, 0xf4, 0x0b, 0x2a, 0xbc, 0xb3, - 0x95, 0x26, 0xee, 0xa3, 0xc0, 0x74, 0xc3, 0x03, 0x12, 0x04, 0x2f, 0x51, 0x9f, 0x87, 0x30, 0xe7, - 0x92, 0x67, 0x99, 0x4c, 0x3c, 0x9d, 0xa7, 0x65, 0x23, 0x13, 0x4f, 0x57, 0xfb, 0xf4, 0xff, 0x55, - 0xa0, 0x8d, 0x7c, 0x1e, 0xd8, 0xfd, 0xa3, 0x97, 0xa8, 0xfc, 0x0e, 0xcc, 0x1f, 0x31, 0x09, 0x28, - 0x74, 0x86, 0xb2, 0x9f, 0xa3, 0x9e, 0x52, 0xfd, 0x2f, 0x15, 0x58, 0x4c, 0x6e, 0x9d, 0x4f, 0xec, - 0x97, 0x19, 0xcc, 0x7b, 0xb0, 0x80, 0xa7, 0xf8, 0x67, 0x35, 0x40, 0x9e, 0x7c, 0x4a, 0x0b, 0xfc, - 0x99, 0x02, 0x0b, 0xc8, 0xe9, 0xae, 0x1b, 0x91, 0xe0, 0xcc, 0xfa, 0xdf, 0x87, 0x16, 0x71, 0xa3, - 0xc0, 0x74, 0xcf, 0x52, 0x61, 0x45, 0xd2, 0x29, 0x8b, 0xec, 0xe7, 0x0a, 0x68, 0x8c, 0xd5, 0xa6, - 0x1d, 0x0e, 0xed, 0x30, 0x7c, 0x89, 0xae, 0x9b, 0x4e, 0xe0, 0xdf, 0x51, 0xe1, 0xa2, 0xc0, 0xa5, - 0x1b, 0x47, 0xaf, 0xba, 0xc8, 0xda, 0x26, 0x34, 0x69, 0x8f, 0x21, 0xde, 0xb1, 0x4e, 0x3b, 0x51, - 0x46, 0x48, 0xbb, 0x60, 0x06, 0xf4, 0x48, 0xdf, 0x73, 0x2d, 0x2c, 0xc5, 0x73, 0x86, 0x84, 0xa3, - 0x65, 0x68, 0x59, 0x60, 0xb3, 0x61, 0xba, 0x7d, 0xe2, 0xbc, 0x31, 0x26, 0xd2, 0xff, 0x50, 0x81, - 0x79, 0x1c, 0xf2, 0xea, 0xab, 0xac, 0xff, 0xb1, 0xc2, 0x03, 0xf9, 0xb5, 0xf1, 0x12, 0x0d, 0xaf, - 0x25, 0x81, 0x8b, 0xd8, 0x97, 0xbf, 0xba, 0xa1, 0x75, 0x1f, 0x5a, 0xfd, 0x43, 0xd3, 0x1d, 0x9c, - 0x29, 0xb8, 0x44, 0x52, 0x3d, 0x82, 0xb7, 0xc5, 0x43, 0xff, 0x0d, 0xfc, 0xc4, 0xd4, 0xff, 0x20, - 0xa7, 0xca, 0xd8, 0x37, 0x14, 0x2f, 0x66, 0xf4, 0x23, 0x58, 0xc4, 0x5b, 0x68, 0xa1, 0x67, 0xd4, - 0x3a, 0x30, 0x63, 0x5a, 0x78, 0xf4, 0xa1, 0xe0, 0x7d, 0x3a, 0x07, 0xe5, 0x57, 0x0a, 0xfc, 0x3d, - 0x5c, 0xf6, 0x4a, 0xe1, 0x0a, 0x80, 0x69, 0x59, 0x4f, 0xbc, 0xc0, 0xb2, 0xdd, 0x64, 0x83, 0x20, - 0x60, 0xf4, 0xef, 0xc2, 0xec, 0xbd, 0xc0, 0x1b, 0x3e, 0x12, 0xee, 0x93, 0xc7, 0xde, 0x78, 0x8b, - 0x77, 0xd1, 0xaa, 0x7c, 0x17, 0xad, 0x7f, 0x0a, 0x97, 0x0a, 0x82, 0x33, 0x63, 0x6d, 0xe0, 0x35, - 0x79, 0x32, 0x09, 0x0f, 0x99, 0xb2, 0xb3, 0x40, 0x51, 0x16, 0x43, 0x22, 0xd2, 0x7f, 0x5e, 0x81, - 0x77, 0x0b, 0xec, 0xd7, 0x7c, 0x3f, 0xf0, 0x4e, 0xb8, 0x4f, 0xce, 0x63, 0x1a, 0xb9, 0x39, 0x56, - 0x73, 0xcd, 0x71, 0xb9, 0x10, 0x52, 0x43, 0xff, 0x15, 0x08, 0xf1, 0x07, 0x0a, 0x2c, 0x70, 0x21, - 0x2c, 0x8b, 0x4f, 0xfb, 0x0d, 0xa8, 0xe3, 0x43, 0x1d, 0x3e, 0xe1, 0xbb, 0xa5, 0x13, 0x26, 0x0f, - 0x8c, 0x0c, 0x3e, 0xb8, 0x18, 0x91, 0x6a, 0x59, 0x46, 0x7d, 0x2b, 0x0d, 0xf6, 0xa9, 0x9f, 0xd2, - 0x70, 0x02, 0xfd, 0xa7, 0x92, 0x60, 0xde, 0x24, 0x0e, 0x39, 0x4f, 0x1b, 0xe9, 0x8f, 0x61, 0x9e, - 0xbd, 0x1a, 0xca, 0x6c, 0x70, 0x2e, 0x6c, 0x9f, 0x40, 0x9b, 0xb1, 0x3d, 0x77, 0x79, 0xd3, 0xec, - 0xa0, 0xf6, 0x11, 0x4b, 0xc9, 0xb9, 0x70, 0x7f, 0x1f, 0x2e, 0x24, 0xb6, 0xc7, 0x97, 0xb8, 0xc8, - 0x7b, 0xc4, 0xdd, 0xa0, 0xfe, 0x5b, 0x0a, 0x2c, 0x6d, 0x78, 0xee, 0x09, 0x09, 0x42, 0xe9, 0xf5, - 0x2e, 0x92, 0x48, 0xd9, 0xcf, 0x21, 0x6d, 0x15, 0xb4, 0xbe, 0x40, 0xc1, 0x8f, 0x27, 0x55, 0x76, - 0x3c, 0x59, 0xf2, 0x45, 0xfb, 0x3a, 0x5c, 0x8a, 0x19, 0xd7, 0xc7, 0x6e, 0x40, 0x4c, 0x8b, 0x9d, - 0xc7, 0x09, 0x45, 0xaf, 0xfc, 0xa3, 0xfe, 0x19, 0x2c, 0x8b, 0x72, 0xf5, 0x48, 0xb4, 0x17, 0xd8, - 0x27, 0x82, 0x6c, 0xfc, 0xec, 0x5d, 0x91, 0xce, 0xde, 0xb3, 0xb3, 0x7a, 0x55, 0x3a, 0xab, 0xbf, - 0x0c, 0x4d, 0x3b, 0xe4, 0x0c, 0xd8, 0xbc, 0x0d, 0x23, 0x43, 0xe8, 0x26, 0x2c, 0xa2, 0x97, 0xf9, - 0x5d, 0x18, 0x9b, 0x62, 0x19, 0x1a, 0x18, 0xba, 0xe9, 0x24, 0x29, 0x3c, 0xf2, 0x66, 0x69, 0xe4, - 0x3d, 0xaa, 0xde, 0x83, 0x45, 0xfe, 0x96, 0x68, 0xcf, 0x1c, 0xd8, 0x2e, 0xd6, 0xf2, 0x2b, 0x00, - 0xbe, 0x39, 0x48, 0x5e, 0x36, 0xe2, 0x8d, 0xa0, 0x80, 0xa1, 0xdf, 0xc3, 0x43, 0xef, 0x19, 0xff, - 0xae, 0xe2, 0xf7, 0x0c, 0xa3, 0xff, 0x5b, 0x1d, 0x9a, 0x3d, 0x7b, 0xe0, 0x9a, 0x8e, 0x41, 0x8e, - 0xb5, 0x8f, 0xa0, 0x8e, 0x3b, 0x18, 0x1e, 0x38, 0x65, 0xa7, 0xce, 0x38, 0x1a, 0xb7, 0x6a, 0x06, - 0x39, 0xbe, 0xff, 0x96, 0xc1, 0x69, 0xb4, 0xef, 0x25, 0x2f, 0xa3, 0xb6, 0xf1, 0x44, 0x8b, 0x2f, - 0x67, 0x3f, 0x3c, 0x81, 0x09, 0x1f, 0x8d, 0xbc, 0x64, 0x0e, 0x54, 0xa0, 0x3e, 0xeb, 0x70, 0x78, - 0xb5, 0x18, 0x2d, 0x10, 0x36, 0x42, 0x5c, 0x20, 0xa4, 0xa1, 0xd4, 0x26, 0x3b, 0xf3, 0xe1, 0x0b, - 0xf7, 0x68, 0x6a, 0x3c, 0x1a, 0xe2, 0xd4, 0x48, 0x43, 0xa9, 0x0f, 0x63, 0x77, 0xf0, 0xd8, 0xe7, - 0x47, 0x91, 0xa3, 0xa9, 0xef, 0xb3, 0x61, 0x9c, 0x1a, 0x69, 0x28, 0x75, 0xc0, 0x6a, 0x39, 0xbb, - 0x5a, 0x19, 0x47, 0x8d, 0x25, 0x9f, 0x53, 0x23, 0x8d, 0xf6, 0x7d, 0x68, 0x0f, 0x48, 0x64, 0x78, - 0xde, 0x70, 0xfd, 0x74, 0x8b, 0xdf, 0x04, 0xe1, 0x43, 0xf0, 0x9b, 0x23, 0xf9, 0x6c, 0xe5, 0x08, - 0x90, 0x63, 0x81, 0x8f, 0xf6, 0xb3, 0xf0, 0xae, 0xe7, 0x52, 0xd4, 0x9e, 0x19, 0x44, 0x76, 0xdf, - 0xf6, 0x4d, 0x37, 0xda, 0xf0, 0x5c, 0x97, 0xad, 0x3b, 0x06, 0x39, 0xe6, 0x4f, 0xc5, 0xbf, 0x39, - 0x72, 0xa2, 0xdd, 0x71, 0xd4, 0xf7, 0xdf, 0x32, 0xc6, 0xb3, 0xd7, 0x7e, 0x59, 0x81, 0x95, 0xc2, - 0x88, 0x4d, 0x3b, 0xec, 0x8b, 0x32, 0xe0, 0x33, 0xf3, 0x6f, 0x4d, 0x2f, 0x43, 0x8e, 0xc1, 0xfd, - 0xb7, 0x8c, 0x89, 0x93, 0x70, 0x2b, 0x3f, 0xf2, 0x8e, 0x88, 0xbb, 0x7e, 0x4a, 0xc7, 0x6e, 0x6f, - 0xb2, 0x5b, 0xa7, 0x09, 0x56, 0x96, 0x08, 0x32, 0x2b, 0x4b, 0xe8, 0xf5, 0x26, 0xcc, 0xf8, 0xe6, - 0xa9, 0xe3, 0x99, 0x96, 0xfe, 0x9f, 0x55, 0x80, 0xc4, 0xd5, 0x21, 0xeb, 0x5c, 0xa5, 0x24, 0xbb, - 0x3a, 0x31, 0xc9, 0x7c, 0xe7, 0x54, 0x48, 0xb3, 0x5e, 0x79, 0x9a, 0xfd, 0xc8, 0xb4, 0x69, 0x86, - 0xdc, 0x72, 0x89, 0x76, 0x27, 0x97, 0x68, 0x57, 0x27, 0x26, 0x1a, 0x17, 0x8a, 0xa7, 0xda, 0x9d, - 0x5c, 0xaa, 0x5d, 0x9d, 0x98, 0x6a, 0x9c, 0x9e, 0x27, 0xdb, 0x9d, 0x5c, 0xb2, 0x5d, 0x9d, 0x98, - 0x6c, 0x9c, 0x9e, 0xa7, 0xdb, 0x9d, 0x5c, 0xba, 0x5d, 0x9d, 0x98, 0x6e, 0x9c, 0x9e, 0x27, 0xdc, - 0xa7, 0x23, 0x13, 0x6e, 0xf5, 0x05, 0x12, 0x0e, 0x79, 0x16, 0x53, 0xee, 0xd3, 0x92, 0x40, 0x6b, - 0x4c, 0xe6, 0x9e, 0x0b, 0xb4, 0x8c, 0xfb, 0xc8, 0x50, 0xfb, 0xc5, 0x0a, 0xcc, 0x33, 0x77, 0xe3, - 0xea, 0xe9, 0x1e, 0x78, 0xc5, 0xf7, 0xaa, 0x4a, 0xc9, 0x7b, 0x55, 0xed, 0x26, 0x2c, 0x22, 0x82, - 0x08, 0xf7, 0x85, 0xb8, 0x20, 0x17, 0x3f, 0xb0, 0x1b, 0xd2, 0x38, 0x8c, 0xbc, 0xe1, 0xa6, 0x19, - 0x99, 0xc9, 0x4e, 0x20, 0xc3, 0x88, 0xf7, 0xd7, 0xd5, 0xc2, 0xcf, 0x3a, 0x02, 0xd4, 0xbf, 0xc6, - 0x57, 0x5d, 0x06, 0x51, 0x8a, 0xc8, 0x1e, 0x12, 0x2f, 0x8e, 0xf8, 0x55, 0x74, 0x02, 0xe2, 0x23, - 0x43, 0xcb, 0x36, 0xd9, 0xad, 0x2f, 0x7f, 0x81, 0x97, 0x22, 0xd8, 0xfa, 0x97, 0xdd, 0x62, 0xf3, - 0x9f, 0x5d, 0x64, 0x98, 0x29, 0x6e, 0x9c, 0xd9, 0x2f, 0x78, 0xec, 0xc8, 0x16, 0x5f, 0xe6, 0xd5, - 0x0c, 0x09, 0x47, 0xfb, 0x95, 0xfd, 0x38, 0x3c, 0x7d, 0x68, 0xbb, 0xa2, 0x79, 0x5a, 0xd8, 0xaf, - 0x14, 0xbf, 0xe8, 0xff, 0xae, 0xc0, 0x05, 0xa1, 0xee, 0x74, 0x49, 0x64, 0x32, 0xbb, 0x48, 0xef, - 0xab, 0x95, 0x17, 0x7b, 0x5f, 0xbd, 0x07, 0x0b, 0x03, 0x79, 0xfb, 0xfc, 0x82, 0x3b, 0xdf, 0x3c, - 0xb9, 0xf4, 0x58, 0xbc, 0xf2, 0xc2, 0x8f, 0xc5, 0xf5, 0x5f, 0x51, 0x61, 0x21, 0xd7, 0x0c, 0x8c, - 0xed, 0x78, 0xd6, 0x00, 0xec, 0x34, 0x34, 0xc7, 0xdc, 0x4e, 0xc9, 0xf1, 0x6b, 0x08, 0x44, 0x65, - 0xd7, 0xe3, 0x95, 0xb3, 0x5f, 0x8f, 0xdf, 0x87, 0x96, 0x9f, 0x39, 0x69, 0xcc, 0xe6, 0xbe, 0xc4, - 0x95, 0x86, 0x48, 0xaa, 0xff, 0xaa, 0x02, 0x8b, 0x85, 0x92, 0xcd, 0x2e, 0xad, 0x69, 0xa2, 0xa6, - 0x97, 0xd6, 0x14, 0x10, 0x32, 0x40, 0xcd, 0x67, 0x80, 0x63, 0x9f, 0x88, 0x3f, 0x6b, 0xe1, 0xe0, - 0x88, 0xe8, 0xab, 0x8e, 0x8c, 0xbe, 0x5f, 0x53, 0x61, 0xa9, 0xbc, 0xc1, 0x7a, 0x53, 0xfd, 0xf3, - 0xeb, 0x0a, 0x74, 0x46, 0xad, 0x85, 0x2f, 0xcd, 0x4d, 0x59, 0xfe, 0xa4, 0xbd, 0xeb, 0x9b, 0xea, - 0x9f, 0x0b, 0x49, 0xfa, 0x08, 0xcd, 0x85, 0xfe, 0xa7, 0xa9, 0x7d, 0xd2, 0xee, 0xfc, 0x0d, 0xb5, - 0x8f, 0x76, 0x03, 0xda, 0xa8, 0xa6, 0xf0, 0x62, 0x0b, 0x6f, 0x53, 0x0b, 0x78, 0xfd, 0x93, 0xc4, - 0x96, 0x42, 0xa3, 0x75, 0x5e, 0x31, 0xae, 0xff, 0xb5, 0x92, 0xf8, 0x24, 0xdd, 0xf3, 0xbc, 0x56, - 0x3e, 0xc9, 0x22, 0x4d, 0x68, 0x23, 0x85, 0x48, 0x4b, 0xf7, 0x62, 0xff, 0x1f, 0x69, 0x93, 0x23, - 0x2d, 0xb5, 0xa5, 0xd0, 0x52, 0xeb, 0xbf, 0xab, 0xc0, 0x3b, 0x23, 0xf7, 0xa3, 0x63, 0xad, 0x2a, - 0x34, 0x8d, 0xaa, 0xdc, 0x34, 0xe6, 0xd4, 0xab, 0x9c, 0xbd, 0xd0, 0xfc, 0xad, 0x02, 0x5f, 0x1b, - 0xd3, 0xbc, 0xe7, 0x3c, 0xab, 0x9c, 0xc5, 0xb3, 0x39, 0x61, 0xd5, 0x91, 0x17, 0xc8, 0x13, 0x7d, - 0x91, 0xa5, 0x67, 0x45, 0x4c, 0x4f, 0xfd, 0x1f, 0x15, 0x78, 0x6f, 0x8a, 0x9d, 0xf8, 0xab, 0xa5, - 0xcc, 0xc8, 0x27, 0xad, 0xfa, 0x3f, 0x29, 0x70, 0x6d, 0xba, 0x4d, 0xfd, 0xeb, 0xa2, 0xd1, 0x5f, - 0x8a, 0x39, 0x90, 0x3f, 0x2d, 0x10, 0xdc, 0xaa, 0x48, 0x55, 0x57, 0xcc, 0x0d, 0x35, 0x97, 0x1b, - 0xe7, 0x96, 0x01, 0xf9, 0x97, 0xeb, 0xd5, 0xe2, 0xcb, 0xf5, 0xae, 0x90, 0x22, 0xc5, 0x1d, 0xe8, - 0x88, 0xa5, 0x44, 0x58, 0x32, 0x54, 0x79, 0xc9, 0xf8, 0x39, 0x98, 0xdb, 0x24, 0x4e, 0x37, 0x1c, - 0x24, 0xbf, 0x31, 0x39, 0xd7, 0x53, 0xd1, 0x29, 0xf4, 0x59, 0x87, 0x79, 0x51, 0x80, 0xb3, 0xfc, - 0x86, 0x42, 0x7f, 0x02, 0xef, 0xf4, 0x48, 0xb4, 0xe6, 0xfb, 0xeb, 0x66, 0xff, 0x88, 0xba, 0xd9, - 0xb5, 0x7a, 0xec, 0xd1, 0xef, 0xb8, 0x1f, 0xcd, 0xd0, 0x9d, 0x65, 0x98, 0x11, 0xf0, 0x97, 0xae, - 0x12, 0x4e, 0xdf, 0x81, 0xe5, 0x51, 0x8c, 0xcf, 0x24, 0xe8, 0x7f, 0xa9, 0x30, 0x7b, 0xf7, 0x79, - 0x84, 0xef, 0xdc, 0x7b, 0x84, 0xfd, 0x52, 0x3c, 0x64, 0xd7, 0x77, 0x99, 0xb5, 0x13, 0x38, 0xbf, - 0x39, 0x56, 0x8b, 0x9b, 0xe3, 0x5d, 0x00, 0x92, 0x70, 0x0b, 0xf9, 0x63, 0x98, 0x5b, 0x25, 0x61, - 0x27, 0x4e, 0x99, 0x01, 0xfc, 0x75, 0xb3, 0xc0, 0x82, 0xae, 0x2f, 0x5d, 0xf3, 0x79, 0x37, 0x1c, - 0x08, 0xff, 0x01, 0x04, 0xdf, 0xc4, 0x14, 0xf0, 0xd4, 0x7e, 0x29, 0xe5, 0x4e, 0x3c, 0xe4, 0xeb, - 0x90, 0x84, 0xcb, 0xbd, 0xd5, 0xae, 0xe7, 0xdf, 0x6a, 0x2f, 0x7f, 0x02, 0x0b, 0x39, 0x71, 0x4a, - 0xde, 0x22, 0xdf, 0x96, 0x7f, 0x58, 0x70, 0x79, 0x9c, 0x82, 0xe2, 0x4b, 0xe5, 0xff, 0x50, 0xa1, - 0x99, 0x7e, 0xd0, 0x86, 0x70, 0x29, 0x20, 0x26, 0xfb, 0x97, 0x1f, 0x0c, 0x49, 0x8d, 0x28, 0xfc, - 0xfc, 0xe7, 0xc7, 0xc7, 0x71, 0x5d, 0x35, 0xca, 0x28, 0xd1, 0x7c, 0xe5, 0x5c, 0xa7, 0xf8, 0x75, - 0xc2, 0x2a, 0x68, 0xc3, 0x70, 0x70, 0xcf, 0x0e, 0xc2, 0xa8, 0xeb, 0x59, 0xf6, 0xc1, 0xa9, 0x70, - 0x65, 0x52, 0xf2, 0xa5, 0xf0, 0xd0, 0xbb, 0x3a, 0xf2, 0xa1, 0x77, 0xfa, 0xdf, 0x1c, 0x96, 0x09, - 0x2c, 0x8f, 0x16, 0xbd, 0xc4, 0xd4, 0x3f, 0x26, 0x9b, 0xba, 0xec, 0xaa, 0xfb, 0x01, 0x39, 0xc5, - 0xff, 0x23, 0x22, 0x58, 0xfa, 0x00, 0x1a, 0x09, 0x9a, 0x1d, 0x15, 0x9d, 0xfa, 0xe4, 0x41, 0xca, - 0x38, 0x01, 0xe5, 0x37, 0xe5, 0x4d, 0x4e, 0x4f, 0x43, 0xce, 0x31, 0x23, 0x12, 0x46, 0x42, 0xc8, - 0xa1, 0x11, 0x0a, 0x78, 0xfd, 0x63, 0xd0, 0x68, 0xe2, 0x79, 0x6e, 0x48, 0x84, 0x4b, 0x96, 0x15, - 0x68, 0x6d, 0xc4, 0x41, 0x40, 0xdc, 0x68, 0xcf, 0x1c, 0x24, 0xff, 0xad, 0x40, 0x44, 0xd1, 0x30, - 0xec, 0x65, 0xd7, 0x2c, 0x78, 0x82, 0x25, 0x60, 0xd6, 0x6f, 0x7e, 0xff, 0xc6, 0xae, 0x4f, 0xdc, - 0xa7, 0xdb, 0xdd, 0xc2, 0xff, 0x48, 0xfa, 0x76, 0xc1, 0x02, 0xfb, 0x75, 0xf6, 0xfd, 0x83, 0xff, - 0x0b, 0x00, 0x00, 0xff, 0xff, 0x32, 0x8b, 0x4b, 0xf5, 0x83, 0x49, 0x00, 0x00, +var fileDescriptor_ws_a0747f665ef3b307 = []byte{ + // 3765 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5b, 0xcf, 0x6f, 0x1b, 0xd7, + 0xf1, 0xcf, 0x92, 0x22, 0x45, 0x0e, 0x25, 0x8a, 0x5a, 0xdb, 0x0a, 0xc3, 0xc4, 0x8e, 0xb0, 0xc9, + 0xd7, 0x5f, 0xc7, 0x8d, 0xe5, 0x44, 0x69, 0xd2, 0x20, 0x09, 0xda, 0x58, 0x92, 0x2d, 0x2b, 0x36, + 0x2d, 0x75, 0x69, 0x27, 0x48, 0x7b, 0x08, 0x56, 0xdc, 0x27, 0x6a, 0xa3, 0xe5, 0xee, 0x6a, 0x7f, + 0xc8, 0x66, 0x7b, 0x2a, 0x50, 0x14, 0x45, 0x7b, 0x48, 0x1b, 0xa4, 0x41, 0x2f, 0xed, 0xb1, 0x87, + 0xa2, 0x40, 0x2f, 0x05, 0xda, 0x53, 0xff, 0x85, 0x02, 0x3d, 0x15, 0x08, 0xd0, 0xf4, 0xd0, 0x43, + 0x81, 0xa2, 0x97, 0x1e, 0x7a, 0x6d, 0xf1, 0xe6, 0xbd, 0xdd, 0x7d, 0x6f, 0x77, 0x49, 0x51, 0x4e, + 0xea, 0x18, 0xee, 0x45, 0xd0, 0xcc, 0xce, 0xcc, 0x7b, 0x33, 0xf3, 0x79, 0xf3, 0x7e, 0x12, 0x9a, + 0x81, 0x79, 0x70, 0x37, 0xb8, 0x7c, 0x37, 0x58, 0xf1, 0x7c, 0x37, 0x74, 0xd5, 0x0a, 0xd2, 0x9d, + 0x4b, 0xdb, 0x1e, 0x71, 0x2e, 0x6d, 0x75, 0x2f, 0xf5, 0x88, 0x7f, 0x44, 0xfc, 0xcb, 0xde, 0xc1, + 0xe0, 0x32, 0x0a, 0x5c, 0xe6, 0xf2, 0xbe, 0xe1, 0x79, 0xc4, 0xe7, 0x5a, 0xda, 0xa7, 0x33, 0x50, + 0xdf, 0xf4, 0xdd, 0xc8, 0xdb, 0x72, 0xf6, 0x5c, 0xb5, 0x0d, 0xb3, 0x03, 0x24, 0x36, 0xda, 0xca, + 0xb2, 0x72, 0xa1, 0xae, 0xc7, 0xa4, 0xfa, 0x14, 0xd4, 0xf1, 0xdf, 0x5b, 0xc6, 0x90, 0xb4, 0x4b, + 0xf8, 0x2d, 0x65, 0xa8, 0x1a, 0xcc, 0x39, 0x6e, 0x68, 0xed, 0x59, 0x7d, 0x23, 0xb4, 0x5c, 0xa7, + 0x5d, 0x46, 0x01, 0x89, 0x47, 0x65, 0x2c, 0x27, 0xf4, 0x5d, 0x33, 0xea, 0xa3, 0xcc, 0x0c, 0x93, + 0x11, 0x79, 0xb4, 0xfd, 0x3d, 0xa3, 0x4f, 0xee, 0xe8, 0x37, 0xdb, 0x15, 0xd6, 0x3e, 0x27, 0xd5, + 0x65, 0x68, 0xb8, 0x77, 0x1d, 0xe2, 0xdf, 0x09, 0x88, 0xbf, 0xb5, 0xd1, 0xae, 0xe2, 0x57, 0x91, + 0xa5, 0x9e, 0x03, 0xe8, 0xfb, 0xc4, 0x08, 0xc9, 0x6d, 0x6b, 0x48, 0xda, 0xb3, 0xcb, 0xca, 0x85, + 0xb2, 0x2e, 0x70, 0xa8, 0x85, 0x21, 0x19, 0xee, 0x12, 0x7f, 0xdd, 0x8d, 0x9c, 0xb0, 0x5d, 0x5b, + 0x56, 0x2e, 0xcc, 0xeb, 0x22, 0x4b, 0x6d, 0x42, 0x89, 0xdc, 0x6b, 0xd7, 0xd1, 0x74, 0x89, 0xdc, + 0x53, 0x97, 0xa0, 0x1a, 0x84, 0x46, 0x18, 0x05, 0x6d, 0x58, 0x56, 0x2e, 0x54, 0x74, 0x4e, 0xa9, + 0xcf, 0xc2, 0x3c, 0xda, 0x75, 0xe3, 0xde, 0x34, 0x50, 0x45, 0x66, 0x26, 0x11, 0xbb, 0x3d, 0xf2, + 0x48, 0x7b, 0x0e, 0x0d, 0xa4, 0x0c, 0xf5, 0x22, 0xb4, 0x1c, 0x42, 0xcc, 0xb7, 0x89, 0x9f, 0x46, + 0x6d, 0x1e, 0x85, 0x72, 0x7c, 0xf5, 0x3c, 0x34, 0x6d, 0xd7, 0x3d, 0xe8, 0x62, 0x57, 0x69, 0x9e, + 0xda, 0x4d, 0x94, 0xcc, 0x70, 0xd5, 0xe7, 0x61, 0xd1, 0xf0, 0x3c, 0x7b, 0xc4, 0x58, 0xd7, 0x7c, + 0x8b, 0x38, 0x66, 0x7b, 0x01, 0x45, 0xf3, 0x1f, 0xd4, 0x57, 0x60, 0x49, 0xcc, 0xcf, 0x1d, 0xcf, + 0x8c, 0x63, 0xd7, 0xc2, 0xd8, 0x8d, 0xf9, 0xaa, 0xae, 0x80, 0x2a, 0x7d, 0x61, 0x21, 0x58, 0xc4, + 0x10, 0x14, 0x7c, 0xd1, 0x3e, 0x2a, 0xc3, 0x42, 0x82, 0xb0, 0x6b, 0xae, 0xdf, 0x23, 0xe1, 0x43, + 0x8c, 0x33, 0x86, 0x81, 0x6a, 0x82, 0x81, 0xcd, 0x82, 0x3c, 0x51, 0x6c, 0x35, 0x56, 0x9f, 0x5c, + 0x19, 0xb8, 0xee, 0xc0, 0x26, 0x6c, 0x20, 0xed, 0x46, 0x7b, 0x2b, 0x5b, 0x4e, 0xf8, 0xd2, 0xea, + 0xdb, 0x86, 0x1d, 0x91, 0x82, 0x24, 0xae, 0xe7, 0x92, 0x58, 0x3b, 0xde, 0x4c, 0x36, 0xc3, 0x5b, + 0x45, 0x19, 0xae, 0x1f, 0x6f, 0x27, 0xaf, 0xa5, 0xfd, 0xbb, 0x04, 0xa7, 0x30, 0x2d, 0x9c, 0x1b, + 0xd9, 0xf6, 0x31, 0x25, 0x60, 0x09, 0xaa, 0x11, 0x4b, 0x36, 0xcb, 0x0b, 0xa7, 0x68, 0xca, 0x7c, + 0xd7, 0x26, 0x37, 0xc9, 0x11, 0xb1, 0x31, 0x23, 0x15, 0x3d, 0x65, 0xa8, 0x1d, 0xa8, 0xbd, 0xef, + 0x5a, 0x0e, 0x02, 0x6b, 0x06, 0x81, 0x95, 0xd0, 0xf4, 0x9b, 0x63, 0xf5, 0x0f, 0x1c, 0x9a, 0x6b, + 0x96, 0x87, 0x84, 0x16, 0x53, 0x54, 0x95, 0x53, 0x74, 0x1e, 0x9a, 0x86, 0xe7, 0x75, 0x0d, 0x67, + 0x40, 0x7c, 0xd6, 0xe8, 0x2c, 0x1b, 0x0e, 0x32, 0x97, 0x16, 0x04, 0xda, 0x52, 0xcf, 0x8d, 0xfc, + 0x3e, 0xc1, 0x68, 0x57, 0x74, 0x81, 0x43, 0xed, 0xb8, 0x1e, 0xf1, 0x85, 0x71, 0xcc, 0x86, 0x7e, + 0x86, 0xcb, 0x21, 0x01, 0x09, 0x24, 0x68, 0x21, 0x89, 0x42, 0x72, 0xd5, 0x31, 0xd1, 0xa9, 0x06, + 0x3a, 0x25, 0xb2, 0x68, 0x81, 0xb0, 0x9c, 0x23, 0x2b, 0x4c, 0xca, 0xd5, 0x1c, 0x2b, 0x10, 0x12, + 0x53, 0xfb, 0x9e, 0x02, 0xcd, 0x9d, 0x68, 0xd7, 0xb6, 0xfa, 0xc8, 0xa0, 0xc1, 0x4f, 0x43, 0xac, + 0x48, 0x21, 0x16, 0x03, 0x55, 0x1a, 0x1f, 0xa8, 0xb2, 0x1c, 0xa8, 0x25, 0xa8, 0x0e, 0x88, 0x63, + 0x12, 0x1f, 0x03, 0x5f, 0xd1, 0x39, 0xc5, 0x1d, 0xaa, 0xc4, 0x0e, 0x69, 0x7f, 0x2e, 0x41, 0xed, + 0x01, 0x77, 0x61, 0x19, 0x1a, 0xde, 0xbe, 0xeb, 0x90, 0x5b, 0x11, 0x05, 0x1f, 0xef, 0x8b, 0xc8, + 0x52, 0x4f, 0x43, 0x65, 0xd7, 0xf2, 0xc3, 0x7d, 0xcc, 0xfe, 0xbc, 0xce, 0x08, 0xca, 0x25, 0x43, + 0xc3, 0x62, 0x29, 0xaf, 0xeb, 0x8c, 0xe0, 0x0e, 0xd5, 0x92, 0x0c, 0xc9, 0x53, 0x41, 0x3d, 0x37, + 0x15, 0xe4, 0x11, 0x04, 0x85, 0x08, 0xba, 0x08, 0xad, 0x81, 0xed, 0xee, 0x1a, 0xb6, 0x4e, 0xfa, + 0x47, 0xdd, 0x60, 0xb0, 0xed, 0x85, 0x98, 0xee, 0x8a, 0x9e, 0xe3, 0xd3, 0xf8, 0x60, 0x17, 0x4d, + 0x63, 0x84, 0x85, 0xbc, 0xac, 0x27, 0xb4, 0xf6, 0x0f, 0x05, 0x80, 0x0d, 0x3b, 0x0c, 0x71, 0x66, + 0x2e, 0x53, 0xf2, 0x73, 0xd9, 0x12, 0x54, 0x7d, 0x32, 0x34, 0xfc, 0x83, 0x78, 0xa8, 0x31, 0x2a, + 0xe3, 0x58, 0x39, 0xe7, 0xd8, 0x65, 0x80, 0x3d, 0x6c, 0x87, 0xda, 0xc1, 0x90, 0x37, 0x56, 0x17, + 0x56, 0x70, 0xe2, 0x5f, 0x89, 0x33, 0xac, 0x0b, 0x22, 0x74, 0xec, 0x1a, 0xa6, 0xc9, 0x87, 0x48, + 0x85, 0x8d, 0xdd, 0x84, 0x51, 0x30, 0x42, 0xaa, 0x13, 0x46, 0xc8, 0x6c, 0x02, 0xa8, 0xbf, 0x28, + 0x50, 0x5f, 0xb3, 0x8d, 0xfe, 0xc1, 0x94, 0xee, 0xca, 0x6e, 0x95, 0x72, 0x6e, 0xbd, 0x0e, 0xf3, + 0xbb, 0xd4, 0x5c, 0xec, 0x02, 0x7a, 0xde, 0x58, 0x3d, 0xc3, 0x3d, 0x93, 0x07, 0x91, 0x2e, 0xcb, + 0xca, 0x2e, 0xce, 0x1c, 0xef, 0x62, 0x65, 0x82, 0x8b, 0xc9, 0xbc, 0x40, 0xcb, 0xe7, 0x1c, 0x96, + 0x4f, 0x9d, 0x1c, 0x46, 0x24, 0x08, 0xd5, 0x17, 0xa1, 0x16, 0xc5, 0xdd, 0x53, 0x26, 0x75, 0x2f, + 0x11, 0x53, 0x57, 0xf8, 0x5c, 0x87, 0x3a, 0x25, 0xd4, 0x69, 0x71, 0x9d, 0x64, 0xc2, 0xd4, 0x53, + 0x11, 0x3a, 0xb3, 0xed, 0x1b, 0x8e, 0x69, 0x13, 0x9d, 0x04, 0x91, 0x1d, 0xf2, 0x5a, 0x2b, 0xf1, + 0x18, 0x72, 0x0e, 0xbb, 0xc1, 0x80, 0xcf, 0x7b, 0x9c, 0xa2, 0x51, 0x60, 0x72, 0xf4, 0x13, 0x73, + 0x31, 0x65, 0xd0, 0x01, 0xec, 0x93, 0x43, 0x8c, 0x7e, 0x15, 0xa3, 0x1f, 0x93, 0x69, 0x9b, 0x3c, + 0x3a, 0x2c, 0xc9, 0x12, 0x8f, 0xa6, 0x8f, 0xd1, 0x68, 0xa0, 0xc6, 0xd2, 0x97, 0x72, 0x72, 0xeb, + 0x2a, 0xb9, 0x30, 0x43, 0xae, 0x30, 0xe7, 0xca, 0x67, 0xa3, 0xa8, 0x7c, 0x7e, 0x52, 0x86, 0x79, + 0x36, 0xa8, 0xe2, 0x14, 0x9c, 0xa3, 0xe8, 0x77, 0x87, 0x12, 0xce, 0x04, 0x0e, 0xf5, 0x85, 0x52, + 0xb7, 0xe4, 0x32, 0x26, 0xf1, 0x28, 0x58, 0x29, 0x7d, 0x4d, 0x2a, 0x67, 0x22, 0x2b, 0x6e, 0x65, + 0x53, 0x2c, 0x6b, 0x02, 0x87, 0x16, 0x82, 0xd0, 0x95, 0xb0, 0x94, 0xd0, 0x54, 0x37, 0x74, 0x93, + 0xf6, 0x19, 0x9a, 0x04, 0x0e, 0xcd, 0x52, 0xe8, 0xc6, 0x6d, 0xb3, 0x50, 0xa7, 0x0c, 0x66, 0x99, + 0xb7, 0xcb, 0xa6, 0xb3, 0x84, 0xce, 0x61, 0xa3, 0x3e, 0x11, 0x1b, 0x20, 0x61, 0x43, 0x1e, 0x7e, + 0x8d, 0xdc, 0xf0, 0x7b, 0x16, 0xe6, 0x99, 0x9d, 0xcc, 0x74, 0x26, 0x31, 0x65, 0x84, 0xcd, 0x67, + 0x11, 0x26, 0x63, 0xa4, 0x39, 0x06, 0x23, 0x0b, 0xc9, 0xf8, 0xfa, 0xa7, 0x02, 0x8f, 0xef, 0x44, + 0xb6, 0xdd, 0x25, 0x41, 0x60, 0x0c, 0xc8, 0xda, 0xa8, 0x47, 0x0e, 0x6f, 0x5a, 0x41, 0xa8, 0x93, + 0xc3, 0xb1, 0x53, 0x54, 0x1b, 0x66, 0x03, 0x26, 0xd5, 0x2e, 0x2f, 0x97, 0x2f, 0xcc, 0xeb, 0x31, + 0xa9, 0xde, 0x86, 0x39, 0x1c, 0x46, 0xdc, 0x48, 0x7b, 0x66, 0xb9, 0x7c, 0xa1, 0xb1, 0xfa, 0x42, + 0x32, 0x40, 0x0b, 0xdb, 0x61, 0x83, 0x90, 0xd3, 0x57, 0x9d, 0xd0, 0x1f, 0xe9, 0x92, 0x95, 0xce, + 0x36, 0x2c, 0xe6, 0x44, 0xd4, 0x16, 0x94, 0x0f, 0xc8, 0x88, 0xf7, 0x8c, 0xfe, 0xab, 0x3e, 0x0b, + 0x95, 0x23, 0xba, 0x0a, 0xe3, 0x43, 0xbc, 0xc9, 0x5b, 0xe5, 0x7d, 0xd3, 0xd9, 0xc7, 0xd7, 0x4a, + 0xaf, 0x2a, 0xda, 0x33, 0x89, 0x03, 0xa2, 0x2f, 0x8a, 0xe4, 0x8b, 0xf6, 0x35, 0x68, 0x74, 0x83, + 0xc1, 0x86, 0x11, 0x1a, 0x28, 0xf8, 0x02, 0x34, 0x86, 0x29, 0x89, 0xc2, 0x69, 0x1b, 0x5c, 0x50, + 0x17, 0x45, 0xb4, 0x5f, 0x95, 0xa0, 0x5d, 0xec, 0x72, 0xe0, 0xd1, 0x76, 0x89, 0xef, 0xaf, 0xbb, + 0x26, 0x41, 0x17, 0x2a, 0x7a, 0x4c, 0xd2, 0xa8, 0x13, 0xdf, 0xa7, 0xc9, 0xe5, 0x73, 0x12, 0xa3, + 0x54, 0x0d, 0x66, 0xec, 0x38, 0xe4, 0xf9, 0x96, 0xf1, 0x9b, 0x6a, 0x40, 0x0b, 0x23, 0x27, 0x74, + 0x9c, 0xe7, 0xe0, 0xe5, 0x89, 0x39, 0x08, 0x3c, 0x96, 0x04, 0x41, 0x8f, 0x25, 0x22, 0x67, 0xae, + 0xf3, 0x0e, 0x9c, 0x29, 0x14, 0x2d, 0x48, 0xc8, 0x05, 0x39, 0x21, 0xaa, 0xdc, 0xe5, 0x6c, 0x52, + 0x6e, 0x81, 0xba, 0x49, 0xc2, 0xae, 0x71, 0xef, 0x8a, 0x63, 0x76, 0x2d, 0xa7, 0x47, 0x0e, 0x29, + 0x06, 0x97, 0xa1, 0xc1, 0xd7, 0xc5, 0x49, 0xd8, 0xeb, 0xba, 0xc8, 0x1a, 0xb7, 0x5c, 0xd6, 0xbe, + 0x0a, 0x73, 0xa2, 0x31, 0x2a, 0x37, 0x34, 0xee, 0xf5, 0xc8, 0x21, 0x76, 0x71, 0x5e, 0xe7, 0x14, + 0xf2, 0x51, 0x02, 0xf5, 0x29, 0x1f, 0x29, 0xed, 0x3b, 0x74, 0xe1, 0x9e, 0xed, 0x50, 0xe0, 0x9d, + 0xd4, 0x8e, 0xfa, 0x1e, 0x2c, 0xb2, 0x20, 0x0a, 0x86, 0xda, 0x15, 0x4c, 0xca, 0x8b, 0xf1, 0x2c, + 0x94, 0x6f, 0x86, 0xe7, 0x43, 0xe0, 0xb2, 0x84, 0xe4, 0x6d, 0x75, 0xde, 0x85, 0xa5, 0x62, 0xe1, + 0x82, 0x94, 0x3c, 0x27, 0xa7, 0xe4, 0x54, 0x9c, 0x12, 0xb1, 0x75, 0x21, 0x27, 0x87, 0xb0, 0x40, + 0xab, 0x4e, 0x8f, 0x38, 0x66, 0x37, 0x18, 0xa0, 0xfb, 0xcb, 0xd0, 0x08, 0xf0, 0xc4, 0xa3, 0x1b, + 0x0c, 0xd2, 0x55, 0x86, 0xc0, 0xa2, 0x12, 0x7d, 0xdb, 0x22, 0x4e, 0xc8, 0x24, 0x58, 0x56, 0x44, + 0x16, 0x2d, 0xb0, 0x01, 0xe1, 0xcb, 0x7a, 0xb6, 0xb8, 0x4a, 0x68, 0xed, 0xe7, 0x55, 0x98, 0xe5, + 0x08, 0xc1, 0x83, 0x01, 0xba, 0x98, 0x4b, 0x0a, 0x10, 0xa3, 0x58, 0x81, 0xed, 0x1f, 0xa5, 0x29, + 0x67, 0x94, 0xb8, 0xa7, 0x2a, 0xcb, 0x7b, 0xaa, 0x4c, 0x9f, 0x66, 0xf2, 0x7d, 0xca, 0xf8, 0x55, + 0xc9, 0xfb, 0x75, 0x11, 0x5a, 0x01, 0x4e, 0x02, 0x3b, 0xb6, 0x11, 0xee, 0xb9, 0xfe, 0x90, 0xaf, + 0xd3, 0x2a, 0x7a, 0x8e, 0x4f, 0x97, 0x3b, 0x8c, 0x97, 0x4c, 0x42, 0x6c, 0x96, 0xc9, 0x70, 0x69, + 0xc9, 0x67, 0x9c, 0x78, 0x32, 0x62, 0x8b, 0x6b, 0x99, 0xc9, 0xfa, 0x16, 0x04, 0x96, 0xeb, 0xe0, + 0x21, 0x07, 0x9b, 0x73, 0x44, 0x16, 0xf5, 0x7c, 0x18, 0x0c, 0xae, 0xf9, 0xee, 0x90, 0xcf, 0xf3, + 0x31, 0x89, 0x9e, 0xbb, 0x4e, 0x48, 0x9c, 0x10, 0x75, 0xd9, 0xb2, 0x5a, 0x64, 0x51, 0x5d, 0x4e, + 0xe2, 0x84, 0x33, 0xa7, 0xc7, 0x24, 0xc5, 0x4f, 0x40, 0x0e, 0x71, 0x16, 0x99, 0xd7, 0xe9, 0xbf, + 0x52, 0xe6, 0x16, 0xe4, 0xcc, 0x65, 0xa6, 0xb7, 0x56, 0x6e, 0x7a, 0x4b, 0x8f, 0x79, 0x16, 0xa5, + 0x63, 0x9e, 0x97, 0x61, 0xd6, 0xf5, 0xe8, 0xde, 0x3d, 0x68, 0xab, 0x38, 0x2c, 0x9e, 0x94, 0x0b, + 0xc5, 0xca, 0x36, 0xfb, 0xca, 0x06, 0x40, 0x2c, 0xab, 0xbe, 0x09, 0x0b, 0xee, 0xde, 0x9e, 0x6d, + 0x39, 0x64, 0x27, 0x0a, 0xf6, 0x71, 0x6d, 0x77, 0x0a, 0x41, 0xbd, 0xc4, 0xd5, 0xb7, 0xe5, 0xaf, + 0x7a, 0x56, 0x9c, 0xce, 0xe5, 0x46, 0xc8, 0x66, 0x55, 0x2c, 0x2e, 0xa7, 0xb1, 0xb8, 0x48, 0x3c, + 0xdc, 0x84, 0x0a, 0xc5, 0xf4, 0x0c, 0x06, 0x48, 0x64, 0x31, 0x2b, 0xa1, 0xd1, 0xdf, 0x27, 0xb8, + 0xeb, 0x68, 0x2f, 0xb1, 0xd5, 0x8e, 0xc8, 0xe3, 0xb3, 0xee, 0xe3, 0xf1, 0xac, 0xdb, 0x79, 0x0d, + 0xe6, 0x44, 0xa7, 0x0a, 0x06, 0xea, 0x69, 0x71, 0xa0, 0xd6, 0xc4, 0x31, 0xf9, 0x13, 0x05, 0x16, + 0x32, 0xae, 0x51, 0xe9, 0xd0, 0x0a, 0x6d, 0xc2, 0x2d, 0x30, 0x42, 0x55, 0x61, 0xc6, 0x24, 0x41, + 0x9f, 0x0f, 0x12, 0xfc, 0x9f, 0xf7, 0xa4, 0x9c, 0xac, 0x11, 0x35, 0x98, 0xb3, 0xb6, 0x7b, 0xd4, + 0x50, 0xcf, 0x8d, 0x1c, 0x33, 0x39, 0xc5, 0x11, 0x78, 0xb8, 0x4e, 0xdc, 0xee, 0xad, 0x19, 0xe6, + 0x80, 0xb0, 0x33, 0xbd, 0x0a, 0xf6, 0x49, 0x66, 0x6a, 0x26, 0xd4, 0x6e, 0x5b, 0x5e, 0xb0, 0xee, + 0x0e, 0x87, 0x34, 0xd5, 0x26, 0x09, 0xe9, 0xfe, 0x51, 0xc1, 0x80, 0x71, 0x8a, 0x46, 0xd3, 0x24, + 0x7b, 0x46, 0x64, 0x87, 0x54, 0x34, 0x2e, 0x0d, 0x02, 0x0b, 0xd7, 0xac, 0x81, 0xeb, 0x6c, 0x30, + 0x6d, 0xd6, 0x4f, 0x81, 0xa3, 0x7d, 0x54, 0x82, 0x16, 0x56, 0xbb, 0x75, 0x04, 0x96, 0x89, 0x4a, + 0xe7, 0xa1, 0x82, 0x03, 0x9d, 0x6f, 0x08, 0xf2, 0x8b, 0x7b, 0xf6, 0x59, 0x5d, 0x85, 0xaa, 0xeb, + 0xe1, 0x96, 0x8d, 0x95, 0xbf, 0x8e, 0x28, 0x28, 0x9f, 0xcf, 0xe8, 0x5c, 0x52, 0x7d, 0x0d, 0x80, + 0x9d, 0x5d, 0xde, 0x4c, 0x27, 0xdf, 0x49, 0x7a, 0x82, 0x34, 0x0d, 0x1c, 0xdb, 0xde, 0xd0, 0x61, + 0x9a, 0x1e, 0xcc, 0xc8, 0x4c, 0x75, 0x0d, 0x9a, 0xd8, 0xbd, 0xed, 0x78, 0xa7, 0x86, 0xf1, 0x9d, + 0xdc, 0x4a, 0x46, 0x43, 0xfb, 0x81, 0xc2, 0xc3, 0x42, 0xbf, 0xf6, 0x08, 0x8b, 0x65, 0xea, 0xae, + 0x32, 0xb5, 0xbb, 0x1d, 0xa8, 0x0d, 0x23, 0x69, 0x83, 0x98, 0xd0, 0x69, 0x98, 0xcb, 0x13, 0xc3, + 0xac, 0x7d, 0xa0, 0x40, 0xfb, 0x2d, 0xd7, 0x72, 0xf0, 0xc3, 0x15, 0xcf, 0xb3, 0xf9, 0xd9, 0xdc, + 0x89, 0x72, 0xf5, 0x12, 0xd4, 0x0d, 0xa6, 0xea, 0x84, 0x3c, 0x5d, 0x63, 0x36, 0x7a, 0xa9, 0x9c, + 0xb0, 0xf2, 0x2e, 0x8b, 0x2b, 0x6f, 0xed, 0x63, 0x05, 0x9a, 0xcc, 0xe1, 0xaf, 0x47, 0x56, 0x78, + 0xa2, 0x7e, 0xbc, 0x02, 0xb5, 0xc3, 0xc8, 0x0a, 0xa7, 0x44, 0x4d, 0x22, 0x9b, 0xcf, 0x7d, 0xb9, + 0x20, 0xf7, 0xda, 0xef, 0x14, 0x78, 0x2a, 0x1b, 0xa6, 0x2b, 0xfd, 0x3e, 0xf1, 0x1e, 0x04, 0xb4, + 0xa5, 0x9d, 0xc4, 0x4c, 0xc1, 0x4e, 0xc2, 0x27, 0x7d, 0x62, 0x1d, 0x11, 0xff, 0x4a, 0xc0, 0xcf, + 0x2c, 0x04, 0x4e, 0x61, 0xd7, 0x75, 0xf2, 0x3e, 0xe9, 0x3f, 0xfc, 0x5d, 0xff, 0x54, 0x81, 0x27, + 0x36, 0x93, 0x01, 0x74, 0xdb, 0x37, 0x9c, 0x60, 0x8f, 0xf8, 0xfe, 0x03, 0xe8, 0xf7, 0x9b, 0x30, + 0xef, 0x90, 0xbb, 0x69, 0xdb, 0x7c, 0x28, 0x4d, 0x52, 0x95, 0x15, 0xa6, 0xab, 0x29, 0xda, 0x9f, + 0x14, 0x68, 0x31, 0x3b, 0x37, 0xac, 0xfe, 0xc1, 0x03, 0x70, 0x6c, 0x0d, 0x9a, 0x07, 0xd8, 0x12, + 0xa5, 0xa6, 0x2c, 0x95, 0x19, 0x8d, 0x29, 0x5d, 0xfb, 0x44, 0x81, 0xc5, 0xf8, 0xa8, 0xfe, 0xc8, + 0x7a, 0x10, 0x60, 0xdb, 0x80, 0x05, 0x76, 0x24, 0x72, 0x12, 0xe7, 0xb2, 0x2a, 0x53, 0x7a, 0xf7, + 0x33, 0x05, 0x16, 0x98, 0xa5, 0xab, 0x4e, 0x48, 0xfc, 0x13, 0xf9, 0xf6, 0x06, 0x34, 0x88, 0x13, + 0xfa, 0x86, 0x33, 0x6d, 0xb5, 0x12, 0xc5, 0xa7, 0x2c, 0x58, 0x1f, 0x2b, 0xa0, 0xa2, 0xa9, 0x0d, + 0x2b, 0x18, 0x5a, 0x41, 0xf0, 0x00, 0xc2, 0x3f, 0x5d, 0xc7, 0xfe, 0xa5, 0xc0, 0x69, 0xc1, 0x4a, + 0x37, 0x0a, 0x1f, 0x96, 0xae, 0xa9, 0xaf, 0x42, 0x9d, 0xce, 0xa1, 0xe2, 0x61, 0xf1, 0x24, 0xe3, + 0xa9, 0x30, 0x5d, 0x9d, 0x21, 0xd1, 0x23, 0x7d, 0xd7, 0x31, 0x59, 0x29, 0x9b, 0xd7, 0x25, 0x1e, + 0x1d, 0xea, 0x1d, 0xc1, 0xcc, 0xba, 0xe1, 0xf4, 0x89, 0xfd, 0x48, 0xb8, 0xaf, 0x7d, 0xa8, 0x40, + 0x93, 0x89, 0x3c, 0x3c, 0xee, 0x68, 0x3f, 0x8d, 0x81, 0xf6, 0xd0, 0x45, 0x9a, 0x42, 0x61, 0x49, + 0xb0, 0x22, 0xae, 0x05, 0xbf, 0x78, 0x18, 0xbc, 0x01, 0x8d, 0xfe, 0xbe, 0xe1, 0x0c, 0xa6, 0x06, + 0x82, 0x28, 0xae, 0xed, 0xc3, 0xe3, 0xdb, 0xfe, 0xc0, 0x70, 0xac, 0x6f, 0xa1, 0xc5, 0x75, 0xf6, + 0x09, 0x5d, 0xfb, 0xff, 0x4c, 0x97, 0x73, 0x17, 0x31, 0x27, 0x0b, 0xe2, 0x01, 0x2c, 0xb2, 0xe3, + 0x6e, 0x61, 0x5d, 0x43, 0xf7, 0xc8, 0x86, 0xc9, 0xb6, 0xbd, 0x0a, 0x3b, 0xb8, 0xe7, 0xa4, 0x7c, + 0xed, 0xc1, 0x2f, 0xd2, 0xd3, 0x6b, 0x8f, 0x73, 0x00, 0x86, 0x69, 0xbe, 0xe3, 0xfa, 0xa6, 0xe5, + 0xc4, 0x8b, 0x52, 0x81, 0xa3, 0xbd, 0x05, 0x73, 0x74, 0x97, 0x7e, 0x5b, 0x38, 0xb8, 0x9e, 0x78, + 0xb4, 0x2e, 0x1e, 0x7a, 0x97, 0xe4, 0x43, 0x6f, 0x6d, 0x07, 0xce, 0xe4, 0x3a, 0x8e, 0x01, 0xfa, + 0x0a, 0x3b, 0x8f, 0x8f, 0x1b, 0xe1, 0x10, 0x88, 0xcf, 0x7e, 0xc4, 0xf6, 0x75, 0x49, 0x50, 0x3b, + 0x82, 0xb3, 0x39, 0x8b, 0x57, 0x3c, 0xcf, 0x77, 0x8f, 0x78, 0xe8, 0xef, 0xd7, 0xb2, 0xbc, 0x7e, + 0x2b, 0x65, 0xd6, 0x6f, 0x85, 0xed, 0x4a, 0x4b, 0xcb, 0xff, 0x52, 0xbb, 0x3f, 0x56, 0x60, 0x81, + 0x37, 0x6c, 0x9a, 0xbc, 0xa9, 0xe7, 0xa0, 0xca, 0xee, 0xf1, 0x78, 0x23, 0x8b, 0x49, 0x23, 0xf1, + 0x3d, 0xa3, 0xce, 0x05, 0xf2, 0xf8, 0x2a, 0x15, 0x8d, 0x83, 0x4b, 0x09, 0x5c, 0x27, 0xde, 0xae, + 0x71, 0x21, 0xed, 0x66, 0x0c, 0xc7, 0x0d, 0x62, 0x93, 0xcf, 0xea, 0xbf, 0xb6, 0x05, 0x4d, 0xbc, + 0x30, 0x4c, 0xfd, 0xbb, 0x6f, 0x53, 0x37, 0xa0, 0x85, 0xa6, 0x3e, 0x97, 0x7e, 0x25, 0xd8, 0xa5, + 0xbe, 0x8b, 0x83, 0xfb, 0xbe, 0x2d, 0x5e, 0x82, 0x53, 0x71, 0x2c, 0xd9, 0xa3, 0x1a, 0x66, 0x6f, + 0xcc, 0x9d, 0x06, 0x5d, 0xd7, 0x2c, 0xad, 0xbb, 0xce, 0x11, 0xf1, 0x03, 0xe9, 0x21, 0x0e, 0x53, + 0x91, 0xc6, 0x23, 0xa7, 0xd4, 0x15, 0x50, 0xfb, 0x82, 0x06, 0x3f, 0x44, 0x2a, 0xe1, 0x21, 0x52, + 0xc1, 0x17, 0xf5, 0xcb, 0x70, 0x26, 0x42, 0xab, 0x77, 0x1c, 0x9f, 0x18, 0x26, 0x9e, 0x9a, 0x08, + 0x65, 0xa8, 0xf8, 0xa3, 0xf6, 0x3e, 0x74, 0xc4, 0x7e, 0xf5, 0x48, 0xb8, 0xe3, 0x5b, 0x47, 0x42, + 0xdf, 0xf8, 0x49, 0xa8, 0x22, 0x9d, 0x84, 0xa6, 0x27, 0xa7, 0x25, 0xe9, 0xe4, 0xf4, 0x29, 0xa8, + 0x5b, 0x01, 0x37, 0x80, 0xed, 0xd6, 0xf4, 0x94, 0xa1, 0x19, 0xb0, 0xc8, 0xb2, 0xc9, 0x6f, 0x08, + 0xb0, 0x89, 0x0e, 0xd4, 0x18, 0x14, 0x93, 0x46, 0x12, 0x7a, 0xec, 0x53, 0x95, 0xb1, 0x37, 0x44, + 0x5a, 0x0f, 0x16, 0xf9, 0x35, 0xe2, 0x8e, 0x31, 0xb0, 0x1c, 0x56, 0x5d, 0xcf, 0x01, 0x78, 0xc6, + 0x20, 0x7e, 0xa4, 0xc0, 0xee, 0x43, 0x04, 0x0e, 0xfd, 0x1e, 0xec, 0xbb, 0x77, 0xf9, 0xf7, 0x12, + 0xfb, 0x9e, 0x72, 0xb4, 0xbf, 0x55, 0xa0, 0xde, 0xb3, 0x06, 0x8e, 0x61, 0xeb, 0xe4, 0x50, 0x7d, + 0x01, 0xaa, 0x6c, 0xed, 0xcd, 0xc1, 0x12, 0x9f, 0x07, 0x32, 0x09, 0xb6, 0x69, 0xd0, 0xc9, 0xe1, + 0xf5, 0xc7, 0x74, 0x2e, 0xa7, 0x5e, 0x8d, 0x2f, 0x42, 0xb7, 0xd8, 0x99, 0x05, 0x9f, 0x48, 0xce, + 0x16, 0x28, 0x72, 0x09, 0xa6, 0x2f, 0x6b, 0xd1, 0x86, 0xfb, 0xb8, 0x26, 0xe0, 0x23, 0x5b, 0x6e, + 0x98, 0x2d, 0x17, 0x78, 0xc3, 0x4c, 0x8e, 0x6a, 0x18, 0xb8, 0xdb, 0xe7, 0xd3, 0xa1, 0xac, 0xc1, + 0x0e, 0x02, 0xb8, 0x06, 0x93, 0xa3, 0x1a, 0xfb, 0x91, 0x33, 0xb8, 0xe3, 0xf1, 0x43, 0x22, 0x59, + 0xe3, 0x3a, 0x7e, 0xe2, 0x1a, 0x4c, 0x8e, 0x6a, 0xf8, 0x58, 0x3b, 0xf1, 0xb0, 0x3a, 0xab, 0xc1, + 0xca, 0x2a, 0xd7, 0x60, 0x72, 0xea, 0x2d, 0x68, 0x0d, 0x48, 0xa8, 0xbb, 0xee, 0x70, 0x6d, 0xb4, + 0xc9, 0xcf, 0xd3, 0xd9, 0x5b, 0xac, 0x65, 0x49, 0x77, 0x33, 0x23, 0xc4, 0xac, 0xe4, 0x74, 0x55, + 0x1f, 0xce, 0xba, 0x0e, 0x65, 0xed, 0x18, 0x7e, 0x68, 0xf5, 0x2d, 0xcf, 0x70, 0xc2, 0x75, 0xd7, + 0x71, 0xb0, 0x9e, 0xeb, 0xe4, 0x90, 0xbf, 0xd0, 0xba, 0x28, 0x19, 0xdf, 0x9e, 0xa4, 0x71, 0xfd, + 0x31, 0x7d, 0xb2, 0x49, 0xf5, 0xdb, 0xb0, 0x9c, 0x13, 0xd8, 0xb0, 0x82, 0xbe, 0xd8, 0x2c, 0x7b, + 0xd0, 0x75, 0x69, 0x72, 0xb3, 0x19, 0xa5, 0xeb, 0x8f, 0xe9, 0xc7, 0x1a, 0xe6, 0x01, 0xbc, 0xed, + 0x1e, 0x10, 0x67, 0x6d, 0x44, 0x65, 0xb7, 0x36, 0xf0, 0x58, 0xbe, 0x20, 0x80, 0x92, 0x50, 0x1a, + 0x40, 0x89, 0xbd, 0x56, 0x87, 0x59, 0xcf, 0x18, 0xd9, 0xae, 0x61, 0x6a, 0xdf, 0x9f, 0x01, 0x88, + 0x33, 0x17, 0xe0, 0x72, 0x4d, 0xc2, 0x7a, 0xbb, 0x10, 0xeb, 0x9e, 0x3d, 0x12, 0xd0, 0xbe, 0x59, + 0x8c, 0xf6, 0xa7, 0x27, 0xa1, 0x9d, 0x59, 0xc8, 0xe0, 0x7d, 0x35, 0x83, 0xf7, 0x76, 0x21, 0xde, + 0x79, 0xe3, 0x1c, 0xf1, 0xab, 0x19, 0xc4, 0xb7, 0x0b, 0x11, 0xcf, 0x75, 0x38, 0xe6, 0x57, 0x33, + 0x98, 0x6f, 0x17, 0x62, 0x9e, 0xeb, 0x70, 0xd4, 0xaf, 0x66, 0x50, 0xdf, 0x2e, 0x44, 0x3d, 0xd7, + 0xe1, 0xb8, 0xdf, 0x19, 0x8b, 0x7b, 0xed, 0x18, 0xdc, 0x33, 0x3b, 0x79, 0xe4, 0xef, 0x14, 0x00, + 0xa1, 0x56, 0x6c, 0x31, 0x03, 0x84, 0xd4, 0xe2, 0x58, 0x28, 0x7c, 0xb7, 0x0c, 0x4d, 0x4c, 0x13, + 0x9b, 0x64, 0x9c, 0x3d, 0x37, 0xff, 0xa2, 0x43, 0x29, 0x78, 0xd1, 0xa1, 0x3e, 0x0f, 0x8b, 0x8c, + 0x41, 0x84, 0xcb, 0x0f, 0x36, 0x6f, 0xe5, 0x3f, 0xe0, 0xb5, 0x4e, 0x14, 0x84, 0xee, 0x70, 0xc3, + 0x08, 0x8d, 0x78, 0x09, 0x9b, 0x72, 0xc4, 0x4b, 0xb7, 0x99, 0xdc, 0x43, 0x46, 0x9f, 0xf9, 0x5c, + 0xe1, 0x93, 0x13, 0x52, 0x54, 0x23, 0xb4, 0x86, 0xc4, 0x8d, 0x42, 0x7e, 0x7f, 0x16, 0x93, 0x74, + 0x7a, 0x1a, 0x12, 0xd3, 0x32, 0xf0, 0xaa, 0x8a, 0xbf, 0xcb, 0x48, 0x18, 0x38, 0x4d, 0xa4, 0x57, + 0x6f, 0xfc, 0xa1, 0x61, 0xca, 0x99, 0xe2, 0x9a, 0x0c, 0xdf, 0xac, 0x5a, 0xa1, 0x15, 0x5f, 0x52, + 0xb1, 0xbb, 0x32, 0x89, 0x47, 0xa7, 0xf5, 0xdd, 0x28, 0x18, 0xdd, 0xb4, 0x1c, 0x31, 0x3c, 0x0d, + 0x36, 0xad, 0xe7, 0xbf, 0x68, 0xbf, 0x57, 0xe0, 0x94, 0x50, 0x0b, 0xba, 0x24, 0x34, 0x30, 0x2e, + 0xd2, 0xab, 0x23, 0xe5, 0xf8, 0x57, 0x47, 0x1b, 0xb0, 0x30, 0x90, 0xf7, 0x6e, 0x53, 0x6c, 0xc1, + 0xb2, 0x2a, 0xd2, 0xf3, 0xa8, 0xf2, 0x54, 0xcf, 0xa3, 0xb4, 0xbf, 0x2a, 0xb0, 0x90, 0x99, 0x1b, + 0x27, 0x4e, 0xfa, 0x2f, 0x03, 0x58, 0x09, 0xec, 0x32, 0x47, 0xf3, 0x32, 0x1e, 0x75, 0x41, 0xb0, + 0xe8, 0xbe, 0xae, 0x7c, 0xb2, 0xfb, 0xba, 0x37, 0xa0, 0xe1, 0xa5, 0x81, 0xce, 0xec, 0x20, 0x0b, + 0x52, 0xa0, 0x8b, 0xe2, 0xda, 0x0f, 0x15, 0x58, 0xcc, 0x95, 0x45, 0xbc, 0x39, 0xa3, 0x03, 0x2c, + 0xb9, 0x39, 0xa3, 0x84, 0x80, 0xdc, 0x52, 0x16, 0xb9, 0xb6, 0x75, 0x24, 0x3e, 0xc0, 0xe4, 0xe4, + 0x18, 0xd4, 0xcc, 0x8c, 0x45, 0xcd, 0xdf, 0x15, 0x58, 0x2a, 0x5e, 0x57, 0x3c, 0x8a, 0xb1, 0xff, + 0x50, 0x81, 0xf6, 0xb8, 0x79, 0xe5, 0x0b, 0x4b, 0x41, 0x8a, 0xfb, 0x64, 0x69, 0xf6, 0x28, 0xc6, + 0xfe, 0x54, 0x0c, 0x7b, 0x61, 0x42, 0xd6, 0x7e, 0x54, 0x8a, 0x7d, 0x4f, 0x16, 0x99, 0x8f, 0xa0, + 0xef, 0xea, 0x45, 0x68, 0x31, 0x17, 0x84, 0x27, 0x1b, 0xec, 0x3a, 0x28, 0xc7, 0xd7, 0xbe, 0x19, + 0xc7, 0x49, 0x58, 0x84, 0x7c, 0x5e, 0xd8, 0xd4, 0x7e, 0x91, 0x60, 0x2d, 0x59, 0xa2, 0x3f, 0x94, + 0xf1, 0x4e, 0xd1, 0x22, 0x2c, 0xab, 0x04, 0xb4, 0x24, 0xdb, 0x85, 0xff, 0x75, 0xb4, 0x24, 0x71, + 0x12, 0x96, 0x92, 0xda, 0x07, 0x0a, 0x3c, 0x31, 0x76, 0x6b, 0x34, 0x31, 0x62, 0xc2, 0x22, 0xaa, + 0x24, 0x2f, 0xa2, 0x32, 0x2e, 0x95, 0x4f, 0x36, 0xf8, 0x7f, 0xa9, 0xc0, 0x93, 0x13, 0x16, 0xad, + 0x99, 0x4c, 0x29, 0xd3, 0x66, 0x2a, 0xd3, 0xa9, 0x92, 0x74, 0x1b, 0x76, 0x6c, 0x9c, 0xd3, 0xe1, + 0x53, 0x16, 0x87, 0x8f, 0xf6, 0x1b, 0x05, 0x9e, 0x99, 0x62, 0xf3, 0xf7, 0xc5, 0x74, 0x7a, 0xec, + 0xdb, 0x32, 0xed, 0xb7, 0x0a, 0x9c, 0x9f, 0x6e, 0xf3, 0xf8, 0xb0, 0xf5, 0xfc, 0xd7, 0x22, 0x5e, + 0xb3, 0x3b, 0x51, 0x21, 0x4d, 0x8a, 0x54, 0xe5, 0x44, 0x1c, 0x97, 0x32, 0x38, 0xfe, 0x4c, 0x68, + 0xc5, 0x5f, 0x30, 0xc4, 0x67, 0xa5, 0xe9, 0x2b, 0x3d, 0x81, 0xa5, 0x75, 0x05, 0x38, 0xe7, 0x77, + 0x4c, 0x63, 0xca, 0xb5, 0x50, 0x96, 0x4b, 0x72, 0x59, 0xbe, 0x02, 0xf3, 0x1b, 0xc4, 0xee, 0x06, + 0x83, 0xfc, 0x93, 0xe7, 0x69, 0x0f, 0xb4, 0x5a, 0xd0, 0x14, 0x4d, 0x04, 0x9e, 0xf6, 0x0e, 0x3c, + 0xd1, 0x23, 0xe1, 0x15, 0xcf, 0x5b, 0x33, 0xfa, 0x07, 0x34, 0xd4, 0x8e, 0xd9, 0xc3, 0x97, 0x6e, + 0x93, 0xde, 0x54, 0xd3, 0x9d, 0x49, 0x90, 0x2a, 0xf0, 0x67, 0x5f, 0x12, 0x4f, 0xbb, 0x05, 0x9d, + 0x71, 0x86, 0xef, 0xe7, 0x45, 0xb1, 0xf6, 0xc7, 0x12, 0xcc, 0x5d, 0xbd, 0x17, 0xb2, 0xc7, 0x9d, + 0x3d, 0x82, 0xbf, 0xad, 0x09, 0xf0, 0xde, 0x22, 0xad, 0x50, 0x31, 0x9d, 0xdd, 0x5c, 0x95, 0xf2, + 0x9b, 0xab, 0x75, 0x00, 0x12, 0x5b, 0x0b, 0xf8, 0x0d, 0xf9, 0x33, 0x3c, 0xf5, 0x62, 0x33, 0x29, + 0xc1, 0x9f, 0xf4, 0x09, 0x6a, 0xb4, 0x06, 0x77, 0x8d, 0x7b, 0xdd, 0x60, 0x20, 0xfc, 0x4e, 0x92, + 0x5d, 0x94, 0xe7, 0xf8, 0x34, 0x66, 0x89, 0xe6, 0xad, 0x68, 0xc8, 0x6b, 0xb5, 0xc4, 0xcb, 0x3c, + 0x4a, 0xac, 0x66, 0x1f, 0x25, 0x76, 0xb6, 0x61, 0x21, 0xd3, 0x9d, 0x82, 0xc7, 0x78, 0xe7, 0xe5, + 0x57, 0xb3, 0xad, 0xac, 0x53, 0xe2, 0xf3, 0xbc, 0x3f, 0x94, 0xa0, 0x9e, 0x7c, 0x50, 0x0d, 0x38, + 0xe3, 0x13, 0x03, 0x7f, 0x0c, 0x89, 0x4c, 0x1a, 0x2c, 0xe1, 0xfd, 0xf8, 0x97, 0xb2, 0x96, 0x56, + 0xf4, 0x22, 0x69, 0x16, 0xa6, 0x62, 0x4b, 0x53, 0x3c, 0xb7, 0x5d, 0x01, 0x75, 0x18, 0x0c, 0xae, + 0x59, 0x7e, 0x10, 0x76, 0x5d, 0xd3, 0xda, 0x1b, 0x09, 0xa7, 0xce, 0x05, 0x5f, 0x72, 0x2f, 0x1a, + 0x67, 0xc6, 0xbe, 0x68, 0x4c, 0x7e, 0xdb, 0xd6, 0x79, 0x17, 0x3a, 0xe3, 0xbb, 0x5e, 0x10, 0xd2, + 0xff, 0x93, 0x43, 0x1a, 0xdf, 0xd9, 0xdd, 0x20, 0x23, 0xf6, 0x4b, 0x4a, 0x21, 0xa2, 0x7b, 0x50, + 0x8b, 0xd9, 0x78, 0x74, 0x30, 0xf2, 0xc8, 0x8d, 0xc4, 0x58, 0x4c, 0xca, 0x0f, 0x26, 0xeb, 0x5c, + 0x9f, 0xc2, 0xc9, 0x36, 0x42, 0x12, 0x84, 0x02, 0x9c, 0x98, 0xe3, 0x39, 0xbe, 0xf6, 0x36, 0xa8, + 0x74, 0x20, 0xb9, 0x4e, 0x40, 0x84, 0xb3, 0xe9, 0x65, 0x68, 0xac, 0x47, 0xbe, 0x4f, 0x9c, 0x70, + 0xc7, 0x18, 0xc4, 0xbf, 0xdd, 0x12, 0x59, 0x14, 0x62, 0xbd, 0xf4, 0x74, 0x9a, 0x9d, 0x68, 0x08, + 0x9c, 0xb5, 0xa7, 0xbf, 0x71, 0x76, 0xdb, 0x23, 0xce, 0x7b, 0x5b, 0xdd, 0xec, 0x8f, 0xc4, 0x5f, + 0xc7, 0xbf, 0xbb, 0x55, 0x64, 0xbd, 0xf4, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x54, 0x95, + 0x23, 0x6a, 0x3e, 0x00, 0x00, } diff --git a/pkg/proto/sdkws/ws.proto b/pkg/proto/sdkws/ws.proto index baa0eb2ee..cc369a3c0 100644 --- a/pkg/proto/sdkws/ws.proto +++ b/pkg/proto/sdkws/ws.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -import "Open-IM-Server/pkg/proto/sdk_ws/wrappers.proto"; -option go_package = "Open_IM/pkg/proto/sdk_ws;sdkws"; +import "Open-IM-Server/pkg/proto/sdkws/wrappers.proto"; +option go_package = "Open_IM/pkg/proto/sdkws;sdkws"; package sdkws;