From a7f44b6ce7ce15e0d247595fa7b8aa4e9d594af5 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 23 Dec 2022 16:05:51 +0800 Subject: [PATCH] callback update --- internal/rpc/msg/extend_msg.go | 67 +++++ internal/rpc/msg/extend_msg.notification.go | 8 + internal/rpc/msg/extend_msg_callback.go | 83 +++--- pkg/base_info/msg.go | 1 + pkg/proto/msg/msg.pb.go | 288 ++++++++++---------- pkg/proto/msg/msg.proto | 5 +- 6 files changed, 265 insertions(+), 187 deletions(-) diff --git a/internal/rpc/msg/extend_msg.go b/internal/rpc/msg/extend_msg.go index 6be933548..a7ba9ddd1 100644 --- a/internal/rpc/msg/extend_msg.go +++ b/internal/rpc/msg/extend_msg.go @@ -1,6 +1,7 @@ package msg import ( + "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" "Open_IM/pkg/common/log" "Open_IM/pkg/proto/msg" @@ -17,6 +18,40 @@ func (rpc *rpcChat) SetMessageReactionExtensions(ctx context.Context, req *msg.S var rResp msg.SetMessageReactionExtensionsResp rResp.ClientMsgID = req.ClientMsgID rResp.MsgFirstModifyTime = req.MsgFirstModifyTime + callbackResp := callbackSetMessageReactionExtensions(req) + if callbackResp.ActionCode != constant.ActionAllow || callbackResp.ErrCode != 0 { + rResp.ErrCode = int32(callbackResp.ErrCode) + rResp.ErrMsg = callbackResp.ErrMsg + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = callbackResp.ErrMsg + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + //if ExternalExtension + if req.IsExternalExtensions { + var isHistory bool + if req.IsReact { + isHistory = false + } else { + isHistory = true + } + rResp.MsgFirstModifyTime = callbackResp.MsgFirstModifyTime + rResp.Result = callbackResp.ResultReactionExtensionList + ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, isHistory, false) + return &rResp, nil + } + for _, v := range callbackResp.ResultReactionExtensionList { + if v.ErrCode == 0 { + req.ReactionExtensionList[v.KeyValue.TypeKey] = v.KeyValue + } else { + delete(req.ReactionExtensionList, v.KeyValue.TypeKey) + rResp.Result = append(rResp.Result, v) + } + } isExists, err := db.DB.JudgeMessageReactionEXISTS(req.ClientMsgID, req.SessionType) if err != nil { rResp.ErrCode = 100 @@ -243,6 +278,38 @@ func (rpc *rpcChat) AddMessageReactionExtensions(ctx context.Context, req *msg.M func (rpc *rpcChat) DeleteMessageReactionExtensions(ctx context.Context, req *msg.DeleteMessageListReactionExtensionsReq) (resp *msg.DeleteMessageListReactionExtensionsResp, err error) { log.Debug(req.OperationID, utils.GetSelfFuncName(), "rpc args is:", req.String()) var rResp msg.DeleteMessageListReactionExtensionsResp + callbackResp := callbackDeleteMessageReactionExtensions(req) + if callbackResp.ActionCode != constant.ActionAllow || callbackResp.ErrCode != 0 { + rResp.ErrCode = int32(callbackResp.ErrCode) + rResp.ErrMsg = callbackResp.ErrMsg + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = callbackResp.ErrMsg + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + //if ExternalExtension + if req.IsExternalExtensions { + rResp.Result = callbackResp.ResultReactionExtensionList + ExtendMessageDeleteNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, false, false) + return &rResp, nil + + } + for _, v := range callbackResp.ResultReactionExtensionList { + if v.ErrCode != 0 { + func(req *[]*server_api_params.KeyValue, typeKey string) { + for i := 0; i < len(*req); i++ { + if (*req)[i].TypeKey == typeKey { + *req = append((*req)[:i], (*req)[i+1:]...) + } + } + }(&req.ReactionExtensionList, v.KeyValue.TypeKey) + rResp.Result = append(rResp.Result, v) + } + } isExists, err := db.DB.JudgeMessageReactionEXISTS(req.ClientMsgID, req.SessionType) if err != nil { rResp.ErrCode = 100 diff --git a/internal/rpc/msg/extend_msg.notification.go b/internal/rpc/msg/extend_msg.notification.go index 6867de511..971f2f797 100644 --- a/internal/rpc/msg/extend_msg.notification.go +++ b/internal/rpc/msg/extend_msg.notification.go @@ -25,6 +25,10 @@ func ExtendMessageUpdatedNotification(operationID, sendID string, sourceID strin 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 @@ -44,6 +48,10 @@ func ExtendMessageDeleteNotification(operationID, sendID string, sourceID string 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 diff --git a/internal/rpc/msg/extend_msg_callback.go b/internal/rpc/msg/extend_msg_callback.go index 6e7b1a991..65ae8d7b3 100644 --- a/internal/rpc/msg/extend_msg_callback.go +++ b/internal/rpc/msg/extend_msg_callback.go @@ -2,6 +2,7 @@ package msg import ( cbApi "Open_IM/pkg/call_back_struct" + "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" @@ -10,58 +11,50 @@ import ( http2 "net/http" ) -func callbackSetMessageReactionExtensions(req *msg.SetMessageReactionExtensionsReq) cbApi.CommonCallbackResp { - callbackResp := cbApi.CommonCallbackResp{OperationID: req.OperationID} - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.String()) - -} - -func callbackDeleteMessageReactionExtensions(req *msg.DeleteMessageListReactionExtensionsReq) { - -} -func callbackAfterSendGroupMsg(msg *pbChat.SendMsgReq) cbApi.CommonCallbackResp { - callbackResp := cbApi.CommonCallbackResp{OperationID: msg.OperationID} - if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable { - return callbackResp +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, } - log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) - commonCallbackReq := copyCallbackCommonReqStruct(msg) - commonCallbackReq.CallbackCommand = constant.CallbackAfterSendGroupMsgCommand - req := cbApi.CallbackAfterSendGroupMsgReq{ - CommonCallbackReq: commonCallbackReq, - GroupID: msg.MsgData.GroupID, - } - resp := &cbApi.CallbackAfterSendGroupMsgResp{CommonCallbackResp: &callbackResp} - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) - if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackAfterSendGroupMsgCommand, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { + 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); err != nil { callbackResp.ErrCode = http2.StatusInternalServerError callbackResp.ErrMsg = err.Error() - return callbackResp } - return callbackResp -} -func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) cbApi.CommonCallbackResp { + return resp - commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendSingleMsgCommand - req := cbApi.CallbackBeforeSendSingleMsgReq{ - CommonCallbackReq: commonCallbackReq, - RecvID: msg.MsgData.RecvID, +} + +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.CallbackBeforeSendSingleMsgResp{ - CommonCallbackResp: &callbackResp, - } - //utils.CopyStructFields(req, msg.MsgData) - defer log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), req, *resp) - if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSendSingleMsgCommand, req, resp, config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackTimeOut); err != nil { + 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); err != nil { callbackResp.ErrCode = http2.StatusInternalServerError callbackResp.ErrMsg = err.Error() - if !config.Config.Callback.CallbackBeforeSendSingleMsg.CallbackFailedContinue { - callbackResp.ActionCode = constant.ActionForbidden - return callbackResp - } else { - callbackResp.ActionCode = constant.ActionAllow - return callbackResp - } } - return callbackResp + return resp } diff --git a/pkg/base_info/msg.go b/pkg/base_info/msg.go index 61a94ef72..5a7c7f538 100644 --- a/pkg/base_info/msg.go +++ b/pkg/base_info/msg.go @@ -110,6 +110,7 @@ type DeleteMessageReactionExtensionsReq struct { SourceID string `json:"sourceID" binding:"required"` SessionType int32 `json:"sessionType" binding:"required"` ClientMsgID string `json:"clientMsgID" binding:"required"` + IsExternalExtensions bool `json:"isExternalExtensions"` MsgFirstModifyTime int64 `json:"msgFirstModifyTime" binding:"required"` ReactionExtensionList []*sdk_ws.KeyValue `json:"reactionExtensionList" binding:"required"` } diff --git a/pkg/proto/msg/msg.pb.go b/pkg/proto/msg/msg.pb.go index a71fff6d8..bdb1e3464 100644 --- a/pkg/proto/msg/msg.pb.go +++ b/pkg/proto/msg/msg.pb.go @@ -38,7 +38,7 @@ 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_6246423db34ea762, []int{0} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{0} } func (m *MsgDataToMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToMQ.Unmarshal(m, b) @@ -91,7 +91,7 @@ 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_6246423db34ea762, []int{1} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{1} } func (m *MsgDataToDB) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToDB.Unmarshal(m, b) @@ -138,7 +138,7 @@ 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_6246423db34ea762, []int{2} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{2} } func (m *PushMsgDataToMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PushMsgDataToMQ.Unmarshal(m, b) @@ -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_6246423db34ea762, []int{3} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{3} } func (m *MsgDataToMongoByMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToMongoByMQ.Unmarshal(m, b) @@ -273,7 +273,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_6246423db34ea762, []int{4} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{4} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -321,7 +321,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_6246423db34ea762, []int{5} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{5} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -382,7 +382,7 @@ 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_6246423db34ea762, []int{6} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{6} } func (m *SendMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsgReq.Unmarshal(m, b) @@ -438,7 +438,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_6246423db34ea762, []int{7} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{7} } func (m *SendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsgResp.Unmarshal(m, b) @@ -506,7 +506,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_6246423db34ea762, []int{8} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{8} } func (m *ClearMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearMsgReq.Unmarshal(m, b) @@ -559,7 +559,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_6246423db34ea762, []int{9} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{9} } func (m *ClearMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearMsgResp.Unmarshal(m, b) @@ -608,7 +608,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_6246423db34ea762, []int{10} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{10} } func (m *SetMsgMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMsgMinSeqReq.Unmarshal(m, b) @@ -675,7 +675,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_6246423db34ea762, []int{11} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{11} } func (m *SetMsgMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMsgMinSeqResp.Unmarshal(m, b) @@ -721,7 +721,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_6246423db34ea762, []int{12} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{12} } func (m *SetSendMsgStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetSendMsgStatusReq.Unmarshal(m, b) @@ -767,7 +767,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_6246423db34ea762, []int{13} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{13} } func (m *SetSendMsgStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetSendMsgStatusResp.Unmarshal(m, b) @@ -812,7 +812,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_6246423db34ea762, []int{14} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{14} } func (m *GetSendMsgStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSendMsgStatusReq.Unmarshal(m, b) @@ -852,7 +852,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_6246423db34ea762, []int{15} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{15} } func (m *GetSendMsgStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSendMsgStatusResp.Unmarshal(m, b) @@ -907,7 +907,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_6246423db34ea762, []int{16} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{16} } func (m *DelSuperGroupMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelSuperGroupMsgReq.Unmarshal(m, b) @@ -967,7 +967,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_6246423db34ea762, []int{17} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{17} } func (m *DelSuperGroupMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelSuperGroupMsgResp.Unmarshal(m, b) @@ -1014,7 +1014,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_6246423db34ea762, []int{18} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{18} } func (m *GetSuperGroupMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupMsgReq.Unmarshal(m, b) @@ -1068,7 +1068,7 @@ 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_6246423db34ea762, []int{19} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{19} } func (m *GetSuperGroupMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupMsgResp.Unmarshal(m, b) @@ -1121,7 +1121,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_6246423db34ea762, []int{20} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{20} } func (m *GetWriteDiffMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWriteDiffMsgReq.Unmarshal(m, b) @@ -1168,7 +1168,7 @@ 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_6246423db34ea762, []int{21} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{21} } func (m *GetWriteDiffMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWriteDiffMsgResp.Unmarshal(m, b) @@ -1230,7 +1230,7 @@ func (m *ModifyMessageReactionExtensionsReq) Reset() { *m = ModifyMessag func (m *ModifyMessageReactionExtensionsReq) String() string { return proto.CompactTextString(m) } func (*ModifyMessageReactionExtensionsReq) ProtoMessage() {} func (*ModifyMessageReactionExtensionsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_6246423db34ea762, []int{22} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{22} } func (m *ModifyMessageReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ModifyMessageReactionExtensionsReq.Unmarshal(m, b) @@ -1348,7 +1348,7 @@ func (m *SetMessageReactionExtensionsReq) Reset() { *m = SetMessageReact func (m *SetMessageReactionExtensionsReq) String() string { return proto.CompactTextString(m) } func (*SetMessageReactionExtensionsReq) ProtoMessage() {} func (*SetMessageReactionExtensionsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_6246423db34ea762, []int{23} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{23} } func (m *SetMessageReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMessageReactionExtensionsReq.Unmarshal(m, b) @@ -1461,7 +1461,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_6246423db34ea762, []int{24} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{24} } func (m *SetMessageReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMessageReactionExtensionsResp.Unmarshal(m, b) @@ -1538,7 +1538,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_6246423db34ea762, []int{25} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{25} } func (m *GetMessageListReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMessageListReactionExtensionsReq.Unmarshal(m, b) @@ -1609,7 +1609,7 @@ func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) String() string } func (*GetMessageListReactionExtensionsReq_MessageReactionKey) ProtoMessage() {} func (*GetMessageListReactionExtensionsReq_MessageReactionKey) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_6246423db34ea762, []int{25, 0} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{25, 0} } func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey.Unmarshal(m, b) @@ -1656,7 +1656,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_6246423db34ea762, []int{26} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{26} } func (m *GetMessageListReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMessageListReactionExtensionsResp.Unmarshal(m, b) @@ -1711,7 +1711,7 @@ func (m *SingleMessageExtensionResult) Reset() { *m = SingleMessageExten func (m *SingleMessageExtensionResult) String() string { return proto.CompactTextString(m) } func (*SingleMessageExtensionResult) ProtoMessage() {} func (*SingleMessageExtensionResult) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_6246423db34ea762, []int{27} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{27} } func (m *SingleMessageExtensionResult) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SingleMessageExtensionResult.Unmarshal(m, b) @@ -1773,7 +1773,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_6246423db34ea762, []int{28} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{28} } func (m *ModifyMessageReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ModifyMessageReactionExtensionsResp.Unmarshal(m, b) @@ -1827,8 +1827,9 @@ type DeleteMessageListReactionExtensionsReq struct { 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"` - MsgFirstModifyTime int64 `protobuf:"varint,6,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` - ReactionExtensionList []*sdk_ws.KeyValue `protobuf:"bytes,7,rep,name=reactionExtensionList" json:"reactionExtensionList,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:"-"` @@ -1840,7 +1841,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_6246423db34ea762, []int{29} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{29} } func (m *DeleteMessageListReactionExtensionsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteMessageListReactionExtensionsReq.Unmarshal(m, b) @@ -1895,6 +1896,13 @@ func (m *DeleteMessageListReactionExtensionsReq) GetClientMsgID() string { return "" } +func (m *DeleteMessageListReactionExtensionsReq) GetIsExternalExtensions() bool { + if m != nil { + return m.IsExternalExtensions + } + return false +} + func (m *DeleteMessageListReactionExtensionsReq) GetMsgFirstModifyTime() int64 { if m != nil { return m.MsgFirstModifyTime @@ -1924,7 +1932,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_6246423db34ea762, []int{30} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{30} } func (m *DeleteMessageListReactionExtensionsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteMessageListReactionExtensionsResp.Unmarshal(m, b) @@ -1978,7 +1986,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_6246423db34ea762, []int{31} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{31} } func (m *ExtendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtendMsgResp.Unmarshal(m, b) @@ -2034,7 +2042,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_6246423db34ea762, []int{32} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{32} } func (m *ExtendMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtendMsg.Unmarshal(m, b) @@ -2102,7 +2110,7 @@ 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_6246423db34ea762, []int{33} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{33} } func (m *KeyValueResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KeyValueResp.Unmarshal(m, b) @@ -2156,7 +2164,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_6246423db34ea762, []int{34} + return fileDescriptor_msg_4f5a59ae8be91efc, []int{34} } func (m *MsgDataToModifyByMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToModifyByMQ.Unmarshal(m, b) @@ -2776,113 +2784,113 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "msg/msg.proto", } -func init() { proto.RegisterFile("msg/msg.proto", fileDescriptor_msg_6246423db34ea762) } +func init() { proto.RegisterFile("msg/msg.proto", fileDescriptor_msg_4f5a59ae8be91efc) } -var fileDescriptor_msg_6246423db34ea762 = []byte{ - // 1668 bytes of a gzipped FileDescriptorProto +var fileDescriptor_msg_4f5a59ae8be91efc = []byte{ + // 1672 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcd, 0x6e, 0xdb, 0xc6, 0x16, 0x06, 0x49, 0x4b, 0xb6, 0x8f, 0xec, 0xd8, 0x19, 0x3b, 0xbe, 0x0a, 0x63, 0x20, 0x0a, 0xf3, 0xa7, 0xdc, 0x24, 0x32, 0xae, 0xef, 0x05, 0x72, 0xd1, 0x14, 0x68, 0xe2, 0xc8, 0x55, 0x8c, 0x94, 0x75, 0x4c, 0xb9, 0x2d, 0xd0, 0x2e, 0x1c, 0x46, 0x1a, 0x33, 0x84, 0x25, 0x92, 0xe6, 0x50, 0xb1, - 0xd5, 0xbf, 0x5d, 0x8b, 0x02, 0x45, 0x16, 0x5d, 0x76, 0xd5, 0x5d, 0x77, 0x7d, 0x88, 0x2e, 0xbb, - 0x28, 0xfa, 0x20, 0x7d, 0x87, 0xa2, 0x98, 0x19, 0x4a, 0x1a, 0xfe, 0x59, 0xb4, 0x5c, 0x04, 0x29, - 0xd0, 0x9d, 0xce, 0xf0, 0xcc, 0x99, 0xef, 0x3b, 0xe7, 0x9b, 0xe1, 0xf0, 0x08, 0xe6, 0xbb, 0xc4, - 0x5a, 0xeb, 0x12, 0xab, 0xe6, 0xf9, 0x6e, 0xe0, 0x22, 0xa5, 0x4b, 0x2c, 0xb5, 0xba, 0xed, 0x61, - 0xe7, 0xee, 0x96, 0x7e, 0xb7, 0x89, 0xfd, 0x97, 0xd8, 0x5f, 0xf3, 0x0e, 0xac, 0x35, 0xf6, 0x78, - 0x8d, 0xb4, 0x0f, 0xf6, 0x8e, 0xc8, 0xda, 0x11, 0xe1, 0xee, 0x6a, 0x6d, 0xac, 0xa7, 0x6f, 0x7a, - 0x1e, 0xf6, 0x43, 0x7f, 0xed, 0x33, 0x28, 0xe9, 0xc4, 0xaa, 0x9b, 0x81, 0xb9, 0xeb, 0xea, 0x3b, - 0x68, 0x19, 0x0a, 0x81, 0x7b, 0x80, 0x9d, 0xb2, 0x54, 0x91, 0xaa, 0xb3, 0x06, 0x37, 0x50, 0x05, - 0x4a, 0xae, 0x87, 0x7d, 0x33, 0xb0, 0x5d, 0x67, 0xab, 0x5e, 0x96, 0xd9, 0x33, 0x71, 0x08, 0xfd, - 0x0f, 0xa6, 0xbb, 0x3c, 0x4c, 0x59, 0xa9, 0x48, 0xd5, 0xd2, 0xba, 0x5a, 0x23, 0x0c, 0xc0, 0x9e, - 0xe9, 0xd9, 0x7b, 0x9e, 0xe9, 0x9b, 0x5d, 0x52, 0x0b, 0x17, 0x32, 0x06, 0xae, 0x1a, 0x16, 0x16, - 0xaf, 0x6f, 0x88, 0x41, 0xa4, 0xdc, 0x41, 0xc6, 0x83, 0xd3, 0x5e, 0x49, 0xb0, 0xf0, 0xb4, 0x47, - 0x5e, 0x88, 0x44, 0x2b, 0x50, 0xda, 0x16, 0x66, 0x71, 0xba, 0xe2, 0x90, 0x88, 0x46, 0xce, 0x8f, - 0x46, 0x83, 0x39, 0xaf, 0x47, 0x5e, 0xec, 0xba, 0x1f, 0x10, 0xec, 0x6f, 0xd5, 0x59, 0x36, 0x66, - 0x8d, 0xc8, 0x98, 0xf6, 0xa3, 0x04, 0x68, 0x84, 0xc5, 0x75, 0x2c, 0x77, 0xa3, 0xaf, 0xef, 0xa0, - 0x32, 0x4c, 0x77, 0x4c, 0x12, 0x34, 0xf1, 0x21, 0x83, 0x33, 0x65, 0x0c, 0x4c, 0x74, 0x0d, 0xe6, - 0x4d, 0xcb, 0xf2, 0xb1, 0x15, 0x25, 0x19, 0x1d, 0x44, 0xeb, 0x50, 0xea, 0x62, 0x42, 0x4c, 0x0b, - 0xbf, 0x67, 0x93, 0xa0, 0xac, 0x54, 0x94, 0x6a, 0x69, 0x7d, 0xb1, 0x46, 0xa5, 0x24, 0x30, 0x37, - 0x44, 0x27, 0xb4, 0x0a, 0xb3, 0x81, 0x6f, 0x5b, 0x16, 0xc3, 0x3a, 0xc5, 0xa2, 0x8e, 0x06, 0xb4, - 0xf7, 0x01, 0x35, 0x70, 0xa0, 0x9b, 0xc7, 0x0f, 0x9d, 0xb6, 0x6e, 0x3b, 0x4d, 0x7c, 0x68, 0xe0, - 0x43, 0xb4, 0x02, 0xc5, 0x90, 0x1c, 0xcf, 0x5a, 0x68, 0xc5, 0x53, 0x2a, 0x27, 0x52, 0xaa, 0x1d, - 0xc1, 0x52, 0x22, 0x1e, 0xf1, 0x28, 0xf1, 0x4d, 0xdf, 0x7f, 0xe4, 0xb6, 0x31, 0x8b, 0x58, 0x30, - 0x06, 0x26, 0x5d, 0x6a, 0xd3, 0xf7, 0x75, 0x62, 0x85, 0xd1, 0x42, 0x8b, 0x8e, 0xeb, 0xe6, 0x31, - 0xcd, 0x14, 0xcd, 0xef, 0xbc, 0x11, 0x5a, 0x6c, 0x9c, 0xc5, 0x65, 0x5c, 0xe8, 0x38, 0xb3, 0xb4, + 0xd5, 0xbf, 0x5d, 0x8b, 0x02, 0x45, 0x16, 0x5d, 0x76, 0xd5, 0x5d, 0x77, 0x7d, 0x88, 0x3e, 0x40, + 0xd1, 0x07, 0xe9, 0x33, 0xb4, 0x28, 0x66, 0x86, 0x92, 0x86, 0x7f, 0x16, 0x2d, 0x17, 0x41, 0x0a, + 0x74, 0xa7, 0x99, 0x39, 0x73, 0xe6, 0xfb, 0xce, 0xf9, 0xe6, 0x87, 0x47, 0x30, 0xdf, 0x25, 0xd6, + 0x5a, 0x97, 0x58, 0x35, 0xcf, 0x77, 0x03, 0x17, 0x29, 0x5d, 0x62, 0xa9, 0xd5, 0x6d, 0x0f, 0x3b, + 0x77, 0xb7, 0xf4, 0xbb, 0x4d, 0xec, 0xbf, 0xc4, 0xfe, 0x9a, 0x77, 0x60, 0xad, 0xb1, 0xe1, 0x35, + 0xd2, 0x3e, 0xd8, 0x3b, 0x22, 0x6b, 0x47, 0x84, 0x9b, 0xab, 0xb5, 0xb1, 0x96, 0xbe, 0xe9, 0x79, + 0xd8, 0x0f, 0xed, 0xb5, 0xcf, 0xa0, 0xa4, 0x13, 0xab, 0x6e, 0x06, 0xe6, 0xae, 0xab, 0xef, 0xa0, + 0x65, 0x28, 0x04, 0xee, 0x01, 0x76, 0xca, 0x52, 0x45, 0xaa, 0xce, 0x1a, 0xbc, 0x81, 0x2a, 0x50, + 0x72, 0x3d, 0xec, 0x9b, 0x81, 0xed, 0x3a, 0x5b, 0xf5, 0xb2, 0xcc, 0xc6, 0xc4, 0x2e, 0xf4, 0x3f, + 0x98, 0xee, 0x72, 0x37, 0x65, 0xa5, 0x22, 0x55, 0x4b, 0xeb, 0x6a, 0x8d, 0x30, 0x00, 0x7b, 0xa6, + 0x67, 0xef, 0x79, 0xa6, 0x6f, 0x76, 0x49, 0x2d, 0x5c, 0xc8, 0x18, 0x98, 0x6a, 0x58, 0x58, 0xbc, + 0xbe, 0x21, 0x3a, 0x91, 0x72, 0x3b, 0x19, 0x0f, 0x4e, 0x7b, 0x25, 0xc1, 0xc2, 0xd3, 0x1e, 0x79, + 0x21, 0x12, 0xad, 0x40, 0x69, 0x5b, 0x98, 0xc5, 0xe9, 0x8a, 0x5d, 0x22, 0x1a, 0x39, 0x3f, 0x1a, + 0x0d, 0xe6, 0xbc, 0x1e, 0x79, 0xb1, 0xeb, 0x7e, 0x40, 0xb0, 0xbf, 0x55, 0x67, 0xd1, 0x98, 0x35, + 0x22, 0x7d, 0xda, 0x8f, 0x12, 0xa0, 0x11, 0x16, 0xd7, 0xb1, 0xdc, 0x8d, 0xbe, 0xbe, 0x83, 0xca, + 0x30, 0xdd, 0x31, 0x49, 0xd0, 0xc4, 0x87, 0x0c, 0xce, 0x94, 0x31, 0x68, 0xa2, 0x6b, 0x30, 0x6f, + 0x5a, 0x96, 0x8f, 0xad, 0x28, 0xc9, 0x68, 0x27, 0x5a, 0x87, 0x52, 0x17, 0x13, 0x62, 0x5a, 0xf8, + 0x3d, 0x9b, 0x04, 0x65, 0xa5, 0xa2, 0x54, 0x4b, 0xeb, 0x8b, 0x35, 0x2a, 0x25, 0x81, 0xb9, 0x21, + 0x1a, 0xa1, 0x55, 0x98, 0x0d, 0x7c, 0xdb, 0xb2, 0x18, 0xd6, 0x29, 0xe6, 0x75, 0xd4, 0xa1, 0xbd, + 0x0f, 0xa8, 0x81, 0x03, 0xdd, 0x3c, 0x7e, 0xe8, 0xb4, 0x75, 0xdb, 0x69, 0xe2, 0x43, 0x03, 0x1f, + 0xa2, 0x15, 0x28, 0x86, 0xe4, 0x78, 0xd4, 0xc2, 0x56, 0x3c, 0xa4, 0x72, 0x22, 0xa4, 0xda, 0x11, + 0x2c, 0x25, 0xfc, 0x11, 0x8f, 0x12, 0xdf, 0xf4, 0xfd, 0x47, 0x6e, 0x1b, 0x33, 0x8f, 0x05, 0x63, + 0xd0, 0xa4, 0x4b, 0x6d, 0xfa, 0xbe, 0x4e, 0xac, 0xd0, 0x5b, 0xd8, 0xa2, 0xfd, 0xba, 0x79, 0x4c, + 0x23, 0x45, 0xe3, 0x3b, 0x6f, 0x84, 0x2d, 0xd6, 0xcf, 0xfc, 0x32, 0x2e, 0xb4, 0x9f, 0xb5, 0xb4, 0x4f, 0x01, 0x9a, 0xd8, 0x69, 0xeb, 0xc4, 0xa2, 0x04, 0x5e, 0xaf, 0xc8, 0x7f, 0x90, 0xa0, 0x34, - 0x5c, 0x9c, 0xb3, 0xc5, 0x51, 0xb6, 0x78, 0xc4, 0x16, 0x47, 0xd8, 0x72, 0x8b, 0x22, 0xe3, 0xeb, - 0xe8, 0xc4, 0x1a, 0x96, 0x49, 0x1c, 0xa2, 0x1e, 0xad, 0x8e, 0x8d, 0x9d, 0x80, 0x7b, 0x14, 0xb8, - 0x87, 0x30, 0x84, 0x54, 0x98, 0x21, 0xd8, 0x69, 0xef, 0xda, 0x5d, 0x5c, 0x2e, 0x56, 0xa4, 0xaa, - 0x62, 0x0c, 0x6d, 0xad, 0x05, 0xa5, 0x47, 0x1d, 0x6c, 0xfa, 0x61, 0x7a, 0x56, 0xa0, 0xd8, 0x8b, - 0xd4, 0x97, 0x5b, 0x34, 0x84, 0xeb, 0x85, 0x95, 0xe7, 0x00, 0x87, 0x76, 0x3c, 0x79, 0x4a, 0x72, - 0x13, 0x3e, 0x80, 0xb9, 0xd1, 0x22, 0x93, 0xa4, 0x41, 0xfb, 0x5e, 0x82, 0x85, 0x26, 0xa6, 0x7c, - 0x22, 0x5a, 0x4c, 0xc5, 0x5a, 0x86, 0x69, 0xcb, 0x77, 0x7b, 0xde, 0x10, 0xea, 0xc0, 0xa4, 0x33, - 0xba, 0x5c, 0x22, 0xa1, 0x74, 0xb8, 0x15, 0x67, 0x30, 0x95, 0x2c, 0xbf, 0xc8, 0xbf, 0x10, 0xe5, - 0xaf, 0xd5, 0x61, 0x31, 0x0a, 0x6d, 0x22, 0x86, 0xdb, 0xb0, 0xd4, 0xc4, 0x41, 0x28, 0x96, 0x66, - 0x60, 0x06, 0x3d, 0x62, 0x24, 0xa1, 0x49, 0x49, 0x68, 0x2b, 0x50, 0x24, 0xcc, 0x9d, 0x05, 0x2c, - 0x18, 0xa1, 0xa5, 0x3d, 0x86, 0xe5, 0x64, 0xc0, 0x89, 0xa0, 0xdd, 0x63, 0x5b, 0xf7, 0xf4, 0xd0, - 0xb4, 0x67, 0xb0, 0xdc, 0xf8, 0x4b, 0x20, 0x08, 0x24, 0x95, 0x08, 0xc9, 0xaf, 0x24, 0x58, 0xaa, - 0xe3, 0x4e, 0xb3, 0xe7, 0x61, 0xbf, 0x41, 0xab, 0x1c, 0xea, 0x58, 0xac, 0x97, 0x14, 0xd3, 0xeb, - 0x48, 0x37, 0x72, 0x96, 0x6e, 0x94, 0xa8, 0x6e, 0xc6, 0xea, 0x83, 0x26, 0x3b, 0x09, 0x63, 0xa2, - 0x64, 0xb7, 0x78, 0xb2, 0xe3, 0x84, 0xc6, 0xeb, 0x60, 0x11, 0x14, 0xaa, 0x6c, 0x99, 0x29, 0x9b, - 0xfe, 0xcc, 0x26, 0xa4, 0x7d, 0xc9, 0x0b, 0x73, 0x76, 0xb8, 0x13, 0x9e, 0x8b, 0x8f, 0xd9, 0xcb, - 0xe5, 0x23, 0xdf, 0x0e, 0x70, 0xdd, 0xde, 0xdf, 0x9f, 0x9c, 0xa3, 0xf6, 0x05, 0x4b, 0x57, 0x34, - 0xd2, 0x6b, 0x24, 0xf2, 0x5d, 0x01, 0x34, 0xdd, 0x6d, 0xdb, 0xfb, 0x7d, 0x9d, 0xbf, 0x59, 0x0d, - 0x6c, 0xb6, 0x28, 0xd8, 0xcd, 0xe3, 0x00, 0x3b, 0xc4, 0x76, 0x9d, 0x9c, 0xbb, 0x98, 0x9e, 0xd1, - 0x6e, 0xcf, 0x6f, 0xe1, 0xd1, 0x01, 0x3b, 0xb0, 0x23, 0x62, 0x56, 0x92, 0x87, 0x2f, 0xc1, 0x84, - 0x2e, 0xb4, 0xdb, 0xf7, 0x30, 0x93, 0x66, 0xc1, 0x10, 0x87, 0xd0, 0x31, 0x5c, 0xf0, 0xe3, 0xa0, - 0xd8, 0x25, 0xa1, 0xc0, 0x2e, 0x09, 0x1b, 0xfc, 0x92, 0x30, 0x96, 0x43, 0xcd, 0x48, 0x0b, 0xb2, - 0xe9, 0x04, 0x7e, 0xdf, 0x48, 0x5f, 0x20, 0xfe, 0x66, 0x2a, 0x26, 0xdf, 0x4c, 0x77, 0x40, 0xc6, - 0xc7, 0xe5, 0x69, 0x96, 0xef, 0xd5, 0x9a, 0xe5, 0xba, 0x56, 0x07, 0xf3, 0xcb, 0xe9, 0xf3, 0xde, - 0x7e, 0xad, 0x19, 0xf8, 0xb6, 0x63, 0x7d, 0x68, 0x76, 0x7a, 0xd8, 0x90, 0xf1, 0x31, 0x7a, 0x00, - 0x73, 0x66, 0x10, 0x98, 0xad, 0x17, 0xb8, 0xbd, 0xe5, 0xec, 0xbb, 0xe5, 0x99, 0x1c, 0xf3, 0x22, - 0x33, 0xa8, 0x2c, 0x6c, 0xc2, 0x88, 0x94, 0x67, 0x2b, 0x52, 0x75, 0xc6, 0x18, 0x98, 0x68, 0x1d, - 0x96, 0x6d, 0x42, 0xe1, 0xfb, 0x8e, 0xd9, 0x19, 0x11, 0x2f, 0x03, 0x73, 0x4b, 0x7d, 0x86, 0x6a, - 0x80, 0xba, 0xc4, 0x7a, 0xd7, 0xf6, 0x49, 0xc0, 0xf3, 0xc7, 0xde, 0xb0, 0x25, 0xf6, 0x86, 0x4d, - 0x79, 0xa2, 0x62, 0x50, 0xb3, 0x93, 0x48, 0xb5, 0x7d, 0x80, 0xfb, 0xa1, 0x36, 0xe8, 0x4f, 0xf4, - 0x1f, 0x28, 0xbc, 0xa4, 0x24, 0xc2, 0x3b, 0xe8, 0xa5, 0x14, 0x41, 0x3e, 0xc1, 0x7d, 0xce, 0x93, - 0x7b, 0xbe, 0x25, 0xff, 0x5f, 0xd2, 0xbe, 0x2d, 0xc0, 0x65, 0xfa, 0x42, 0x7a, 0x53, 0x05, 0xd9, - 0x3b, 0x59, 0x90, 0xef, 0x30, 0x41, 0x8e, 0x21, 0xf0, 0x8f, 0x1a, 0xff, 0x2e, 0x6a, 0xfc, 0x5d, - 0x82, 0xca, 0xc9, 0xc5, 0x9c, 0xf4, 0x5e, 0x2c, 0x56, 0x53, 0x49, 0x56, 0x33, 0x3d, 0x1f, 0x53, - 0x59, 0xf9, 0x10, 0xab, 0x51, 0x88, 0x56, 0xe3, 0x16, 0x14, 0x7d, 0x4c, 0x7a, 0x9d, 0xa0, 0x5c, - 0x64, 0x0a, 0x3d, 0xcf, 0x14, 0x3a, 0x24, 0x8b, 0x89, 0x67, 0x84, 0x0e, 0xda, 0x1f, 0x32, 0x5c, - 0x6d, 0x0c, 0xd9, 0xd2, 0x74, 0x9e, 0x61, 0xff, 0x65, 0xde, 0xb8, 0xc5, 0xbd, 0xa9, 0xc4, 0xf6, - 0xe6, 0xf8, 0xfd, 0x47, 0x60, 0xa5, 0x1b, 0xad, 0xc6, 0x13, 0xdc, 0x17, 0x36, 0xe0, 0x7d, 0x46, - 0x2f, 0x07, 0x8b, 0x9a, 0x9e, 0x08, 0x63, 0x64, 0x84, 0x56, 0xf7, 0x01, 0x25, 0xbd, 0xe3, 0x55, - 0x94, 0xf2, 0x56, 0x51, 0xce, 0xaa, 0xa2, 0xf6, 0x93, 0x04, 0xd7, 0xc6, 0x43, 0x9f, 0x48, 0x72, + 0x5c, 0x9c, 0xb3, 0xc5, 0x51, 0xb6, 0x78, 0xc4, 0x16, 0x47, 0xd8, 0xf2, 0x16, 0x45, 0xc6, 0xd7, + 0xd1, 0x89, 0x35, 0x4c, 0x93, 0xd8, 0x45, 0x2d, 0x5a, 0x1d, 0x1b, 0x3b, 0x01, 0xb7, 0x28, 0x70, + 0x0b, 0xa1, 0x0b, 0xa9, 0x30, 0x43, 0xb0, 0xd3, 0xde, 0xb5, 0xbb, 0xb8, 0x5c, 0xac, 0x48, 0x55, + 0xc5, 0x18, 0xb6, 0xb5, 0x16, 0x94, 0x1e, 0x75, 0xb0, 0xe9, 0x87, 0xe1, 0x59, 0x81, 0x62, 0x2f, + 0x92, 0x5f, 0xde, 0xa2, 0x2e, 0x5c, 0x2f, 0xcc, 0x3c, 0x07, 0x38, 0x6c, 0xc7, 0x83, 0xa7, 0x24, + 0x37, 0xe1, 0x03, 0x98, 0x1b, 0x2d, 0x32, 0x49, 0x18, 0xb4, 0xef, 0x25, 0x58, 0x68, 0x62, 0xca, + 0x27, 0xa2, 0xc5, 0x54, 0xac, 0x65, 0x98, 0xb6, 0x7c, 0xb7, 0xe7, 0x0d, 0xa1, 0x0e, 0x9a, 0x74, + 0x46, 0x97, 0x4b, 0x24, 0x94, 0x0e, 0x6f, 0xc5, 0x19, 0x4c, 0x25, 0xd3, 0x2f, 0xf2, 0x2f, 0x44, + 0xf9, 0x6b, 0x75, 0x58, 0x8c, 0x42, 0x9b, 0x88, 0xe1, 0x36, 0x2c, 0x35, 0x71, 0x10, 0x8a, 0xa5, + 0x19, 0x98, 0x41, 0x8f, 0x18, 0x49, 0x68, 0x52, 0x12, 0xda, 0x0a, 0x14, 0x09, 0x33, 0x67, 0x0e, + 0x0b, 0x46, 0xd8, 0xd2, 0x1e, 0xc3, 0x72, 0xd2, 0xe1, 0x44, 0xd0, 0xee, 0xb1, 0xad, 0x7b, 0x7a, + 0x68, 0xda, 0x33, 0x58, 0x6e, 0xfc, 0x25, 0x10, 0x04, 0x92, 0x4a, 0x84, 0xe4, 0x57, 0x12, 0x2c, + 0xd5, 0x71, 0xa7, 0xd9, 0xf3, 0xb0, 0xdf, 0xa0, 0x59, 0x0e, 0x75, 0x2c, 0xe6, 0x4b, 0x8a, 0xe9, + 0x75, 0xa4, 0x1b, 0x39, 0x4b, 0x37, 0x4a, 0x54, 0x37, 0x63, 0xf5, 0x41, 0x83, 0x9d, 0x84, 0x31, + 0x51, 0xb0, 0x5b, 0x3c, 0xd8, 0x71, 0x42, 0xe3, 0x75, 0xb0, 0x08, 0x0a, 0x55, 0xb6, 0xcc, 0x94, + 0x4d, 0x7f, 0x66, 0x13, 0xd2, 0xbe, 0xe4, 0x89, 0x39, 0x3b, 0xdc, 0x09, 0xcf, 0xc5, 0xc7, 0xec, + 0x72, 0xf9, 0xc8, 0xb7, 0x03, 0x5c, 0xb7, 0xf7, 0xf7, 0x27, 0xe7, 0xa8, 0x7d, 0xc1, 0xc2, 0x15, + 0xf5, 0xf4, 0x1a, 0x89, 0x7c, 0x57, 0x00, 0x4d, 0x77, 0xdb, 0xf6, 0x7e, 0x5f, 0xe7, 0x37, 0xab, + 0x81, 0xcd, 0x16, 0x05, 0xbb, 0x79, 0x1c, 0x60, 0x87, 0xd8, 0xae, 0x93, 0x73, 0x17, 0xd3, 0x33, + 0xda, 0xed, 0xf9, 0x2d, 0x3c, 0x3a, 0x60, 0x07, 0xed, 0x88, 0x98, 0x95, 0xe4, 0xe1, 0x4b, 0x30, + 0xa1, 0x0b, 0xed, 0xf6, 0x3d, 0xcc, 0xa4, 0x59, 0x30, 0xc4, 0x2e, 0x74, 0x0c, 0x17, 0xfc, 0x38, + 0x28, 0xf6, 0x48, 0x28, 0xb0, 0x47, 0xc2, 0x06, 0x7f, 0x24, 0x8c, 0xe5, 0x50, 0x33, 0xd2, 0x9c, + 0x6c, 0x3a, 0x81, 0xdf, 0x37, 0xd2, 0x17, 0x88, 0xdf, 0x4c, 0xc5, 0xe4, 0xcd, 0x74, 0x07, 0x64, + 0x7c, 0x5c, 0x9e, 0x66, 0xf1, 0x5e, 0xad, 0x59, 0xae, 0x6b, 0x75, 0x30, 0x7f, 0x9c, 0x3e, 0xef, + 0xed, 0xd7, 0x9a, 0x81, 0x6f, 0x3b, 0xd6, 0x87, 0x66, 0xa7, 0x87, 0x0d, 0x19, 0x1f, 0xa3, 0x07, + 0x30, 0x67, 0x06, 0x81, 0xd9, 0x7a, 0x81, 0xdb, 0x5b, 0xce, 0xbe, 0x5b, 0x9e, 0xc9, 0x31, 0x2f, + 0x32, 0x83, 0xca, 0xc2, 0x26, 0x8c, 0x48, 0x79, 0xb6, 0x22, 0x55, 0x67, 0x8c, 0x41, 0x13, 0xad, + 0xc3, 0xb2, 0x4d, 0x28, 0x7c, 0xdf, 0x31, 0x3b, 0x23, 0xe2, 0x65, 0x60, 0x66, 0xa9, 0x63, 0xa8, + 0x06, 0xa8, 0x4b, 0xac, 0x77, 0x6d, 0x9f, 0x04, 0x3c, 0x7e, 0xec, 0x86, 0x2d, 0xb1, 0x1b, 0x36, + 0x65, 0x44, 0xc5, 0xa0, 0x66, 0x07, 0x91, 0x6a, 0xfb, 0x00, 0xf7, 0x43, 0x6d, 0xd0, 0x9f, 0xe8, + 0x3f, 0x50, 0x78, 0x49, 0x49, 0x84, 0x6f, 0xd0, 0x4b, 0x29, 0x82, 0x7c, 0x82, 0xfb, 0x9c, 0x27, + 0xb7, 0x7c, 0x4b, 0xfe, 0xbf, 0xa4, 0x7d, 0x5b, 0x80, 0xcb, 0xf4, 0x42, 0x7a, 0x53, 0x05, 0xd9, + 0x3b, 0x59, 0x90, 0xef, 0x30, 0x41, 0x8e, 0x21, 0xf0, 0x8f, 0x1a, 0xff, 0x2e, 0x6a, 0xfc, 0x4d, + 0x82, 0xca, 0xc9, 0xc9, 0x9c, 0xf4, 0x5d, 0x2c, 0x66, 0x53, 0x49, 0x66, 0x33, 0x3d, 0x1e, 0x53, + 0x59, 0xf1, 0x10, 0xb3, 0x51, 0x88, 0x66, 0xe3, 0x16, 0x14, 0x7d, 0x4c, 0x7a, 0x9d, 0xa0, 0x5c, + 0x64, 0x0a, 0x3d, 0xcf, 0x14, 0x3a, 0x24, 0x8b, 0x89, 0x67, 0x84, 0x06, 0xda, 0x1f, 0x32, 0x5c, + 0x6d, 0x0c, 0xd9, 0xd2, 0x70, 0x9e, 0x61, 0xff, 0x65, 0xbe, 0xb8, 0xc5, 0xbd, 0xa9, 0xc4, 0xf6, + 0xe6, 0xf8, 0xfd, 0x47, 0x60, 0xa5, 0x1b, 0xcd, 0xc6, 0x13, 0xdc, 0x17, 0x36, 0xe0, 0x7d, 0x46, + 0x2f, 0x07, 0x8b, 0x9a, 0x9e, 0x70, 0x63, 0x64, 0xb8, 0x56, 0xf7, 0x01, 0x25, 0xad, 0xe3, 0x59, + 0x94, 0xf2, 0x66, 0x51, 0xce, 0xca, 0xa2, 0xf6, 0x93, 0x04, 0xd7, 0xc6, 0x43, 0x9f, 0x48, 0x72, 0x4d, 0x58, 0x22, 0xb6, 0x63, 0x75, 0xf0, 0x90, 0x08, 0xd3, 0x04, 0xff, 0xd6, 0xbe, 0xc2, 0x4f, - 0x2d, 0xf1, 0xf9, 0x70, 0x41, 0xee, 0x68, 0xa4, 0xcd, 0xd6, 0x7e, 0x95, 0x61, 0xf5, 0xa4, 0x59, - 0x13, 0xe0, 0xf4, 0xb3, 0xce, 0x57, 0x8e, 0xf4, 0xed, 0xb1, 0x48, 0xcf, 0x7e, 0xb8, 0x4e, 0x25, - 0x0a, 0xf9, 0xba, 0x8e, 0x9b, 0x9f, 0x25, 0xb8, 0x3a, 0xf6, 0x32, 0x33, 0xe1, 0x05, 0xb1, 0x44, - 0x7a, 0xad, 0x16, 0x26, 0x44, 0x48, 0x26, 0x62, 0xc9, 0x64, 0xb1, 0x07, 0x1f, 0xf9, 0x86, 0xe8, - 0x86, 0xd6, 0x01, 0xf6, 0x4d, 0xbb, 0x83, 0xdb, 0x6c, 0xd2, 0x54, 0xe6, 0x24, 0xc1, 0x4b, 0xfb, - 0x45, 0x86, 0x1b, 0x75, 0xdc, 0xc1, 0x01, 0x7e, 0xa3, 0xcf, 0x91, 0xf1, 0x8d, 0x87, 0xf4, 0xcd, - 0x5b, 0xcc, 0x3c, 0x82, 0x77, 0xb2, 0x94, 0x3b, 0xcd, 0xf2, 0x76, 0xa2, 0x06, 0xd2, 0x67, 0x6a, - 0x5f, 0x4b, 0x70, 0x33, 0x57, 0x2e, 0x27, 0xd2, 0xc4, 0x29, 0xde, 0x0c, 0x2e, 0xcc, 0x47, 0x2a, - 0x8e, 0xee, 0xc0, 0x2c, 0x1e, 0x0c, 0x84, 0x3d, 0xcf, 0x73, 0x31, 0x61, 0x8c, 0x1c, 0x44, 0x6c, - 0x72, 0x16, 0x36, 0x25, 0xf2, 0x21, 0xf9, 0x9b, 0x0c, 0xb3, 0xc3, 0x50, 0x68, 0x2f, 0x2b, 0xb5, - 0x12, 0x03, 0x7e, 0x2b, 0xba, 0xf2, 0xd9, 0x4f, 0x00, 0x39, 0xaf, 0x1a, 0x94, 0x4c, 0x35, 0x68, - 0xb1, 0x0b, 0x16, 0x3f, 0x54, 0xa2, 0x57, 0xa8, 0x73, 0xec, 0xca, 0xc6, 0xa5, 0x27, 0xe3, 0x63, - 0xf5, 0x93, 0x53, 0x9e, 0x32, 0x37, 0xa3, 0xa7, 0x4c, 0x4a, 0xfd, 0x84, 0xb3, 0xa5, 0x0f, 0x73, - 0xe2, 0x23, 0x74, 0x0f, 0x66, 0x0e, 0x42, 0x3b, 0x2c, 0xe0, 0x89, 0x0a, 0x1d, 0x3a, 0x4f, 0x50, - 0xcc, 0x57, 0x12, 0x2c, 0x09, 0x6d, 0x63, 0x9a, 0x23, 0xd6, 0x37, 0x4e, 0x74, 0x87, 0xa5, 0x1c, - 0xdd, 0x61, 0xf9, 0xd4, 0xdd, 0x61, 0x25, 0xd6, 0x1d, 0x5e, 0xff, 0x06, 0x40, 0xe9, 0x12, 0x0b, - 0x3d, 0x83, 0x85, 0x58, 0x57, 0x17, 0x5d, 0x4f, 0xc9, 0x41, 0xb2, 0x93, 0xac, 0xde, 0xc8, 0xe3, - 0x46, 0x3c, 0xe4, 0xc2, 0xf2, 0xd3, 0x5e, 0xa7, 0x13, 0xee, 0xde, 0x8d, 0x7e, 0x13, 0x1f, 0x32, - 0x7c, 0xff, 0x4e, 0x99, 0x9f, 0xe6, 0x48, 0xd7, 0xba, 0x9d, 0xdb, 0x97, 0xed, 0xcb, 0xe9, 0xb0, - 0x63, 0x85, 0x16, 0xc2, 0x4f, 0x91, 0x41, 0xf7, 0x58, 0x5d, 0x8c, 0x0e, 0x10, 0x0f, 0xed, 0x00, - 0xd4, 0x71, 0x47, 0x27, 0x16, 0xdf, 0x04, 0x29, 0x0b, 0x8d, 0x1e, 0xd3, 0x08, 0x57, 0xc6, 0x78, - 0x10, 0x0f, 0x35, 0x60, 0x31, 0xde, 0x4b, 0x42, 0x65, 0xb6, 0x70, 0x4a, 0xa7, 0x4b, 0xbd, 0x98, - 0xf1, 0x84, 0x78, 0x68, 0x0d, 0x66, 0x06, 0x6d, 0x57, 0xc4, 0x91, 0x0b, 0xad, 0x5e, 0xf5, 0x7c, - 0x6c, 0x84, 0x78, 0xe8, 0x3e, 0xcc, 0x89, 0x9d, 0x4c, 0xb4, 0x3c, 0xfc, 0x14, 0x13, 0xfa, 0xae, - 0xea, 0x85, 0x94, 0x51, 0x0e, 0x3b, 0xde, 0x6f, 0x0c, 0x61, 0xa7, 0xf4, 0x35, 0x43, 0xd8, 0xa9, - 0x0d, 0xca, 0x06, 0x2c, 0x36, 0xd2, 0x03, 0x35, 0x32, 0x03, 0x35, 0x4e, 0x08, 0x94, 0x92, 0xc8, - 0x94, 0x0e, 0x9b, 0x10, 0x28, 0x91, 0xc8, 0x3a, 0x53, 0xb9, 0xd8, 0x64, 0x42, 0xff, 0x1a, 0x78, - 0xc7, 0x9a, 0x58, 0x6a, 0x39, 0xfd, 0x01, 0xf1, 0xd0, 0x01, 0xac, 0x9e, 0xf4, 0x21, 0x84, 0xae, - 0xe5, 0xf9, 0xf0, 0x55, 0xaf, 0xe7, 0xf0, 0x22, 0x1e, 0x3a, 0x82, 0xca, 0xb8, 0x6b, 0x30, 0xaa, - 0xe6, 0xbd, 0xe8, 0xab, 0xb7, 0x72, 0x7a, 0x12, 0x0f, 0x1d, 0xc2, 0xea, 0xc3, 0x76, 0x3b, 0x9b, - 0xe5, 0xcd, 0x9c, 0xfd, 0x26, 0xb5, 0x9a, 0xcf, 0x91, 0x78, 0xe8, 0x73, 0xb8, 0x1c, 0x79, 0xc5, - 0xa7, 0xac, 0x7a, 0x7b, 0xb0, 0x4b, 0x72, 0x5c, 0xaa, 0xd4, 0x3b, 0xf9, 0x9d, 0x89, 0xb7, 0x71, - 0xe9, 0xe3, 0x8b, 0xdb, 0x1e, 0x76, 0xf6, 0xb6, 0x74, 0xe1, 0x0f, 0xd7, 0x2e, 0xb1, 0xee, 0x77, - 0x89, 0xf5, 0xbc, 0xc8, 0xcc, 0xff, 0xfe, 0x19, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x17, 0x83, 0x0e, - 0xd9, 0x1d, 0x00, 0x00, + 0x2d, 0x71, 0x7c, 0xb8, 0x20, 0x37, 0x34, 0xd2, 0x66, 0x6b, 0xbf, 0xc8, 0xb0, 0x7a, 0xd2, 0xac, + 0x09, 0x70, 0xfa, 0x59, 0xe7, 0x2b, 0x47, 0xfa, 0xf6, 0x58, 0xa4, 0x67, 0x3f, 0x5c, 0xa7, 0x12, + 0x89, 0x7c, 0x5d, 0xc7, 0xcd, 0xcf, 0x12, 0x5c, 0x1d, 0xfb, 0x98, 0x99, 0xf0, 0x81, 0x58, 0x22, + 0xbd, 0x56, 0x0b, 0x13, 0x22, 0x04, 0x13, 0xb1, 0x60, 0x32, 0xdf, 0x83, 0x8f, 0x7c, 0x43, 0x34, + 0x43, 0xeb, 0x00, 0xfb, 0xa6, 0xdd, 0xc1, 0x6d, 0x36, 0x69, 0x2a, 0x73, 0x92, 0x60, 0xa5, 0xfd, + 0x2e, 0xc3, 0x8d, 0x3a, 0xee, 0xe0, 0x00, 0xbf, 0xd1, 0xe7, 0xc8, 0xf8, 0xc2, 0x43, 0xd6, 0x35, + 0x56, 0x3c, 0xf5, 0x35, 0x36, 0x9d, 0x79, 0x6c, 0xef, 0x64, 0xa9, 0x7d, 0x86, 0xc5, 0xfa, 0x44, + 0xdd, 0xa4, 0xcf, 0xd4, 0xbe, 0x96, 0xe0, 0x66, 0xae, 0xf8, 0x4f, 0xa4, 0xa3, 0x53, 0xdc, 0x26, + 0x2e, 0xcc, 0x47, 0x54, 0x82, 0xee, 0xc0, 0x2c, 0x1e, 0x74, 0x84, 0x75, 0xd2, 0x73, 0x31, 0x31, + 0x8d, 0x0c, 0x44, 0x6c, 0x72, 0x16, 0x36, 0x25, 0xf2, 0xf1, 0xf9, 0xab, 0x0c, 0xb3, 0x43, 0x57, + 0x68, 0x2f, 0x2b, 0xb4, 0x12, 0x03, 0x7e, 0x2b, 0xba, 0xf2, 0xd9, 0x4f, 0x0d, 0x39, 0xef, 0xf1, + 0xaf, 0x64, 0xaa, 0x41, 0x8b, 0x3d, 0xca, 0xf8, 0x41, 0x14, 0x7d, 0x76, 0x9d, 0x63, 0xcf, 0x3c, + 0x2e, 0x57, 0x19, 0x1f, 0xab, 0x9f, 0x9c, 0xf2, 0x64, 0xba, 0x19, 0x3d, 0x99, 0x52, 0xf2, 0x27, + 0x9c, 0x47, 0x7d, 0x98, 0x13, 0x87, 0xd0, 0x3d, 0x98, 0x39, 0x08, 0xdb, 0x61, 0x02, 0x4f, 0x54, + 0xe8, 0xd0, 0x78, 0x82, 0x64, 0xbe, 0x92, 0x60, 0x49, 0x28, 0x35, 0xd3, 0x18, 0xb1, 0x5a, 0x73, + 0xa2, 0xa2, 0x2c, 0xe5, 0xa8, 0x28, 0xcb, 0xa7, 0xae, 0x28, 0x2b, 0xb1, 0x8a, 0xf2, 0xfa, 0x37, + 0x00, 0x4a, 0x97, 0x58, 0xe8, 0x19, 0x2c, 0xc4, 0x2a, 0xc1, 0xe8, 0x7a, 0x4a, 0x0c, 0x92, 0xd5, + 0x67, 0xf5, 0x46, 0x1e, 0x33, 0xe2, 0x21, 0x17, 0x96, 0x9f, 0xf6, 0x3a, 0x9d, 0x70, 0xf7, 0x6e, + 0xf4, 0x9b, 0xf8, 0x90, 0xe1, 0xfb, 0x77, 0xca, 0xfc, 0x34, 0x43, 0xba, 0xd6, 0xed, 0xdc, 0xb6, + 0x6c, 0x5f, 0x4e, 0x87, 0x55, 0x2e, 0xb4, 0x10, 0x7e, 0xbe, 0x0c, 0x2a, 0xce, 0xea, 0x62, 0xb4, + 0x83, 0x78, 0x68, 0x07, 0xa0, 0x8e, 0x3b, 0x3a, 0xb1, 0xf8, 0x26, 0x48, 0x59, 0x68, 0x34, 0x4c, + 0x3d, 0x5c, 0x19, 0x63, 0x41, 0x3c, 0xd4, 0x80, 0xc5, 0x78, 0xfd, 0x09, 0x95, 0xd9, 0xc2, 0x29, + 0xd5, 0x31, 0xf5, 0x62, 0xc6, 0x08, 0xf1, 0xd0, 0x1a, 0xcc, 0x0c, 0x4a, 0xb5, 0x88, 0x23, 0x17, + 0xca, 0xc3, 0xea, 0xf9, 0x58, 0x0f, 0xf1, 0xd0, 0x7d, 0x98, 0x13, 0xab, 0x9f, 0x68, 0x79, 0xf8, + 0xf9, 0x26, 0xd4, 0x6a, 0xd5, 0x0b, 0x29, 0xbd, 0x1c, 0x76, 0xbc, 0x46, 0x19, 0xc2, 0x4e, 0xa9, + 0x85, 0x86, 0xb0, 0x53, 0x8b, 0x9a, 0x0d, 0x58, 0x6c, 0xa4, 0x3b, 0x6a, 0x64, 0x3a, 0x6a, 0x9c, + 0xe0, 0x28, 0x25, 0x90, 0x29, 0x55, 0x39, 0xc1, 0x51, 0x22, 0x90, 0x75, 0xa6, 0x72, 0xb1, 0x30, + 0x85, 0xfe, 0x35, 0xb0, 0x8e, 0x15, 0xbe, 0xd4, 0x72, 0xfa, 0x00, 0xf1, 0xd0, 0x01, 0xac, 0x9e, + 0xf4, 0xf1, 0x84, 0xae, 0xe5, 0xf9, 0x58, 0x56, 0xaf, 0xe7, 0xb0, 0x22, 0x1e, 0x3a, 0x82, 0xca, + 0xb8, 0xa7, 0x33, 0xaa, 0xe6, 0xfd, 0x38, 0x50, 0x6f, 0xe5, 0xb4, 0x24, 0x1e, 0x3a, 0x84, 0xd5, + 0x87, 0xed, 0x76, 0x36, 0xcb, 0x9b, 0x39, 0x6b, 0x54, 0x6a, 0x35, 0x9f, 0x21, 0xf1, 0xd0, 0xe7, + 0x70, 0x39, 0x72, 0xc5, 0xa7, 0xac, 0x7a, 0x7b, 0xb0, 0x4b, 0x72, 0x3c, 0xc4, 0xd4, 0x3b, 0xf9, + 0x8d, 0x89, 0xb7, 0x71, 0xe9, 0xe3, 0x8b, 0xdb, 0x1e, 0x76, 0xf6, 0xb6, 0x74, 0xe1, 0x4f, 0xda, + 0x2e, 0xb1, 0xee, 0x77, 0x89, 0xf5, 0xbc, 0xc8, 0x9a, 0xff, 0xfd, 0x33, 0x00, 0x00, 0xff, 0xff, + 0xd4, 0xae, 0xa9, 0xee, 0x0d, 0x1e, 0x00, 0x00, } diff --git a/pkg/proto/msg/msg.proto b/pkg/proto/msg/msg.proto index cb29be40e..287340517 100644 --- a/pkg/proto/msg/msg.proto +++ b/pkg/proto/msg/msg.proto @@ -228,8 +228,9 @@ message DeleteMessageListReactionExtensionsReq { string sourceID = 3; int32 sessionType = 4; string clientMsgID = 5; - int64 msgFirstModifyTime = 6; - repeated server_api_params.KeyValue reactionExtensionList = 7; + bool isExternalExtensions = 6; + int64 msgFirstModifyTime = 7; + repeated server_api_params.KeyValue reactionExtensionList = 8; } message DeleteMessageListReactionExtensionsResp {