Merge branch 'errcode' of github.com:OpenIMSDK/Open-IM-Server into errcode

 Conflicts:
	pkg/common/db/controller/group.go
test-errcode
wangchuxiao 2 years ago
commit d6edb4aa8c

@ -18,7 +18,6 @@ import (
cp "Open_IM/internal/utils"
"Open_IM/pkg/getcdv3"
pbCache "Open_IM/pkg/proto/cache"
pbConversation "Open_IM/pkg/proto/conversation"
pbGroup "Open_IM/pkg/proto/group"
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
@ -226,47 +225,41 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJoinedGroupListReq) (*pbGroup.GetJoinedGroupListResp, error) {
resp := &pbGroup.GetJoinedGroupListResp{}
if err := token_verify.CheckAccessV3(ctx, req.FromUserID); err != nil {
return nil, err
}
joinedGroupList, err := rocksCache.GetJoinedGroupIDListFromCache(ctx, req.FromUserID)
groups, err := s.GroupInterface.GetJoinedGroupList(ctx, req.FromUserID)
if err != nil {
return nil, err
}
for _, groupID := range joinedGroupList {
var groupNode open_im_sdk.GroupInfo
num, err := rocksCache.GetGroupMemberNumFromCache(ctx, groupID)
if err != nil {
log.NewError(tools.OperationID(ctx), utils.GetSelfFuncName(), err.Error(), groupID)
continue
if len(groups) == 0 {
return resp, nil
}
owner, err := (*relation.GroupMember)(nil).TakeOwnerInfo(ctx, groupID)
//owner, err2 := relation.GetGroupOwnerInfoByGroupID(groupID)
if err != nil {
continue
var groupIDs []string
for _, group := range groups {
groupIDs = append(groupIDs, group.GroupID)
}
group, err := rocksCache.GetGroupInfoFromCache(ctx, groupID)
groupMemberNum, err := s.GroupInterface.GetGroupMemberNum(ctx, groupIDs)
if err != nil {
continue
return nil, err
}
if group.GroupType == constant.SuperGroup {
continue
groupOwnerUserID, err := s.GroupInterface.GetGroupOwnerUserID(ctx, groupIDs)
if err != nil {
return nil, err
}
if group.Status == constant.GroupStatusDismissed {
for _, group := range groups {
if group.Status == constant.GroupStatusDismissed || group.GroupType == constant.SuperGroup {
continue
}
var groupNode open_im_sdk.GroupInfo
utils.CopyStructFields(&groupNode, group)
groupNode.CreateTime = uint32(group.CreateTime.Unix())
groupNode.NotificationUpdateTime = uint32(group.NotificationUpdateTime.Unix())
if group.NotificationUpdateTime.Unix() < 0 {
groupNode.NotificationUpdateTime = 0
}
groupNode.MemberCount = uint32(num)
groupNode.OwnerUserID = owner.UserID
groupNode.MemberCount = uint32(groupMemberNum[group.GroupID])
groupNode.OwnerUserID = groupOwnerUserID[group.GroupID]
groupNode.CreateTime = group.CreateTime.UnixMilli()
groupNode.NotificationUpdateTime = group.NotificationUpdateTime.UnixMilli()
resp.GroupList = append(resp.GroupList, &groupNode)
}
resp.Total = uint32(len(resp.GroupList))
return resp, nil
}

@ -9,6 +9,7 @@ import (
"Open_IM/pkg/common/log"
promePkg "Open_IM/pkg/common/prometheus"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/common/tools"
"Open_IM/pkg/getcdv3"
pbConversation "Open_IM/pkg/proto/conversation"
pbFriend "Open_IM/pkg/proto/friend"
@ -138,22 +139,6 @@ func syncPeerUserConversation(conversation *pbConversation.Conversation, operati
return nil
}
func (s *userServer) GetUserInfo(ctx context.Context, req *pbUser.GetUserInfoReq) (*pbUser.GetUserInfoResp, error) {
resp := &pbUser.GetUserInfoResp{}
users, err := s.Find(ctx, req.UserIDList)
if err != nil {
return nil, err
}
for _, v := range users {
n, err := utils2.NewDBUser(v).Convert()
if err != nil {
return nil, err
}
resp.UserInfoList = append(resp.UserInfoList, n)
}
return resp, nil
}
func (s *userServer) BatchSetConversations(ctx context.Context, req *pbUser.BatchSetConversationsReq) (*pbUser.BatchSetConversationsResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
if req.NotificationType == 0 {
@ -373,34 +358,87 @@ func (s *userServer) GetAllUserID(_ context.Context, req *pbUser.GetAllUserIDReq
}
}
func (s *userServer) AccountCheck(_ context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) {
log.NewInfo(req.OperationID, "AccountCheck args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
log.NewError(req.OperationID, "IsManagerUserID false ", req.OpUserID)
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) {
joinedGroupIDList, err := rocksCache.GetJoinedGroupIDListFromCache(userID)
if err != nil {
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
}
uidList, err := imdb.SelectSomeUserID(req.CheckUserIDList)
log.NewDebug(req.OperationID, "from db uid list is:", uidList)
for _, groupID := range joinedGroupIDList {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: groupID, FaceURL: faceURL}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(groupID); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(groupID, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID, userID)
continue
}
chat.GroupMemberInfoSetNotification(operationID, opUserID, groupID, userID)
}
}
func (s *userServer) SyncJoinedGroupMemberNickname(userID string, newNickname, oldNickname string, operationID string, opUserID string) {
joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID)
if err != nil {
log.NewError(req.OperationID, "SelectSomeUserID failed ", err.Error(), req.CheckUserIDList)
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
} else {
var r []*pbUser.AccountCheckResp_SingleUserStatus
for _, v := range req.CheckUserIDList {
temp := new(pbUser.AccountCheckResp_SingleUserStatus)
temp.UserID = v
if utils.IsContain(v, uidList) {
temp.AccountStatus = constant.Registered
} else {
temp.AccountStatus = constant.UnRegistered
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
}
for _, v := range joinedGroupIDList {
member, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(v, userID)
if err != nil {
log.NewWarn(operationID, "GetGroupMemberInfoByGroupIDAndUserID failed ", err.Error(), v, userID)
continue
}
if member.Nickname == oldNickname {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: v, Nickname: newNickname}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(v); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(v, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
}
chat.GroupMemberInfoSetNotification(operationID, opUserID, v, userID)
}
r = append(r, temp)
}
resp := pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: 0, ErrMsg: ""}, ResultList: r}
log.NewInfo(req.OperationID, "AccountCheck rpc return ", resp.String())
return &resp, nil
}
func (s *userServer) AddUser(ctx context.Context, req *pbUser.AddUserReq) (*pbUser.AddUserResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
resp := &pbUser.AddUserResp{CommonResp: &pbUser.CommonResp{}}
err := imdb.AddUser(req.UserInfo.UserID, req.UserInfo.PhoneNumber, req.UserInfo.Nickname, req.UserInfo.Email, req.UserInfo.Gender, req.UserInfo.FaceURL, req.UserInfo.BirthStr)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "AddUser", err.Error(), req.String())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = err.Error()
return resp, nil
}
return resp, nil
}
func (s *userServer) GetUsersInfo(ctx context.Context, req *pbUser.GetUsersInfoReq) (*pbUser.GetUsersInfoResp, error) {
resp := &pbUser.GetUsersInfoResp{}
users, err := s.Find(ctx, req.UserIDs)
if err != nil {
return nil, err
}
for _, v := range users {
n, err := utils2.NewDBUser(v).Convert()
if err != nil {
return nil, err
}
resp.UsersInfo = append(resp.UsersInfo, n)
}
return resp, nil
}
func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserInfoReq) (*pbUser.UpdateUserInfoResp, error) {
@ -462,106 +500,65 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
}
return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{}}, nil
}
func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.SetGlobalRecvMessageOptReq) (*pbUser.SetGlobalRecvMessageOptResp, error) {
log.NewInfo(req.OperationID, "SetGlobalRecvMessageOpt args ", req.String())
var user imdb.User
user.UserID = req.UserID
func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.SetGlobalRecvMessageOptReq) (*pbUser.SetGlobalRecvMessageOptResp, error) {
resp := pbUser.SetGlobalRecvMessageOptResp{}
m := make(map[string]interface{}, 1)
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.GlobalRecvMsgOpt, "set GlobalRecvMsgOpt")
m["global_recv_msg_opt"] = req.GlobalRecvMsgOpt
err := db.DB.SetUserGlobalMsgRecvOpt(user.UserID, req.GlobalRecvMsgOpt)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetGlobalRecvMessageOpt failed ", err.Error(), user)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
err = imdb.UpdateUserInfoByMap(user, m)
if err != nil {
log.NewError(req.OperationID, "SetGlobalRecvMessageOpt failed ", err.Error(), user)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
if err := rocksCache.DelUserInfoFromCache(user.UserID); err != nil {
log.NewError(req.OperationID, "DelUserInfoFromCache failed ", err.Error(), req.String())
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil
}
chat.UserInfoUpdatedNotification(req.OperationID, req.UserID, req.UserID)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{}}, nil
}
func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) {
joinedGroupIDList, err := rocksCache.GetJoinedGroupIDListFromCache(userID)
err := s.UpdateByMap(ctx, req.UserID, m)
if err != nil {
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
}
for _, groupID := range joinedGroupIDList {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: groupID, FaceURL: faceURL}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(groupID); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(groupID, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID, userID)
continue
}
chat.GroupMemberInfoSetNotification(operationID, opUserID, groupID, userID)
return nil, err
}
chat.UserInfoUpdatedNotification(tools.OperationID(ctx), req.UserID, req.UserID)
return &resp, nil
}
func (s *userServer) SyncJoinedGroupMemberNickname(userID string, newNickname, oldNickname string, operationID string, opUserID string) {
joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID)
func (s *userServer) AccountCheck(ctx context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) {
resp := pbUser.AccountCheckResp{}
err := token_verify.CheckManagerUserID(ctx, tools.OpUserID(ctx))
if err != nil {
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
return nil, err
}
for _, v := range joinedGroupIDList {
member, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(v, userID)
user, err := s.Find(ctx, req.CheckUserIDs)
if err != nil {
log.NewWarn(operationID, "GetGroupMemberInfoByGroupIDAndUserID failed ", err.Error(), v, userID)
continue
}
if member.Nickname == oldNickname {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: v, Nickname: newNickname}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
return nil, err
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(v); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(v, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
uidList := make([]string, 0)
for _, v := range user {
uidList = append(uidList, v.UserID)
}
chat.GroupMemberInfoSetNotification(operationID, opUserID, v, userID)
var r []*pbUser.AccountCheckResp_SingleUserStatus
for _, v := range req.CheckUserIDs {
temp := new(pbUser.AccountCheckResp_SingleUserStatus)
temp.UserID = v
if utils.IsContain(v, uidList) {
temp.AccountStatus = constant.Registered
} else {
temp.AccountStatus = constant.UnRegistered
}
r = append(r, temp)
}
return &resp, nil
}
func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pbUser.GetUsersResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
var usersDB []imdb.User
resp := pbUser.GetUsersResp{}
var err error
resp := &pbUser.GetUsersResp{CommonResp: &pbUser.CommonResp{}, Pagination: &sdkws.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber}}
if req.UserID != "" {
userDB, err := imdb.GetUserByUserID(req.UserID)
u, err := s.Take(ctx, req.UserID)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return resp, nil
return nil, err
}
log.NewError(req.OperationID, utils.GetSelfFuncName(), req.UserID, err.Error())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg
return resp, nil
resp.Total = 1
u1, err := utils2.NewDBUser(u).Convert()
if err != nil {
return nil, err
}
resp.Users = append(resp.Users, u1)
return &resp, nil
}
usersDB = append(usersDB, *userDB)
resp.TotalNums = 1
} else if req.UserName != "" {
if req.UserName != "" {
usersDB, err = imdb.GetUserByName(req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber, err.Error())
@ -587,7 +584,9 @@ func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pb
return resp, nil
}
resp.TotalNums = int32(count)
} else {
}
else {
usersDB, err = imdb.GetUsers(req.Pagination.ShowNumber, req.Pagination.PageNumber)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUsers failed", req.Pagination.ShowNumber, req.Pagination.PageNumber, err.Error())
@ -631,16 +630,3 @@ func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pb
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
return resp, nil
}
func (s *userServer) AddUser(ctx context.Context, req *pbUser.AddUserReq) (*pbUser.AddUserResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
resp := &pbUser.AddUserResp{CommonResp: &pbUser.CommonResp{}}
err := imdb.AddUser(req.UserInfo.UserID, req.UserInfo.PhoneNumber, req.UserInfo.Nickname, req.UserInfo.Email, req.UserInfo.Gender, req.UserInfo.FaceURL, req.UserInfo.BirthStr)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "AddUser", err.Error(), req.String())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = err.Error()
return resp, nil
}
return resp, nil
}

@ -23,10 +23,18 @@ type DBFriend struct {
*relation.Friend
}
func NewDBFriend(friend *relation.Friend) *DBFriend {
return &DBFriend{Friend: friend}
}
type PBFriend struct {
*sdk.FriendInfo
}
func NewPBFriend(friendInfo *sdk.FriendInfo) *PBFriend {
return &PBFriend{FriendInfo: friendInfo}
}
func (db *DBFriend) convert() (*sdk.FriendInfo, error) {
pbFriend := &sdk.FriendInfo{FriendUser: &sdk.UserInfo{}}
utils.CopyStructFields(pbFriend, db)
@ -53,10 +61,18 @@ type DBFriendRequest struct {
*relation.FriendRequest
}
func NewDBFriendRequest(friendRequest *relation.FriendRequest) *DBFriendRequest {
return &DBFriendRequest{FriendRequest: friendRequest}
}
type PBFriendRequest struct {
*sdk.FriendRequest
}
func NewPBFriendRequest(friendRequest *sdk.FriendRequest) *PBFriendRequest {
return &PBFriendRequest{FriendRequest: friendRequest}
}
func (pb *PBFriendRequest) Convert() (*relation.FriendRequest, error) {
dbFriendRequest := &relation.FriendRequest{}
utils.CopyStructFields(dbFriendRequest, pb)
@ -90,10 +106,18 @@ type DBBlack struct {
*relation.Black
}
func NewDBBlack(black *relation.Black) *DBBlack {
return &DBBlack{Black: black}
}
type PBBlack struct {
*sdk.BlackInfo
}
func NewPBBlack(blackInfo *sdk.BlackInfo) *PBBlack {
return &PBBlack{BlackInfo: blackInfo}
}
func (pb *PBBlack) Convert() (*relation.Black, error) {
dbBlack := &relation.Black{}
dbBlack.BlockUserID = pb.BlackUserInfo.UserID
@ -116,10 +140,18 @@ type DBGroup struct {
*relation.Group
}
func NewDBGroup(group *relation.Group) *DBGroup {
return &DBGroup{Group: group}
}
type PBGroup struct {
*sdk.GroupInfo
}
func NewPBGroup(groupInfo *sdk.GroupInfo) *PBGroup {
return &PBGroup{GroupInfo: groupInfo}
}
func (pb *PBGroup) Convert() *relation.Group {
dst := &relation.Group{}
_ = utils.CopyStructFields(dst, pb)
@ -151,10 +183,18 @@ type DBGroupMember struct {
*relation.GroupMember
}
func NewDBGroupMember(groupMember *relation.GroupMember) *DBGroupMember {
return &DBGroupMember{GroupMember: groupMember}
}
type PBGroupMember struct {
*sdk.GroupMemberFullInfo
}
func NewPBGroupMember(groupMemberFullInfo *sdk.GroupMemberFullInfo) *PBGroupMember {
return &PBGroupMember{GroupMemberFullInfo: groupMemberFullInfo}
}
func (pb *PBGroupMember) Convert() (*relation.GroupMember, error) {
dst := &relation.GroupMember{}
utils.CopyStructFields(dst, pb)
@ -187,10 +227,18 @@ type DBGroupRequest struct {
*relation.GroupRequest
}
func NewDBGroupRequest(groupRequest *relation.GroupRequest) *DBGroupRequest {
return &DBGroupRequest{GroupRequest: groupRequest}
}
type PBGroupRequest struct {
*sdk.GroupRequest
}
func NewPBGroupRequest(groupRequest *sdk.GroupRequest) *PBGroupRequest {
return &PBGroupRequest{GroupRequest: groupRequest}
}
func (pb *PBGroupRequest) Convert() (*relation.GroupRequest, error) {
dst := &relation.GroupRequest{}
utils.CopyStructFields(dst, pb)
@ -210,10 +258,18 @@ type DBUser struct {
*relation.User
}
func NewDBUser(user *relation.User) *DBUser {
return &DBUser{User: user}
}
type PBUser struct {
*sdk.UserInfo
}
func NewPBUser(userInfo *sdk.UserInfo) *PBUser {
return &PBUser{UserInfo: userInfo}
}
func (pb *PBUser) Convert() (*relation.User, error) {
dst := &relation.User{}
utils.CopyStructFields(dst, pb)

@ -17,7 +17,9 @@ type GroupInterface interface {
CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error
DeleteGroupByIDs(ctx context.Context, groupIDs []string) error
TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error)
GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error)
GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error)
GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error)
//mongo
CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error
GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error)
@ -146,6 +148,11 @@ func (g *GroupDataBase) Update(ctx context.Context, groups []*relation.Group) er
})
}
func (g *GroupDataBase) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) {
return nil, nil
}
func (g *GroupDataBase) CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error {
sess, err := g.mongoDB.MgoClient.StartSession()
if err != nil {

@ -11,6 +11,8 @@ type UserInterface interface {
Create(ctx context.Context, users []*relation.User) error
Take(ctx context.Context, userID string) (user *relation.User, err error)
Update(ctx context.Context, users []*relation.User) (err error)
UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error)
GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error)
}
type UserController struct {
@ -29,6 +31,12 @@ func (u *UserController) Take(ctx context.Context, userID string) (user *relatio
func (u *UserController) Update(ctx context.Context, users []*relation.User) (err error) {
return u.database.Update(ctx, users)
}
func (u *UserController) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
return u.database.UpdateByMap(ctx, userID, args)
}
func (u *UserController) GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error) {
return u.database.GetByName(ctx, userName, showNumber, pageNumber)
}
func NewUserController(db *gorm.DB) UserInterface {
controller := &UserController{database: newUserDatabase(db)}
@ -40,6 +48,8 @@ type UserDatabaseInterface interface {
Create(ctx context.Context, users []*relation.User) error
Take(ctx context.Context, userID string) (user *relation.User, err error)
Update(ctx context.Context, users []*relation.User) (err error)
UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error)
GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error)
}
type UserDatabase struct {
@ -67,3 +77,9 @@ func (u *UserDatabase) Take(ctx context.Context, userID string) (user *relation.
func (u *UserDatabase) Update(ctx context.Context, users []*relation.User) (err error) {
return u.sqlDB.Update(ctx, users)
}
func (u *UserDatabase) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
return u.sqlDB.UpdateByMap(ctx, userID, args)
}
func (u *UserDatabase) GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error) {
return u.sqlDB.GetByName(ctx, userName, showNumber, pageNumber)
}

@ -4,6 +4,7 @@ import (
"Open_IM/pkg/common/trace_log"
"Open_IM/pkg/utils"
"context"
"fmt"
"gorm.io/gorm"
"time"
)
@ -69,3 +70,11 @@ func (u *User) Take(ctx context.Context, userID string) (user *User, err error)
err = utils.Wrap(u.DB.Where("user_id = ?", userID).Take(&user).Error, "")
return user, err
}
func (u *User) GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*User, err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "userName", userName, "showNumber", showNumber, "pageNumber", pageNumber, "users", users)
}()
err = u.DB.Where(" name like ?", fmt.Sprintf("%%%s%%", userName)).Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&users).Error
return users, utils.Wrap(err, "")
}

@ -159,15 +159,15 @@ func CheckAccess(ctx context.Context, OpUserID string, OwnerUserID string) bool
return false
}
func CheckAccessV3(ctx context.Context, OwnerUserID string) (err error) {
func CheckAccessV3(ctx context.Context, ownerUserID string) (err error) {
opUserID := tools.OpUserID(ctx)
defer func() {
trace_log.SetCtxInfo(ctx, utils.GetFuncName(1), err, "OpUserID", opUserID, "OwnerUserID", OwnerUserID)
trace_log.SetCtxInfo(ctx, utils.GetFuncName(1), err, "OpUserID", opUserID, "ownerUserID", ownerUserID)
}()
if utils.IsContain(opUserID, config.Config.Manager.AppManagerUid) {
return nil
}
if opUserID == OwnerUserID {
if opUserID == ownerUserID {
return nil
}
return constant.ErrIdentity.Wrap(utils.GetSelfFuncName())

@ -39,7 +39,7 @@ func (m *CreateGroupReq) Reset() { *m = CreateGroupReq{} }
func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) }
func (*CreateGroupReq) ProtoMessage() {}
func (*CreateGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{0}
return fileDescriptor_group_0c9461c2b49843c3, []int{0}
}
func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b)
@ -98,7 +98,7 @@ func (m *CreateGroupResp) Reset() { *m = CreateGroupResp{} }
func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) }
func (*CreateGroupResp) ProtoMessage() {}
func (*CreateGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{1}
return fileDescriptor_group_0c9461c2b49843c3, []int{1}
}
func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupResp.Unmarshal(m, b)
@ -136,7 +136,7 @@ func (m *GetGroupsInfoReq) Reset() { *m = GetGroupsInfoReq{} }
func (m *GetGroupsInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupsInfoReq) ProtoMessage() {}
func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{2}
return fileDescriptor_group_0c9461c2b49843c3, []int{2}
}
func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsInfoReq.Unmarshal(m, b)
@ -174,7 +174,7 @@ func (m *GetGroupsInfoResp) Reset() { *m = GetGroupsInfoResp{} }
func (m *GetGroupsInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupsInfoResp) ProtoMessage() {}
func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{3}
return fileDescriptor_group_0c9461c2b49843c3, []int{3}
}
func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsInfoResp.Unmarshal(m, b)
@ -212,7 +212,7 @@ func (m *SetGroupInfoReq) Reset() { *m = SetGroupInfoReq{} }
func (m *SetGroupInfoReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupInfoReq) ProtoMessage() {}
func (*SetGroupInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{4}
return fileDescriptor_group_0c9461c2b49843c3, []int{4}
}
func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupInfoReq.Unmarshal(m, b)
@ -249,7 +249,7 @@ func (m *SetGroupInfoResp) Reset() { *m = SetGroupInfoResp{} }
func (m *SetGroupInfoResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupInfoResp) ProtoMessage() {}
func (*SetGroupInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{5}
return fileDescriptor_group_0c9461c2b49843c3, []int{5}
}
func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupInfoResp.Unmarshal(m, b)
@ -281,7 +281,7 @@ func (m *GetGroupApplicationListReq) Reset() { *m = GetGroupApplicationL
func (m *GetGroupApplicationListReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupApplicationListReq) ProtoMessage() {}
func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{6}
return fileDescriptor_group_0c9461c2b49843c3, []int{6}
}
func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupApplicationListReq.Unmarshal(m, b)
@ -327,7 +327,7 @@ func (m *GetGroupApplicationListResp) Reset() { *m = GetGroupApplication
func (m *GetGroupApplicationListResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupApplicationListResp) ProtoMessage() {}
func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{7}
return fileDescriptor_group_0c9461c2b49843c3, []int{7}
}
func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupApplicationListResp.Unmarshal(m, b)
@ -373,7 +373,7 @@ func (m *GetUserReqApplicationListReq) Reset() { *m = GetUserReqApplicat
func (m *GetUserReqApplicationListReq) String() string { return proto.CompactTextString(m) }
func (*GetUserReqApplicationListReq) ProtoMessage() {}
func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{8}
return fileDescriptor_group_0c9461c2b49843c3, []int{8}
}
func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserReqApplicationListReq.Unmarshal(m, b)
@ -419,7 +419,7 @@ func (m *GetUserReqApplicationListResp) Reset() { *m = GetUserReqApplica
func (m *GetUserReqApplicationListResp) String() string { return proto.CompactTextString(m) }
func (*GetUserReqApplicationListResp) ProtoMessage() {}
func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{9}
return fileDescriptor_group_0c9461c2b49843c3, []int{9}
}
func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserReqApplicationListResp.Unmarshal(m, b)
@ -466,7 +466,7 @@ func (m *TransferGroupOwnerReq) Reset() { *m = TransferGroupOwnerReq{} }
func (m *TransferGroupOwnerReq) String() string { return proto.CompactTextString(m) }
func (*TransferGroupOwnerReq) ProtoMessage() {}
func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{10}
return fileDescriptor_group_0c9461c2b49843c3, []int{10}
}
func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransferGroupOwnerReq.Unmarshal(m, b)
@ -517,7 +517,7 @@ func (m *TransferGroupOwnerResp) Reset() { *m = TransferGroupOwnerResp{}
func (m *TransferGroupOwnerResp) String() string { return proto.CompactTextString(m) }
func (*TransferGroupOwnerResp) ProtoMessage() {}
func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{11}
return fileDescriptor_group_0c9461c2b49843c3, []int{11}
}
func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransferGroupOwnerResp.Unmarshal(m, b)
@ -551,7 +551,7 @@ func (m *JoinGroupReq) Reset() { *m = JoinGroupReq{} }
func (m *JoinGroupReq) String() string { return proto.CompactTextString(m) }
func (*JoinGroupReq) ProtoMessage() {}
func (*JoinGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{12}
return fileDescriptor_group_0c9461c2b49843c3, []int{12}
}
func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupReq.Unmarshal(m, b)
@ -609,7 +609,7 @@ func (m *JoinGroupResp) Reset() { *m = JoinGroupResp{} }
func (m *JoinGroupResp) String() string { return proto.CompactTextString(m) }
func (*JoinGroupResp) ProtoMessage() {}
func (*JoinGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{13}
return fileDescriptor_group_0c9461c2b49843c3, []int{13}
}
func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupResp.Unmarshal(m, b)
@ -643,7 +643,7 @@ func (m *GroupApplicationResponseReq) Reset() { *m = GroupApplicationRes
func (m *GroupApplicationResponseReq) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationResponseReq) ProtoMessage() {}
func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{14}
return fileDescriptor_group_0c9461c2b49843c3, []int{14}
}
func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationResponseReq.Unmarshal(m, b)
@ -701,7 +701,7 @@ func (m *GroupApplicationResponseResp) Reset() { *m = GroupApplicationRe
func (m *GroupApplicationResponseResp) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationResponseResp) ProtoMessage() {}
func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{15}
return fileDescriptor_group_0c9461c2b49843c3, []int{15}
}
func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationResponseResp.Unmarshal(m, b)
@ -732,7 +732,7 @@ func (m *QuitGroupReq) Reset() { *m = QuitGroupReq{} }
func (m *QuitGroupReq) String() string { return proto.CompactTextString(m) }
func (*QuitGroupReq) ProtoMessage() {}
func (*QuitGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{16}
return fileDescriptor_group_0c9461c2b49843c3, []int{16}
}
func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QuitGroupReq.Unmarshal(m, b)
@ -769,7 +769,7 @@ func (m *QuitGroupResp) Reset() { *m = QuitGroupResp{} }
func (m *QuitGroupResp) String() string { return proto.CompactTextString(m) }
func (*QuitGroupResp) ProtoMessage() {}
func (*QuitGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{17}
return fileDescriptor_group_0c9461c2b49843c3, []int{17}
}
func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QuitGroupResp.Unmarshal(m, b)
@ -802,7 +802,7 @@ func (m *GetGroupMemberListReq) Reset() { *m = GetGroupMemberListReq{} }
func (m *GetGroupMemberListReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberListReq) ProtoMessage() {}
func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{18}
return fileDescriptor_group_0c9461c2b49843c3, []int{18}
}
func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberListReq.Unmarshal(m, b)
@ -855,7 +855,7 @@ func (m *GetGroupMemberListResp) Reset() { *m = GetGroupMemberListResp{}
func (m *GetGroupMemberListResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberListResp) ProtoMessage() {}
func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{19}
return fileDescriptor_group_0c9461c2b49843c3, []int{19}
}
func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b)
@ -901,7 +901,7 @@ func (m *GetGroupMembersInfoReq) Reset() { *m = GetGroupMembersInfoReq{}
func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersInfoReq) ProtoMessage() {}
func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{20}
return fileDescriptor_group_0c9461c2b49843c3, []int{20}
}
func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b)
@ -946,7 +946,7 @@ func (m *GetGroupMembersInfoResp) Reset() { *m = GetGroupMembersInfoResp
func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersInfoResp) ProtoMessage() {}
func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{21}
return fileDescriptor_group_0c9461c2b49843c3, []int{21}
}
func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b)
@ -986,7 +986,7 @@ func (m *KickGroupMemberReq) Reset() { *m = KickGroupMemberReq{} }
func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*KickGroupMemberReq) ProtoMessage() {}
func (*KickGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{22}
return fileDescriptor_group_0c9461c2b49843c3, []int{22}
}
func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b)
@ -1027,54 +1027,7 @@ func (m *KickGroupMemberReq) GetReason() string {
return ""
}
type Id2Result struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
Result int32 `protobuf:"varint,2,opt,name=result" json:"result,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Id2Result) Reset() { *m = Id2Result{} }
func (m *Id2Result) String() string { return proto.CompactTextString(m) }
func (*Id2Result) ProtoMessage() {}
func (*Id2Result) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{23}
}
func (m *Id2Result) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Id2Result.Unmarshal(m, b)
}
func (m *Id2Result) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Id2Result.Marshal(b, m, deterministic)
}
func (dst *Id2Result) XXX_Merge(src proto.Message) {
xxx_messageInfo_Id2Result.Merge(dst, src)
}
func (m *Id2Result) XXX_Size() int {
return xxx_messageInfo_Id2Result.Size(m)
}
func (m *Id2Result) XXX_DiscardUnknown() {
xxx_messageInfo_Id2Result.DiscardUnknown(m)
}
var xxx_messageInfo_Id2Result proto.InternalMessageInfo
func (m *Id2Result) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *Id2Result) GetResult() int32 {
if m != nil {
return m.Result
}
return 0
}
type KickGroupMemberResp struct {
Id2ResultList []*Id2Result `protobuf:"bytes,3,rep,name=id2ResultList" json:"id2ResultList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1084,7 +1037,7 @@ func (m *KickGroupMemberResp) Reset() { *m = KickGroupMemberResp{} }
func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*KickGroupMemberResp) ProtoMessage() {}
func (*KickGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{24}
return fileDescriptor_group_0c9461c2b49843c3, []int{23}
}
func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickGroupMemberResp.Unmarshal(m, b)
@ -1104,13 +1057,6 @@ func (m *KickGroupMemberResp) XXX_DiscardUnknown() {
var xxx_messageInfo_KickGroupMemberResp proto.InternalMessageInfo
func (m *KickGroupMemberResp) GetId2ResultList() []*Id2Result {
if m != nil {
return m.Id2ResultList
}
return nil
}
type GetJoinedGroupListReq struct {
FromUserID string `protobuf:"bytes,1,opt,name=fromUserID" json:"fromUserID,omitempty"`
Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=pagination" json:"pagination,omitempty"`
@ -1123,7 +1069,7 @@ func (m *GetJoinedGroupListReq) Reset() { *m = GetJoinedGroupListReq{} }
func (m *GetJoinedGroupListReq) String() string { return proto.CompactTextString(m) }
func (*GetJoinedGroupListReq) ProtoMessage() {}
func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{25}
return fileDescriptor_group_0c9461c2b49843c3, []int{24}
}
func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedGroupListReq.Unmarshal(m, b)
@ -1169,7 +1115,7 @@ func (m *GetJoinedGroupListResp) Reset() { *m = GetJoinedGroupListResp{}
func (m *GetJoinedGroupListResp) String() string { return proto.CompactTextString(m) }
func (*GetJoinedGroupListResp) ProtoMessage() {}
func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{26}
return fileDescriptor_group_0c9461c2b49843c3, []int{25}
}
func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedGroupListResp.Unmarshal(m, b)
@ -1216,7 +1162,7 @@ func (m *InviteUserToGroupReq) Reset() { *m = InviteUserToGroupReq{} }
func (m *InviteUserToGroupReq) String() string { return proto.CompactTextString(m) }
func (*InviteUserToGroupReq) ProtoMessage() {}
func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{27}
return fileDescriptor_group_0c9461c2b49843c3, []int{26}
}
func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InviteUserToGroupReq.Unmarshal(m, b)
@ -1258,7 +1204,6 @@ func (m *InviteUserToGroupReq) GetInvitedUserIDList() []string {
}
type InviteUserToGroupResp struct {
Id2ResultList []*Id2Result `protobuf:"bytes,3,rep,name=id2ResultList" json:"id2ResultList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1268,7 +1213,7 @@ func (m *InviteUserToGroupResp) Reset() { *m = InviteUserToGroupResp{} }
func (m *InviteUserToGroupResp) String() string { return proto.CompactTextString(m) }
func (*InviteUserToGroupResp) ProtoMessage() {}
func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{28}
return fileDescriptor_group_0c9461c2b49843c3, []int{27}
}
func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InviteUserToGroupResp.Unmarshal(m, b)
@ -1288,13 +1233,6 @@ func (m *InviteUserToGroupResp) XXX_DiscardUnknown() {
var xxx_messageInfo_InviteUserToGroupResp proto.InternalMessageInfo
func (m *InviteUserToGroupResp) GetId2ResultList() []*Id2Result {
if m != nil {
return m.Id2ResultList
}
return nil
}
type GetGroupAllMemberReq struct {
GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"`
Offset int32 `protobuf:"varint,4,opt,name=offset" json:"offset,omitempty"`
@ -1308,7 +1246,7 @@ func (m *GetGroupAllMemberReq) Reset() { *m = GetGroupAllMemberReq{} }
func (m *GetGroupAllMemberReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupAllMemberReq) ProtoMessage() {}
func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{29}
return fileDescriptor_group_0c9461c2b49843c3, []int{28}
}
func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAllMemberReq.Unmarshal(m, b)
@ -1360,7 +1298,7 @@ func (m *GetGroupAllMemberResp) Reset() { *m = GetGroupAllMemberResp{} }
func (m *GetGroupAllMemberResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupAllMemberResp) ProtoMessage() {}
func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{30}
return fileDescriptor_group_0c9461c2b49843c3, []int{29}
}
func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAllMemberResp.Unmarshal(m, b)
@ -1400,7 +1338,7 @@ func (m *CMSGroup) Reset() { *m = CMSGroup{} }
func (m *CMSGroup) String() string { return proto.CompactTextString(m) }
func (*CMSGroup) ProtoMessage() {}
func (*CMSGroup) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{31}
return fileDescriptor_group_0c9461c2b49843c3, []int{30}
}
func (m *CMSGroup) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CMSGroup.Unmarshal(m, b)
@ -1454,7 +1392,7 @@ func (m *GetGroupsReq) Reset() { *m = GetGroupsReq{} }
func (m *GetGroupsReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupsReq) ProtoMessage() {}
func (*GetGroupsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{32}
return fileDescriptor_group_0c9461c2b49843c3, []int{31}
}
func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsReq.Unmarshal(m, b)
@ -1507,7 +1445,7 @@ func (m *GetGroupsResp) Reset() { *m = GetGroupsResp{} }
func (m *GetGroupsResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupsResp) ProtoMessage() {}
func (*GetGroupsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{33}
return fileDescriptor_group_0c9461c2b49843c3, []int{32}
}
func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsResp.Unmarshal(m, b)
@ -1552,7 +1490,7 @@ func (m *GetGroupMemberReq) Reset() { *m = GetGroupMemberReq{} }
func (m *GetGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberReq) ProtoMessage() {}
func (*GetGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{34}
return fileDescriptor_group_0c9461c2b49843c3, []int{33}
}
func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberReq.Unmarshal(m, b)
@ -1592,7 +1530,7 @@ func (m *GetGroupMembersCMSReq) Reset() { *m = GetGroupMembersCMSReq{} }
func (m *GetGroupMembersCMSReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersCMSReq) ProtoMessage() {}
func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{35}
return fileDescriptor_group_0c9461c2b49843c3, []int{34}
}
func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b)
@ -1646,7 +1584,7 @@ func (m *GetGroupMembersCMSResp) Reset() { *m = GetGroupMembersCMSResp{}
func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersCMSResp) ProtoMessage() {}
func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{36}
return fileDescriptor_group_0c9461c2b49843c3, []int{35}
}
func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b)
@ -1698,7 +1636,7 @@ func (m *DismissGroupReq) Reset() { *m = DismissGroupReq{} }
func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) }
func (*DismissGroupReq) ProtoMessage() {}
func (*DismissGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{37}
return fileDescriptor_group_0c9461c2b49843c3, []int{36}
}
func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b)
@ -1735,7 +1673,7 @@ func (m *DismissGroupResp) Reset() { *m = DismissGroupResp{} }
func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) }
func (*DismissGroupResp) ProtoMessage() {}
func (*DismissGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{38}
return fileDescriptor_group_0c9461c2b49843c3, []int{37}
}
func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b)
@ -1768,7 +1706,7 @@ func (m *MuteGroupMemberReq) Reset() { *m = MuteGroupMemberReq{} }
func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*MuteGroupMemberReq) ProtoMessage() {}
func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{39}
return fileDescriptor_group_0c9461c2b49843c3, []int{38}
}
func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b)
@ -1819,7 +1757,7 @@ func (m *MuteGroupMemberResp) Reset() { *m = MuteGroupMemberResp{} }
func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*MuteGroupMemberResp) ProtoMessage() {}
func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{40}
return fileDescriptor_group_0c9461c2b49843c3, []int{39}
}
func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b)
@ -1851,7 +1789,7 @@ func (m *CancelMuteGroupMemberReq) Reset() { *m = CancelMuteGroupMemberR
func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupMemberReq) ProtoMessage() {}
func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{41}
return fileDescriptor_group_0c9461c2b49843c3, []int{40}
}
func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b)
@ -1895,7 +1833,7 @@ func (m *CancelMuteGroupMemberResp) Reset() { *m = CancelMuteGroupMember
func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupMemberResp) ProtoMessage() {}
func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{42}
return fileDescriptor_group_0c9461c2b49843c3, []int{41}
}
func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b)
@ -1926,7 +1864,7 @@ func (m *MuteGroupReq) Reset() { *m = MuteGroupReq{} }
func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) }
func (*MuteGroupReq) ProtoMessage() {}
func (*MuteGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{43}
return fileDescriptor_group_0c9461c2b49843c3, []int{42}
}
func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b)
@ -1963,7 +1901,7 @@ func (m *MuteGroupResp) Reset() { *m = MuteGroupResp{} }
func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) }
func (*MuteGroupResp) ProtoMessage() {}
func (*MuteGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{44}
return fileDescriptor_group_0c9461c2b49843c3, []int{43}
}
func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b)
@ -1994,7 +1932,7 @@ func (m *CancelMuteGroupReq) Reset() { *m = CancelMuteGroupReq{} }
func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupReq) ProtoMessage() {}
func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{45}
return fileDescriptor_group_0c9461c2b49843c3, []int{44}
}
func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b)
@ -2031,7 +1969,7 @@ func (m *CancelMuteGroupResp) Reset() { *m = CancelMuteGroupResp{} }
func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupResp) ProtoMessage() {}
func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{46}
return fileDescriptor_group_0c9461c2b49843c3, []int{45}
}
func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b)
@ -2064,7 +2002,7 @@ func (m *SetGroupMemberNicknameReq) Reset() { *m = SetGroupMemberNicknam
func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberNicknameReq) ProtoMessage() {}
func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{47}
return fileDescriptor_group_0c9461c2b49843c3, []int{46}
}
func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b)
@ -2115,7 +2053,7 @@ func (m *SetGroupMemberNicknameResp) Reset() { *m = SetGroupMemberNickna
func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberNicknameResp) ProtoMessage() {}
func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{48}
return fileDescriptor_group_0c9461c2b49843c3, []int{47}
}
func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b)
@ -2147,7 +2085,7 @@ func (m *GetJoinedSuperGroupListReq) Reset() { *m = GetJoinedSuperGroupL
func (m *GetJoinedSuperGroupListReq) String() string { return proto.CompactTextString(m) }
func (*GetJoinedSuperGroupListReq) ProtoMessage() {}
func (*GetJoinedSuperGroupListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{49}
return fileDescriptor_group_0c9461c2b49843c3, []int{48}
}
func (m *GetJoinedSuperGroupListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedSuperGroupListReq.Unmarshal(m, b)
@ -2193,7 +2131,7 @@ func (m *GetJoinedSuperGroupListResp) Reset() { *m = GetJoinedSuperGroup
func (m *GetJoinedSuperGroupListResp) String() string { return proto.CompactTextString(m) }
func (*GetJoinedSuperGroupListResp) ProtoMessage() {}
func (*GetJoinedSuperGroupListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{50}
return fileDescriptor_group_0c9461c2b49843c3, []int{49}
}
func (m *GetJoinedSuperGroupListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedSuperGroupListResp.Unmarshal(m, b)
@ -2238,7 +2176,7 @@ func (m *GetSuperGroupsInfoReq) Reset() { *m = GetSuperGroupsInfoReq{} }
func (m *GetSuperGroupsInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetSuperGroupsInfoReq) ProtoMessage() {}
func (*GetSuperGroupsInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{51}
return fileDescriptor_group_0c9461c2b49843c3, []int{50}
}
func (m *GetSuperGroupsInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSuperGroupsInfoReq.Unmarshal(m, b)
@ -2276,7 +2214,7 @@ func (m *GetSuperGroupsInfoResp) Reset() { *m = GetSuperGroupsInfoResp{}
func (m *GetSuperGroupsInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetSuperGroupsInfoResp) ProtoMessage() {}
func (*GetSuperGroupsInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{52}
return fileDescriptor_group_0c9461c2b49843c3, []int{51}
}
func (m *GetSuperGroupsInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSuperGroupsInfoResp.Unmarshal(m, b)
@ -2319,7 +2257,7 @@ func (m *SetGroupMemberInfoReq) Reset() { *m = SetGroupMemberInfoReq{} }
func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberInfoReq) ProtoMessage() {}
func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{53}
return fileDescriptor_group_0c9461c2b49843c3, []int{52}
}
func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b)
@ -2391,7 +2329,7 @@ func (m *SetGroupMemberInfoResp) Reset() { *m = SetGroupMemberInfoResp{}
func (m *SetGroupMemberInfoResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberInfoResp) ProtoMessage() {}
func (*SetGroupMemberInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{54}
return fileDescriptor_group_0c9461c2b49843c3, []int{53}
}
func (m *SetGroupMemberInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberInfoResp.Unmarshal(m, b)
@ -2422,7 +2360,7 @@ func (m *GetGroupAbstractInfoReq) Reset() { *m = GetGroupAbstractInfoReq
func (m *GetGroupAbstractInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupAbstractInfoReq) ProtoMessage() {}
func (*GetGroupAbstractInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{55}
return fileDescriptor_group_0c9461c2b49843c3, []int{54}
}
func (m *GetGroupAbstractInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAbstractInfoReq.Unmarshal(m, b)
@ -2462,7 +2400,7 @@ func (m *GroupAbstractInfo) Reset() { *m = GroupAbstractInfo{} }
func (m *GroupAbstractInfo) String() string { return proto.CompactTextString(m) }
func (*GroupAbstractInfo) ProtoMessage() {}
func (*GroupAbstractInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{56}
return fileDescriptor_group_0c9461c2b49843c3, []int{55}
}
func (m *GroupAbstractInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupAbstractInfo.Unmarshal(m, b)
@ -2514,7 +2452,7 @@ func (m *GetGroupAbstractInfoResp) Reset() { *m = GetGroupAbstractInfoRe
func (m *GetGroupAbstractInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupAbstractInfoResp) ProtoMessage() {}
func (*GetGroupAbstractInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{57}
return fileDescriptor_group_0c9461c2b49843c3, []int{56}
}
func (m *GetGroupAbstractInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAbstractInfoResp.Unmarshal(m, b)
@ -2565,7 +2503,6 @@ func init() {
proto.RegisterType((*GetGroupMembersInfoReq)(nil), "group.GetGroupMembersInfoReq")
proto.RegisterType((*GetGroupMembersInfoResp)(nil), "group.GetGroupMembersInfoResp")
proto.RegisterType((*KickGroupMemberReq)(nil), "group.KickGroupMemberReq")
proto.RegisterType((*Id2Result)(nil), "group.Id2Result")
proto.RegisterType((*KickGroupMemberResp)(nil), "group.KickGroupMemberResp")
proto.RegisterType((*GetJoinedGroupListReq)(nil), "group.GetJoinedGroupListReq")
proto.RegisterType((*GetJoinedGroupListResp)(nil), "group.GetJoinedGroupListResp")
@ -3547,128 +3484,125 @@ var _Group_serviceDesc = grpc.ServiceDesc{
Metadata: "group/group.proto",
}
func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_4fa7763fd681832d) }
var fileDescriptor_group_4fa7763fd681832d = []byte{
// 1907 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x73, 0xdb, 0xc6,
0x11, 0x1f, 0x50, 0xa6, 0x2c, 0xad, 0xa5, 0x50, 0x3e, 0x99, 0x32, 0x0d, 0xcb, 0xb6, 0x72, 0x71,
0x53, 0x4d, 0x6b, 0x53, 0x1d, 0xa5, 0xcd, 0x34, 0x4d, 0x67, 0xd2, 0xc4, 0xae, 0x1d, 0x35, 0xa2,
0x54, 0x83, 0x4e, 0x33, 0x93, 0x69, 0xab, 0x42, 0xe4, 0x11, 0x81, 0x45, 0x02, 0x27, 0x1c, 0x20,
0x67, 0x3a, 0xed, 0x4c, 0xdb, 0x87, 0x3e, 0xf5, 0xcf, 0x43, 0x1f, 0xfb, 0xd6, 0xe9, 0xa7, 0xe8,
0x5b, 0xbf, 0x59, 0x07, 0x77, 0x87, 0xe3, 0x01, 0x77, 0x20, 0x25, 0x97, 0x79, 0xe1, 0x0c, 0xf6,
0x76, 0xef, 0xf6, 0xf6, 0xdf, 0xfd, 0x76, 0x09, 0x37, 0x83, 0x24, 0xce, 0xe8, 0x1e, 0xff, 0xed,
0xd2, 0x24, 0x4e, 0x63, 0xd4, 0xe4, 0x1f, 0xee, 0xee, 0x31, 0x25, 0xd1, 0xe3, 0x83, 0xde, 0xe3,
0x3e, 0x49, 0x2e, 0x48, 0xb2, 0x47, 0xcf, 0x82, 0x3d, 0xce, 0xb0, 0xc7, 0x86, 0x67, 0x27, 0xaf,
0xd9, 0xde, 0x6b, 0x26, 0x04, 0xdc, 0xee, 0x5c, 0xce, 0xc4, 0xa7, 0x94, 0x24, 0x92, 0x1f, 0xff,
0xc7, 0x81, 0xb7, 0x9e, 0x24, 0xc4, 0x4f, 0xc9, 0xf3, 0xfc, 0x24, 0x8f, 0x9c, 0xa3, 0x77, 0xe1,
0xad, 0x30, 0x0a, 0xd3, 0x1e, 0x99, 0x9c, 0x92, 0xe4, 0x30, 0x64, 0x69, 0xc7, 0xd9, 0x59, 0xda,
0x5d, 0xf5, 0x2a, 0x54, 0xf4, 0x23, 0x58, 0xe5, 0xda, 0x1d, 0x44, 0xa3, 0xb8, 0xd3, 0xd8, 0x71,
0x76, 0x6f, 0xec, 0x6f, 0x77, 0x19, 0x3f, 0xf6, 0xc4, 0xa7, 0xe1, 0x09, 0xf5, 0x13, 0x7f, 0xc2,
0xba, 0xcf, 0x0b, 0x1e, 0x6f, 0xca, 0x8e, 0x30, 0xac, 0xf9, 0xc3, 0x49, 0x18, 0x7d, 0xce, 0x48,
0x72, 0xf0, 0x94, 0x75, 0x96, 0xf8, 0x09, 0x25, 0x1a, 0xda, 0x81, 0x1b, 0xf1, 0xeb, 0x88, 0x24,
0xe2, 0xbb, 0xd3, 0xdc, 0x71, 0x76, 0x57, 0x3d, 0x9d, 0x84, 0x7b, 0xd0, 0x2a, 0xe9, 0xce, 0x68,
0x59, 0xa9, 0xa5, 0x2b, 0x29, 0x85, 0xbf, 0x0f, 0x1b, 0xcf, 0x49, 0xca, 0x97, 0x18, 0x5f, 0x23,
0xe7, 0xb9, 0x12, 0x82, 0xe1, 0xa9, 0x66, 0x09, 0x9d, 0x84, 0xbf, 0x80, 0x9b, 0x15, 0x29, 0x46,
0xd1, 0x27, 0xb0, 0xae, 0xf6, 0xe5, 0x82, 0xf9, 0x05, 0xe7, 0xa9, 0x52, 0x16, 0xc1, 0x27, 0xd0,
0xea, 0xcb, 0x8d, 0x0b, 0x6d, 0x0e, 0xa1, 0xa5, 0x78, 0x9e, 0xc5, 0x49, 0x9f, 0xe4, 0x1a, 0xe5,
0x77, 0xc4, 0xb3, 0x36, 0x16, 0x9c, 0x5e, 0x55, 0x14, 0x23, 0xd8, 0x28, 0x1f, 0xc0, 0x28, 0xfe,
0x93, 0x03, 0x6e, 0x71, 0x9d, 0x8f, 0x29, 0x1d, 0x87, 0x03, 0x3f, 0x0d, 0xe3, 0x28, 0x57, 0x28,
0x57, 0xe0, 0x29, 0x00, 0xf5, 0x83, 0x30, 0xe2, 0x44, 0x79, 0xf6, 0x43, 0xcb, 0xd9, 0x1e, 0x39,
0xcf, 0x08, 0x4b, 0x7f, 0xae, 0x78, 0x3d, 0x4d, 0x0e, 0xdd, 0x07, 0x18, 0x25, 0xf1, 0x44, 0x3a,
0x76, 0x89, 0x3b, 0x56, 0xa3, 0xe0, 0x3f, 0x38, 0x70, 0xb7, 0x56, 0x09, 0x46, 0xd1, 0x2d, 0x68,
0xa6, 0x71, 0xea, 0x8f, 0xb9, 0x02, 0x4d, 0x4f, 0x7c, 0xa0, 0xcf, 0x60, 0x23, 0x90, 0x31, 0x9c,
0x9f, 0xad, 0x99, 0xfd, 0x41, 0x9d, 0x75, 0x24, 0xab, 0x67, 0x08, 0xe2, 0xdf, 0xc1, 0xf6, 0x73,
0x92, 0xe6, 0xfa, 0x78, 0xe4, 0xdc, 0x62, 0x88, 0x2d, 0x58, 0xce, 0x84, 0xfa, 0x0e, 0x57, 0x5f,
0x7e, 0x55, 0x0c, 0xd4, 0x78, 0x33, 0x03, 0xe5, 0x5e, 0xb8, 0x37, 0xe3, 0xf8, 0x2b, 0x99, 0xa0,
0xf1, 0xa6, 0x26, 0xf8, 0xa3, 0x03, 0xed, 0x97, 0x89, 0x1f, 0xb1, 0x11, 0x49, 0x38, 0xeb, 0x71,
0x9e, 0x7a, 0xf9, 0xe5, 0x3b, 0x70, 0x5d, 0x66, 0x80, 0xbc, 0x7d, 0xf1, 0x99, 0xd7, 0x8e, 0x78,
0x3c, 0x3c, 0xd6, 0xd2, 0xb6, 0xc1, 0x19, 0x2a, 0xd4, 0x9c, 0x2f, 0x22, 0xaf, 0x75, 0x3e, 0x11,
0x05, 0x15, 0x2a, 0xee, 0xc0, 0x96, 0x4d, 0x05, 0x46, 0xf1, 0xdf, 0x1c, 0x58, 0xfb, 0x59, 0x1c,
0x46, 0xaa, 0x6c, 0xd5, 0x2b, 0x75, 0x1f, 0x20, 0x21, 0xe7, 0x3d, 0xc2, 0x98, 0x1f, 0x10, 0xa9,
0x90, 0x46, 0xc9, 0xd7, 0x5f, 0xc5, 0x61, 0xd4, 0x8f, 0xb3, 0x64, 0x40, 0x78, 0x9d, 0x69, 0x7a,
0x1a, 0x05, 0x3d, 0x84, 0xf5, 0x30, 0xba, 0x08, 0x53, 0xa5, 0xeb, 0x32, 0xdf, 0xa2, 0x4c, 0xc4,
0x2d, 0x58, 0xd7, 0xf4, 0x61, 0x14, 0xff, 0x33, 0x8f, 0xe2, 0x4a, 0x08, 0xe7, 0x0b, 0x71, 0xc4,
0x48, 0x45, 0xe1, 0x25, 0x43, 0x61, 0x2d, 0x3f, 0xae, 0x55, 0xf3, 0x23, 0x5f, 0xff, 0xca, 0x8f,
0x86, 0x63, 0x32, 0xec, 0xb1, 0x40, 0x16, 0x46, 0x8d, 0x92, 0x57, 0x57, 0xf1, 0xe5, 0x11, 0x96,
0x8d, 0x53, 0xae, 0x6f, 0xd3, 0x2b, 0xd1, 0xf0, 0x7d, 0xd8, 0xae, 0x57, 0x8e, 0x51, 0xbc, 0x0b,
0x6b, 0x2f, 0xb2, 0x30, 0x9d, 0x6f, 0xde, 0xfc, 0xe2, 0x1a, 0x27, 0xa3, 0xf8, 0xef, 0x0e, 0xb4,
0x8b, 0xf4, 0x9d, 0xbe, 0x17, 0xb3, 0x7d, 0xb4, 0x05, 0xcb, 0xa3, 0x70, 0x9c, 0x92, 0x84, 0x5f,
0xb7, 0xe9, 0xc9, 0xaf, 0x05, 0xe5, 0xd3, 0x05, 0x6c, 0xd9, 0x14, 0xaa, 0xcd, 0xa3, 0x67, 0x00,
0x93, 0xe9, 0xf3, 0x27, 0x8a, 0xc8, 0xbb, 0x75, 0x19, 0x24, 0x76, 0x7c, 0x96, 0x8d, 0xc7, 0xbc,
0x8a, 0x6a, 0x92, 0xd8, 0xab, 0x9e, 0xab, 0xde, 0x95, 0x99, 0xd1, 0xaa, 0x9d, 0xdd, 0xe0, 0x0f,
0x8e, 0xbe, 0xa7, 0x0f, 0xb7, 0xad, 0x7b, 0x32, 0xba, 0x30, 0xb5, 0x13, 0x40, 0x9f, 0x85, 0x83,
0x33, 0x8d, 0x6d, 0xb6, 0xca, 0xdf, 0x81, 0x8d, 0xb3, 0x70, 0x70, 0x46, 0x86, 0x22, 0x3e, 0x35,
0xc5, 0x0d, 0x7a, 0xee, 0xe8, 0x84, 0xf8, 0x2c, 0x8e, 0x64, 0xd0, 0xcb, 0x2f, 0xfc, 0x21, 0xac,
0x1e, 0x0c, 0xf7, 0x45, 0x70, 0xd6, 0x56, 0x57, 0x2e, 0xcc, 0x43, 0xba, 0x21, 0xa2, 0x44, 0x7c,
0xe1, 0x1e, 0x6c, 0x1a, 0x0a, 0x33, 0x8a, 0xde, 0x87, 0xf5, 0xb0, 0xd8, 0x53, 0x33, 0xc9, 0x46,
0x57, 0x40, 0x2c, 0x75, 0x9e, 0x57, 0x66, 0xc3, 0xbf, 0xe7, 0xf1, 0x9b, 0x67, 0x33, 0x19, 0xf2,
0x3d, 0x8b, 0xf8, 0x2d, 0x27, 0xa6, 0x63, 0x24, 0xe6, 0x62, 0xa2, 0xf5, 0x15, 0x8f, 0x1a, 0xe3,
0xf8, 0xda, 0x68, 0x2d, 0x30, 0xcf, 0xa5, 0x81, 0xc6, 0x94, 0x1d, 0x5f, 0xc0, 0xad, 0x03, 0x5e,
0xc6, 0xf2, 0x1b, 0xbc, 0x8c, 0x6d, 0xe9, 0xbe, 0x64, 0x64, 0xaa, 0x74, 0xe0, 0x35, 0xdd, 0x81,
0xe8, 0x11, 0xdc, 0x14, 0x05, 0x51, 0x8f, 0x82, 0x26, 0x8f, 0x02, 0x73, 0x01, 0x1f, 0x43, 0xdb,
0x72, 0xee, 0xff, 0xe1, 0xb3, 0x5f, 0xc3, 0x2d, 0x05, 0x19, 0xc6, 0xe3, 0xcb, 0x44, 0xed, 0x16,
0x2c, 0xc7, 0xa3, 0x11, 0x23, 0x69, 0x51, 0x72, 0xc4, 0x57, 0x6e, 0xe4, 0x41, 0x9c, 0x45, 0xa9,
0x7c, 0x09, 0xc4, 0x07, 0x3e, 0x99, 0xd6, 0x34, 0x6d, 0xff, 0x05, 0x26, 0xdd, 0xbf, 0x1c, 0x58,
0x79, 0xd2, 0xeb, 0x73, 0xb6, 0x32, 0x8c, 0x75, 0xae, 0x86, 0xad, 0xbb, 0x80, 0x02, 0xf5, 0x56,
0xe6, 0xe6, 0x3d, 0xf2, 0x27, 0xc5, 0xb3, 0x67, 0x59, 0xc9, 0xb3, 0xb7, 0x4c, 0x55, 0x3e, 0x37,
0xe8, 0xf8, 0x2f, 0x0e, 0xac, 0x29, 0xb4, 0xbb, 0x38, 0x40, 0xb8, 0x2d, 0xaf, 0xab, 0x69, 0x3a,
0x25, 0xd4, 0xc7, 0x22, 0x7e, 0x09, 0xeb, 0x9a, 0x36, 0x8c, 0xa2, 0x6f, 0xc3, 0x32, 0x5f, 0x63,
0x1c, 0xa9, 0xdf, 0xd8, 0x6f, 0xc9, 0xb0, 0x29, 0x0c, 0xeb, 0xc9, 0x65, 0xe4, 0xc2, 0x0a, 0x27,
0x1c, 0x65, 0x13, 0xbe, 0x69, 0xd3, 0x53, 0xdf, 0xf8, 0xf1, 0x14, 0xd1, 0x5f, 0x22, 0x8e, 0xf0,
0x3f, 0x8c, 0xe7, 0x8e, 0x3d, 0xe9, 0xf5, 0x67, 0xc7, 0x9e, 0x0b, 0x2b, 0x59, 0xd9, 0x33, 0xea,
0xbb, 0x62, 0xd2, 0xa5, 0x37, 0x2c, 0x22, 0xff, 0x75, 0x8c, 0xb7, 0x87, 0x6b, 0xc5, 0x28, 0xfa,
0x09, 0x5c, 0x17, 0x71, 0x57, 0x58, 0xe9, 0xb2, 0xe1, 0x5a, 0x88, 0xa1, 0x9f, 0x5a, 0xea, 0xdc,
0xb7, 0xac, 0x2a, 0x0a, 0x44, 0x51, 0xdf, 0x07, 0x88, 0x1d, 0x8f, 0xb2, 0x09, 0x93, 0x6e, 0xd0,
0x28, 0xf8, 0xbb, 0xd0, 0x7a, 0x1a, 0xb2, 0x49, 0xc8, 0xd8, 0xfc, 0xba, 0x94, 0x77, 0x33, 0x65,
0x66, 0x46, 0xf1, 0x2b, 0x40, 0xbd, 0x4c, 0xb6, 0x87, 0x56, 0x57, 0x9a, 0xb5, 0x2d, 0xd3, 0x41,
0x57, 0xf1, 0xee, 0x60, 0x58, 0x9b, 0x64, 0x29, 0x19, 0xf6, 0xc9, 0x20, 0x8e, 0x86, 0x8c, 0x57,
0x86, 0x75, 0xaf, 0x44, 0xc3, 0x6d, 0xd8, 0x34, 0xce, 0x62, 0x14, 0x1f, 0x42, 0xe7, 0x89, 0x1f,
0x0d, 0xc8, 0x78, 0x11, 0x8a, 0xe0, 0xbb, 0x70, 0xa7, 0x66, 0x37, 0x01, 0xd9, 0x14, 0x79, 0xb6,
0xad, 0x5a, 0xb0, 0xae, 0x71, 0x32, 0x8a, 0xbb, 0x80, 0x2a, 0xfb, 0xce, 0xde, 0xa0, 0x0d, 0x9b,
0x06, 0x3f, 0xa3, 0x38, 0x84, 0x3b, 0xfd, 0x52, 0xcc, 0x1d, 0x85, 0x83, 0xb3, 0xc8, 0x9f, 0x90,
0xb9, 0xd9, 0x10, 0x49, 0xc6, 0x22, 0x1b, 0x8a, 0x6f, 0xcd, 0x12, 0xcd, 0x92, 0x25, 0xb6, 0xc1,
0xad, 0x3b, 0x8a, 0x51, 0xfc, 0x5b, 0xde, 0xc5, 0x8a, 0x27, 0xb4, 0x9f, 0x51, 0xd9, 0x3d, 0x2c,
0xb6, 0x8b, 0x9d, 0x6a, 0xd6, 0x28, 0x69, 0x16, 0xf3, 0xe6, 0xd5, 0x7e, 0xf6, 0x37, 0xf2, 0x86,
0x7f, 0xc0, 0xeb, 0xcf, 0xf4, 0xa8, 0x2b, 0x0c, 0x2f, 0x7e, 0xc9, 0x8b, 0x84, 0x21, 0xba, 0xa0,
0x09, 0xc6, 0xbf, 0x1b, 0xd0, 0x2e, 0x3b, 0x69, 0x3e, 0xfc, 0xad, 0xb1, 0x2a, 0xfa, 0xa1, 0x16,
0x23, 0x4d, 0xf9, 0x20, 0x06, 0x71, 0x1c, 0x8c, 0x89, 0x98, 0x64, 0x9d, 0x66, 0xa3, 0x6e, 0x3f,
0x4d, 0xc2, 0x28, 0xf8, 0x85, 0x3f, 0xce, 0x88, 0x16, 0x41, 0xef, 0xc3, 0xf5, 0x91, 0x3f, 0x20,
0x9f, 0x7b, 0x87, 0xbc, 0x11, 0x9a, 0x27, 0x58, 0x30, 0xa3, 0x0f, 0x60, 0x35, 0x89, 0xc7, 0xe4,
0x90, 0x5c, 0x90, 0x71, 0xe7, 0x3a, 0x97, 0xbc, 0x6b, 0x48, 0x1e, 0x44, 0xe9, 0x7b, 0xfb, 0x42,
0x70, 0xca, 0x8d, 0x1e, 0x41, 0x83, 0x7c, 0xdd, 0x59, 0xb9, 0xc4, 0x69, 0x0d, 0xf2, 0x75, 0xde,
0xe4, 0xda, 0xac, 0xc4, 0x28, 0xfe, 0xc1, 0x14, 0xeb, 0x7f, 0x7c, 0xca, 0xd2, 0xc4, 0x1f, 0xa4,
0x85, 0x05, 0x5d, 0x58, 0x91, 0x26, 0x63, 0xd2, 0xb1, 0xea, 0x1b, 0xff, 0xd5, 0x81, 0x9b, 0x86,
0xd0, 0x0c, 0x9b, 0x3f, 0x92, 0xa3, 0xc7, 0x5e, 0x51, 0x7a, 0x4f, 0x49, 0x22, 0x11, 0xb6, 0xb9,
0x80, 0xbe, 0x07, 0x9b, 0x41, 0xb9, 0x93, 0xfa, 0xd4, 0x67, 0x5f, 0xf1, 0x0a, 0x71, 0xcd, 0xb3,
0x2d, 0xe1, 0x21, 0x74, 0xec, 0xd7, 0x60, 0x14, 0x7d, 0x2a, 0xd1, 0x8a, 0xbe, 0x50, 0xbc, 0x4b,
0x1d, 0xf9, 0x7a, 0x9b, 0x92, 0x16, 0x99, 0xfd, 0x3f, 0x6f, 0x80, 0x18, 0x97, 0xa2, 0x1f, 0xc3,
0x8d, 0xc1, 0x74, 0x2e, 0x88, 0xda, 0x05, 0x08, 0x28, 0xcd, 0x39, 0xdd, 0x2d, 0x1b, 0x99, 0x23,
0xd0, 0xd5, 0x57, 0x45, 0x23, 0x8f, 0x36, 0x25, 0x93, 0x3e, 0x6a, 0x70, 0x6f, 0x99, 0x44, 0x21,
0x77, 0x5e, 0xf4, 0xc1, 0x4a, 0x4e, 0xef, 0xa1, 0x95, 0x5c, 0xa9, 0x5d, 0xe6, 0x99, 0xa6, 0x0f,
0x10, 0xd1, 0xed, 0xe2, 0xda, 0x95, 0x61, 0xa4, 0xdb, 0xb1, 0x2f, 0x30, 0x8a, 0x3e, 0x82, 0x35,
0xa6, 0x8d, 0xf2, 0x50, 0x71, 0xb7, 0xca, 0x00, 0xd1, 0xbd, 0x6d, 0xa5, 0x33, 0x8a, 0x7e, 0x03,
0xb7, 0x03, 0xfb, 0xc4, 0x0d, 0xbd, 0x5d, 0x39, 0xd5, 0x9c, 0x86, 0xb9, 0x78, 0x1e, 0x0b, 0xa3,
0x68, 0x04, 0x77, 0x82, 0xba, 0x91, 0x16, 0x7a, 0x67, 0xba, 0x41, 0xed, 0xcc, 0xcd, 0x7d, 0x38,
0x9f, 0x89, 0x51, 0xf4, 0x02, 0x50, 0x6a, 0x8c, 0x8c, 0xd0, 0xb6, 0x94, 0xb5, 0x0e, 0xb4, 0xdc,
0x7b, 0x33, 0x56, 0x19, 0x45, 0x03, 0xe8, 0x04, 0x35, 0xb3, 0x12, 0x84, 0x4b, 0x31, 0x6a, 0x9d,
0xf4, 0xb8, 0xef, 0xcc, 0xe5, 0x11, 0x7a, 0x07, 0xc6, 0x8c, 0x42, 0xe9, 0x6d, 0x9d, 0xa7, 0x28,
0xbd, 0x6b, 0x86, 0x1b, 0x2f, 0x61, 0x33, 0x30, 0x47, 0x05, 0xc8, 0x2e, 0xa5, 0xa2, 0xec, 0xfe,
0xac, 0x65, 0x9e, 0xb1, 0xad, 0xb3, 0x72, 0xb3, 0x8d, 0xee, 0x48, 0x11, 0x73, 0x6a, 0xe0, 0xba,
0x75, 0x4b, 0xea, 0xca, 0x95, 0x46, 0x57, 0xbf, 0xb2, 0xd9, 0x82, 0xeb, 0x57, 0xb6, 0x75, 0xc8,
0x47, 0x45, 0x17, 0xaa, 0xf5, 0x95, 0xe8, 0x6e, 0xd1, 0x3c, 0x5a, 0x3a, 0x5d, 0x77, 0xbb, 0x7e,
0x51, 0x24, 0xb5, 0xca, 0x36, 0x95, 0xd4, 0x7a, 0x07, 0xa4, 0x92, 0xba, 0xdc, 0x88, 0xbc, 0x00,
0x64, 0xa2, 0xef, 0x1a, 0x6f, 0xca, 0x76, 0xa1, 0xc6, 0x9b, 0x0a, 0xb6, 0x7f, 0x04, 0x6b, 0x3a,
0xc0, 0x55, 0x39, 0x5e, 0x81, 0xc8, 0x2a, 0xc7, 0xab, 0x68, 0x38, 0x77, 0x5c, 0x05, 0x36, 0x2a,
0xc7, 0x99, 0xe0, 0x54, 0x39, 0xce, 0x82, 0x34, 0xd1, 0x97, 0xd0, 0xb6, 0xc2, 0x50, 0xf4, 0xa0,
0xa8, 0xa9, 0x35, 0x90, 0xd7, 0xdd, 0x99, 0xcd, 0x20, 0x2c, 0xae, 0xc8, 0xca, 0xe2, 0x3a, 0x2c,
0x55, 0x16, 0x2f, 0x61, 0xcf, 0xfc, 0x76, 0x95, 0x4d, 0xd5, 0xed, 0x4c, 0x68, 0xab, 0x6e, 0x67,
0x41, 0xb1, 0x79, 0x2d, 0xac, 0x01, 0x70, 0x7a, 0x2d, 0xac, 0x01, 0x97, 0x7a, 0x2d, 0xac, 0xc5,
0x80, 0x22, 0x3a, 0x2a, 0xb0, 0x4b, 0x8f, 0x0e, 0x13, 0xcc, 0xe9, 0xd1, 0x61, 0xc3, 0x6b, 0xbf,
0xaa, 0x82, 0x88, 0x02, 0x0f, 0xa3, 0x9d, 0x4a, 0xcd, 0x37, 0x90, 0xb9, 0xfb, 0xf6, 0x1c, 0x0e,
0xa1, 0xb1, 0x89, 0x51, 0x94, 0xc6, 0x56, 0x90, 0xa7, 0x34, 0xb6, 0x83, 0x1b, 0xf4, 0x85, 0x36,
0xb1, 0xd1, 0x71, 0x4a, 0xb5, 0xfe, 0x54, 0x90, 0x8f, 0xfb, 0x60, 0xe6, 0x3a, 0xa3, 0x9f, 0x3c,
0xf8, 0xf2, 0xde, 0x31, 0x25, 0xd1, 0xc9, 0x41, 0x4f, 0xfb, 0xfb, 0x93, 0xcb, 0x7c, 0xc8, 0x7f,
0x4f, 0x97, 0x39, 0xe9, 0xbd, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x06, 0xa5, 0xc5, 0x9c, 0x71,
0x1d, 0x00, 0x00,
func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_0c9461c2b49843c3) }
var fileDescriptor_group_0c9461c2b49843c3 = []byte{
// 1871 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x6f, 0x1b, 0xb9,
0x11, 0xc7, 0xca, 0x91, 0x63, 0x4f, 0xec, 0x93, 0x43, 0x47, 0xb6, 0xb2, 0x71, 0x12, 0x1f, 0x2f,
0xbd, 0x1a, 0x6d, 0x22, 0x17, 0xb9, 0xf6, 0xd0, 0x6b, 0x0b, 0x5c, 0xef, 0x92, 0x26, 0xe7, 0x9e,
0xe5, 0x34, 0xab, 0x5c, 0x0f, 0x38, 0xb4, 0x75, 0xd7, 0x12, 0xb5, 0xb7, 0xb1, 0xb4, 0x4b, 0x2f,
0x77, 0xed, 0xa0, 0x68, 0x81, 0xb6, 0x0f, 0x7d, 0xea, 0x9f, 0x87, 0x3e, 0xf6, 0xad, 0xe8, 0xa7,
0xe8, 0x5b, 0xbf, 0x59, 0x41, 0x2e, 0x97, 0xe2, 0x2e, 0xb9, 0x92, 0x1d, 0xe8, 0x5e, 0x04, 0xec,
0x70, 0x86, 0xfc, 0x71, 0x38, 0x33, 0xfc, 0x0d, 0x05, 0x37, 0x83, 0x24, 0xce, 0xe8, 0xbe, 0xf8,
0xed, 0xd2, 0x24, 0x4e, 0x63, 0xd4, 0x14, 0x1f, 0xee, 0xde, 0x0b, 0x4a, 0xa2, 0x47, 0x07, 0xbd,
0x47, 0x7d, 0x92, 0x9c, 0x93, 0x64, 0x9f, 0x9e, 0x06, 0xfb, 0x42, 0x61, 0x9f, 0x0d, 0x4f, 0x8f,
0x2f, 0xd8, 0xfe, 0x05, 0xcb, 0x0d, 0xdc, 0xee, 0x5c, 0xcd, 0xc4, 0xa7, 0x94, 0x24, 0x52, 0x1f,
0xff, 0xd7, 0x81, 0x77, 0x9e, 0x24, 0xc4, 0x4f, 0xc9, 0x73, 0xbe, 0x92, 0x47, 0xce, 0xd0, 0xfb,
0xf0, 0x4e, 0x18, 0x85, 0x69, 0x8f, 0x4c, 0x4e, 0x48, 0x72, 0x18, 0xb2, 0xb4, 0xe3, 0xec, 0x2e,
0xed, 0xad, 0x7a, 0x15, 0x29, 0xfa, 0x11, 0xac, 0x0a, 0x74, 0x07, 0xd1, 0x28, 0xee, 0x34, 0x76,
0x9d, 0xbd, 0x1b, 0x8f, 0x77, 0xba, 0x4c, 0x2c, 0x7b, 0xec, 0xd3, 0xf0, 0x98, 0xfa, 0x89, 0x3f,
0x61, 0xdd, 0xe7, 0x85, 0x8e, 0x37, 0x55, 0x47, 0x18, 0xd6, 0xfc, 0xe1, 0x24, 0x8c, 0xbe, 0x60,
0x24, 0x39, 0x78, 0xca, 0x3a, 0x4b, 0x62, 0x85, 0x92, 0x0c, 0xed, 0xc2, 0x8d, 0xf8, 0x22, 0x22,
0x49, 0xfe, 0xdd, 0x69, 0xee, 0x3a, 0x7b, 0xab, 0x9e, 0x2e, 0xc2, 0x3d, 0x68, 0x95, 0xb0, 0x33,
0x5a, 0x06, 0xb5, 0x74, 0x25, 0x50, 0xf8, 0xfb, 0xb0, 0xf1, 0x9c, 0xa4, 0x62, 0x88, 0x89, 0x31,
0x72, 0xc6, 0x41, 0xe4, 0x0a, 0x4f, 0x35, 0x4f, 0xe8, 0x22, 0xfc, 0x25, 0xdc, 0xac, 0x58, 0x31,
0x8a, 0x3e, 0x85, 0x75, 0x35, 0xaf, 0x30, 0xe4, 0x1b, 0x9c, 0x07, 0xa5, 0x6c, 0x82, 0x8f, 0xa1,
0xd5, 0x97, 0x13, 0x17, 0x68, 0x0e, 0xa1, 0xa5, 0x74, 0x9e, 0xc5, 0x49, 0x9f, 0x70, 0x44, 0x7c,
0x8f, 0x78, 0xd6, 0xc4, 0xb9, 0xa6, 0x57, 0x35, 0xc5, 0x08, 0x36, 0xca, 0x0b, 0x30, 0x8a, 0xff,
0xec, 0x80, 0x5b, 0x6c, 0xe7, 0x13, 0x4a, 0xc7, 0xe1, 0xc0, 0x4f, 0xc3, 0x38, 0xe2, 0x80, 0x38,
0x80, 0xa7, 0x00, 0xd4, 0x0f, 0xc2, 0x48, 0x08, 0xe5, 0xda, 0x0f, 0x2c, 0x6b, 0x7b, 0xe4, 0x2c,
0x23, 0x2c, 0xfd, 0x85, 0xd2, 0xf5, 0x34, 0x3b, 0x74, 0x0f, 0x60, 0x94, 0xc4, 0x13, 0x79, 0xb0,
0x4b, 0xe2, 0x60, 0x35, 0x09, 0xfe, 0xa3, 0x03, 0x77, 0x6a, 0x41, 0x30, 0x8a, 0x6e, 0x41, 0x33,
0x8d, 0x53, 0x7f, 0x2c, 0x00, 0x34, 0xbd, 0xfc, 0x03, 0x7d, 0x0e, 0x1b, 0x81, 0x8c, 0x61, 0xbe,
0xb6, 0xe6, 0xf6, 0xfb, 0x75, 0xde, 0x91, 0xaa, 0x9e, 0x61, 0x88, 0x7f, 0x0f, 0x3b, 0xcf, 0x49,
0xca, 0xf1, 0x78, 0xe4, 0xcc, 0xe2, 0x88, 0x2d, 0x58, 0xce, 0x72, 0xf8, 0x8e, 0x80, 0x2f, 0xbf,
0x2a, 0x0e, 0x6a, 0xbc, 0x9d, 0x83, 0xf8, 0x29, 0xdc, 0x9d, 0xb1, 0xfc, 0x95, 0x5c, 0xd0, 0x78,
0x5b, 0x17, 0xfc, 0xc9, 0x81, 0xf6, 0xab, 0xc4, 0x8f, 0xd8, 0x88, 0x24, 0x42, 0xf5, 0x05, 0x4f,
0x3d, 0xbe, 0xf9, 0x0e, 0x5c, 0x97, 0x19, 0x20, 0x77, 0x5f, 0x7c, 0xf2, 0xda, 0x11, 0x8f, 0x87,
0x2f, 0xb4, 0xb4, 0x6d, 0x08, 0x85, 0x8a, 0x94, 0xeb, 0x45, 0xe4, 0x42, 0xd7, 0xcb, 0xa3, 0xa0,
0x22, 0xc5, 0x1d, 0xd8, 0xb2, 0x41, 0x60, 0x14, 0xff, 0xdd, 0x81, 0xb5, 0x9f, 0xc7, 0x61, 0xa4,
0xca, 0x56, 0x3d, 0xa8, 0x7b, 0x00, 0x09, 0x39, 0xeb, 0x11, 0xc6, 0xfc, 0x80, 0x48, 0x40, 0x9a,
0x84, 0x8f, 0xbf, 0x8e, 0xc3, 0xa8, 0x1f, 0x67, 0xc9, 0x80, 0x88, 0x3a, 0xd3, 0xf4, 0x34, 0x09,
0x7a, 0x00, 0xeb, 0x61, 0x74, 0x1e, 0xa6, 0x0a, 0xeb, 0xb2, 0x98, 0xa2, 0x2c, 0xc4, 0x2d, 0x58,
0xd7, 0xf0, 0x30, 0x8a, 0xff, 0xc5, 0xa3, 0xb8, 0x12, 0xc2, 0x7c, 0x20, 0x8e, 0x18, 0xa9, 0x00,
0x5e, 0x32, 0x00, 0x6b, 0xf9, 0x71, 0xad, 0x9a, 0x1f, 0x7c, 0xfc, 0x6b, 0x3f, 0x1a, 0x8e, 0xc9,
0xb0, 0xc7, 0x02, 0x59, 0x18, 0x35, 0x09, 0xaf, 0xae, 0xf9, 0x97, 0x47, 0x58, 0x36, 0x4e, 0x05,
0xde, 0xa6, 0x57, 0x92, 0xe1, 0x7b, 0xb0, 0x53, 0x0f, 0x8e, 0x51, 0xbc, 0x07, 0x6b, 0x2f, 0xb3,
0x30, 0x9d, 0xef, 0x5e, 0xbe, 0x71, 0x4d, 0x93, 0x51, 0xfc, 0x0f, 0x07, 0xda, 0x45, 0xfa, 0x4e,
0xef, 0x8b, 0xd9, 0x67, 0xb4, 0x05, 0xcb, 0xa3, 0x70, 0x9c, 0x92, 0x44, 0x6c, 0xb7, 0xe9, 0xc9,
0xaf, 0x05, 0xe5, 0xd3, 0x39, 0x6c, 0xd9, 0x00, 0xd5, 0xe6, 0xd1, 0x33, 0x80, 0xc9, 0xf4, 0xfa,
0xcb, 0x8b, 0xc8, 0xfb, 0x75, 0x19, 0x94, 0xcf, 0xf8, 0x2c, 0x1b, 0x8f, 0x45, 0x15, 0xd5, 0x2c,
0xb1, 0x57, 0x5d, 0x57, 0xdd, 0x2b, 0x33, 0xa3, 0x55, 0x5b, 0xbb, 0x21, 0x2e, 0x1c, 0x7d, 0x4e,
0x1f, 0xb6, 0xad, 0x73, 0x32, 0xba, 0x30, 0xd8, 0x09, 0xa0, 0xcf, 0xc3, 0xc1, 0xa9, 0xa6, 0x36,
0x1b, 0xf2, 0x77, 0x60, 0xe3, 0x34, 0x1c, 0x9c, 0x92, 0x61, 0x1e, 0x9f, 0x1a, 0x70, 0x43, 0xce,
0x0f, 0x3a, 0x21, 0x3e, 0x8b, 0x23, 0x19, 0xf4, 0xf2, 0x0b, 0xb7, 0x61, 0xd3, 0x58, 0x93, 0x51,
0xfc, 0x07, 0x11, 0x4a, 0x3c, 0xb1, 0xc8, 0x50, 0x8c, 0x15, 0xa1, 0x54, 0xce, 0x11, 0xc7, 0xc8,
0x91, 0xc5, 0x04, 0xce, 0x6b, 0x71, 0x80, 0xc6, 0xf2, 0xb5, 0x81, 0x53, 0xd0, 0x8f, 0x4b, 0xdf,
0xf9, 0x53, 0x75, 0x7c, 0x0e, 0xb7, 0x0e, 0x44, 0x45, 0xe1, 0x3b, 0x78, 0x15, 0xdb, 0x32, 0x6f,
0xc9, 0x48, 0x1a, 0xe9, 0xcb, 0x6b, 0xba, 0x2f, 0xd1, 0x43, 0xb8, 0x99, 0xd7, 0x26, 0xfd, 0x40,
0x9a, 0xe2, 0x40, 0xcc, 0x01, 0xbc, 0x0d, 0x6d, 0xcb, 0xba, 0x8c, 0xe2, 0xdf, 0xc0, 0x2d, 0x75,
0x0b, 0x8f, 0xc7, 0x97, 0x09, 0x84, 0x2d, 0x58, 0x8e, 0x47, 0x23, 0x46, 0xd2, 0x22, 0x8b, 0xf3,
0x2f, 0xee, 0xac, 0x41, 0x9c, 0x45, 0xa9, 0x2c, 0xae, 0xf9, 0x07, 0x3e, 0x9e, 0x96, 0x09, 0x6d,
0xfe, 0x05, 0xc6, 0xf1, 0xbf, 0x1d, 0x58, 0x79, 0xd2, 0xeb, 0x0b, 0xb5, 0x32, 0x33, 0x74, 0xae,
0x46, 0x57, 0xbb, 0x80, 0x02, 0x75, 0xfd, 0x70, 0x37, 0x1d, 0xf9, 0x93, 0xe2, 0x26, 0xb1, 0x8c,
0xf0, 0x84, 0x28, 0x4b, 0xd5, 0xd9, 0x19, 0x72, 0xfc, 0x57, 0x07, 0xd6, 0x14, 0x81, 0x5c, 0x1c,
0xc7, 0xda, 0x91, 0xdb, 0xd5, 0x90, 0x4e, 0x05, 0xf5, 0x31, 0x85, 0x5f, 0xc1, 0xba, 0x86, 0x86,
0x51, 0xf4, 0x6d, 0x58, 0x16, 0x63, 0x4c, 0x90, 0xdf, 0x1b, 0x8f, 0x5b, 0xdd, 0xbc, 0x41, 0x29,
0x1c, 0xeb, 0xc9, 0x61, 0xe4, 0xc2, 0x8a, 0x10, 0x1c, 0x65, 0x13, 0x31, 0x69, 0xd3, 0x53, 0xdf,
0xf8, 0xd1, 0x94, 0x24, 0x5f, 0x22, 0x8e, 0xf0, 0x3f, 0x8d, 0x1b, 0x84, 0x3d, 0xe9, 0xf5, 0x67,
0xc7, 0x9e, 0x0b, 0x2b, 0x59, 0xf9, 0x64, 0xd4, 0x77, 0xc5, 0xa5, 0x4b, 0x6f, 0x59, 0x0c, 0xfe,
0xe7, 0x18, 0xe5, 0x5c, 0xa0, 0x62, 0x14, 0xfd, 0x14, 0xae, 0xe7, 0x71, 0x57, 0x78, 0xe9, 0xb2,
0xe1, 0x5a, 0x98, 0xa1, 0x9f, 0x59, 0xea, 0xd5, 0xb7, 0xac, 0x10, 0xf3, 0x4b, 0xba, 0x9e, 0x5a,
0xe7, 0x33, 0x1e, 0x65, 0x13, 0x26, 0x8f, 0x41, 0x93, 0xe0, 0xef, 0x42, 0xeb, 0x69, 0xc8, 0x26,
0x21, 0x63, 0xf3, 0xeb, 0x0b, 0x6f, 0x10, 0xca, 0xca, 0x8c, 0xe2, 0xd7, 0x80, 0x7a, 0x99, 0xec,
0xb8, 0xac, 0x47, 0x69, 0xd6, 0xa8, 0x4c, 0xe7, 0x31, 0x05, 0x51, 0xc6, 0xb0, 0x36, 0xc9, 0x52,
0x32, 0xec, 0x93, 0x41, 0x1c, 0x0d, 0x99, 0xa8, 0x0c, 0xeb, 0x5e, 0x49, 0xc6, 0xef, 0x04, 0x63,
0x2d, 0x46, 0xf1, 0x21, 0x74, 0x9e, 0xf8, 0xd1, 0x80, 0x8c, 0x17, 0x01, 0x04, 0xdf, 0x81, 0xdb,
0x35, 0xb3, 0xe5, 0x2c, 0x48, 0x89, 0x67, 0xfb, 0xaa, 0x05, 0xeb, 0x9a, 0x26, 0xa3, 0xb8, 0x0b,
0xa8, 0x32, 0xef, 0xec, 0x09, 0xda, 0xb0, 0x69, 0xe8, 0x33, 0x8a, 0x43, 0xb8, 0xdd, 0x2f, 0xc5,
0xdc, 0x51, 0x38, 0x38, 0x8d, 0xfc, 0x09, 0x99, 0x9b, 0x0d, 0x91, 0x54, 0x2c, 0xb2, 0xa1, 0xf8,
0xd6, 0x3c, 0xd1, 0x2c, 0x79, 0x62, 0x07, 0xdc, 0xba, 0xa5, 0x18, 0xc5, 0xbf, 0x13, 0x8d, 0x61,
0x7e, 0x15, 0xf6, 0x33, 0x2a, 0x09, 0xf9, 0x62, 0x1b, 0xc3, 0x29, 0xb2, 0x46, 0x09, 0x59, 0x2c,
0xfa, 0x41, 0xfb, 0xda, 0xdf, 0xc8, 0x5d, 0xfc, 0x91, 0xa8, 0x3f, 0xd3, 0xa5, 0xae, 0xf0, 0x1e,
0xf0, 0x2b, 0x51, 0x24, 0x0c, 0xd3, 0x05, 0x3d, 0x0a, 0xfc, 0xa7, 0x01, 0xed, 0xf2, 0x21, 0xcd,
0x67, 0x94, 0x35, 0x5e, 0x45, 0x3f, 0xd4, 0x62, 0xa4, 0x29, 0x2f, 0xc4, 0x20, 0x8e, 0x83, 0x31,
0xc9, 0x1f, 0x87, 0x4e, 0xb2, 0x51, 0xb7, 0x9f, 0x26, 0x61, 0x14, 0xfc, 0xd2, 0x1f, 0x67, 0x44,
0x8b, 0xa0, 0x0f, 0xe1, 0xfa, 0xc8, 0x1f, 0x90, 0x2f, 0xbc, 0x43, 0xd1, 0x5b, 0xcc, 0x33, 0x2c,
0x94, 0xd1, 0x47, 0xb0, 0x9a, 0xc4, 0x63, 0x72, 0x48, 0xce, 0xc9, 0xb8, 0x73, 0x5d, 0x58, 0xde,
0x31, 0x2c, 0x0f, 0xa2, 0xf4, 0x83, 0xc7, 0xb9, 0xe1, 0x54, 0x1b, 0x3d, 0x84, 0x06, 0x79, 0xd3,
0x59, 0xb9, 0xc4, 0x6a, 0x0d, 0xf2, 0x86, 0xf7, 0x8d, 0x36, 0x2f, 0x31, 0x8a, 0x7f, 0x30, 0xa5,
0xcf, 0x9f, 0x9c, 0xb0, 0x34, 0xf1, 0x07, 0x69, 0xe1, 0x41, 0x17, 0x56, 0xa4, 0xcb, 0x98, 0x3c,
0x58, 0xf5, 0x8d, 0xff, 0xe6, 0xc0, 0x4d, 0xc3, 0x68, 0x86, 0xcf, 0x1f, 0xca, 0xd7, 0xbc, 0x5e,
0x51, 0x7a, 0x4f, 0x48, 0x22, 0xdc, 0xdf, 0xf4, 0xcc, 0x01, 0xf4, 0x3d, 0xd8, 0x0c, 0xca, 0xcd,
0xc9, 0x67, 0x3e, 0xfb, 0x5a, 0x54, 0x88, 0x6b, 0x9e, 0x6d, 0x08, 0x0f, 0xa1, 0x63, 0xdf, 0x06,
0xa3, 0xe8, 0x33, 0xc9, 0x56, 0xf4, 0x81, 0xe2, 0x5e, 0xea, 0xc8, 0xdb, 0xdb, 0xb4, 0xb4, 0xd8,
0x3c, 0xfe, 0xcb, 0x06, 0xe4, 0x2f, 0x90, 0xe8, 0x27, 0x70, 0x63, 0x30, 0x7d, 0x6a, 0x43, 0xed,
0x82, 0x04, 0x94, 0x9e, 0x0e, 0xdd, 0x2d, 0x9b, 0x98, 0x51, 0xf4, 0x21, 0xac, 0xbe, 0x2e, 0x7a,
0x63, 0xb4, 0x29, 0x95, 0xf4, 0xee, 0xdd, 0xbd, 0x65, 0x0a, 0x73, 0xbb, 0xb3, 0xa2, 0xb5, 0x54,
0x76, 0x7a, 0x5b, 0xaa, 0xec, 0x4a, 0x1d, 0xa8, 0xc8, 0x34, 0xfd, 0x4d, 0x0e, 0x6d, 0x17, 0xdb,
0xae, 0xbc, 0xef, 0xb9, 0x1d, 0xfb, 0x00, 0xa3, 0xe8, 0x63, 0x58, 0x63, 0xda, 0xeb, 0x18, 0x2a,
0xf6, 0x56, 0x79, 0x93, 0x73, 0xb7, 0xad, 0x72, 0x46, 0xd1, 0x6f, 0x61, 0x3b, 0xb0, 0x3f, 0x62,
0xa1, 0x77, 0x2b, 0xab, 0x9a, 0x0f, 0x4c, 0x2e, 0x9e, 0xa7, 0xc2, 0x28, 0x1a, 0xc1, 0xed, 0xa0,
0xee, 0x95, 0x08, 0xbd, 0x37, 0x9d, 0xa0, 0xf6, 0x19, 0xcb, 0x7d, 0x30, 0x5f, 0x89, 0x51, 0xf4,
0x12, 0x50, 0x6a, 0xbc, 0xc2, 0xa0, 0x1d, 0x69, 0x6b, 0x7d, 0x23, 0x72, 0xef, 0xce, 0x18, 0x65,
0x14, 0x0d, 0xa0, 0x13, 0xd4, 0x3c, 0x3f, 0x20, 0x5c, 0x8a, 0x51, 0xeb, 0xe3, 0x89, 0xfb, 0xde,
0x5c, 0x9d, 0x1c, 0x77, 0x60, 0xb4, 0xfd, 0x0a, 0xb7, 0xf5, 0x89, 0x42, 0xe1, 0xae, 0x79, 0x2f,
0x78, 0x05, 0x9b, 0x81, 0xd9, 0x7d, 0x23, 0xbb, 0x95, 0x8a, 0xb2, 0x7b, 0xb3, 0x86, 0x45, 0xc6,
0xb6, 0x4e, 0xcb, 0xcd, 0x2f, 0xba, 0x2d, 0x4d, 0xcc, 0x46, 0xdc, 0x75, 0xeb, 0x86, 0xd4, 0x96,
0x2b, 0x0d, 0xab, 0xbe, 0x65, 0xb3, 0x95, 0xd6, 0xb7, 0x6c, 0xeb, 0x74, 0x8f, 0x8a, 0x6e, 0x52,
0xeb, 0x0f, 0xd1, 0x1d, 0x69, 0x63, 0xeb, 0x58, 0xdd, 0x9d, 0xfa, 0xc1, 0x3c, 0xa9, 0x55, 0xb6,
0xa9, 0xa4, 0xd6, 0x3b, 0x20, 0x95, 0xd4, 0xe5, 0x46, 0xe4, 0x25, 0x20, 0x93, 0x7d, 0xd7, 0x9c,
0xa6, 0x6c, 0x17, 0x6a, 0x4e, 0x53, 0xd1, 0xf6, 0x8f, 0x61, 0x4d, 0x27, 0xb8, 0x2a, 0xc7, 0x2b,
0x14, 0x59, 0xe5, 0x78, 0x95, 0x0d, 0xf3, 0x83, 0xab, 0xd0, 0x46, 0x75, 0x70, 0x26, 0x39, 0x55,
0x07, 0x67, 0x61, 0x9a, 0xe8, 0x2b, 0x68, 0x5b, 0x69, 0x28, 0xba, 0x5f, 0xd4, 0xd4, 0x1a, 0xca,
0xeb, 0xee, 0xce, 0x56, 0xc8, 0x3d, 0xae, 0xc4, 0xca, 0xe3, 0x3a, 0x2d, 0x55, 0x1e, 0x2f, 0x71,
0x4f, 0xbe, 0xbb, 0xca, 0xa4, 0x6a, 0x77, 0x26, 0xb5, 0x55, 0xbb, 0xb3, 0xb0, 0x58, 0x5e, 0x0b,
0x6b, 0x08, 0x9c, 0x5e, 0x0b, 0x6b, 0xc8, 0xa5, 0x5e, 0x0b, 0x6b, 0x39, 0x60, 0x1e, 0x1d, 0x15,
0xda, 0xa5, 0x47, 0x87, 0x49, 0xe6, 0xf4, 0xe8, 0xb0, 0xf1, 0xb5, 0x5f, 0x57, 0x49, 0x44, 0xc1,
0x87, 0xd1, 0x6e, 0xa5, 0xe6, 0x1b, 0xcc, 0xdc, 0x7d, 0x77, 0x8e, 0x46, 0x8e, 0xd8, 0xe4, 0x28,
0x0a, 0xb1, 0x95, 0xe4, 0x29, 0xc4, 0x76, 0x72, 0x83, 0xbe, 0xd4, 0x5e, 0x6c, 0x74, 0x9e, 0x52,
0xad, 0x3f, 0x15, 0xe6, 0xe3, 0xde, 0x9f, 0x39, 0xce, 0xe8, 0xa7, 0xf7, 0xbf, 0xba, 0xfb, 0x82,
0x92, 0xe8, 0xf8, 0xa0, 0xa7, 0xfd, 0xa3, 0x28, 0x6c, 0x7e, 0x2c, 0x7e, 0x4f, 0x96, 0x85, 0xe8,
0x83, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x22, 0x4e, 0x92, 0x9d, 0xc4, 0x1c, 0x00, 0x00,
}

@ -118,13 +118,8 @@ message KickGroupMemberReq {
string reason = 3;
}
message Id2Result {
string userID = 1;
int32 result = 2; //0 ok; -1 error
}
message KickGroupMemberResp {
repeated Id2Result id2ResultList = 3;
}
@ -144,7 +139,7 @@ message InviteUserToGroupReq {
repeated string invitedUserIDList = 5;
}
message InviteUserToGroupResp {
repeated Id2Result id2ResultList = 3; // 0 ok, -1 error
}

File diff suppressed because it is too large Load Diff

@ -13,7 +13,7 @@ message GroupInfo{
string introduction = 4;
string faceURL = 5;
string ownerUserID = 6;
uint32 createTime = 7;
int64 createTime = 7;
uint32 memberCount = 8;
string ex = 9;
int32 status = 10;
@ -22,7 +22,7 @@ message GroupInfo{
int32 needVerification = 13;
int32 lookMemberInfo = 14;
int32 applyMemberFriend = 15;
uint32 notificationUpdateTime = 16;
int64 notificationUpdateTime = 16;
string notificationUserID = 17;
}
@ -43,14 +43,14 @@ message GroupMemberFullInfo {
string groupID = 1 ;
string userID = 2 ;
int32 roleLevel = 3;
int32 joinTime = 4;
int64 joinTime = 4;
string nickname = 5;
string faceURL = 6;
int32 appMangerLevel = 7; //if >0
int32 joinSource = 8;
string operatorUserID = 9;
string ex = 10;
uint32 muteEndTime = 11;
int64 muteEndTime = 11;
string inviterUserID = 12;
}
@ -71,7 +71,7 @@ message UserInfo{
uint32 birth = 6;
string email = 7;
string ex = 8;
uint32 createTime = 9;
int64 createTime = 9;
int32 appMangerLevel = 10;
int32 globalRecvMsgOpt = 11;
int64 birthday = 13;
@ -80,7 +80,7 @@ message UserInfo{
message FriendInfo{
string ownerUserID = 1;
string remark = 2;
uint32 createTime = 3;
int64 createTime = 3;
UserInfo friendUser = 4;
int32 addSource = 5;
string operatorUserID = 6;
@ -89,7 +89,7 @@ message FriendInfo{
message BlackInfo{
string ownerUserID = 1;
uint32 createTime = 2;
int64 createTime = 2;
PublicUserInfo blackUserInfo = 3;
int32 addSource = 4;
string operatorUserID = 5;
@ -102,9 +102,9 @@ message GroupRequest{
int32 handleResult = 3;
string reqMsg = 4;
string handleMsg = 5;
uint32 reqTime = 6;
int64 reqTime = 6;
string handleUserID = 7;
uint32 handleTime = 8;
int64 handleTime = 8;
string ex = 9;
int32 joinSource = 10;
string inviterUserID = 11;
@ -121,13 +121,76 @@ message FriendRequest{
int32 toGender = 8;
int32 handleResult = 9;
string reqMsg = 10;
uint32 createTime = 11;
int64 createTime = 11;
string handlerUserID = 12;
string handleMsg = 13;
uint32 handleTime = 14;
int64 handleTime = 14;
string ex = 15;
}
///////////////////////////////////organization/////////////////////////////////////
message Department {
string departmentID = 1;
string faceURL = 2;
string name = 3;
string parentID = 4;
int32 order = 5;
int32 departmentType = 6;
int64 createTime = 7;
uint32 subDepartmentNum = 8;
uint32 memberNum = 9;
string ex = 10;
}
message OrganizationUser {
string userID = 1;
string nickname = 2;
string englishName = 3;
string faceURL = 4;
int32 gender = 5;
string mobile = 6;
string telephone = 7;
uint32 birth = 8;
string email = 9;
int64 createTime = 10;
string ex = 11;
string birthStr = 12;
}
message DepartmentMember {
string userID = 1;
string departmentID = 2;
int32 order = 3;
string position = 4;
int32 leader = 5;
int32 status = 6;
string ex = 7;
}
message UserDepartmentMember {
OrganizationUser organizationUser = 1;
DepartmentMember departmentMember = 2;
}
message UserInDepartment {
OrganizationUser organizationUser = 1;
repeated DepartmentMember departmentMemberList = 2;
}
///////////////////////////////////organization end//////////////////////////////////
///////////////////////////////////base end/////////////////////////////////////
@ -664,4 +727,8 @@ message KeyValue {
}
message ResponsePagination {
int32 CurrentPage = 5;
int32 ShowNumber = 6;
}

File diff suppressed because it is too large Load Diff

@ -124,33 +124,6 @@ message GetUsersResp{
repeated server_api_params.UserInfo users = 2;
}
message AddUserReq{
server_api_params.UserInfo userInfo = 1;
string operationID = 2;
}
message AddUserResp{
}
message GetBlockUsersReq{
server_api_params.RequestPagination pagination = 1;
string operationID = 2;
string userID = 3;
int32 totalBlockUserNum = 4;
}
message BlockUser {
server_api_params.UserInfo UserInfo = 1;
string BeginDisableTime = 2;
string EndDisableTime = 3;
}
message GetBlockUsersResp{
repeated BlockUser BlockUsers = 2;
server_api_params.ResponsePagination Pagination = 3;
int32 UserNums = 4;
}
service user {
//

Loading…
Cancel
Save