上传战斗匹配代码

This commit is contained in:
liwei1dao 2023-02-11 00:09:10 +08:00
parent 602e1a7a82
commit a787e1f29d
7 changed files with 404 additions and 175 deletions

View File

@ -240,6 +240,8 @@ type (
CreateBattleServer(req *pb.BattleInfo) (code pb.ErrorCode) CreateBattleServer(req *pb.BattleInfo) (code pb.ErrorCode)
///战斗指令输入 ///战斗指令输入
InCmdBattle(req *pb.BattleInCmdReq) (code pb.ErrorCode) InCmdBattle(req *pb.BattleInCmdReq) (code pb.ErrorCode)
///战斗认输请求
ConcedeBattle(req *pb.BattleConcedeReq) (code pb.ErrorCode)
//校验战报 //校验战报
CheckBattleReport(session IUserSession, report *pb.BattleReport) (code pb.ErrorCode, iswin bool) CheckBattleReport(session IUserSession, report *pb.BattleReport) (code pb.ErrorCode, iswin bool)
} }

View File

@ -89,3 +89,12 @@ func (this *battleClientMgrComp) InCmdBattle(ctx context.Context, req *pb.Battle
} }
return return
} }
//实时pvp 认输
func (this *battleClientMgrComp) ConcedeBattle(ctx context.Context, req *pb.BattleConcedeReq) (reply *pb.BattleConcedeResp, err error) {
reply = &pb.BattleConcedeResp{}
if err = this.clinet.callBattle(ctx, "Concede", req, reply); err != nil {
this.module.Errorln(err)
}
return
}

View File

@ -252,6 +252,22 @@ func (this *Battle) InCmdBattle(req *pb.BattleInCmdReq) (code pb.ErrorCode) {
return return
} }
//pvp认输
func (this *Battle) ConcedeBattle(req *pb.BattleConcedeReq) (code pb.ErrorCode) {
var (
resp *pb.BattleConcedeResp
err error
)
if resp, err = this.clientmgr.ConcedeBattle(context.Background(), req); err != nil {
this.Errorln(err)
code = pb.ErrorCode_RpcFuncExecutionError
}
if !resp.Issucc {
code = pb.ErrorCode_BattleInCmdFailed
}
return
}
//校验战报是否成功 //校验战报是否成功
func (this *Battle) CheckBattleReport(session comm.IUserSession, report *pb.BattleReport) (code pb.ErrorCode, iswin bool) { func (this *Battle) CheckBattleReport(session comm.IUserSession, report *pb.BattleReport) (code pb.ErrorCode, iswin bool) {
var ( var (

View File

@ -77,6 +77,7 @@ locp:
go this.Close() go this.Close()
break locp break locp
} else { } else {
this.gateway.Debugf("----------1 agent:%s uId:%s MainType:%s SubType:%s ", this.sessionId, this.uId, msg.MainType, msg.SubType)
var code pb.ErrorCode var code pb.ErrorCode
code, err = this.secAuth(msg) code, err = this.secAuth(msg)
if err == nil { if err == nil {
@ -92,6 +93,7 @@ locp:
//this.wsConn.SetReadDeadline(time.Now().Add(time.Second * 30)) //this.wsConn.SetReadDeadline(time.Now().Add(time.Second * 30))
continue continue
} }
this.gateway.Debugf("----------2 agent:%s uId:%s MainType:%s SubType:%s ", this.sessionId, this.uId, msg.MainType, msg.SubType)
if err := this.messageDistribution(msg); err != nil { if err := this.messageDistribution(msg); err != nil {
this.gateway.Errorf("messageDistribution err:%v", err) this.gateway.Errorf("messageDistribution err:%v", err)
go this.Close() go this.Close()
@ -301,8 +303,11 @@ func (this *Agent) messageDistribution(msg *pb.UserMessage) (err error) {
} }
} }
stime := time.Now() stime := time.Now()
this.gateway.Debugf("----------3 agent:%s uId:%s MainType:%s SubType:%s ", this.sessionId, this.uId, msg.MainType, msg.SubType)
ctx, _ := context.WithTimeout(context.Background(), time.Second*5)
if len(serviceTag) == 0 { if len(serviceTag) == 0 {
if err = this.gateway.Service().RpcCall(context.Background(), servicePath, string(comm.Rpc_GatewayRoute), req, reply); err != nil { this.gateway.Debugf("----------4 agent:%s uId:%s MainType:%s SubType:%s ", this.sessionId, this.uId, msg.MainType, msg.SubType)
if err = this.gateway.Service().RpcCall(ctx, servicePath, string(comm.Rpc_GatewayRoute), req, reply); err != nil {
this.gateway.Error("[UserResponse]", this.gateway.Error("[UserResponse]",
log.Field{Key: "uid", Value: this.uId}, log.Field{Key: "uid", Value: this.uId},
log.Field{Key: "serviceTag", Value: serviceTag}, log.Field{Key: "serviceTag", Value: serviceTag},
@ -314,10 +319,11 @@ func (this *Agent) messageDistribution(msg *pb.UserMessage) (err error) {
return return
} }
} else { //跨集群调用 } else { //跨集群调用
this.gateway.Debugf("----------5 agent:%s uId:%s servicePath:%s MainType:%s SubType:%s ", this.sessionId, this.uId, msg.ServicePath, msg.MainType, msg.SubType)
if msg.ServicePath != "" { //客户端是否制定目标服务器 /wroker/woker0 if msg.ServicePath != "" { //客户端是否制定目标服务器 /wroker/woker0
servicePath = msg.ServicePath servicePath = msg.ServicePath
} }
if err = this.gateway.Service().AcrossClusterRpcCall(context.Background(), serviceTag, servicePath, string(comm.Rpc_GatewayRoute), req, reply); err != nil { if err = this.gateway.Service().AcrossClusterRpcCall(ctx, serviceTag, servicePath, string(comm.Rpc_GatewayRoute), req, reply); err != nil {
this.gateway.Error("[UserResponse]", this.gateway.Error("[UserResponse]",
log.Field{Key: "uid", Value: this.uId}, log.Field{Key: "uid", Value: this.uId},
log.Field{Key: "serviceTag", Value: serviceTag}, log.Field{Key: "serviceTag", Value: serviceTag},

View File

@ -5,11 +5,13 @@ import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/base" "go_dreamfactory/lego/base"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/event"
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/timewheel" "go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"sync" "sync"
"time"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
) )
@ -60,6 +62,7 @@ func (this *Pvp) Start() (err error) {
} }
this.friend = module.(comm.IFriend) this.friend = module.(comm.IFriend)
event.RegisterGO(comm.EventUserOffline, this.useroffline)
return return
} }
@ -79,12 +82,12 @@ func (this *Pvp) CreatePvp(red, blue *pb.PvpUserInfo, ptype pb.PvpType) (battleI
) )
battleId = primitive.NewObjectID().Hex() battleId = primitive.NewObjectID().Hex()
battle = &BattleItem{ battle = &BattleItem{
Id: battleId, Id: battleId,
Ptype: ptype, Ptype: ptype,
State: pb.PvpState_ready, State: pb.PvpState_ready,
Red: red, Red: red,
Blue: blue, Blue: blue,
// readytimer: timewheel.Add(time.Second*60, this.readyTimeOut, battleId), readytimer: timewheel.Add(time.Second*60, this.readyTimeOut, battleId),
} }
if battle.RedSession, ok = this.GetUserSession(red.Uid); !ok { if battle.RedSession, ok = this.GetUserSession(red.Uid); !ok {
@ -179,6 +182,7 @@ func (this *Pvp) readyTimeOut(task *timewheel.Task, args ...interface{}) {
}, battle.RedSession, battle.BlueSession); err != nil { }, battle.RedSession, battle.BlueSession); err != nil {
this.Errorln(err) this.Errorln(err)
} }
go this.friend.QiecuoFinishNotify(battle.Red.Uid, battle.Id)
} }
} }
@ -239,3 +243,29 @@ func (this *Pvp) startBattle(battle *BattleItem) {
} }
} }
} }
//用户离线处理
func (this *Pvp) useroffline(session comm.IUserSession) {
var (
side int32
)
this.lock.RLock()
for _, v := range this.battles {
if v.Red.Uid == session.GetUserId() || v.Blue.Uid == session.GetUserId() {
if session.GetUserId() == v.Red.Uid {
side = 1
} else {
side = 2
}
v.lock.Lock()
if v.State == pb.PvpState_battle {
go this.battle.ConcedeBattle(&pb.BattleConcedeReq{
Battleid: v.Id,
Side: side,
})
}
v.lock.Unlock()
}
}
this.lock.RUnlock()
}

View File

@ -730,7 +730,8 @@ type BattleCmd struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Cmdtype string `protobuf:"bytes,1,opt,name=cmdtype,proto3" json:"cmdtype"` Cmdtype string `protobuf:"bytes,1,opt,name=cmdtype,proto3" json:"cmdtype"`
Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value"` Index uint32 `protobuf:"varint,2,opt,name=index,proto3" json:"index"`
Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value"`
} }
func (x *BattleCmd) Reset() { func (x *BattleCmd) Reset() {
@ -772,6 +773,13 @@ func (x *BattleCmd) GetCmdtype() string {
return "" return ""
} }
func (x *BattleCmd) GetIndex() uint32 {
if x != nil {
return x.Index
}
return 0
}
func (x *BattleCmd) GetValue() []byte { func (x *BattleCmd) GetValue() []byte {
if x != nil { if x != nil {
return x.Value return x.Value
@ -1323,6 +1331,110 @@ func (x *BattleFinishPush) GetBattleid() string {
return "" return ""
} }
//战斗认输 请求
type BattleConcedeReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Battleid string `protobuf:"bytes,1,opt,name=battleid,proto3" json:"battleid"`
Side int32 `protobuf:"varint,2,opt,name=side,proto3" json:"side"`
}
func (x *BattleConcedeReq) Reset() {
*x = BattleConcedeReq{}
if protoimpl.UnsafeEnabled {
mi := &file_battle_battle_msg_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BattleConcedeReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BattleConcedeReq) ProtoMessage() {}
func (x *BattleConcedeReq) ProtoReflect() protoreflect.Message {
mi := &file_battle_battle_msg_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BattleConcedeReq.ProtoReflect.Descriptor instead.
func (*BattleConcedeReq) Descriptor() ([]byte, []int) {
return file_battle_battle_msg_proto_rawDescGZIP(), []int{19}
}
func (x *BattleConcedeReq) GetBattleid() string {
if x != nil {
return x.Battleid
}
return ""
}
func (x *BattleConcedeReq) GetSide() int32 {
if x != nil {
return x.Side
}
return 0
}
// 战斗认输 回应
type BattleConcedeResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Issucc bool `protobuf:"varint,1,opt,name=issucc,proto3" json:"issucc"`
}
func (x *BattleConcedeResp) Reset() {
*x = BattleConcedeResp{}
if protoimpl.UnsafeEnabled {
mi := &file_battle_battle_msg_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BattleConcedeResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BattleConcedeResp) ProtoMessage() {}
func (x *BattleConcedeResp) ProtoReflect() protoreflect.Message {
mi := &file_battle_battle_msg_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BattleConcedeResp.ProtoReflect.Descriptor instead.
func (*BattleConcedeResp) Descriptor() ([]byte, []int) {
return file_battle_battle_msg_proto_rawDescGZIP(), []int{20}
}
func (x *BattleConcedeResp) GetIssucc() bool {
if x != nil {
return x.Issucc
}
return false
}
var File_battle_battle_msg_proto protoreflect.FileDescriptor var File_battle_battle_msg_proto protoreflect.FileDescriptor
var file_battle_battle_msg_proto_rawDesc = []byte{ var file_battle_battle_msg_proto_rawDesc = []byte{
@ -1424,63 +1536,71 @@ var file_battle_battle_msg_proto_rawDesc = []byte{
0x2e, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x09, 0x2e, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x09,
0x62, 0x75, 0x6c, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x62, 0x75, 0x6c, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x73,
0x6b, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x6b, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22,
0x3b, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x51, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x18, 0x0a, 0x07,
0x63, 0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x63, 0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05,
0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x75, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x70,
0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04,
0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x05, 0x69, 0x6e, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x74, 0x69, 0x6d, 0x65,
0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x74, 0x69, 0x6d, 0x65,
0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x05, 0x69, 0x6e, 0x63, 0x6d, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x12, 0x20, 0x0a, 0x05, 0x69, 0x6e, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x6f, 0x75, 0x74, 0x63, 0x6d, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x05, 0x69, 0x6e, 0x63,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x63, 0x6d, 0x64, 0x6d, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x63, 0x6d, 0x64, 0x18, 0x04, 0x20, 0x03,
0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x06,
0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x6f, 0x75, 0x74, 0x63, 0x6d, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
0x74, 0x61, 0x73, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x74, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f,
0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65,
0x75, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x61, 0x74, 0x68,
0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
0x68, 0x61, 0x72, 0x6d, 0x22, 0x66, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x70, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x72, 0x6d, 0x18, 0x08,
0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x61, 0x72, 0x6d, 0x22, 0x66, 0x0a, 0x10, 0x42, 0x61,
0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x72, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x70, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10,
0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x72, 0x69, 0x64,
0x6f, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61,
0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63,
0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, 0x38, 0x0a, 0x15, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x63, 0x68,
0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x63, 0x68, 0x65,
0x63, 0x6b, 0x22, 0x38, 0x0a, 0x15, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x04, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74,
0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x30, 0x0a, 0x16,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63,
0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x22, 0x5c,
0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x30, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x71,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x22, 0x5c, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x74, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65,
0x6c, 0x65, 0x49, 0x6e, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42,
0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x02, 0x69, 0x6e, 0x22, 0x61, 0x0a, 0x0f,
0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12,
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x6e, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x09, 0x52, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x02, 0x69,
0x6d, 0x64, 0x52, 0x02, 0x69, 0x6e, 0x22, 0x61, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
0x49, 0x6e, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x43, 0x6d, 0x64, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63,
0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x74, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x22,
0x74, 0x6c, 0x65, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x4c, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x43, 0x6d, 0x64, 0x50,
0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x02, 0x69, 0x75, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18,
0x6e, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x12,
0x08, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x22, 0x4c, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x1c, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42,
0x74, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x43, 0x6d, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x22, 0x2e, 0x0a,
0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x50, 0x75, 0x73,
0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x22, 0x42, 0x0a,
0x6d, 0x64, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x22, 0x2e, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x10, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x64, 0x65, 0x52, 0x65,
0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x65, 0x22, 0x2b, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x63, 0x65,
0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63,
0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x42, 0x06,
0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -1495,7 +1615,7 @@ func file_battle_battle_msg_proto_rawDescGZIP() []byte {
return file_battle_battle_msg_proto_rawDescData return file_battle_battle_msg_proto_rawDescData
} }
var file_battle_battle_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_battle_battle_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
var file_battle_battle_msg_proto_goTypes = []interface{}{ var file_battle_battle_msg_proto_goTypes = []interface{}{
(*LineUp)(nil), // 0: LineUp (*LineUp)(nil), // 0: LineUp
(*BattleFormation)(nil), // 1: BattleFormation (*BattleFormation)(nil), // 1: BattleFormation
@ -1516,34 +1636,36 @@ var file_battle_battle_msg_proto_goTypes = []interface{}{
(*BattleInCmdResp)(nil), // 16: BattleInCmdResp (*BattleInCmdResp)(nil), // 16: BattleInCmdResp
(*BattleOutCmdPush)(nil), // 17: BattleOutCmdPush (*BattleOutCmdPush)(nil), // 17: BattleOutCmdPush
(*BattleFinishPush)(nil), // 18: BattleFinishPush (*BattleFinishPush)(nil), // 18: BattleFinishPush
(PlayType)(0), // 19: PlayType (*BattleConcedeReq)(nil), // 19: BattleConcedeReq
(*DBHero)(nil), // 20: DBHero (*BattleConcedeResp)(nil), // 20: BattleConcedeResp
(BattleType)(0), // 21: BattleType (PlayType)(0), // 21: PlayType
(*DBBattleFormt)(nil), // 22: DBBattleFormt (*DBHero)(nil), // 22: DBHero
(*anypb.Any)(nil), // 23: google.protobuf.Any (BattleType)(0), // 23: BattleType
(*DBBattleFormt)(nil), // 24: DBBattleFormt
(*anypb.Any)(nil), // 25: google.protobuf.Any
} }
var file_battle_battle_msg_proto_depIdxs = []int32{ var file_battle_battle_msg_proto_depIdxs = []int32{
19, // 0: BattleEVEReq.ptype:type_name -> PlayType 21, // 0: BattleEVEReq.ptype:type_name -> PlayType
1, // 1: BattleEVEReq.format:type_name -> BattleFormation 1, // 1: BattleEVEReq.format:type_name -> BattleFormation
19, // 2: BattlePVEReq.ptype:type_name -> PlayType 21, // 2: BattlePVEReq.ptype:type_name -> PlayType
1, // 3: BattlePVEReq.format:type_name -> BattleFormation 1, // 3: BattlePVEReq.format:type_name -> BattleFormation
20, // 4: PVPFormation.format:type_name -> DBHero 22, // 4: PVPFormation.format:type_name -> DBHero
19, // 5: BattlePVPReq.ptype:type_name -> PlayType 21, // 5: BattlePVPReq.ptype:type_name -> PlayType
4, // 6: BattlePVPReq.redformat:type_name -> PVPFormation 4, // 6: BattlePVPReq.redformat:type_name -> PVPFormation
4, // 7: BattlePVPReq.buleformat:type_name -> PVPFormation 4, // 7: BattlePVPReq.buleformat:type_name -> PVPFormation
19, // 8: BattleRTPVPReq.ptype:type_name -> PlayType 21, // 8: BattleRTPVPReq.ptype:type_name -> PlayType
1, // 9: BattleRTPVPReq.redformat:type_name -> BattleFormation 1, // 9: BattleRTPVPReq.redformat:type_name -> BattleFormation
1, // 10: BattleRTPVPReq.bulefformat:type_name -> BattleFormation 1, // 10: BattleRTPVPReq.bulefformat:type_name -> BattleFormation
19, // 11: BattlePVBReq.ptype:type_name -> PlayType 21, // 11: BattlePVBReq.ptype:type_name -> PlayType
1, // 12: BattlePVBReq.format:type_name -> BattleFormation 1, // 12: BattlePVBReq.format:type_name -> BattleFormation
21, // 13: BattleInfo.btype:type_name -> BattleType 23, // 13: BattleInfo.btype:type_name -> BattleType
19, // 14: BattleInfo.ptype:type_name -> PlayType 21, // 14: BattleInfo.ptype:type_name -> PlayType
22, // 15: BattleInfo.redflist:type_name -> DBBattleFormt 24, // 15: BattleInfo.redflist:type_name -> DBBattleFormt
22, // 16: BattleInfo.buleflist:type_name -> DBBattleFormt 24, // 16: BattleInfo.buleflist:type_name -> DBBattleFormt
8, // 17: BattleReport.info:type_name -> BattleInfo 8, // 17: BattleReport.info:type_name -> BattleInfo
9, // 18: BattleReport.incmd:type_name -> BattleCmd 9, // 18: BattleReport.incmd:type_name -> BattleCmd
9, // 19: BattleReport.outcmd:type_name -> BattleCmd 9, // 19: BattleReport.outcmd:type_name -> BattleCmd
23, // 20: BattleRpcMessage.data:type_name -> google.protobuf.Any 25, // 20: BattleRpcMessage.data:type_name -> google.protobuf.Any
8, // 21: BattleCreateServerReq.info:type_name -> BattleInfo 8, // 21: BattleCreateServerReq.info:type_name -> BattleInfo
9, // 22: BattleInCmdReq.in:type_name -> BattleCmd 9, // 22: BattleInCmdReq.in:type_name -> BattleCmd
9, // 23: BattleInCmdResp.in:type_name -> BattleCmd 9, // 23: BattleInCmdResp.in:type_name -> BattleCmd
@ -1791,6 +1913,30 @@ func file_battle_battle_msg_proto_init() {
return nil return nil
} }
} }
file_battle_battle_msg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BattleConcedeReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_battle_battle_msg_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BattleConcedeResp); 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{
@ -1798,7 +1944,7 @@ func file_battle_battle_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_battle_battle_msg_proto_rawDesc, RawDescriptor: file_battle_battle_msg_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 19, NumMessages: 21,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -428,7 +428,8 @@ type ComStartAction struct {
From int32 `protobuf:"varint,1,opt,name=from,proto3" json:"from"` //当前出手角色 From int32 `protobuf:"varint,1,opt,name=from,proto3" json:"from"` //当前出手角色
Target int32 `protobuf:"varint,2,opt,name=target,proto3" json:"target"` //预选攻击目标 Target int32 `protobuf:"varint,2,opt,name=target,proto3" json:"target"` //预选攻击目标
SkillInfo []*ComSkillInfo `protobuf:"bytes,3,rep,name=skillInfo,proto3" json:"skillInfo"` CurRound int32 `protobuf:"varint,3,opt,name=curRound,proto3" json:"curRound"`
SkillInfo []*ComSkillInfo `protobuf:"bytes,4,rep,name=skillInfo,proto3" json:"skillInfo"`
} }
func (x *ComStartAction) Reset() { func (x *ComStartAction) Reset() {
@ -477,6 +478,13 @@ func (x *ComStartAction) GetTarget() int32 {
return 0 return 0
} }
func (x *ComStartAction) GetCurRound() int32 {
if x != nil {
return x.CurRound
}
return 0
}
func (x *ComStartAction) GetSkillInfo() []*ComSkillInfo { func (x *ComStartAction) GetSkillInfo() []*ComSkillInfo {
if x != nil { if x != nil {
return x.SkillInfo return x.SkillInfo
@ -594,10 +602,11 @@ type ComWaitInputSkill struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Auto bool `protobuf:"varint,1,opt,name=auto,proto3" json:"auto"` Auto bool `protobuf:"varint,1,opt,name=auto,proto3" json:"auto"`
Side int32 `protobuf:"varint,2,opt,name=side,proto3" json:"side"` Side int32 `protobuf:"varint,2,opt,name=side,proto3" json:"side"`
SkillId int32 `protobuf:"varint,3,opt,name=skillId,proto3" json:"skillId"` SkillId int32 `protobuf:"varint,3,opt,name=skillId,proto3" json:"skillId"`
Target int32 `protobuf:"varint,4,opt,name=target,proto3" json:"target"` Target int32 `protobuf:"varint,4,opt,name=target,proto3" json:"target"`
CurRound int32 `protobuf:"varint,5,opt,name=curRound,proto3" json:"curRound"`
} }
func (x *ComWaitInputSkill) Reset() { func (x *ComWaitInputSkill) Reset() {
@ -660,6 +669,13 @@ func (x *ComWaitInputSkill) GetTarget() int32 {
return 0 return 0
} }
func (x *ComWaitInputSkill) GetCurRound() int32 {
if x != nil {
return x.CurRound
}
return 0
}
//主技能命令 //主技能命令
type ComSkillAtk struct { type ComSkillAtk struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -1410,95 +1426,99 @@ var file_battle_battle_struct_proto_rawDesc = []byte{
0x64, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x63, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x63,
0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18,
0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x45, 0x66, 0x66, 0x65, 0x63, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x45, 0x66, 0x66, 0x65, 0x63,
0x74, 0x22, 0x69, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63,
0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01,
0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
0x2b, 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x09,
0x6f, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x53, 0x0a, 0x10, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x44, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0d, 0x2e, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x53, 0x0a, 0x10, 0x43, 0x6f, 0x6d,
0x66, 0x72, 0x6f, 0x6d, 0x12, 0x2b, 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x44, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f,
0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6d, 0x12, 0x2b, 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02,
0x6f, 0x22, 0x23, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49,
0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x23,
0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x6d, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x57, 0x61, 0x69, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66,
0x75, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x12, 0x72, 0x6f, 0x6d, 0x22, 0x89, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x57, 0x61, 0x69, 0x74, 0x49,
0x6e, 0x70, 0x75, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x75, 0x74,
0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x12, 0x12, 0x0a,
0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64,
0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
0x28, 0x05, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74,
0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72,
0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18,
0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x22,
0xc0, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x74, 0x6b, 0x12,
0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66,
0x72, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x0e, 0x0a,
0x02, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x14, 0x0a,
0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x61,
0x72, 0x61, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x63,
0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43,
0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x66, 0x74, 0x65, 0x72, 0x41, 0x74, 0x6b, 0x52,
0x07, 0x63, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6e, 0x69, 0x4e,
0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6e, 0x69, 0x4e, 0x61,
0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x66,
0x74, 0x65, 0x72, 0x41, 0x74, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x69, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04,
0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x07,
0x63, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x4c, 0x69,
0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x4d, 0x6f, 0x6e, 0x64, 0x69, 0x66,
0x79, 0x42, 0x75, 0x66, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x49,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x49, 0x64, 0x12,
0x1e, 0x0a, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x70, 0x4e, 0x75, 0x6d, 0x12,
0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05,
0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65,
0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x22,
0x1c, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x52, 0x65, 0x62, 0x69, 0x72, 0x74, 0x68, 0x12, 0x0e, 0x0a,
0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x6f, 0x22, 0xbb, 0x01,
0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74,
0x6f, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x61, 0x6f, 0x6a, 0x69, 0x18, 0x03,
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x61, 0x6f, 0x6a, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x68,
0x69, 0x64, 0x65, 0x44, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x69,
0x64, 0x65, 0x44, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54,
0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66,
0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01,
0x28, 0x02, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x68, 0x70, 0x18, 0x07,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x68, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x68, 0x70,
0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x68, 0x70, 0x22, 0x34, 0x0a, 0x0c, 0x43,
0x6f, 0x6d, 0x54, 0x65, 0x61, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x22, 0x34, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a,
0x07, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x47, 0x75,
0x69, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x75, 0x69, 0x64, 0x65, 0x49, 0x64, 0x22, 0x7f, 0x0a,
0x0e, 0x43, 0x6f, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12,
0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73,
0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x69, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x69, 0x64, 0x12,
0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x72,
0x6f, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74,
0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x43,
0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12,
0x1e, 0x0a, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12,
0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73,
0x69, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x69, 0x64, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x74, 0x6f, 0x33,
0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74,
0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xc0, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69,
0x6c, 0x6c, 0x41, 0x74, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69,
0x6c, 0x6c, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c,
0x6c, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x6c, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72,
0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65,
0x74, 0x12, 0x2b, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x6f, 0x6d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x66, 0x74,
0x65, 0x72, 0x41, 0x74, 0x6b, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18,
0x0a, 0x07, 0x61, 0x6e, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x61, 0x6e, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x53,
0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x66, 0x74, 0x65, 0x72, 0x41, 0x74, 0x6b, 0x12, 0x18, 0x0a, 0x07,
0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73,
0x6b, 0x69, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61,
0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
0x65, 0x74, 0x12, 0x24, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52,
0x07, 0x63, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d,
0x4d, 0x6f, 0x6e, 0x64, 0x69, 0x66, 0x79, 0x42, 0x75, 0x66, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x74,
0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x67,
0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x62, 0x75, 0x66, 0x66, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62,
0x75, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x70,
0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x6c,
0x61, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05,
0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6f,
0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x70,
0x65, 0x72, 0x61, 0x74, 0x65, 0x22, 0x1c, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x52, 0x65, 0x62, 0x69,
0x72, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x74, 0x6f, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x69, 0x66,
0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x62,
0x61, 0x6f, 0x6a, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x61, 0x6f, 0x6a,
0x69, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x69, 0x64, 0x65, 0x44, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01,
0x28, 0x08, 0x52, 0x07, 0x68, 0x69, 0x64, 0x65, 0x44, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x6d,
0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6e,
0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a,
0x03, 0x6e, 0x68, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x68, 0x70, 0x12,
0x10, 0x0a, 0x03, 0x6d, 0x68, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x68,
0x70, 0x22, 0x34, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x54, 0x65, 0x61, 0x63, 0x68, 0x54, 0x61, 0x73,
0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69,
0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x34, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x53, 0x74,
0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x34, 0x0a,
0x08, 0x43, 0x6f, 0x6d, 0x47, 0x75, 0x69, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69,
0x64, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x75, 0x69, 0x64,
0x65, 0x49, 0x64, 0x22, 0x7f, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74,
0x72, 0x79, 0x52, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74,
0x72, 0x79, 0x52, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70,
0x65, 0x12, 0x21, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72,
0x6f, 0x6c, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x45,
0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63,
0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (