封号禁言状态处理

This commit is contained in:
meixiongfeng 2023-11-13 14:23:35 +08:00
parent 5dd94cf8ed
commit c8399347b5
7 changed files with 754 additions and 554 deletions

View File

@ -507,6 +507,8 @@ const ( //Rpc
Rpc_ActivityStar core.Rpc_Key = "Rpc_ActivityStar" //活动开启 Rpc_ActivityStar core.Rpc_Key = "Rpc_ActivityStar" //活动开启
RPC_XXLOffLine core.Rpc_Key = "RPC_XXLOffLine" //三消离线 RPC_XXLOffLine core.Rpc_Key = "RPC_XXLOffLine" //三消离线
Rpc_AccountBan core.Rpc_Key = "Rpc_AccountBan" // 账号状态
) )
// 事件类型定义处 // 事件类型定义处

View File

@ -1,6 +1,7 @@
package user package user
import ( import (
"fmt"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/sys/event" "go_dreamfactory/lego/sys/event"
"go_dreamfactory/pb" "go_dreamfactory/pb"
@ -71,6 +72,15 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (err
firstLogin = true firstLogin = true
expand = &pb.DBUserExpand{} expand = &pb.DBUserExpand{}
} }
// 玩家是否封号
if user.Ban {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_UserAccountBan,
Title: pb.ErrorCode_UserAccountBan.ToString(),
Message: fmt.Errorf("UserAccountBan").Error(),
}
return
}
// 玩家是否已在线 // 玩家是否已在线
if isession, ok := this.module.ModuleBase.GetUserSession(user.Uid); ok { if isession, ok := this.module.ModuleBase.GetUserSession(user.Uid); ok {
isession.SendMsg(string(this.module.GetType()), "othertermlogin", &pb.UserOtherTermLoginPush{Uid: user.Uid}) isession.SendMsg(string(this.module.GetType()), "othertermlogin", &pb.UserOtherTermLoginPush{Uid: user.Uid})

View File

@ -89,6 +89,7 @@ func (this *User) Start() (err error) {
this.service.RegisterFunctionName(Rpc_GetCrossUser, this.RpcGetCrossUser) this.service.RegisterFunctionName(Rpc_GetCrossUser, this.RpcGetCrossUser)
this.service.RegisterFunctionName(Rpc_GetCrossUserSession, this.RpcGetCrossUserSession) this.service.RegisterFunctionName(Rpc_GetCrossUserSession, this.RpcGetCrossUserSession)
this.service.RegisterFunctionName(Rpc_QueryUser, this.RpcQueryUser) this.service.RegisterFunctionName(Rpc_QueryUser, this.RpcQueryUser)
this.service.RegisterFunctionName(string(comm.Rpc_AccountBan), this.Rpc_AccountBan)
//date 3.10 //date 3.10
this.service.RegisterFunctionName(Rpc_CreateSociaty, this.RpcCreateSociaty) this.service.RegisterFunctionName(Rpc_CreateSociaty, this.RpcCreateSociaty)
this.globalConf = this.ModuleTools.GetGlobalConf() this.globalConf = this.ModuleTools.GetGlobalConf()
@ -1004,6 +1005,7 @@ func (this *User) BingoSetUserLv(session comm.IUserSession, lv int32) error {
} }
} }
this.ModuleSys.CheckOpenCond(session, comm.OpencondTypePlatlv, lv) this.ModuleSys.CheckOpenCond(session, comm.OpencondTypePlatlv, lv)
// 触发埋点
return nil return nil
} }
@ -1391,3 +1393,33 @@ func (this *User) AddTitle(session comm.IUserSession, titles map[string]int32, b
return return
} }
func (this *User) Rpc_AccountBan(ctx context.Context, req *pb.RPCRTaskReq, reply *pb.UserDataListResp) error {
var (
err error
// user *pb.User
)
if _, err = this.GetUser(req.Uid); err != nil {
return err
}
if req.TaskType == 0 { // 封号
bBan := false
if req.Param[0] > 0 {
bBan = true
}
update := map[string]interface{}{
"ban": bBan,
}
if err := this.modelUser.Change(req.Uid, update); err != nil {
return err
}
} else if req.TaskType == 1 { // 禁言
update := map[string]interface{}{
"prohibition": req.Param[0],
}
if err := this.modelUser.Change(req.Uid, update); err != nil {
return err
}
}
return err
}

View File

@ -0,0 +1,55 @@
package web
import (
"context"
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/gin/engine"
"go_dreamfactory/pb"
"net/http"
)
// 封号或禁言
type AccountBanReq struct {
Uid string `json:"uid"` // uid
iType int32 // 0 封号 1 禁言
iValue int32 // 类型对应的值
}
//创建邮件
func (this *Api_Comp) AccountBanNotify(c *engine.Context) {
req := &AccountBanReq{}
err := c.BindJSON(&req)
this.module.Debugf("AccountBanReq:%+v err:%v", req, err)
var (
errdata *pb.ErrorData
data interface{}
)
defer func() {
c.JSON(http.StatusOK, &Respond{Code: errdata.Code, Message: errdata.Message, Data: data})
}()
rpcMsg := &pb.RPCRTaskReq{
Uid: req.Uid,
TaskType: req.iType,
Param: []int32{req.iValue},
}
if _, err = this.module.service.RpcGo(
context.Background(),
comm.Service_Worker,
string(comm.Rpc_AccountBan),
rpcMsg, nil); err != nil {
this.module.Errorln(err)
errdata = &pb.ErrorData{
Code: pb.ErrorCode_RpcFuncExecutionError,
Title: pb.ErrorCode_RpcFuncExecutionError.ToString(),
}
return
}
errdata = &pb.ErrorData{
Code: pb.ErrorCode_Success,
Title: pb.ErrorCode_Success.ToString(),
}
}

View File

@ -1741,7 +1741,6 @@ func (x *ComShieldInfo) GetCurValue() int32 {
return 0 return 0
} }
//护盾
type ComSwitchScene struct { type ComSwitchScene struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -1789,6 +1788,61 @@ func (x *ComSwitchScene) GetScene() string {
return "" return ""
} }
type ComReplaceSkill struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
To int32 `protobuf:"varint,1,opt,name=to,proto3" json:"to"` //角色
SkillInfo []*ComSkillInfo `protobuf:"bytes,2,rep,name=skillInfo,proto3" json:"skillInfo"` //技能数据
}
func (x *ComReplaceSkill) Reset() {
*x = ComReplaceSkill{}
if protoimpl.UnsafeEnabled {
mi := &file_battle_battle_struct_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComReplaceSkill) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComReplaceSkill) ProtoMessage() {}
func (x *ComReplaceSkill) ProtoReflect() protoreflect.Message {
mi := &file_battle_battle_struct_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ComReplaceSkill.ProtoReflect.Descriptor instead.
func (*ComReplaceSkill) Descriptor() ([]byte, []int) {
return file_battle_battle_struct_proto_rawDescGZIP(), []int{25}
}
func (x *ComReplaceSkill) GetTo() int32 {
if x != nil {
return x.To
}
return 0
}
func (x *ComReplaceSkill) GetSkillInfo() []*ComSkillInfo {
if x != nil {
return x.SkillInfo
}
return nil
}
var File_battle_battle_struct_proto protoreflect.FileDescriptor var File_battle_battle_struct_proto protoreflect.FileDescriptor
var file_battle_battle_struct_proto_rawDesc = []byte{ var file_battle_battle_struct_proto_rawDesc = []byte{
@ -1951,7 +2005,12 @@ var file_battle_battle_struct_proto_rawDesc = []byte{
0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x53, 0x77, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x53, 0x77, 0x69, 0x74,
0x63, 0x68, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x63, 0x68, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x2a, 0xaa, 0x02, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x22, 0x4e, 0x0a,
0x0f, 0x43, 0x6f, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x6f,
0x12, 0x2b, 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x2a, 0xaa, 0x02,
0x0a, 0x0e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54, 0x69, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, 0x0a, 0x0e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54, 0x69, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65,
0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x66, 0x66, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x66, 0x66, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10,
0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
@ -1987,7 +2046,7 @@ func file_battle_battle_struct_proto_rawDescGZIP() []byte {
} }
var file_battle_battle_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_battle_battle_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_battle_battle_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_battle_battle_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
var file_battle_battle_struct_proto_goTypes = []interface{}{ var file_battle_battle_struct_proto_goTypes = []interface{}{
(EffectTipsType)(0), // 0: EffectTipsType (EffectTipsType)(0), // 0: EffectTipsType
(*ComModifyOperate)(nil), // 1: ComModifyOperate (*ComModifyOperate)(nil), // 1: ComModifyOperate
@ -2015,22 +2074,24 @@ var file_battle_battle_struct_proto_goTypes = []interface{}{
(*ComChainEffect)(nil), // 23: ComChainEffect (*ComChainEffect)(nil), // 23: ComChainEffect
(*ComShieldInfo)(nil), // 24: ComShieldInfo (*ComShieldInfo)(nil), // 24: ComShieldInfo
(*ComSwitchScene)(nil), // 25: ComSwitchScene (*ComSwitchScene)(nil), // 25: ComSwitchScene
(*BattleRole)(nil), // 26: BattleRole (*ComReplaceSkill)(nil), // 26: ComReplaceSkill
(*BattleCmd)(nil), // 27: BattleCmd (*BattleRole)(nil), // 27: BattleRole
(*BattleCmd)(nil), // 28: BattleCmd
} }
var file_battle_battle_struct_proto_depIdxs = []int32{ var file_battle_battle_struct_proto_depIdxs = []int32{
26, // 0: ComInitFight.roles:type_name -> BattleRole 27, // 0: ComInitFight.roles:type_name -> BattleRole
6, // 1: ComStartAction.skillInfo:type_name -> ComSkillInfo 6, // 1: ComStartAction.skillInfo:type_name -> ComSkillInfo
6, // 2: ComSkillCDAction.skillInfo:type_name -> ComSkillInfo 6, // 2: ComSkillCDAction.skillInfo:type_name -> ComSkillInfo
12, // 3: ComSkillAtk.comList:type_name -> ComSkillAfterAtk 12, // 3: ComSkillAtk.comList:type_name -> ComSkillAfterAtk
27, // 4: ComSkillAfterAtk.comList:type_name -> BattleCmd 28, // 4: ComSkillAfterAtk.comList:type_name -> BattleCmd
26, // 5: ComCreateRoles.roles:type_name -> BattleRole 27, // 5: ComCreateRoles.roles:type_name -> BattleRole
0, // 6: ComEffectTips.type:type_name -> EffectTipsType 0, // 6: ComEffectTips.type:type_name -> EffectTipsType
7, // [7:7] is the sub-list for method output_type 6, // 7: ComReplaceSkill.skillInfo:type_name -> ComSkillInfo
7, // [7:7] is the sub-list for method input_type 8, // [8:8] is the sub-list for method output_type
7, // [7:7] is the sub-list for extension type_name 8, // [8:8] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension extendee 8, // [8:8] is the sub-list for extension type_name
0, // [0:7] is the sub-list for field type_name 8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
} }
func init() { file_battle_battle_struct_proto_init() } func init() { file_battle_battle_struct_proto_init() }
@ -2341,6 +2402,18 @@ func file_battle_battle_struct_proto_init() {
return nil return nil
} }
} }
file_battle_battle_struct_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComReplaceSkill); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -2348,7 +2421,7 @@ func file_battle_battle_struct_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_battle_battle_struct_proto_rawDesc, RawDescriptor: file_battle_battle_struct_proto_rawDesc,
NumEnums: 1, NumEnums: 1,
NumMessages: 25, NumMessages: 26,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

File diff suppressed because it is too large Load Diff

View File

@ -162,6 +162,8 @@ type DBUser struct {
Curaframe string `protobuf:"bytes,49,opt,name=curaframe,proto3" json:"curaframe"` //默认头像框 Curaframe string `protobuf:"bytes,49,opt,name=curaframe,proto3" json:"curaframe"` //默认头像框
Consumeexp int32 `protobuf:"varint,50,opt,name=consumeexp,proto3" json:"consumeexp"` //消消乐赛季进度积分 Consumeexp int32 `protobuf:"varint,50,opt,name=consumeexp,proto3" json:"consumeexp"` //消消乐赛季进度积分
Consumemoney int32 `protobuf:"varint,51,opt,name=consumemoney,proto3" json:"consumemoney"` //三消专属货币 Consumemoney int32 `protobuf:"varint,51,opt,name=consumemoney,proto3" json:"consumemoney"` //三消专属货币
Ban bool `protobuf:"varint,52,opt,name=ban,proto3" json:"ban"` // 封号标识
Prohibition int32 `protobuf:"varint,53,opt,name=prohibition,proto3" json:"prohibition"` // 禁言
} }
func (x *DBUser) Reset() { func (x *DBUser) Reset() {
@ -539,6 +541,20 @@ func (x *DBUser) GetConsumemoney() int32 {
return 0 return 0
} }
func (x *DBUser) GetBan() bool {
if x != nil {
return x.Ban
}
return false
}
func (x *DBUser) GetProhibition() int32 {
if x != nil {
return x.Prohibition
}
return 0
}
type DBUserSetting struct { type DBUserSetting struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -864,7 +880,7 @@ var file_user_user_db_proto_rawDesc = []byte{
0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1c,
0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28,
0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe4, 0x09, 0x0a, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x98, 0x0a, 0x0a,
0x06, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x06, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69,
@ -943,46 +959,49 @@ var file_user_user_db_proto_rawDesc = []byte{
0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x65, 0x78, 0x70, 0x12, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x65, 0x78, 0x70, 0x12,
0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x18,
0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x6d, 0x6f, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x6d, 0x6f,
0x6e, 0x65, 0x79, 0x22, 0xc7, 0x02, 0x0a, 0x0d, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x6e, 0x18, 0x34, 0x20, 0x01, 0x28, 0x08,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x52, 0x03, 0x62, 0x61, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x68, 0x69, 0x62, 0x69,
0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x75, 0x61, 0x7a, 0x68, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x35, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x68,
0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x75, 0x61, 0x7a, 0x68, 0x69, 0x12, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x02, 0x0a, 0x0d, 0x44, 0x42, 0x55, 0x73,
0x1c, 0x0a, 0x09, 0x6b, 0x61, 0x6e, 0x67, 0x6a, 0x75, 0x63, 0x68, 0x69, 0x18, 0x04, 0x20, 0x01, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x28, 0x0d, 0x52, 0x09, 0x6b, 0x61, 0x6e, 0x67, 0x6a, 0x75, 0x63, 0x68, 0x69, 0x12, 0x1a, 0x0a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68,
0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x75, 0x61, 0x7a, 0x68, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x75, 0x61,
0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x75, 0x6c, 0x7a, 0x68, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x61, 0x6e, 0x67, 0x6a, 0x75, 0x63, 0x68, 0x69,
0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x75, 0x6c, 0x69, 0x12, 0x14, 0x0a, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6b, 0x61, 0x6e, 0x67, 0x6a, 0x75, 0x63, 0x68,
0x05, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x69, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20,
0x73, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x12, 0x12, 0x0a,
0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x04, 0x77, 0x75, 0x6c, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x75, 0x6c,
0x75, 0x61, 0x6a, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x67, 0x75, 0x61, 0x6a, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
0x69, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x75, 0x62, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63,
0x52, 0x05, 0x66, 0x75, 0x62, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x6e, 0x73, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12,
0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x74, 0x61, 0x6e, 0x73, 0x75, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x75, 0x61, 0x6a, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,
0x18, 0x0a, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x67, 0x75, 0x61, 0x6a, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x75, 0x62, 0x65, 0x6e, 0x18, 0x0a,
0x52, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x78, 0x75, 0x61, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x75, 0x62, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74,
0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x78, 0x75, 0x61, 0x6e, 0x73, 0x75, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x74, 0x61, 0x6e,
0x61, 0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x61, 0x69, 0x6a, 0x69, 0x73, 0x75, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f, 0x6e, 0x67, 0x18, 0x0c,
0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x61, 0x69, 0x6a, 0x69, 0x22, 0xb8, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f, 0x6e, 0x67, 0x12, 0x1c, 0x0a,
0x0a, 0x06, 0x44, 0x42, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x09, 0x78, 0x75, 0x61, 0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x52, 0x09, 0x78, 0x75, 0x61, 0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x73,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x61, 0x69, 0x6a, 0x69, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x61, 0x69, 0x6a,
0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x69, 0x69, 0x22, 0xb8, 0x01, 0x0a, 0x06, 0x44, 0x42, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a,
0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69,
0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73,
0x70, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x70, 0x75, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75,
0x7a, 0x7a, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x10,
0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x70, 0x73, 0x22, 0x57, 0x0a, 0x0c, 0x44, 0x42, 0x52, 0x61, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79,
0x6e, 0x64, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05,
0x5f, 0x63, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x52, 0x06, 0x70, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x70, 0x73,
0x6e, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x70, 0x73, 0x22, 0x57, 0x0a, 0x0c,
0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x44, 0x42, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07,
0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e,
0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18,
0x33, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a,
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (