diff --git a/common/constant.go b/common/constant.go
index 52b6ddb..8e66d95 100644
--- a/common/constant.go
+++ b/common/constant.go
@@ -86,6 +86,7 @@ const (
GameId_CaoThap = 605 //CaoThap
GameId_AngerUncle = 606 // 愤怒大叔
GameId_SmallRoket = 607 // 小火箭
+ GameId_Clawdoll = 608 // 娃娃机
__GameId_ThrGame_Min__ = 700 //################三方类################
GameId_Thr_Dg = 701 //DG Game
GameId_Thr_XHJ = 901 //DG Game
@@ -104,6 +105,7 @@ const (
GameDifTamQuoc = "305" // 百战成神
GameDifFruits = "306" // 水果机
GameDifRichblessed = "307" // 多彩多福
+ GameDifClawdoll = "608" // 娃娃机
)
// IsTienLenYuLe TienLen娱乐
@@ -297,6 +299,8 @@ const (
GainWaySkinUpGrade = 101 // 皮肤升级消耗
GainWayItemFen = 102 // 道具分解消耗
GainWayItemFenGain = 103 // 道具分解获得
+ GainWayGuide = 104 //新手引导奖励
+ GainWayVipGift9 = 105 //vip等级礼包
)
// 后台选择 金币变化类型 的充值 类型id号起始
@@ -838,3 +842,14 @@ var (
300003: 70,
}
)
+
+const (
+ AttributeGuideStep = 1 // 引导步骤
+ AttributeGuideSkip = 2 // 跳过引导
+ AttributeGuideTest = 3 // 测试引导
+)
+
+const (
+ On = 1 // 开启
+ Off = 2 // 关闭
+)
diff --git a/data/DB_GameFree.dat b/data/DB_GameFree.dat
index 8eeff8c..7ee49a4 100644
Binary files a/data/DB_GameFree.dat and b/data/DB_GameFree.dat differ
diff --git a/data/DB_GameFree.json b/data/DB_GameFree.json
index 0dc2c5b..0ddecf2 100644
--- a/data/DB_GameFree.json
+++ b/data/DB_GameFree.json
@@ -6390,6 +6390,39 @@
],
"PlayerWaterRate": 100,
"BetWaterRate": 100
+ },
+ {
+ "Id": 6080001,
+ "Name": "娃娃机",
+ "Title": "1",
+ "GameId": 608,
+ "GameRule": 60800,
+ "GameType": 1,
+ "SceneType": 1,
+ "Desc": "0",
+ "ShowType": 3,
+ "ShowId": 60800,
+ "BaseScore": 1000,
+ "Turn": 60800,
+ "BetDec": "1000",
+ "Ai": [
+ 0
+ ],
+ "OtherIntParams": [
+ 0
+ ],
+ "RobotNumRng": [
+ 0
+ ],
+ "SameIpLimit": 1,
+ "GameDif": "608",
+ "GameClass": 2,
+ "PlatformName": "越南棋牌",
+ "MaxBetCoin": [
+ 0
+ ],
+ "PlayerWaterRate": 100,
+ "BetWaterRate": 100
}
]
}
\ No newline at end of file
diff --git a/data/DB_GameRule.dat b/data/DB_GameRule.dat
index 814c530..0f2fb33 100644
Binary files a/data/DB_GameRule.dat and b/data/DB_GameRule.dat differ
diff --git a/data/DB_GameRule.json b/data/DB_GameRule.json
index 626dccc..8295ccb 100644
--- a/data/DB_GameRule.json
+++ b/data/DB_GameRule.json
@@ -195,6 +195,11 @@
"Name": "多财多福",
"GameId": 307,
"GameDif": "307"
+ },
+ {
+ "Id": 60800,
+ "Name": "娃娃机",
+ "GameId": 608
}
]
}
\ No newline at end of file
diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat
index 1fdfa22..9d60e50 100644
Binary files a/data/DB_PropExchange.dat and b/data/DB_PropExchange.dat differ
diff --git a/data/DB_Task.dat b/data/DB_Task.dat
index d7144b5..95a4c56 100644
Binary files a/data/DB_Task.dat and b/data/DB_Task.dat differ
diff --git a/data/DB_VIP.dat b/data/DB_VIP.dat
index b5b997e..f541d80 100644
Binary files a/data/DB_VIP.dat and b/data/DB_VIP.dat differ
diff --git a/data/DB_VIP.json b/data/DB_VIP.json
index c0ddc58..2d2a23e 100644
--- a/data/DB_VIP.json
+++ b/data/DB_VIP.json
@@ -3,8 +3,8 @@
{
"Name": "不是VIP",
"Privilege1": [
- 100000,
- 2
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -28,7 +28,12 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
- ]
+ ],
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 1000
},
{
"Id": 1,
@@ -36,8 +41,8 @@
"Count": 1000,
"VipExp": 1000,
"Privilege1": [
- 100000,
- 100
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -63,7 +68,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 1
+ "MatchFreeTimes": 1,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 2000
},
{
"Id": 2,
@@ -71,8 +81,8 @@
"Count": 2000,
"VipExp": 2000,
"Privilege1": [
- 150000,
- 150
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -98,7 +108,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 2
+ "MatchFreeTimes": 2,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 3000
},
{
"Id": 3,
@@ -106,8 +121,8 @@
"Count": 5000,
"VipExp": 5000,
"Privilege1": [
- 200000,
- 200
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -133,7 +148,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 3
+ "MatchFreeTimes": 3,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 4000
},
{
"Id": 4,
@@ -141,8 +161,8 @@
"Count": 10000,
"VipExp": 10000,
"Privilege1": [
- 300000,
- 250
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -168,7 +188,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 4
+ "MatchFreeTimes": 4,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 5000
},
{
"Id": 5,
@@ -176,8 +201,8 @@
"Count": 20000,
"VipExp": 20000,
"Privilege1": [
- 400000,
- 300
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -203,7 +228,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 5
+ "MatchFreeTimes": 5,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 6000
},
{
"Id": 6,
@@ -211,8 +241,8 @@
"Count": 50000,
"VipExp": 50000,
"Privilege1": [
- 500000,
- 350
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -238,7 +268,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 6
+ "MatchFreeTimes": 6,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 7000
},
{
"Id": 7,
@@ -246,8 +281,8 @@
"Count": 100000,
"VipExp": 100000,
"Privilege1": [
- 600000,
- 400
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -273,7 +308,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 7
+ "MatchFreeTimes": 7,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 8000
},
{
"Id": 8,
@@ -281,8 +321,8 @@
"Count": 200000,
"VipExp": 200000,
"Privilege1": [
- 700000,
- 450
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -308,7 +348,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 8
+ "MatchFreeTimes": 8,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 9000
},
{
"Id": 9,
@@ -316,8 +361,8 @@
"Count": 500000,
"VipExp": 500000,
"Privilege1": [
- 800000,
- 500
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -343,7 +388,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 9
+ "MatchFreeTimes": 9,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 10000
},
{
"Id": 10,
@@ -351,8 +401,8 @@
"Count": 1000000,
"VipExp": 1000000,
"Privilege1": [
- 900000,
- 550
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -378,7 +428,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 10
+ "MatchFreeTimes": 10,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 11000
},
{
"Id": 11,
@@ -386,8 +441,8 @@
"Count": 2000000,
"VipExp": 2000000,
"Privilege1": [
- 1000000,
- 600
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -413,7 +468,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 11
+ "MatchFreeTimes": 11,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 12000
},
{
"Id": 12,
@@ -421,8 +481,8 @@
"Count": 5000000,
"VipExp": 5000000,
"Privilege1": [
- 2000000,
- 650
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -448,7 +508,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 12
+ "MatchFreeTimes": 12,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 13000
},
{
"Id": 13,
@@ -456,8 +521,8 @@
"Count": 10000000,
"VipExp": 10000000,
"Privilege1": [
- 3000000,
- 700
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -483,7 +548,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 13
+ "MatchFreeTimes": 13,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 14000
},
{
"Id": 14,
@@ -491,8 +561,8 @@
"Count": 20000000,
"VipExp": 20000000,
"Privilege1": [
- 4000000,
- 750
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -518,7 +588,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 14
+ "MatchFreeTimes": 14,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 15000
},
{
"Id": 15,
@@ -526,8 +601,8 @@
"Count": 50000000,
"VipExp": 50000000,
"Privilege1": [
- 5000000,
- 800
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -553,7 +628,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 15
+ "MatchFreeTimes": 15,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 16000
},
{
"Id": 16,
@@ -561,8 +641,8 @@
"Count": 100000000,
"VipExp": 100000000,
"Privilege1": [
- 6000000,
- 850
+ 0,
+ 0
],
"Privilege2": [
0,
@@ -588,12 +668,12 @@
"获得专属炮台",
"更多VIP功能正待开发"
],
- "MatchFreeTimes": 16
- },
- {
- "ParamName": [
- ""
- ]
+ "MatchFreeTimes": 16,
+ "Privilege9": [
+ 0,
+ 0
+ ],
+ "PrivilegeShow": 17000
}
]
}
\ No newline at end of file
diff --git a/data/DB_VIPShow.dat b/data/DB_VIPShow.dat
new file mode 100644
index 0000000..71c1e91
--- /dev/null
+++ b/data/DB_VIPShow.dat
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/data/DB_VIPShow.json b/data/DB_VIPShow.json
new file mode 100644
index 0000000..79d6cdb
--- /dev/null
+++ b/data/DB_VIPShow.json
@@ -0,0 +1,13 @@
+{
+ "Arr": [
+ {
+ "Id": 1,
+ "SkinId": 300003
+ },
+ {
+ "Id": 2,
+ "SkinId": 300004,
+ "VIPLevel": 3
+ }
+ ]
+}
\ No newline at end of file
diff --git a/data/gameconfig/machine.json b/data/gameconfig/machine.json
new file mode 100644
index 0000000..8d4687f
--- /dev/null
+++ b/data/gameconfig/machine.json
@@ -0,0 +1,19 @@
+{
+ "GameName":"娃娃机",
+ "GameId":608,
+ "GameMode":[0],
+ "SceneType":[1],
+ "CanForceStart":false,
+ "MinPlayerCnt":1,
+ "DefaultPlayerCnt":1,
+ "MaxIndex":0,
+ "TimeFreeStart":0,
+ "TimeFreeEnd":0,
+ "DependentPlayerCnt":true,
+ "EnterAfterStart":false,
+ "PerGameTakeCard":100,
+ "ViewLogCnt":-1,
+ "BetState":0,
+ "Params":[
+ ]
+}
\ No newline at end of file
diff --git a/data/gameparam.json b/data/gameparam.json
index d0956de..27898ce 100644
--- a/data/gameparam.json
+++ b/data/gameparam.json
@@ -6,7 +6,7 @@
"VerifyClientVersion":true,
"SrvMaintain":false,
"WhiteHttpAddr": [],
- "HundredScenePreCreate":true,
+ "HundredScenePreCreate":false,
"WriteEventLog": true,
"SpreadAccountQPT":100,
"FakeVerifyCode":"123456",
@@ -23,6 +23,7 @@
"ClosePreCreateRoom": true,
"AgoraAddress": "http://47.105.78.29:8081",
"InviteUrl": "http://47.105.78.29:8000/",
+ "GuideTs": 1723790567,
"RankTimeout": 2,
"PermitInitScore": 0
}
\ No newline at end of file
diff --git a/dbproxy/mq/c_vipgiftlog.go b/dbproxy/mq/c_vipgiftlog.go
new file mode 100644
index 0000000..32b6452
--- /dev/null
+++ b/dbproxy/mq/c_vipgiftlog.go
@@ -0,0 +1,36 @@
+package mq
+
+import (
+ "encoding/json"
+
+ "mongo.games.com/goserver/core/broker"
+ "mongo.games.com/goserver/core/broker/rabbitmq"
+
+ "mongo.games.com/game/dbproxy/svc"
+ "mongo.games.com/game/model"
+ "mongo.games.com/game/mq"
+)
+
+func init() {
+ mq.RegisterSubscriber(mq.DBVipGiftLog, func(e broker.Event) (err error) {
+ msg := e.Message()
+ if msg != nil {
+ defer func() {
+ e.Ack()
+ }()
+
+ var log model.DbVip
+ err = json.Unmarshal(msg.Body, &log)
+ if err != nil {
+ return
+ }
+
+ c := svc.DbVipLogCollection(log.Platform)
+ if c != nil {
+ err = c.Insert(log)
+ }
+ return
+ }
+ return nil
+ }, broker.Queue(mq.DBVipGiftLog), broker.DisableAutoAck(), rabbitmq.DurableQueue())
+}
diff --git a/dbproxy/svc/l_matchawardlog.go b/dbproxy/svc/l_matchawardlog.go
index 9539fcb..bbc8dfd 100644
--- a/dbproxy/svc/l_matchawardlog.go
+++ b/dbproxy/svc/l_matchawardlog.go
@@ -2,17 +2,26 @@ package svc
import (
"errors"
+ "net/rpc"
+
+ "github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
+ "mongo.games.com/goserver/core/logger"
+
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
- "net/rpc"
)
var (
- MatchAwardLogDBErr = errors.New("log_matchawardlog db open failed.")
+ MatchAwardDBErr = errors.New("log_matchawardlog db open failed")
)
-func MatchAwardLogCollection(plt string) *mongo.Collection {
+type MatchAwardLog struct {
+ AwardNum map[string]map[int32]int32 // 奖励数量
+ Platform string
+}
+
+func MatchAwardCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.MatchAwardLogDBName)
if s != nil {
c, _ := s.DB().C(model.MatchAwardLogCollName)
@@ -21,47 +30,55 @@ func MatchAwardLogCollection(plt string) *mongo.Collection {
return nil
}
-func InsertOrUpdateMatchAwardLog(logs ...*model.MatchAwardLog) (err error) {
- for _, log := range logs {
- clog := MatchAwardLogCollection(log.Platform)
- if clog == nil {
- return
- }
- _, err = clog.Upsert(nil, log)
- if err != nil {
- // 处理错误
- return err
- }
- }
- return
+type MatchAwardSvc struct {
}
-type MatchAwardLogSvc struct {
-}
+func (svc *MatchAwardSvc) UpsertMatchAward(req *model.MatchAward, ret *bool) (err error) {
+ c := MatchAwardCollection(req.Platform)
+ if c == nil {
+ return MatchAwardDBErr
+ }
-func (svc *MatchAwardLogSvc) InsertOrUpdateMatchAwardLog(args []*model.MatchAwardLog, ret *bool) (err error) {
- err = InsertOrUpdateMatchAwardLog(args...)
- if err == nil {
- *ret = true
- }
- return
-}
-func GetMatchAward(plt string, ret *model.MatchAwardLog) (err error) {
- clog := MatchAwardLogCollection(plt)
- if clog == nil {
- return nil
- }
- selecter := bson.M{"platform": plt}
- err = clog.Find(selecter).One(&ret)
+ _, err = c.Upsert(nil, req)
if err != nil {
- return nil
+ logger.Logger.Errorf("UpsertMatchAward err:%v", err)
}
- return
-}
-func (svc *MatchAwardLogSvc) GetMatchAward(Plt string, ret *model.MatchAwardLog) (err error) {
- err = GetMatchAward(Plt, ret)
return err
}
-func init() {
- rpc.Register(new(MatchAwardLogSvc))
+
+func (svc *MatchAwardSvc) GetMatchAward(plt string, ret *model.MatchAward) (err error) {
+ c := MatchAwardCollection(plt)
+ if c == nil {
+ return MatchAwardDBErr
+ }
+
+ // 旧数据
+ old := &MatchAwardLog{}
+ err = c.Find(bson.M{"platform": "1"}).One(old)
+ if err == nil {
+ for k, v := range old.AwardNum {
+ d := &model.MatchAward{
+ Platform: k,
+ Award: make(map[int32]int32),
+ }
+ for kk, vv := range v {
+ d.Award[kk] = vv
+ }
+ var b bool
+ svc.UpsertMatchAward(d, &b)
+ }
+ c.Remove(bson.M{"platform": "1"})
+ }
+ // 旧数据
+
+ err = nil
+ err = c.Find(nil).One(ret)
+ if err != nil && err != mgo.ErrNotFound {
+ logger.Logger.Errorf("GetMatchAward err:%v", err)
+ }
+ return err
+}
+
+func init() {
+ rpc.Register(new(MatchAwardSvc))
}
diff --git a/dbproxy/svc/u_player.go b/dbproxy/svc/u_player.go
index 35ab3a1..bf6b7c1 100644
--- a/dbproxy/svc/u_player.go
+++ b/dbproxy/svc/u_player.go
@@ -354,6 +354,11 @@ func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArg
}
cplayerdata.Update(bson.M{"snid": args.SnId}, bson.M{"$set": param})
}
+ if p.GuideStep >= 0 && p.CreateTime.Unix() < model.GameParamData.GuideTs {
+ p.GuideStep = -1
+ param["guidestep"] = p.GuideStep
+ cplayerdata.Update(bson.M{"snid": args.SnId}, bson.M{"$set": param})
+ }
}
var code string
diff --git a/etcd/keyconf.go b/etcd/keyconf.go
index b32b797..1dc4fd5 100644
--- a/etcd/keyconf.go
+++ b/etcd/keyconf.go
@@ -38,4 +38,7 @@ const (
ETCDKEY_SKin = "/game/skin_config" // 皮肤配置
ETCDKEY_RANK_TYPE = "/game/RankType" // 排行榜奖励配置
ETCDKEY_AWARD_CONFIG = "/game/awardlog_config" //获奖记录
+ ETCDKEY_GUIDE = "/game/guide_config" //新手引导配置
+ ETCDKEY_MatchAudience = "/game/match_audience" //比赛观众
+ ETCDKEY_Spirit = "/game/spirit" // 小精灵配置
)
diff --git a/etcd/register.go b/etcd/register.go
index 9041ece..dc22dc2 100644
--- a/etcd/register.go
+++ b/etcd/register.go
@@ -18,6 +18,7 @@ import (
// key:监听的key
// msgType:数据类型
// f:数据变更回调方法, completeKey:完整键, isInit:第一次主动拉取数据,event:事件类型, data:已经反序列化的数据,类型为msgType,是指针类型
+// **isInit** 为true时,表示是第一次主动拉取数据,此时允许耗时操作。为false时,表示是监听到数据变更,此时不允许耗时操作。
func Register(key string, msgType interface{}, f func(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{})) {
createFunc := func() interface{} {
tp := reflect.TypeOf(msgType)
diff --git a/gamerule/clawdoll/constants.go b/gamerule/clawdoll/constants.go
new file mode 100644
index 0000000..5f361d0
--- /dev/null
+++ b/gamerule/clawdoll/constants.go
@@ -0,0 +1,25 @@
+package clawdoll
+
+import "time"
+
+// 场景状态
+const (
+ ClawDollSceneStateWait int = iota //等待状态
+ ClawDollSceneStateStart //开始倒计时
+ ClawDollSceneStatePlayGame //游戏中
+ ClawDollSceneStateBilled //结算
+ ClawDollSceneStateMax
+)
+
+const (
+ ClawDollSceneWaitTimeout = time.Second * 2 //等待倒计时
+ ClawDollSceneStartTimeout = time.Second * 6 //开始倒计时
+ ClawDollSceneBilledTimeout = time.Second * 2 //结算
+)
+
+// 玩家操作
+const (
+ ClawDollPlayerOpScore = iota + 1 // 上分
+ ClawDollPlayerOpGo // 下抓
+ ClawDollPlayerOpMove // 移动方向
+)
diff --git a/gamerule/clawdoll/logic.go b/gamerule/clawdoll/logic.go
new file mode 100644
index 0000000..78f1018
--- /dev/null
+++ b/gamerule/clawdoll/logic.go
@@ -0,0 +1,4 @@
+package clawdoll
+
+type Logic struct {
+}
diff --git a/gamesrv/action/action_machine.go b/gamesrv/action/action_machine.go
new file mode 100644
index 0000000..92d56e6
--- /dev/null
+++ b/gamesrv/action/action_machine.go
@@ -0,0 +1,25 @@
+package action
+
+import (
+ "mongo.games.com/game/protocol/machine"
+ "mongo.games.com/goserver/core/logger"
+ "mongo.games.com/goserver/core/netlib"
+)
+
+var MachineMap = make(map[int]string)
+
+func MSDollMachineList(session *netlib.Session, packetId int, data interface{}) error {
+ logger.Logger.Tracef("TestHandler %v", data)
+ MachineMap = make(map[int]string)
+ if msg, ok := data.(*machine.MSDollMachineList); ok {
+ for i, info := range msg.Data {
+ MachineMap[i+1] = info.VideoAddr
+ logger.Logger.Tracef("MachineMap[%v] = %v", i, info.VideoAddr)
+ }
+ }
+ return nil
+}
+
+func init() {
+ netlib.Register(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), &machine.MSDollMachineList{}, MSDollMachineList)
+}
diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go
index 550d490..6611f02 100644
--- a/gamesrv/base/player.go
+++ b/gamesrv/base/player.go
@@ -114,7 +114,7 @@ type Player struct {
sparams map[int]string //字符参数
IsLocal bool //是否本地player
Items map[int32]int64 //背包数据
- MatchParams []int32 //比赛参数 排名、段位、假snid、假角色
+ MatchParams []int32 //比赛参数 排名、段位、假snid、假角色、假皮肤
MatchRobotGrades []MatchRobotGrade
TestLog []string // 调试日志
RankScore map[int32]int64 // 段位积分
diff --git a/gamesrv/base/srvdatamgrex.go b/gamesrv/base/srvdatamgrex.go
index e6f700b..bde76d8 100644
--- a/gamesrv/base/srvdatamgrex.go
+++ b/gamesrv/base/srvdatamgrex.go
@@ -171,7 +171,7 @@ type DB_FishOutMgrEx struct {
func (this *DB_FishOutMgrEx) InitFishAppear() {
this.FishOutPool = make(map[int32]*AppearFish)
for _, v := range srvdata.PBDB_FishOutMgr.Datas.Arr {
- logger.Logger.Tracef("初始化房间出鱼列表 fishId = %v", v.Id)
+ //logger.Logger.Tracef("初始化房间出鱼列表 fishId = %v", v.Id)
this.FishOutPool[v.Id] = &AppearFish{
FishId: v.Id,
Exp: v.Exp,
diff --git a/gamesrv/base/srvsessmgr.go b/gamesrv/base/srvsessmgr.go
index 335ee56..c401c26 100644
--- a/gamesrv/base/srvsessmgr.go
+++ b/gamesrv/base/srvsessmgr.go
@@ -1,7 +1,9 @@
package base
import (
+ "fmt"
"mongo.games.com/game/common"
+ "mongo.games.com/game/protocol/machine"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"mongo.games.com/goserver/srvlib"
@@ -27,6 +29,10 @@ func (this *SrvSessMgr) OnRegiste(s *netlib.Session) {
} else if srvInfo.GetType() == int32(common.RobotServerType) {
logger.Logger.Warn("(this *SrvSessMgr) OnRegiste (RobotSrv):", s)
NpcServerAgentSingleton.OnConnected()
+ } else if srvInfo.GetType() == 10 {
+ logger.Logger.Warn("(this *SrvSessMgr) OnRegiste (Machine):", s)
+ s.Send(int(machine.DollMachinePacketID_PACKET_SMGameLinkSucceed), &machine.SMGameLinkSucceed{})
+ fmt.Printf("与娃娃机服务器连接成功\n")
}
}
}
diff --git a/gamesrv/clawdoll/action_clawdoll.go b/gamesrv/clawdoll/action_clawdoll.go
new file mode 100644
index 0000000..591aca8
--- /dev/null
+++ b/gamesrv/clawdoll/action_clawdoll.go
@@ -0,0 +1,55 @@
+package clawdoll
+
+import (
+ "mongo.games.com/game/common"
+ "mongo.games.com/game/gamesrv/base"
+ "mongo.games.com/game/protocol/clawdoll"
+ "mongo.games.com/goserver/core/logger"
+ "mongo.games.com/goserver/core/netlib"
+)
+
+type CSPlayerOpPacketFactory struct {
+}
+
+type CSPlayerOpHandler struct {
+}
+
+func (f *CSPlayerOpPacketFactory) CreatePacket() interface{} {
+ pack := &clawdoll.CSCLAWDOLLOp{}
+ return pack
+}
+
+func (h *CSPlayerOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
+ logger.Logger.Trace("CSPlayerOpHandler Process recv ", data)
+ if msg, ok := data.(*clawdoll.CSCLAWDOLLOp); ok {
+ p := base.PlayerMgrSington.GetPlayer(sid)
+ if p == nil {
+ logger.Logger.Warn("CSPlayerOpHandler p == nil")
+ return nil
+ }
+ scene := p.GetScene()
+ if scene == nil {
+ logger.Logger.Warn("CSPlayerOpHandler p.scene == nil")
+ return nil
+ }
+
+ if scene.KeyGameDif != common.GameDifClawdoll {
+ logger.Logger.Error("CSPlayerOpHandler gameId Error ", scene.GameId)
+ return nil
+ }
+ if !scene.HasPlayer(p) {
+ return nil
+ }
+ sp := scene.GetScenePolicy()
+ if sp != nil {
+ sp.OnPlayerOp(scene, p, int(msg.GetOpCode()), msg.GetParams())
+ }
+ return nil
+ }
+ return nil
+}
+
+func init() {
+ common.RegisterHandler(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_CLAWDOLL_PLAYEROP), &CSPlayerOpHandler{})
+ netlib.RegisterFactory(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_CLAWDOLL_PLAYEROP), &CSPlayerOpPacketFactory{})
+}
diff --git a/gamesrv/clawdoll/player_clawdoll.go b/gamesrv/clawdoll/player_clawdoll.go
new file mode 100644
index 0000000..e7559b3
--- /dev/null
+++ b/gamesrv/clawdoll/player_clawdoll.go
@@ -0,0 +1,71 @@
+package clawdoll
+
+import (
+ "mongo.games.com/game/gamesrv/base"
+ "mongo.games.com/goserver/core/logger"
+)
+
+type PlayerEx struct {
+ *base.Player //玩家信息
+
+ gainCoin int64 // 本局赢的金币
+ taxCoin int64 // 本局税收
+ odds int32
+}
+
+func (this *PlayerEx) Clear(baseScore int32) {
+ this.UnmarkFlag(base.PlayerState_WaitNext)
+ this.UnmarkFlag(base.PlayerState_GameBreak)
+ this.MarkFlag(base.PlayerState_Ready)
+
+ this.gainCoin = 0
+ this.taxCoin = 0
+ this.odds = 0
+}
+
+func (this *PlayerEx) CanOp(sceneEx *SceneEx) bool {
+ if !this.IsGameing() {
+ logger.Logger.Trace("(this *PlayerEx) CanOp return false ", this.SnId)
+ return false
+ }
+ return true
+}
+
+func (this *PlayerEx) CanPayCoinByPos() bool {
+
+ return false
+}
+
+// 游戏新一局 设置数据
+func (this *PlayerEx) ReStartGame() {
+ this.ReDataStartGame()
+ this.gainCoin = 0
+ this.taxCoin = 0
+ this.odds = 0
+}
+
+// 初始化
+func (this *PlayerEx) InitData(baseScore int32) {
+
+}
+
+// 重置下注数据
+func (this *PlayerEx) ResetData() {
+
+}
+
+// 游戏新一局 设置数据
+func (this *PlayerEx) ReDataStartGame() {
+
+}
+
+func (this *PlayerEx) CanPlayerOpInState(sceneState int) bool {
+
+ return false
+}
+
+// 能否退出游戏
+func (this *PlayerEx) CanLeaveScene(sceneState int) bool {
+
+ return true
+}
diff --git a/gamesrv/clawdoll/scene_clawdoll.go b/gamesrv/clawdoll/scene_clawdoll.go
new file mode 100644
index 0000000..fd6a518
--- /dev/null
+++ b/gamesrv/clawdoll/scene_clawdoll.go
@@ -0,0 +1,205 @@
+package clawdoll
+
+import (
+ "mongo.games.com/game/protocol/clawdoll"
+ "mongo.games.com/goserver/core/logger"
+
+ "mongo.games.com/game/common"
+ rule "mongo.games.com/game/gamerule/clawdoll"
+ "mongo.games.com/game/gamesrv/base"
+ "mongo.games.com/game/proto"
+)
+
+type PlayerData struct {
+ SnId int32
+ Head int32 //头像框
+ VIP int32 //VIP帐号 等级
+ Name string //名字
+ Sex int32 //性别
+ IsRob bool
+
+ Coin int64
+ gainCoin int64 //本局赢的金币
+ taxCoin int64 //本局税收
+ isBilled bool //是否结算
+ CurIsWin int64 //当局输赢 负数:输 正数:赢
+
+ InviterId int32 //邀请人Id
+ BeUnderAgentCode string //隶属经销商(推广人)
+ IsPlayerFirst bool
+
+ Platform string //平台
+ Channel string //渠道信息
+ PackageID string //推广包标识 对应客户端的packagetag
+ flag int
+}
+
+type SceneEx struct {
+ *base.Scene // 场景
+ logic *rule.Logic //
+ players map[int32]*PlayerEx // 玩家信息
+ PlayerBackup map[int32]*PlayerData // 本局离场玩家数据备份
+ seats []*PlayerEx // 本局游戏中的玩家状态数据
+
+ RoundId int // 局数,第几局
+ robotNum int // 参与游戏的机器人数量
+ logid string
+}
+
+// 游戏是否能开始
+func (this *SceneEx) CanStart() bool {
+ //人数>=1自动开始
+ if len(this.players) >= 0 && (this.GetRealPlayerNum() >= 0 || this.IsPreCreateScene()) {
+ return true
+ }
+ return false
+}
+
+// 从房间删除玩家
+func (this *SceneEx) delPlayer(p *base.Player) {
+ if p, exist := this.players[p.SnId]; exist {
+ this.seats[p.GetPos()] = nil
+ delete(this.players, p.SnId)
+ }
+}
+
+// 广播玩家离开
+func (this *SceneEx) BroadcastPlayerLeave(p *base.Player, reason int) {
+ scLeavePack := &clawdoll.SCCLAWDOLLPlayerLeave{
+ Pos: proto.Int(p.GetPos()),
+ }
+ proto.SetDefaults(scLeavePack)
+
+ this.Broadcast(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_PlayerLeave), scLeavePack, p.GetSid())
+}
+
+// 玩家离开事件
+func (this *SceneEx) OnPlayerLeave(p *base.Player, reason int) {
+ this.delPlayer(p)
+ this.BroadcastPlayerLeave(p, reason)
+}
+func (this *SceneEx) SceneDestroy(force bool) {
+ //销毁房间
+ this.Scene.Destroy(force)
+}
+
+func (e *SceneEx) playerOpPack(snId int32, opcode int, opRetCode clawdoll.OpResultCode, params []int64) *clawdoll.SCCLAWDOLLOp {
+ pack := &clawdoll.SCCLAWDOLLOp{
+ SnId: proto.Int32(snId),
+ OpCode: proto.Int32(int32(opcode)),
+ Params: params,
+ OpRetCode: clawdoll.OpResultCode_OPRC_Success,
+ }
+
+ proto.SetDefaults(pack)
+ return pack
+}
+
+// OnPlayerSCOp 发送玩家操作情况
+func (e *SceneEx) OnPlayerSCOp(p *base.Player, opcode int, opRetCode clawdoll.OpResultCode, params []int64) {
+ pack := e.playerOpPack(p.SnId, opcode, opRetCode, params)
+ p.SendToClient(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_PLAYEROP), pack)
+ logger.Logger.Tracef("OnPlayerSCOp %s", pack)
+}
+
+// 房间信息打包
+func (this *SceneEx) ClawdollCreateRoomInfoPacket(s *base.Scene, p *base.Player) interface{} {
+ pack := &clawdoll.SCCLAWDOLLRoomInfo{
+ RoomId: proto.Int(s.GetSceneId()),
+ GameId: proto.Int(s.GetGameId()),
+ RoomMode: proto.Int(s.GetSceneMode()),
+ Params: common.CopySliceInt64ToInt32(s.Params),
+ State: proto.Int(s.GetSceneState().GetState()),
+ TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)),
+ TotalPlayer: proto.Int(len(this.players)),
+ RoundId: proto.Int(this.RoundId),
+ ParamsEx: nil,
+ GameFreeId: 0,
+ BaseScore: proto.Int32(this.GetBaseScore()),
+ }
+
+ // 玩家信息
+ for _, playerEx := range this.players {
+
+ if p.SnId == playerEx.SnId {
+ pd := &clawdoll.CLAWDOLLPlayerData{
+ SnId: proto.Int32(playerEx.SnId),
+ Name: proto.String(playerEx.Name),
+ Head: proto.Int32(playerEx.Head),
+ Sex: proto.Int32(playerEx.Sex),
+ Coin: proto.Int64(playerEx.Coin),
+ Flag: proto.Int(playerEx.GetFlag()),
+ HeadOutLine: proto.Int32(playerEx.HeadOutLine),
+ VIP: proto.Int32(playerEx.VIP),
+
+ WinCoin: proto.Int64(playerEx.gainCoin),
+ }
+
+ pack.Players = append(pack.Players, pd)
+ }
+ }
+
+ proto.SetDefaults(pack)
+ if p != nil {
+ p.SyncFlag()
+ }
+
+ return pack
+}
+
+func NewClawdollSceneData(s *base.Scene) *SceneEx {
+ sceneEx := &SceneEx{
+ Scene: s,
+ logic: new(rule.Logic),
+ players: make(map[int32]*PlayerEx),
+ seats: make([]*PlayerEx, s.GetPlayerNum()),
+ PlayerBackup: make(map[int32]*PlayerData),
+ }
+
+ return sceneEx
+}
+
+func (this *SceneEx) init() bool {
+ this.Clear()
+ return true
+}
+
+// 检查上分是否合法
+func (this *SceneEx) CheckPayOp(betVal int64, takeMul int64) bool { //游戏底分
+ return true
+}
+
+func (this *SceneEx) Clear() {
+ this.robotNum = 0
+ this.PlayerBackup = make(map[int32]*PlayerData)
+ this.RoundId = 0
+
+ for i := 0; i < this.GetPlayerNum(); i++ {
+ if this.seats[i] != nil {
+ this.seats[i].Clear(this.GetBaseScore())
+ }
+ }
+}
+
+func (this *SceneEx) BackupPlayer(p *PlayerEx, isBilled bool) {
+ this.PlayerBackup[p.SnId] = &PlayerData{
+ SnId: p.SnId,
+ gainCoin: p.gainCoin,
+ taxCoin: p.taxCoin,
+ isBilled: isBilled,
+ IsRob: p.IsRob,
+ Coin: p.Coin,
+ Head: p.Head,
+ flag: p.GetFlag(),
+ Platform: p.Platform,
+ Channel: p.Channel,
+ PackageID: p.PackageID,
+ CurIsWin: p.CurIsWin,
+ Name: p.Name,
+ Sex: p.Sex,
+ VIP: p.VIP,
+ InviterId: p.InviterId,
+ IsPlayerFirst: this.IsPlayerFirst(p.Player),
+ BeUnderAgentCode: p.BeUnderAgentCode,
+ }
+}
diff --git a/gamesrv/clawdoll/scenepolicy_clawdoll.go b/gamesrv/clawdoll/scenepolicy_clawdoll.go
new file mode 100644
index 0000000..46bc199
--- /dev/null
+++ b/gamesrv/clawdoll/scenepolicy_clawdoll.go
@@ -0,0 +1,576 @@
+package clawdoll
+
+import (
+ "mongo.games.com/game/protocol/clawdoll"
+ "time"
+
+ "mongo.games.com/goserver/core"
+ "mongo.games.com/goserver/core/logger"
+
+ "mongo.games.com/game/common"
+ rule "mongo.games.com/game/gamerule/clawdoll"
+ "mongo.games.com/game/gamesrv/base"
+ "mongo.games.com/game/proto"
+)
+
+var PolicyClawdollSingleton = &PolicyClawdoll{}
+
+type PolicyClawdoll struct {
+ base.BaseScenePolicy
+ states [rule.ClawDollSceneStateMax]base.SceneState
+}
+
+func (this *PolicyClawdoll) CreateSceneExData(s *base.Scene) interface{} {
+ sceneEx := NewClawdollSceneData(s)
+ if sceneEx != nil {
+ if sceneEx.init() {
+ s.ExtraData = sceneEx
+ }
+ }
+ return sceneEx
+}
+
+func (this *PolicyClawdoll) CreatePlayerExData(s *base.Scene, p *base.Player) interface{} {
+ playerEx := &PlayerEx{Player: p}
+ if playerEx != nil {
+ p.ExtraData = playerEx
+ }
+ return playerEx
+}
+
+func (this *PolicyClawdoll) OnStart(s *base.Scene) {
+ logger.Logger.Trace("(this *PolicyClawdoll) OnStart, sceneId=", s.GetSceneId())
+
+ sceneEx := NewClawdollSceneData(s)
+ if sceneEx != nil {
+ if sceneEx.init() {
+ s.ExtraData = sceneEx
+ s.ChangeSceneState(rule.ClawDollSceneStateWait)
+ }
+ }
+}
+
+func (this *PolicyClawdoll) OnStop(s *base.Scene) {
+ logger.Logger.Trace("(this *PolicyClawdoll) OnStop , sceneId=", s.GetSceneId())
+}
+
+func (this *PolicyClawdoll) OnTick(s *base.Scene) {
+ if s == nil {
+ return
+ }
+ if s.SceneState != nil {
+ s.SceneState.OnTick(s)
+ }
+}
+
+func (this *PolicyClawdoll) OnPlayerEnter(s *base.Scene, p *base.Player) {
+ if s == nil || p == nil {
+ return
+ }
+
+ logger.Logger.Trace("(this *PolicyClawdoll) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.SnId)
+
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ pos := -1
+ for i := 0; i < sceneEx.GetPlayerNum(); i++ {
+ if sceneEx.seats[i] == nil {
+ pos = i
+ break
+ }
+ }
+ if pos != -1 {
+ playerEx := &PlayerEx{Player: p}
+ sceneEx.seats[pos] = playerEx
+ sceneEx.players[p.SnId] = playerEx
+
+ baseScore := sceneEx.GetBaseScore()
+
+ p.Pos = pos
+ p.ExtraData = playerEx
+ playerEx.Clear(baseScore)
+
+ if sceneEx.Gaming {
+ p.MarkFlag(base.PlayerState_WaitNext)
+ p.UnmarkFlag(base.PlayerState_Ready)
+ }
+
+ //给自己发送房间信息
+ this.SendRoomInfo(s, p, sceneEx)
+ s.FirePlayerEvent(p, base.PlayerEventEnter, nil)
+ }
+ }
+}
+
+func (this *PolicyClawdoll) OnPlayerLeave(s *base.Scene, p *base.Player, reason int) {
+ logger.Logger.Trace("(this *PolicyClawdoll) OnPlayerLeave, sceneId=", s.GetSceneId(), " player=", p.SnId)
+ if s == nil || p == nil {
+ return
+ }
+ if !this.CanChangeCoinScene(s, p) {
+ return
+ }
+
+ sceneEx, ok := s.ExtraData.(*SceneEx)
+ if !ok {
+ return
+ }
+ playerEx, ok := p.ExtraData.(*PlayerEx)
+ if !ok {
+ return
+ }
+
+ isBilled := false
+
+ // 游戏已开始,玩家离开,备份玩家数据
+ if sceneEx.Gaming {
+ sceneEx.BackupPlayer(playerEx, isBilled)
+ }
+
+ // 清理玩家数据
+ sceneEx.OnPlayerLeave(p, reason)
+ s.FirePlayerEvent(p, base.PlayerEventLeave, nil)
+}
+
+func (this *PolicyClawdoll) OnPlayerDropLine(s *base.Scene, p *base.Player) {
+ if s == nil || p == nil {
+ return
+ }
+ logger.Logger.Trace("(this *PolicyClawdoll) OnPlayerDropLine, sceneId=", s.GetSceneId(), " player=", p.SnId)
+ s.FirePlayerEvent(p, base.PlayerEventDropLine, nil)
+}
+
+func (this *PolicyClawdoll) OnPlayerRehold(s *base.Scene, p *base.Player) {
+ if s == nil || p == nil {
+ return
+ }
+ logger.Logger.Trace("(this *PolicyClawdoll) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ if _, ok := p.ExtraData.(*PlayerEx); ok {
+ //发送房间信息给自己
+ if p.IsGameing() {
+ p.MarkFlag(base.PlayerState_Ready)
+ }
+ this.SendRoomInfo(s, p, sceneEx)
+ s.FirePlayerEvent(p, base.PlayerEventRehold, nil)
+ }
+ }
+}
+
+func (this *PolicyClawdoll) OnPlayerReturn(s *base.Scene, p *base.Player) {
+ if s == nil || p == nil {
+ return
+ }
+ logger.Logger.Trace("(this *PolicyClawdoll) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ if _, ok := p.ExtraData.(*PlayerEx); ok {
+ //发送房间信息给自己
+ if p.IsGameing() {
+ p.MarkFlag(base.PlayerState_Ready)
+ }
+ this.SendRoomInfo(s, p, sceneEx)
+ s.FirePlayerEvent(p, base.PlayerEventReturn, nil)
+ }
+ }
+}
+
+func (this *PolicyClawdoll) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
+ if s == nil || p == nil {
+ return false
+ }
+ logger.Logger.Trace("(this *PolicyClawdoll) OnPlayerOp, sceneId=", s.GetSceneId(), " player=", p.SnId, " opcode=", opcode, " params=", params)
+ if s.SceneState != nil {
+ p.LastOPTimer = time.Now()
+ p.Trusteeship = 0
+ return s.SceneState.OnPlayerOp(s, p, opcode, params)
+ }
+ return true
+}
+
+func (this *PolicyClawdoll) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
+ if s == nil || p == nil {
+ return
+ }
+ logger.Logger.Trace("(this *PolicyClawdoll) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " eventcode=", evtcode, " params=", params)
+ if s.SceneState != nil {
+ s.SceneState.OnPlayerEvent(s, p, evtcode, params)
+ }
+}
+
+func (this *PolicyClawdoll) IsCompleted(s *base.Scene) bool {
+ if s == nil {
+ return false
+ }
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ return !sceneEx.Gaming
+ }
+ return false
+}
+
+func (this *PolicyClawdoll) IsCanForceStart(s *base.Scene) bool {
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ return len(s.Players) >= 2 && !sceneEx.Gaming
+ }
+ return false
+}
+
+func (this *PolicyClawdoll) ForceStart(s *base.Scene) {
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ if sceneEx.SceneState.GetState() == rule.ClawDollSceneStateWait {
+ s.ChangeSceneState(rule.ClawDollSceneStateStart)
+ }
+ }
+}
+
+// 当前状态能否退出游戏
+func (this *PolicyClawdoll) CanChangeCoinScene(s *base.Scene, p *base.Player) bool {
+ if s == nil || p == nil {
+ return false
+ }
+ if s.GetSceneState() != nil {
+ return s.GetSceneState().CanChangeCoinScene(s, p)
+ }
+
+ return true
+}
+
+func (this *PolicyClawdoll) SendRoomInfo(s *base.Scene, p *base.Player, sceneEx *SceneEx) {
+ pack := sceneEx.ClawdollCreateRoomInfoPacket(s, p)
+ p.SendToClient(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_ROOMINFO), pack)
+}
+
+// 广播房间状态
+func ClawdollBroadcastRoomState(s *base.Scene, params ...float32) {
+ pack := &clawdoll.SCCLAWDOLLRoomState{
+ State: proto.Int(s.SceneState.GetState()),
+ Params: params,
+ }
+ s.Broadcast(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_ROOMSTATE), pack, 0)
+}
+
+//=====================================
+// BaseState 状态基类
+//=====================================
+
+type BaseState struct {
+}
+
+func (this *BaseState) GetTimeout(s *base.Scene) int {
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ return int(time.Now().Sub(sceneEx.StateStartTime) / time.Second)
+ }
+ return 0
+}
+
+func (this *BaseState) CanChangeTo(s base.SceneState) bool {
+ return true
+}
+
+func (this *BaseState) CanChangeCoinScene(s *base.Scene, p *base.Player) bool {
+
+ //playerEx, ok := p.ExtraData.(*PlayerEx)
+ //if !ok {
+ // return false
+ //}
+ //
+ //if !playerEx.CanLeaveScene(s.GetSceneState().GetState()) {
+ // return false
+ //}
+
+ return true
+}
+
+func (this *BaseState) OnEnter(s *base.Scene) {
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ sceneEx.StateStartTime = time.Now()
+ }
+}
+
+func (this *BaseState) OnLeave(s *base.Scene) {}
+
+func (this *BaseState) OnTick(s *base.Scene) {
+}
+
+func (this *BaseState) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
+
+ return false
+}
+
+func (this *BaseState) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
+}
+
+//=====================================
+// StateWait 等待中
+//=====================================
+
+type StateWait struct {
+ BaseState
+}
+
+func (this *StateWait) GetState() int {
+ return rule.ClawDollSceneStateWait
+}
+
+func (this *StateWait) CanChangeTo(s base.SceneState) bool {
+ if s.GetState() == rule.ClawDollSceneStateStart {
+ return true
+ }
+ return false
+}
+
+func (this *StateWait) GetTimeout(s *base.Scene) int {
+
+ return this.BaseState.GetTimeout(s)
+}
+
+func (this *StateWait) OnEnter(s *base.Scene) {
+ this.BaseState.OnEnter(s)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ if s.Gaming {
+ s.NotifySceneRoundPause()
+ }
+ s.Gaming = false
+
+ ClawdollBroadcastRoomState(s, float32(0), float32(0))
+
+ if sceneEx.CanStart() {
+ s.ChangeSceneState(rule.ClawDollSceneStateStart)
+ }
+ }
+}
+
+// 玩家事件
+func (this *StateWait) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
+ logger.Logger.Trace("(this *StateWait) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " evtcode=", evtcode)
+ this.BaseState.OnPlayerEvent(s, p, evtcode, params)
+ if _, ok := s.ExtraData.(*SceneEx); ok {
+ switch evtcode {
+ case base.PlayerEventLeave:
+ case base.PlayerEventEnter:
+ if !p.IsReady() {
+ p.MarkFlag(base.PlayerState_Ready)
+ p.SyncFlag()
+ }
+ }
+ }
+}
+
+func (this *StateWait) OnTick(s *base.Scene) {
+ this.BaseState.OnTick(s)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ if s.CheckNeedDestroy() {
+ sceneEx.SceneDestroy(true)
+ return
+ }
+ if time.Now().Sub(sceneEx.StateStartTime) > rule.ClawDollSceneWaitTimeout {
+ //切换到准备开局状态
+ if sceneEx.CanStart() {
+ s.ChangeSceneState(rule.ClawDollSceneStateStart)
+ }
+ }
+ }
+}
+
+//=====================================
+// StateStart 开始倒计时
+//=====================================
+
+type StateStart struct {
+ BaseState
+}
+
+func (this *StateStart) GetState() int {
+ return rule.ClawDollSceneStateStart
+}
+
+func (this *StateStart) CanChangeTo(s base.SceneState) bool {
+ switch s.GetState() {
+ case rule.ClawDollSceneStatePlayGame:
+ return true
+ }
+ return false
+}
+
+func (this *StateStart) OnEnter(s *base.Scene) {
+ this.BaseState.OnEnter(s)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ ClawdollBroadcastRoomState(s, float32(0), float32(0))
+ s.Gaming = false
+ sceneEx.GameNowTime = time.Now()
+ sceneEx.NumOfGames++
+
+ }
+}
+
+func (this *StateStart) OnTick(s *base.Scene) {
+ this.BaseState.OnTick(s)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ if time.Now().Sub(sceneEx.StateStartTime) > rule.ClawDollSceneStartTimeout {
+ //切换到等待操作状态
+ if sceneEx.CanStart() {
+ s.ChangeSceneState(rule.ClawDollSceneStatePlayGame)
+ } else {
+ s.ChangeSceneState(rule.ClawDollSceneStateWait)
+ }
+ }
+ }
+}
+
+func (this *StateStart) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
+ if this.BaseState.OnPlayerOp(s, p, opcode, params) {
+ return true
+ }
+
+ return false
+}
+
+func (this *StateStart) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
+ logger.Logger.Trace("(this *StateStart) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " evtcode=", evtcode)
+ this.BaseState.OnPlayerEvent(s, p, evtcode, params)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ switch evtcode {
+ case base.PlayerEventLeave:
+ if !sceneEx.CanStart() {
+ s.ChangeSceneState(rule.ClawDollSceneStateWait)
+ }
+ case base.PlayerEventEnter:
+ if !p.IsReady() {
+ p.MarkFlag(base.PlayerState_Ready)
+ p.SyncFlag()
+ }
+ }
+ }
+}
+
+// =====================================
+// PlayGame 游戏中
+// =====================================
+type PlayGame struct {
+ BaseState
+}
+
+func (this *PlayGame) GetState() int {
+ return rule.ClawDollSceneStatePlayGame
+}
+
+func (this *PlayGame) CanChangeTo(s base.SceneState) bool {
+ switch s.GetState() {
+ case rule.ClawDollSceneStateBilled:
+ return true
+ }
+ return false
+}
+
+func (this *PlayGame) OnEnter(s *base.Scene) {
+ logger.Logger.Trace("(this *PlayGame) OnEnter, sceneid=", s.GetSceneId())
+
+ this.BaseState.OnEnter(s)
+
+ s.Gaming = true
+
+ ClawdollBroadcastRoomState(s, float32(0), float32(0))
+
+}
+
+func (this *PlayGame) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
+
+ logger.Logger.Trace("StatePlayGame OnPlayerOp-----SnId:", p.SnId, " opcode: ", opcode, " params:", params)
+
+ if this.BaseState.OnPlayerOp(s, p, opcode, params) {
+ return true
+ }
+
+ return false
+}
+
+func (this *PlayGame) OnTick(s *base.Scene) {
+ this.BaseState.OnTick(s)
+}
+
+//=====================================
+// StateBilled 结算
+//=====================================
+
+type StateBilled struct {
+ BaseState
+}
+
+func (this *StateBilled) GetState() int {
+ return rule.ClawDollSceneStateBilled
+}
+
+func (this *StateBilled) CanChangeTo(s base.SceneState) bool {
+ switch s.GetState() {
+ case rule.ClawDollSceneStateStart:
+ return true
+ }
+ return false
+}
+
+func (this *StateBilled) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
+ return false
+}
+
+func (this *StateBilled) OnEnter(s *base.Scene) {
+ logger.Logger.Trace("(this *StateBilled) OnEnter, sceneid=", s.GetSceneId())
+ this.BaseState.OnEnter(s)
+}
+
+func (this *StateBilled) OnLeave(s *base.Scene) {
+ logger.Logger.Trace("(this *StateBilled) OnLeave, sceneid=", s.GetSceneId())
+ this.BaseState.OnLeave(s)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+
+ sceneEx.PlayerBackup = make(map[int32]*PlayerData)
+
+ if s.CheckNeedDestroy() {
+ sceneEx.SceneDestroy(true)
+ }
+ }
+}
+
+func (this *StateBilled) OnTick(s *base.Scene) {
+ this.BaseState.OnTick(s)
+ if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
+ if time.Now().Sub(sceneEx.StateStartTime) > rule.ClawDollSceneBilledTimeout {
+ if sceneEx.CanStart() {
+ s.ChangeSceneState(rule.ClawDollSceneStateStart)
+ } else {
+ s.ChangeSceneState(rule.ClawDollSceneStateWait)
+ }
+ return
+ }
+ }
+}
+
+// // //////////////////////////////////////////////////////////////////////////////
+func (this *PolicyClawdoll) RegisteSceneState(state base.SceneState) {
+ if state == nil {
+ return
+ }
+ stateid := state.GetState()
+
+ if stateid < 0 || stateid >= rule.ClawDollSceneStateMax {
+ return
+ }
+ this.states[stateid] = state
+}
+
+func (this *PolicyClawdoll) GetSceneState(s *base.Scene, stateid int) base.SceneState {
+ if stateid >= 0 && stateid < rule.ClawDollSceneStateMax {
+ return this.states[stateid]
+ }
+ return nil
+}
+
+func init() {
+ PolicyClawdollSingleton.RegisteSceneState(&StateWait{})
+ PolicyClawdollSingleton.RegisteSceneState(&StateStart{})
+ PolicyClawdollSingleton.RegisteSceneState(&PlayGame{})
+ PolicyClawdollSingleton.RegisteSceneState(&StateBilled{})
+
+ core.RegisteHook(core.HOOK_BEFORE_START, func() error {
+ base.RegisteScenePolicy(common.GameId_Clawdoll, 0, PolicyClawdollSingleton)
+
+ return nil
+ })
+}
diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go
index a5af2c5..7bfc44e 100644
--- a/gamesrv/tienlen/scenedata_tienlen.go
+++ b/gamesrv/tienlen/scenedata_tienlen.go
@@ -569,7 +569,7 @@ func (this *TienLenSceneData) SendHandCard_Match() {
}
grades = append(grades, gi)
}
- realWin := 0 //-1最差 0正常 1最好
+ realWin := 1 //-1最差 0正常 1最好
switch realWin {
case -1:
sort.Slice(grades, func(i, j int) bool {
diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go
index bdeb1c4..aa163e9 100644
--- a/gamesrv/tienlen/scenepolicy_tienlen.go
+++ b/gamesrv/tienlen/scenepolicy_tienlen.go
@@ -118,6 +118,11 @@ func (this *ScenePolicyTienLen) OnPlayerEnter(s *base.Scene, p *base.Player) {
playerData.CopyRoleId = p.MatchParams[3]
}
}
+ if len(p.MatchParams) > 4 {
+ if p.MatchParams[4] != 0 {
+ playerData.SkinId = p.MatchParams[4]
+ }
+ }
}
pack := &tienlen.SCTienLenPlayerEnter{
Data: playerData,
@@ -475,6 +480,11 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen
pd.CopyRoleId = p.MatchParams[3]
}
}
+ if len(p.MatchParams) > 4 {
+ if p.MatchParams[4] != 0 {
+ pd.SkinId = p.MatchParams[4]
+ }
+ }
}
pack.IsOutRecord = playerEx.CanUseRecordItem()
pack.ItemRecExpireTime = playerEx.ItemRecExpireTime
@@ -498,6 +508,11 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen
pd1.CopyRoleId = nowPlayer.MatchParams[3]
}
}
+ if len(nowPlayer.MatchParams) > 4 {
+ if nowPlayer.MatchParams[4] != 0 {
+ pd1.SkinId = nowPlayer.MatchParams[4]
+ }
+ }
}
//手牌
for j := int32(0); j < rule.HandCardNum; j++ {
diff --git a/gatesrv/clientlog.go b/gatesrv/clientlog.go
index dfcc742..6716387 100644
--- a/gatesrv/clientlog.go
+++ b/gatesrv/clientlog.go
@@ -28,6 +28,7 @@ func CSClientLog(s *netlib.Session, packetid int, pack interface{}) error {
var platform string
var snid int32
+ var createTs int64
var p *model.PlayerData
if s != nil {
var pdi = s.GetAttribute(common.ClientSessionAttribute_PlayerData)
@@ -42,6 +43,7 @@ func CSClientLog(s *netlib.Session, packetid int, pack interface{}) error {
if p != nil {
platform = p.Platform
snid = p.SnId
+ createTs = p.CreateTime.Unix()
}
//LogChannelSingleton.WriteLog(&model.ClientLog{
@@ -56,6 +58,7 @@ func CSClientLog(s *netlib.Session, packetid int, pack interface{}) error {
Platform: platform,
Snid: snid,
Ts: time.Now().Unix(),
+ CreateTs: createTs,
})
return nil
diff --git a/machine/action/action_server.go b/machine/action/action_server.go
new file mode 100644
index 0000000..36963fe
--- /dev/null
+++ b/machine/action/action_server.go
@@ -0,0 +1,105 @@
+package action
+
+import (
+ "fmt"
+ "mongo.games.com/game/machine/machinedoll"
+ "mongo.games.com/game/protocol/machine"
+ "mongo.games.com/goserver/core/logger"
+ "mongo.games.com/goserver/core/netlib"
+ "time"
+)
+
+// 移动
+func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data interface{}) error {
+ msg, ok := data.(*machine.SMDollMachineoPerate)
+ if !ok {
+ return nil
+ }
+ conn := machinedoll.ConnMap[int(msg.Id)]
+ if conn == nil {
+ return nil
+ }
+ if msg.Perate == 1 {
+ //向前移动
+ machinedoll.Backward(conn)
+ time.Sleep(200 * time.Millisecond)
+ machinedoll.BackwardStop(conn)
+ } else if msg.Perate == 2 {
+ //向后移动
+ machinedoll.Forward(conn)
+ time.Sleep(200 * time.Millisecond)
+ machinedoll.ForwardStop(conn)
+ } else if msg.Perate == 3 {
+ //向左移动
+ machinedoll.Left(conn)
+ time.Sleep(200 * time.Millisecond)
+ machinedoll.LeftStop(conn)
+ } else if msg.Perate == 4 {
+ //向右移动
+ machinedoll.Right(conn)
+ time.Sleep(200 * time.Millisecond)
+ machinedoll.RightStop(conn)
+ } else if msg.Perate == 5 {
+ //投币
+ machinedoll.Coin(conn)
+ machinedoll.Backward(conn)
+ time.Sleep(200 * time.Millisecond)
+ machinedoll.BackwardStop(conn)
+ }
+ return nil
+}
+
+// 下抓
+func SMDollMachineGrabHandler(session *netlib.Session, packetId int, data interface{}) error {
+ msg, ok := data.(*machine.SMDollMachineGrab)
+ if !ok {
+ return nil
+ }
+ conn := machinedoll.ConnMap[int(msg.Id)]
+ if conn == nil {
+ return nil
+ }
+ typeId := msg.TypeId
+ if typeId == 1 {
+ //弱抓
+ machinedoll.WeakGrab(conn)
+ } else if typeId == 2 {
+ //强力抓
+ machinedoll.Grab(conn)
+ } else if typeId == 3 {
+ //必中抓
+ machinedoll.SetPower(conn)
+ time.Sleep(200 * time.Millisecond)
+ machinedoll.Grab(conn)
+ }
+ //返回消息
+ session.Send(int(machine.DollMachinePacketID_PACKET_SMDollMachineGrab), &machine.MSDollMachineGrab{
+ Snid: msg.Snid,
+ Id: msg.GetId(),
+ Result: 1,
+ })
+ return nil
+}
+
+// 与游戏服务器连接成功,向游戏服务器推送所有娃娃机连接
+func SMGameLinkSucceedHandler(session *netlib.Session, packetId int, data interface{}) error {
+ logger.Logger.Trace("与游戏服务器连接成功!!\n")
+ fmt.Printf("与游戏服务器连接成功!!\n")
+ //开始向游戏服务器发送娃娃机连接信息
+ msg := &machine.MSDollMachineList{}
+ for i, _ := range machinedoll.ConnMap {
+ info := &machine.DollMachine{}
+ info.Id = int32(i)
+ info.VideoAddr = "www.baidu.com"
+ msg.Data = append(msg.Data, info)
+ }
+ session.Send(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), msg)
+ fmt.Printf("开始向游戏服务器发送娃娃机连接信息!\n", msg)
+ return nil
+}
+func init() {
+ netlib.Register(int(machine.DollMachinePacketID_PACKET_SMDollMachinePerate), &machine.SMDollMachineoPerate{}, SMDollMachinePerateHandler)
+ netlib.Register(int(machine.DollMachinePacketID_PACKET_SMDollMachineGrab), &machine.SMDollMachineGrab{}, SMDollMachineGrabHandler)
+ //链接成功 返回消息
+ netlib.Register(int(machine.DollMachinePacketID_PACKET_SMGameLinkSucceed), &machine.SMGameLinkSucceed{}, SMGameLinkSucceedHandler)
+}
diff --git a/machine/config.json b/machine/config.json
new file mode 100644
index 0000000..533c38f
--- /dev/null
+++ b/machine/config.json
@@ -0,0 +1,78 @@
+{
+ "netlib": {
+ "SrvInfo": {
+ "Name": "MachineServer",
+ "Type": 10,
+ "Id": 1001,
+ "AreaID": 1,
+ "Banner": [
+ "=================",
+ "machine server",
+ "================="
+ ]
+ },
+ "IoServices": [
+ {
+ "Id": 1001,
+ "Type": 10,
+ "AreaId": 1,
+ "Name": "Gamesrv",
+ "Ip": "127.0.0.1",
+ "Port": 7001,
+ "Protocol":"tcp",
+ "Path":"/",
+ "MaxDone": 20000,
+ "MaxPend": 20000,
+ "MaxPacket": 65535,
+ "MaxConn": 1,
+ "RcvBuff": 819200,
+ "SndBuff": 819200,
+ "WriteTimeout": 300,
+ "ReadTimeout": 300,
+ "IsClient": true,
+ "IsAutoReconn": true,
+ "IsInnerLink": true,
+ "NoDelay": true,
+ "SupportFragment": true,
+ "AuthKey": "1234567890",
+ "FilterChain": ["session-filter-auth"],
+ "HandlerChain": ["session-srv-registe","handler-game-close"]
+ }
+ ]
+ },
+ "module": {
+ "Options": {
+ "QueueBacklog": 1024,
+ "MaxDone": 1024,
+ "Interval": 100
+ }
+ },
+ "executor": {
+ "Options": {
+ "QueueBacklog": 1024,
+ "MaxDone": 1024,
+ "Interval": 0
+ },
+ "Worker": {
+ "WorkerCnt": 8,
+ "Options": {
+ "QueueBacklog": 1024,
+ "MaxDone": 1024,
+ "Interval": 0
+ }
+ }
+ },
+ "timer": {
+ "Options": {
+ "QueueBacklog": 1024,
+ "MaxDone": 1024,
+ "Interval": 100
+ }
+ },
+ "cmdline": {
+ "SupportCmdLine": true
+ },
+ "signal": {
+ "SupportSignal": true
+ }
+}
\ No newline at end of file
diff --git a/machine/logger.xml b/machine/logger.xml
new file mode 100644
index 0000000..e859e4e
--- /dev/null
+++ b/machine/logger.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/machine/machineConfig.json b/machine/machineConfig.json
new file mode 100644
index 0000000..bc26b98
--- /dev/null
+++ b/machine/machineConfig.json
@@ -0,0 +1,3 @@
+[
+ "192.168.31.221:8800"
+]
\ No newline at end of file
diff --git a/machine/machinedoll/command.go b/machine/machinedoll/command.go
new file mode 100644
index 0000000..ea8b82b
--- /dev/null
+++ b/machine/machinedoll/command.go
@@ -0,0 +1,381 @@
+package machinedoll
+
+import (
+ "fmt"
+ "net"
+)
+
+// 向前aa 05 01 50 01 01 54 dd
+func Forward(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x01, 0x01}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 向前停止aa 05 01 50 01 00 55 dd
+func ForwardStop(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x01, 0x00}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 向后
+// aa 05 01 50 02 01 57 dd
+func Backward(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x02, 0x01}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 向后停止aa 05 01 50 02 00 56 dd
+func BackwardStop(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x02, 0x00}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 向左aa 05 01 50 03 01 56 dd
+func Left(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x03, 0x01}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 向左停止aa 05 01 50 03 00 57 dd
+func LeftStop(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x03, 0x00}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 向右
+func Right(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x04, 0x01}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 向右停止aa 05 01 50 04 00 50 dd
+func RightStop(conn net.Conn) {
+ instruction := []byte{0xaa, 0x05, 0x01, 0x50, 0x04, 0x00}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 强抓下抓
+func Grab(conn net.Conn) {
+ instruction := []byte{0xAA, 0x05, 0x01, 0x50, 0x06, 0x01}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ _, err = conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+}
+
+// 弱抓aa 05 01 50 06 00 52 dd
+func WeakGrab(conn net.Conn) {
+ instruction := []byte{0xAA, 0x05, 0x01, 0x50, 0x06, 0x00}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 投币
+func Coin(conn net.Conn) {
+ moveCommand := []byte{0xaa, 0x08, 0x01, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00}
+ moveCommand = calculateChecksum(moveCommand)
+ // 发送指令到服务端
+ _, err := conn.Write(moveCommand)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+ if buf[4] == 1 {
+ fmt.Println("上分成功!!!!n = ", n)
+ }
+ if buf[4] == 0 {
+ fmt.Println("上分失败!!!")
+ }
+}
+
+// 剩余局数清零
+func ClearRemainingGames(conn net.Conn) {
+ instruction := []byte{0xAA, 0x03, 0x01, 0x32}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+ fmt.Println("n", n)
+}
+
+// 计算校验码
+func calculateChecksum(data []byte) []byte {
+ var value = byte(0)
+ for i, datum := range data {
+ if i > 0 {
+ value ^= datum
+ }
+ }
+ fmt.Println("校验码 value = ", value)
+ data = append(data, value, 0xdd)
+ return data
+
+}
+
+// 开启音乐
+func OpenMusic(conn net.Conn) {
+ data[43] = 0x01
+ instruction := []byte{0xAA, 0x33, 0x01, 0x06}
+ instruction = append(instruction, data...)
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+ fmt.Println("n", n)
+}
+
+// 关闭音乐
+func CloseMusic(conn net.Conn) {
+ data[43] = 0x00
+ instruction := []byte{0xAA, 0x33, 0x01, 0x06}
+ instruction = append(instruction, data...)
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+ fmt.Println("n", n)
+}
+
+// 恢复出厂设置
+func RestoreFactorySettings(conn net.Conn) {
+ instruction := []byte{0xAA, 0x03, 0x01, 0x38}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+ fmt.Println("n", n)
+}
+
+// 重启主板
+func Reboot(conn net.Conn) {
+ instruction := []byte{0xAA, 0x03, 0x01, 0x39}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+ fmt.Println("n", n)
+}
+
+// 暂停服务
+func StopServer(conn net.Conn) {
+ instruction := []byte{0xAA, 0x03, 0x01, 0x37}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 开启服务
+func StartServer(conn net.Conn) {
+ instruction := []byte{0xAA, 0x03, 0x01, 0x36}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+}
+
+// 查询基础参数
+func queryBaseParam(conn net.Conn) {
+ instruction := []byte{0xAA, 0x03, 0x01, 0x05}
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+
+ fmt.Println("n", n)
+}
+
+// 设置强力
+func SetPower(conn net.Conn) {
+ data[3] = 0x00
+ data[16] = 0x01
+ data[17] = 0xE0
+ data[18] = 0x13
+ data[19] = 0x88
+ fmt.Println("data.len = ", len(data))
+ instruction := []byte{0xAA, 0x33, 0x01, 0x06}
+ instruction = append(instruction, data...)
+ instruction = calculateChecksum(instruction)
+ _, err := conn.Write(instruction)
+ if err != nil {
+ fmt.Println("Failed to send command to server:", err)
+ return
+ }
+ // 读取服务端的响应
+ buf := make([]byte, 1024)
+ n, err := conn.Read(buf)
+ if err != nil {
+ fmt.Println("Failed to read response from server:", err)
+ return
+ }
+ fmt.Println("n", n)
+}
+
+var data = []byte{
+ 0x65,
+ 0x00,
+ 0x0F,
+ 0x02,
+ 0x0F,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x00,
+ 0x01,
+ 0xC8,
+ 0x00,
+ 0x7C,
+ 0x01,
+ 0x5A,
+ 0x00,
+ 0xE0,
+ 0x01,
+ 0xC8,
+ 0x00,
+ 0x14,
+ 0x32,
+ 0x32,
+ 0x50,
+ 0x34,
+ 0x08,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x78,
+ 0x00,
+ 0x32,
+ 0x02,
+ 0x00,
+ 0x00,
+ 0xC8,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x0F,
+ 0x07,
+ 0x08,
+ 0x00,
+}
diff --git a/machine/machinedoll/machinemgr.go b/machine/machinedoll/machinemgr.go
new file mode 100644
index 0000000..eaece9c
--- /dev/null
+++ b/machine/machinedoll/machinemgr.go
@@ -0,0 +1,255 @@
+package machinedoll
+
+import (
+ "encoding/json"
+ "fmt"
+ "mongo.games.com/goserver/core/timer"
+ "os/signal"
+ "syscall"
+
+ "mongo.games.com/game/protocol/machine"
+ "mongo.games.com/goserver/core/logger"
+ "mongo.games.com/goserver/core/netlib"
+ "mongo.games.com/goserver/srvlib"
+ "net"
+ "os"
+ "path/filepath"
+ "time"
+)
+
+var GameConn *netlib.Session
+var ConnMap = make(map[int]net.Conn)
+
+type MachineManager struct {
+ DelConnMap map[int]string
+}
+
+var MachineMgr = &MachineManager{
+ DelConnMap: make(map[int]string),
+}
+
+func (this *MachineManager) ModuleName() string {
+ return "MachineManager"
+}
+
+// 心跳间隔时间(秒)
+const heartbeatInterval = 1
+
+func (this *MachineManager) Init() {
+ var serverAddrs []string
+ programDir, err := os.Getwd()
+ if err != nil {
+ fmt.Println("Error getting working directory:", err)
+ return
+ }
+ configFile := filepath.Join(programDir, "machineIPConfig.json")
+ fmt.Println("构建配置文件的路径", configFile)
+ fileData, err := os.ReadFile(configFile)
+ if err != nil {
+ logger.Logger.Error("Read robot account file error:", err)
+ return
+ } else {
+ if err = json.Unmarshal(fileData, &serverAddrs); err != nil {
+ logger.Logger.Error("Unmarshal robot account data error:", err)
+ return
+ }
+ }
+ //与娃娃机创建连接
+ // 遍历每个服务器地址,建立连接
+ for i, addr := range serverAddrs {
+ conn, err := net.DialTimeout("tcp", addr, 5*time.Second)
+ if err != nil {
+ fmt.Println("Failed to connect to server:", err)
+ continue
+ }
+ ConnMap[i+1] = conn
+ go this.StartHeartbeat(i+1, &conn, addr)
+ }
+ fmt.Println("Connected to server:\n", ConnMap[1].RemoteAddr())
+ fmt.Println("投币请按Q!!!!")
+ fmt.Println("w向前s向后a向左d向右 j强力抓取k弱力抓取!")
+ // 监听 WASD 按键事件
+ /* go listenKeyboardEvents(ConnMap[1])
+
+ // 监听中断信号,等待用户退出
+ waitForUserExit()*/
+}
+func (this *MachineManager) StartHeartbeat(id int, conn *net.Conn, addr string) {
+ // 定期发送心跳包
+ ticker := time.NewTicker(heartbeatInterval * time.Second)
+ defer ticker.Stop()
+
+ for {
+ select {
+ case <-ticker.C:
+ // 发送心跳包
+ _, err := (*conn).Write([]byte("heartbeat"))
+ if err != nil {
+ fmt.Println("Failed to send heartbeat:", err)
+ delete(ConnMap, id)
+ this.DelConnMap[id] = addr
+ //通知游戏服
+ this.UpdateToGameServer()
+ fmt.Println("删除链接!!!!!!addr = ", addr)
+ go timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool {
+ this.ReConnect()
+ return true
+ }), nil, time.Duration(5)*time.Second, 100)
+ return
+ }
+ }
+ }
+}
+
+// 重连
+func (this *MachineManager) ReConnect() bool {
+ fmt.Println("================重连============")
+ delIds := []int{}
+ status := false
+ for id, addr := range this.DelConnMap {
+ conn, err := net.DialTimeout("tcp", addr, 5*time.Second)
+ if err != nil {
+ continue
+ }
+ ConnMap[id] = conn
+ delIds = append(delIds, id)
+ status = true
+ }
+ for _, id := range delIds {
+ delete(this.DelConnMap, id)
+ fmt.Println("重新链接成功!!!!!!id = ", id)
+ }
+ if status {
+ this.UpdateToGameServer()
+ return true
+ }
+ return false
+}
+
+func (this *MachineManager) UpdateToGameServer() {
+ msg := &machine.MSDollMachineList{}
+ for i, _ := range ConnMap {
+ info := &machine.DollMachine{}
+ info.Id = int32(i)
+ info.VideoAddr = "www.baidu.com"
+ msg.Data = append(msg.Data, info)
+ }
+ SendToGameServer(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), msg)
+}
+
+func SendToGameServer(pid int, msg interface{}) {
+ if GameConn == nil {
+ GameConn = srvlib.ServerSessionMgrSington.GetSession(1, 7, 701)
+ }
+ if GameConn != nil {
+ GameConn.Send(pid, msg)
+ } else {
+ logger.Logger.Error("GameConn is nil !")
+ }
+}
+
+func init() {
+ MachineMgr.Init()
+}
+
+func listenKeyboardEvents(conn net.Conn) {
+ for {
+ // 读取键盘事件
+ key := readKeyboardEvent()
+ switch key {
+ case "w":
+ Backward(conn)
+ time.Sleep(200 * time.Millisecond)
+ BackwardStop(conn)
+ case "W":
+ Backward(conn)
+ time.Sleep(200 * time.Millisecond)
+ BackwardStop(conn)
+ case "a":
+ Left(conn)
+ time.Sleep(200 * time.Millisecond)
+ LeftStop(conn)
+ case "A":
+ Left(conn)
+ time.Sleep(200 * time.Millisecond)
+ LeftStop(conn)
+ case "s":
+ Forward(conn)
+ time.Sleep(200 * time.Millisecond)
+ ForwardStop(conn)
+ case "S":
+ Forward(conn)
+ time.Sleep(200 * time.Millisecond)
+ ForwardStop(conn)
+ case "d":
+ Right(conn)
+ time.Sleep(200 * time.Millisecond)
+ RightStop(conn)
+ case "D":
+ Right(conn)
+ time.Sleep(200 * time.Millisecond)
+ RightStop(conn)
+ case "j":
+ Grab(conn)
+ case "J":
+ SetPower(conn)
+ time.Sleep(200 * time.Millisecond)
+ Grab(conn)
+
+ case "k":
+ WeakGrab(conn)
+ case "K":
+ WeakGrab(conn)
+
+ case "q":
+ Coin(conn)
+ Backward(conn)
+ time.Sleep(200 * time.Millisecond)
+ BackwardStop(conn)
+ case "Q":
+ Coin(conn)
+ Backward(conn)
+ time.Sleep(150 * time.Millisecond)
+ BackwardStop(conn)
+ case "1":
+ RestoreFactorySettings(conn)
+ case "2":
+ OpenMusic(conn)
+ case "3":
+ Reboot(conn)
+ case "4":
+ StopServer(conn)
+ case "5":
+ StartServer(conn)
+ case "6":
+ ClearRemainingGames(conn)
+ case "7":
+ SetPower(conn)
+ case "8":
+ CloseMusic(conn)
+ }
+ }
+}
+
+func readKeyboardEvent() string {
+ var b [1]byte
+ var done uint32
+ err := syscall.ReadFile(syscall.Stdin, b[:], &done, nil)
+ if err != nil {
+ panic(err)
+ }
+
+ return string(b[:])
+}
+
+func waitForUserExit() {
+ // 创建一个信号通道
+ signalChan := make(chan os.Signal, 1)
+
+ // 监听中断信号
+ signal.Notify(signalChan, os.Interrupt)
+
+ // 等待用户按下 Ctrl+C 退出
+ <-signalChan
+ fmt.Println("退出程序...")
+}
diff --git a/machine/main.go b/machine/main.go
new file mode 100644
index 0000000..0a35031
--- /dev/null
+++ b/machine/main.go
@@ -0,0 +1,15 @@
+package main
+
+import (
+ _ "mongo.games.com/game"
+ _ "mongo.games.com/game/machine/action"
+ "mongo.games.com/goserver/core"
+ "mongo.games.com/goserver/core/module"
+)
+
+func main() {
+ defer core.ClosePackages()
+ core.LoadPackages("config.json")
+ w := module.Start()
+ w.Wait("main()")
+}
diff --git a/mgrsrv/api/webapi_worldsrv.go b/mgrsrv/api/webapi_worldsrv.go
index 121270b..1745f1e 100644
--- a/mgrsrv/api/webapi_worldsrv.go
+++ b/mgrsrv/api/webapi_worldsrv.go
@@ -243,7 +243,7 @@ func init() {
admin.MyAdminApp.Route("/api/player/update_tel", WorldSrvApi)
// 删除账号
admin.MyAdminApp.Route("/api/player/delete", WorldSrvApi)
- //添加道具
+ // 添加道具
admin.MyAdminApp.Route("/api/player/AddItem", WorldSrvApi)
}
diff --git a/model/clientlog.go b/model/clientlog.go
index 3144786..3e4aa37 100644
--- a/model/clientlog.go
+++ b/model/clientlog.go
@@ -11,6 +11,14 @@ type ClientLog struct {
Platform string // 平台id
Snid int32 // 玩家id
Ts int64 // 时间戳
+ CreateTs int64 // 注册时间
+}
+
+type CustomData struct {
+ Event string `json:"event"` // 新手引导 guide
+ Platform string `json:"platform"` // 平台id
+ GuideTp int32 `json:"guide_tp"` // 新手引导类型 1完成步骤 2跳过新手引导
+ N int64 `json:"n"` // 完成步骤的序号,或者跳过新手引导的序号
}
type ClientLogMysql ClientLog
diff --git a/model/config.go b/model/config.go
index 7ee3b4c..cce71af 100644
--- a/model/config.go
+++ b/model/config.go
@@ -133,6 +133,11 @@ type AllConfig struct {
*webapi.RankTypeConfig
//获奖记录配置
*webapi.AwardLogConfig
+ // 新手引导配置
+ *webapi.GuideConfig
+ MatchAudience map[int32]*webapi.MatchAudience // 比赛观众列表
+ // 小精灵配置
+ *webapi.SpiritConfig
}
type GlobalConfig struct {
@@ -161,6 +166,7 @@ func (cm *ConfigMgr) GetConfig(platform string) *AllConfig {
EntrySwitch: make(map[int32]*webapi.EntrySwitch),
ShopInfos: make(map[int32]*ShopInfo),
ChannelSwitch: make(map[int32]*webapi.ChannelSwitchConfig),
+ MatchAudience: make(map[int32]*webapi.MatchAudience),
}
cm.platform[platform] = c
}
@@ -354,3 +360,18 @@ func (cm *ConfigMgr) GetSkinSkillMaxLevel(plt string, skinId int32) int32 {
}
return level
}
+
+func (cm *ConfigMgr) AddMatchAudience(d *webapi.MatchAudience) {
+ cfg := cm.GetConfig(d.Platform)
+ cfg.MatchAudience[d.GetSnId()] = d
+}
+
+func (cm *ConfigMgr) DelMatchAudience(d *webapi.MatchAudience) {
+ delete(cm.GetConfig(d.Platform).MatchAudience, d.GetSnId())
+}
+
+// IsMatchAudience 是不是比赛场观众
+func (cm *ConfigMgr) IsMatchAudience(plt string, snId int32) bool {
+ _, ok := cm.GetConfig(plt).MatchAudience[snId]
+ return ok
+}
diff --git a/model/gameparam.go b/model/gameparam.go
index 52a944b..fb99669 100644
--- a/model/gameparam.go
+++ b/model/gameparam.go
@@ -82,6 +82,8 @@ type GameParam struct {
TestRankMatchAward bool // 测试段位奖励领取通知,直接改玩家排位积分使玩家获得奖励
RankPlayerPermitMaxNum int32 // 赛季通行证积分排行榜最大人数
PermitInitScore int64 // 赛季通行证初始积分
+ GuideStepMaxNum int32 // 新手引导步骤最大值
+ GuideTs int64 // 新手引导时间戳,小于这个时间的玩家不显示新手引导
}
var GameParamPath = "../data/gameparam.json"
@@ -209,4 +211,10 @@ func InitGameParam() {
if GameParamData.RankPlayerPermitMaxNum == 0 {
GameParamData.RankPlayerPermitMaxNum = 20
}
+ if GameParamData.GuideStepMaxNum == 0 {
+ GameParamData.GuideStepMaxNum = 4
+ }
+ if GameParamData.GuideTs == 0 {
+ GameParamData.GuideTs = 1724623200
+ }
}
diff --git a/model/jyb.go b/model/jyb.go
index 7fc248e..c365ef4 100644
--- a/model/jyb.go
+++ b/model/jyb.go
@@ -279,3 +279,18 @@ func Code2Id(code string) (uint64, error) {
}
return id, nil
}
+
+type JybItem struct {
+ Id int32 `json:"id"`
+ Num int32 `json:"num"`
+}
+
+type JybLog struct {
+ Platform string `json:"platform"` // 平台
+ Id string `json:"jybId"` // 礼包id
+ Ts int64 `json:"ts"` // 时间戳
+ SnId int32 `json:"snid"` // 玩家id
+ Tp int32 `json:"tp"` // 礼包类型 1:通用礼包 2:专属礼包
+ Name string `json:"name"` // 礼包名称
+ Award []*JybItem `json:"award"` // 礼包奖励
+}
diff --git a/model/matchawardlog.go b/model/matchawardlog.go
index 07dcb94..448e106 100644
--- a/model/matchawardlog.go
+++ b/model/matchawardlog.go
@@ -4,30 +4,29 @@ import (
"time"
)
-// 比赛详情
-type MatchAwardLog struct {
- AwardNum map[string]map[int32]int32 // 奖励数量
- Platform string
-}
-
var (
MatchAwardLogDBName = "log"
MatchAwardLogCollName = "log_matchawardlog"
)
-func NewMatchAwardLog() *MatchAwardLog {
- return &MatchAwardLog{}
+type MatchAward struct {
+ Platform string `bson:"-"`
+ Award map[int32]int32
}
-func InsertOrUpdateMatchAwardLog(logs ...*MatchAwardLog) (err error) {
+func UpsertMatchAward(data *MatchAward) error {
if rpcCli == nil {
return ErrRPClientNoConn
}
var ret bool
- return rpcCli.CallWithTimeout("MatchAwardLogSvc.InsertOrUpdateMatchAwardLog", logs, &ret, time.Second*30)
+ return rpcCli.CallWithTimeout("MatchAwardSvc.UpsertMatchAward", data, &ret, time.Second*30)
}
-func GetMatchAwardLog(platform string) (ret MatchAwardLog, err error) {
- err = rpcCli.CallWithTimeout("MatchAwardLogSvc.GetMatchAward", platform, &ret, time.Second*30)
- return ret, err
+func GetMatchAward(platform string) (ret *MatchAward, err error) {
+ if rpcCli == nil {
+ return nil, ErrRPClientNoConn
+ }
+ ret = new(MatchAward)
+ err = rpcCli.CallWithTimeout("MatchAwardSvc.GetMatchAward", platform, ret, time.Second*30)
+ return
}
diff --git a/model/player.go b/model/player.go
index f9d5ec2..6f867ea 100644
--- a/model/player.go
+++ b/model/player.go
@@ -494,6 +494,7 @@ type PlayerData struct {
DiamondLotteryScore int64 //钻石抽奖幸运值
VCardCost int64 // 消耗v卡数量
MoneyTotal int64 // 现金总充值金额,不包含api加币时的现金
+ GuideStep int32 // 引导步骤;跳过引导后,该值会置为-1
}
// 七日签到数据
@@ -533,7 +534,7 @@ type WelfareData struct {
ContinuousPayTickets int64 //连续充值 时间戳
BlindBoxId int32 //已经领取盲盒序号
ContPayDay int32 //首充 从1开始
- VIPBag map[int32]map[int32]int32 //VIP充值礼包 key1-vipLevel key2 - shopId value- shopType (每日礼包 shopId的写死为0 value = 1)
+ VIPBag map[int32]map[int32]int32 //VIP充值礼包 vip等级:商品id:商品获得类型;特殊用法, 商品id为0代表vip每日礼包 1代表vip等级礼包
Task map[int32]*TaskData // 任务
PhoneLotteryTask map[int32]*TaskData // 抽手机任务
PigBank *PigBankData // 存钱罐
diff --git a/model/viplog.go b/model/viplog.go
index edaac41..ba199a6 100644
--- a/model/viplog.go
+++ b/model/viplog.go
@@ -14,7 +14,7 @@ type DbVip struct {
Platform string //平台
SnId int32 //玩家id
VipLevel int32 //领取礼包的VIP等级
- Type int32 //领取类型 0-每日礼包 1-每日金币礼包 2-固定礼包
+ Type int32 //领取类型 0-每日礼包 1-每日金币礼包 2-固定礼包 9-等级礼包
ConsumeType int32 //消耗类型
ConsumeNum int64 //消耗数量
ItemInfo []ItemInfo //道具 获得
diff --git a/mq/keyconf.go b/mq/keyconf.go
index 2257795..833871a 100644
--- a/mq/keyconf.go
+++ b/mq/keyconf.go
@@ -1,6 +1,7 @@
package mq
// 后台消息
+
const (
BackBankrupt = "log_bankrupt"
BackClientLog = "log_clientlog_mysql"
@@ -15,7 +16,11 @@ const (
BackSystemPermitExchange = "back_permitexchange"
BackSystemPermitJoin = "back_permitjoin"
BackSystemPermitTask = "back_permittask"
+ BackSystemJyb = "back_jyblog"
)
// dbproxy 消息
-const ()
+
+const (
+ DBVipGiftLog = "db_vipgift"
+)
diff --git a/protocol/clawdoll/clawdoll.pb.go b/protocol/clawdoll/clawdoll.pb.go
new file mode 100644
index 0000000..e395726
--- /dev/null
+++ b/protocol/clawdoll/clawdoll.pb.go
@@ -0,0 +1,1094 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.27.1-devel
+// protoc v3.19.4
+// source: clawdoll.proto
+
+package clawdoll
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+//娃娃机
+type CLAWDOLLPacketID int32
+
+const (
+ CLAWDOLLPacketID_PACKET_CLAWDOLL_ZERO CLAWDOLLPacketID = 0 //弃用消息号
+ CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_ROOMINFO CLAWDOLLPacketID = 5601 //房间信息
+ CLAWDOLLPacketID_PACKET_CS_CLAWDOLL_PLAYEROP CLAWDOLLPacketID = 5602 //玩家操作(客户->服务)
+ CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_PLAYEROP CLAWDOLLPacketID = 5603 //玩家操作(服务->客户)
+ CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_ROOMSTATE CLAWDOLLPacketID = 5604 //房间状态
+ CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_GAMEBILLED CLAWDOLLPacketID = 5605 //游戏结算
+ CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_PlayerEnter CLAWDOLLPacketID = 5606 // 玩家进入
+ CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_PlayerLeave CLAWDOLLPacketID = 5607 // 玩家离开
+ CLAWDOLLPacketID_PACKET_SC_CLAWDOLL_PLAYERINFO CLAWDOLLPacketID = 5608 // 玩家状态信息变化
+)
+
+// Enum value maps for CLAWDOLLPacketID.
+var (
+ CLAWDOLLPacketID_name = map[int32]string{
+ 0: "PACKET_CLAWDOLL_ZERO",
+ 5601: "PACKET_SC_CLAWDOLL_ROOMINFO",
+ 5602: "PACKET_CS_CLAWDOLL_PLAYEROP",
+ 5603: "PACKET_SC_CLAWDOLL_PLAYEROP",
+ 5604: "PACKET_SC_CLAWDOLL_ROOMSTATE",
+ 5605: "PACKET_SC_CLAWDOLL_GAMEBILLED",
+ 5606: "PACKET_SC_CLAWDOLL_PlayerEnter",
+ 5607: "PACKET_SC_CLAWDOLL_PlayerLeave",
+ 5608: "PACKET_SC_CLAWDOLL_PLAYERINFO",
+ }
+ CLAWDOLLPacketID_value = map[string]int32{
+ "PACKET_CLAWDOLL_ZERO": 0,
+ "PACKET_SC_CLAWDOLL_ROOMINFO": 5601,
+ "PACKET_CS_CLAWDOLL_PLAYEROP": 5602,
+ "PACKET_SC_CLAWDOLL_PLAYEROP": 5603,
+ "PACKET_SC_CLAWDOLL_ROOMSTATE": 5604,
+ "PACKET_SC_CLAWDOLL_GAMEBILLED": 5605,
+ "PACKET_SC_CLAWDOLL_PlayerEnter": 5606,
+ "PACKET_SC_CLAWDOLL_PlayerLeave": 5607,
+ "PACKET_SC_CLAWDOLL_PLAYERINFO": 5608,
+ }
+)
+
+func (x CLAWDOLLPacketID) Enum() *CLAWDOLLPacketID {
+ p := new(CLAWDOLLPacketID)
+ *p = x
+ return p
+}
+
+func (x CLAWDOLLPacketID) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (CLAWDOLLPacketID) Descriptor() protoreflect.EnumDescriptor {
+ return file_clawdoll_proto_enumTypes[0].Descriptor()
+}
+
+func (CLAWDOLLPacketID) Type() protoreflect.EnumType {
+ return &file_clawdoll_proto_enumTypes[0]
+}
+
+func (x CLAWDOLLPacketID) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CLAWDOLLPacketID.Descriptor instead.
+func (CLAWDOLLPacketID) EnumDescriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{0}
+}
+
+//操作结果
+type OpResultCode int32
+
+const (
+ OpResultCode_OPRC_Success OpResultCode = 0 //成功
+ OpResultCode_OPRC_Error OpResultCode = 1 //失败
+ OpResultCode_OPRC_CoinNotEnough OpResultCode = 2 //钱不够
+ OpResultCode_OPRC_PosAlReadyPlaying OpResultCode = 3 //本局位置已存在玩家
+)
+
+// Enum value maps for OpResultCode.
+var (
+ OpResultCode_name = map[int32]string{
+ 0: "OPRC_Success",
+ 1: "OPRC_Error",
+ 2: "OPRC_CoinNotEnough",
+ 3: "OPRC_PosAlReadyPlaying",
+ }
+ OpResultCode_value = map[string]int32{
+ "OPRC_Success": 0,
+ "OPRC_Error": 1,
+ "OPRC_CoinNotEnough": 2,
+ "OPRC_PosAlReadyPlaying": 3,
+ }
+)
+
+func (x OpResultCode) Enum() *OpResultCode {
+ p := new(OpResultCode)
+ *p = x
+ return p
+}
+
+func (x OpResultCode) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (OpResultCode) Descriptor() protoreflect.EnumDescriptor {
+ return file_clawdoll_proto_enumTypes[1].Descriptor()
+}
+
+func (OpResultCode) Type() protoreflect.EnumType {
+ return &file_clawdoll_proto_enumTypes[1]
+}
+
+func (x OpResultCode) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OpResultCode.Descriptor instead.
+func (OpResultCode) EnumDescriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{1}
+}
+
+type CLAWDOLLPlayerData struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"` //名字
+ SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` //账号
+ Head int32 `protobuf:"varint,3,opt,name=Head,proto3" json:"Head,omitempty"` //头像
+ Sex int32 `protobuf:"varint,4,opt,name=Sex,proto3" json:"Sex,omitempty"` //性别
+ Coin int64 `protobuf:"varint,5,opt,name=Coin,proto3" json:"Coin,omitempty"` //金币
+ HeadOutLine int32 `protobuf:"varint,6,opt,name=HeadOutLine,proto3" json:"HeadOutLine,omitempty"` //头像框
+ VIP int32 `protobuf:"varint,7,opt,name=VIP,proto3" json:"VIP,omitempty"`
+ Flag int32 `protobuf:"varint,8,opt,name=Flag,proto3" json:"Flag,omitempty"` //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备)
+ WinCoin int64 `protobuf:"varint,9,opt,name=WinCoin,proto3" json:"WinCoin,omitempty"` // 本局赢分
+}
+
+func (x *CLAWDOLLPlayerData) Reset() {
+ *x = CLAWDOLLPlayerData{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CLAWDOLLPlayerData) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CLAWDOLLPlayerData) ProtoMessage() {}
+
+func (x *CLAWDOLLPlayerData) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[0]
+ 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 CLAWDOLLPlayerData.ProtoReflect.Descriptor instead.
+func (*CLAWDOLLPlayerData) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *CLAWDOLLPlayerData) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *CLAWDOLLPlayerData) GetSnId() int32 {
+ if x != nil {
+ return x.SnId
+ }
+ return 0
+}
+
+func (x *CLAWDOLLPlayerData) GetHead() int32 {
+ if x != nil {
+ return x.Head
+ }
+ return 0
+}
+
+func (x *CLAWDOLLPlayerData) GetSex() int32 {
+ if x != nil {
+ return x.Sex
+ }
+ return 0
+}
+
+func (x *CLAWDOLLPlayerData) GetCoin() int64 {
+ if x != nil {
+ return x.Coin
+ }
+ return 0
+}
+
+func (x *CLAWDOLLPlayerData) GetHeadOutLine() int32 {
+ if x != nil {
+ return x.HeadOutLine
+ }
+ return 0
+}
+
+func (x *CLAWDOLLPlayerData) GetVIP() int32 {
+ if x != nil {
+ return x.VIP
+ }
+ return 0
+}
+
+func (x *CLAWDOLLPlayerData) GetFlag() int32 {
+ if x != nil {
+ return x.Flag
+ }
+ return 0
+}
+
+func (x *CLAWDOLLPlayerData) GetWinCoin() int64 {
+ if x != nil {
+ return x.WinCoin
+ }
+ return 0
+}
+
+//房间信息
+type SCCLAWDOLLRoomInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间id
+ GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id
+ RoomMode int32 `protobuf:"varint,3,opt,name=RoomMode,proto3" json:"RoomMode,omitempty"` //游戏模式
+ Params []int32 `protobuf:"varint,4,rep,packed,name=Params,proto3" json:"Params,omitempty"` //规则参数
+ State int32 `protobuf:"varint,5,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态
+ TimeOut int32 `protobuf:"varint,6,opt,name=TimeOut,proto3" json:"TimeOut,omitempty"` //该状态已经历时间 单位:秒
+ Players []*CLAWDOLLPlayerData `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` //房间内的玩家信息
+ TotalPlayer int32 `protobuf:"varint,8,opt,name=TotalPlayer,proto3" json:"TotalPlayer,omitempty"` //房间总人数
+ RoundId int32 `protobuf:"varint,9,opt,name=RoundId,proto3" json:"RoundId,omitempty"` //当前局数ID
+ ParamsEx []int32 `protobuf:"varint,10,rep,packed,name=ParamsEx,proto3" json:"ParamsEx,omitempty"` //其他参数
+ GameFreeId int32 `protobuf:"varint,15,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"`
+ BaseScore int32 `protobuf:"varint,16,opt,name=BaseScore,proto3" json:"BaseScore,omitempty"` //基础分
+}
+
+func (x *SCCLAWDOLLRoomInfo) Reset() {
+ *x = SCCLAWDOLLRoomInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCCLAWDOLLRoomInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCCLAWDOLLRoomInfo) ProtoMessage() {}
+
+func (x *SCCLAWDOLLRoomInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[1]
+ 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 SCCLAWDOLLRoomInfo.ProtoReflect.Descriptor instead.
+func (*SCCLAWDOLLRoomInfo) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetRoomId() int32 {
+ if x != nil {
+ return x.RoomId
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetGameId() int32 {
+ if x != nil {
+ return x.GameId
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetRoomMode() int32 {
+ if x != nil {
+ return x.RoomMode
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetParams() []int32 {
+ if x != nil {
+ return x.Params
+ }
+ return nil
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetState() int32 {
+ if x != nil {
+ return x.State
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetTimeOut() int32 {
+ if x != nil {
+ return x.TimeOut
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetPlayers() []*CLAWDOLLPlayerData {
+ if x != nil {
+ return x.Players
+ }
+ return nil
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetTotalPlayer() int32 {
+ if x != nil {
+ return x.TotalPlayer
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetRoundId() int32 {
+ if x != nil {
+ return x.RoundId
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetParamsEx() []int32 {
+ if x != nil {
+ return x.ParamsEx
+ }
+ return nil
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetGameFreeId() int32 {
+ if x != nil {
+ return x.GameFreeId
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomInfo) GetBaseScore() int32 {
+ if x != nil {
+ return x.BaseScore
+ }
+ return 0
+}
+
+//玩家操作
+type CSCLAWDOLLOp struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ OpCode int32 `protobuf:"varint,1,opt,name=OpCode,proto3" json:"OpCode,omitempty"`
+ Params []int64 `protobuf:"varint,2,rep,packed,name=Params,proto3" json:"Params,omitempty"`
+}
+
+func (x *CSCLAWDOLLOp) Reset() {
+ *x = CSCLAWDOLLOp{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CSCLAWDOLLOp) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CSCLAWDOLLOp) ProtoMessage() {}
+
+func (x *CSCLAWDOLLOp) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[2]
+ 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 CSCLAWDOLLOp.ProtoReflect.Descriptor instead.
+func (*CSCLAWDOLLOp) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *CSCLAWDOLLOp) GetOpCode() int32 {
+ if x != nil {
+ return x.OpCode
+ }
+ return 0
+}
+
+func (x *CSCLAWDOLLOp) GetParams() []int64 {
+ if x != nil {
+ return x.Params
+ }
+ return nil
+}
+
+//玩家操作返回
+type SCCLAWDOLLOp struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` //玩家ID
+ OpCode int32 `protobuf:"varint,2,opt,name=OpCode,proto3" json:"OpCode,omitempty"` //操作码
+ Params []int64 `protobuf:"varint,3,rep,packed,name=Params,proto3" json:"Params,omitempty"` //操作参数 同上 CSCLAWDOLLOp
+ OpRetCode OpResultCode `protobuf:"varint,4,opt,name=OpRetCode,proto3,enum=clawdoll.OpResultCode" json:"OpRetCode,omitempty"` //操作结果
+}
+
+func (x *SCCLAWDOLLOp) Reset() {
+ *x = SCCLAWDOLLOp{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCCLAWDOLLOp) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCCLAWDOLLOp) ProtoMessage() {}
+
+func (x *SCCLAWDOLLOp) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[3]
+ 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 SCCLAWDOLLOp.ProtoReflect.Descriptor instead.
+func (*SCCLAWDOLLOp) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *SCCLAWDOLLOp) GetSnId() int32 {
+ if x != nil {
+ return x.SnId
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLOp) GetOpCode() int32 {
+ if x != nil {
+ return x.OpCode
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLOp) GetParams() []int64 {
+ if x != nil {
+ return x.Params
+ }
+ return nil
+}
+
+func (x *SCCLAWDOLLOp) GetOpRetCode() OpResultCode {
+ if x != nil {
+ return x.OpRetCode
+ }
+ return OpResultCode_OPRC_Success
+}
+
+//发送给客户端的数据 单局结算
+type SCCLAWDOLLRoundGameBilled struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ RoundId int32 `protobuf:"varint,1,opt,name=RoundId,proto3" json:"RoundId,omitempty"` //牌局ID
+ ClowResult int32 `protobuf:"varint,2,opt,name=ClowResult,proto3" json:"ClowResult,omitempty"` //抓取结果
+ Award int64 `protobuf:"varint,3,opt,name=Award,proto3" json:"Award,omitempty"` //获奖金额
+ Balance int64 `protobuf:"varint,4,opt,name=Balance,proto3" json:"Balance,omitempty"` //玩家余额
+}
+
+func (x *SCCLAWDOLLRoundGameBilled) Reset() {
+ *x = SCCLAWDOLLRoundGameBilled{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCCLAWDOLLRoundGameBilled) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCCLAWDOLLRoundGameBilled) ProtoMessage() {}
+
+func (x *SCCLAWDOLLRoundGameBilled) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[4]
+ 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 SCCLAWDOLLRoundGameBilled.ProtoReflect.Descriptor instead.
+func (*SCCLAWDOLLRoundGameBilled) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *SCCLAWDOLLRoundGameBilled) GetRoundId() int32 {
+ if x != nil {
+ return x.RoundId
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoundGameBilled) GetClowResult() int32 {
+ if x != nil {
+ return x.ClowResult
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoundGameBilled) GetAward() int64 {
+ if x != nil {
+ return x.Award
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoundGameBilled) GetBalance() int64 {
+ if x != nil {
+ return x.Balance
+ }
+ return 0
+}
+
+//房间状态
+type SCCLAWDOLLRoomState struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ State int32 `protobuf:"varint,1,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态
+ Params []float32 `protobuf:"fixed32,2,rep,packed,name=Params,proto3" json:"Params,omitempty"`
+}
+
+func (x *SCCLAWDOLLRoomState) Reset() {
+ *x = SCCLAWDOLLRoomState{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCCLAWDOLLRoomState) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCCLAWDOLLRoomState) ProtoMessage() {}
+
+func (x *SCCLAWDOLLRoomState) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[5]
+ 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 SCCLAWDOLLRoomState.ProtoReflect.Descriptor instead.
+func (*SCCLAWDOLLRoomState) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *SCCLAWDOLLRoomState) GetState() int32 {
+ if x != nil {
+ return x.State
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLRoomState) GetParams() []float32 {
+ if x != nil {
+ return x.Params
+ }
+ return nil
+}
+
+//玩家信息
+type SCCLAWDOLLPlayerInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` //玩家ID
+ GainCoin int64 `protobuf:"varint,2,opt,name=gainCoin,proto3" json:"gainCoin,omitempty"` //本局赢取
+ Coin int64 `protobuf:"varint,3,opt,name=Coin,proto3" json:"Coin,omitempty"` // 玩家
+}
+
+func (x *SCCLAWDOLLPlayerInfo) Reset() {
+ *x = SCCLAWDOLLPlayerInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCCLAWDOLLPlayerInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCCLAWDOLLPlayerInfo) ProtoMessage() {}
+
+func (x *SCCLAWDOLLPlayerInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[6]
+ 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 SCCLAWDOLLPlayerInfo.ProtoReflect.Descriptor instead.
+func (*SCCLAWDOLLPlayerInfo) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *SCCLAWDOLLPlayerInfo) GetSnId() int32 {
+ if x != nil {
+ return x.SnId
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLPlayerInfo) GetGainCoin() int64 {
+ if x != nil {
+ return x.GainCoin
+ }
+ return 0
+}
+
+func (x *SCCLAWDOLLPlayerInfo) GetCoin() int64 {
+ if x != nil {
+ return x.Coin
+ }
+ return 0
+}
+
+//玩家进入
+//PACKET_SCCLAWDOLLPlayerEnter
+type SCCLAWDOLLPlayerEnter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data *CLAWDOLLPlayerData `protobuf:"bytes,1,opt,name=Data,proto3" json:"Data,omitempty"`
+}
+
+func (x *SCCLAWDOLLPlayerEnter) Reset() {
+ *x = SCCLAWDOLLPlayerEnter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCCLAWDOLLPlayerEnter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCCLAWDOLLPlayerEnter) ProtoMessage() {}
+
+func (x *SCCLAWDOLLPlayerEnter) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[7]
+ 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 SCCLAWDOLLPlayerEnter.ProtoReflect.Descriptor instead.
+func (*SCCLAWDOLLPlayerEnter) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *SCCLAWDOLLPlayerEnter) GetData() *CLAWDOLLPlayerData {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+//玩家离开
+//PACKET_SCCLAWDOLLPlayerLeave
+type SCCLAWDOLLPlayerLeave struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //玩家位置
+}
+
+func (x *SCCLAWDOLLPlayerLeave) Reset() {
+ *x = SCCLAWDOLLPlayerLeave{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_clawdoll_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCCLAWDOLLPlayerLeave) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCCLAWDOLLPlayerLeave) ProtoMessage() {}
+
+func (x *SCCLAWDOLLPlayerLeave) ProtoReflect() protoreflect.Message {
+ mi := &file_clawdoll_proto_msgTypes[8]
+ 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 SCCLAWDOLLPlayerLeave.ProtoReflect.Descriptor instead.
+func (*SCCLAWDOLLPlayerLeave) Descriptor() ([]byte, []int) {
+ return file_clawdoll_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *SCCLAWDOLLPlayerLeave) GetPos() int32 {
+ if x != nil {
+ return x.Pos
+ }
+ return 0
+}
+
+var File_clawdoll_proto protoreflect.FileDescriptor
+
+var file_clawdoll_proto_rawDesc = []byte{
+ 0x0a, 0x0e, 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x12, 0x08, 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x43,
+ 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74,
+ 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a,
+ 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12,
+ 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43,
+ 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69,
+ 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75,
+ 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x49, 0x50, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x03, 0x56, 0x49, 0x50, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x57,
+ 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69,
+ 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xf6, 0x02, 0x0a, 0x12, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57,
+ 0x44, 0x4f, 0x4c, 0x4c, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06,
+ 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f,
+ 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
+ 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
+ 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61,
+ 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+ 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75,
+ 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74,
+ 0x12, 0x36, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x43, 0x4c, 0x41,
+ 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52,
+ 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61,
+ 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x54,
+ 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x6f,
+ 0x75, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x6f, 0x75,
+ 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78,
+ 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0f,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64,
+ 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3e,
+ 0x0a, 0x0c, 0x43, 0x53, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x4f, 0x70, 0x12, 0x16,
+ 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
+ 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x88,
+ 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x4f, 0x70, 0x12,
+ 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53,
+ 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50,
+ 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72,
+ 0x61, 0x6d, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c,
+ 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09,
+ 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x19, 0x53, 0x43,
+ 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x61, 0x6d,
+ 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x6f, 0x75, 0x6e, 0x64,
+ 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x49,
+ 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+ 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+ 0x65, 0x22, 0x43, 0x0a, 0x13, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x52,
+ 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16,
+ 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06,
+ 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x5a, 0x0a, 0x14, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57,
+ 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
+ 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
+ 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x67, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12,
+ 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f,
+ 0x69, 0x6e, 0x22, 0x49, 0x0a, 0x15, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x44,
+ 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6c, 0x61, 0x77,
+ 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x29, 0x0a,
+ 0x15, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x2a, 0xc7, 0x02, 0x0a, 0x10, 0x43, 0x4c, 0x41,
+ 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a,
+ 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c,
+ 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x5f, 0x52, 0x4f,
+ 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe1, 0x2b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x5f,
+ 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe2, 0x2b, 0x12, 0x20, 0x0a, 0x1b, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c,
+ 0x4c, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe3, 0x2b, 0x12, 0x21, 0x0a,
+ 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x41, 0x57, 0x44,
+ 0x4f, 0x4c, 0x4c, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xe4, 0x2b,
+ 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c,
+ 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x49, 0x4c, 0x4c, 0x45,
+ 0x44, 0x10, 0xe5, 0x2b, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x5f, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xe6, 0x2b, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x5f,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xe7, 0x2b, 0x12, 0x22,
+ 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x41, 0x57,
+ 0x44, 0x4f, 0x4c, 0x4c, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x10,
+ 0xe8, 0x2b, 0x2a, 0x64, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
+ 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72,
+ 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69,
+ 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16,
+ 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6f, 0x73, 0x41, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50,
+ 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67,
+ 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65,
+ 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f,
+ 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_clawdoll_proto_rawDescOnce sync.Once
+ file_clawdoll_proto_rawDescData = file_clawdoll_proto_rawDesc
+)
+
+func file_clawdoll_proto_rawDescGZIP() []byte {
+ file_clawdoll_proto_rawDescOnce.Do(func() {
+ file_clawdoll_proto_rawDescData = protoimpl.X.CompressGZIP(file_clawdoll_proto_rawDescData)
+ })
+ return file_clawdoll_proto_rawDescData
+}
+
+var file_clawdoll_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_clawdoll_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_clawdoll_proto_goTypes = []interface{}{
+ (CLAWDOLLPacketID)(0), // 0: clawdoll.CLAWDOLLPacketID
+ (OpResultCode)(0), // 1: clawdoll.OpResultCode
+ (*CLAWDOLLPlayerData)(nil), // 2: clawdoll.CLAWDOLLPlayerData
+ (*SCCLAWDOLLRoomInfo)(nil), // 3: clawdoll.SCCLAWDOLLRoomInfo
+ (*CSCLAWDOLLOp)(nil), // 4: clawdoll.CSCLAWDOLLOp
+ (*SCCLAWDOLLOp)(nil), // 5: clawdoll.SCCLAWDOLLOp
+ (*SCCLAWDOLLRoundGameBilled)(nil), // 6: clawdoll.SCCLAWDOLLRoundGameBilled
+ (*SCCLAWDOLLRoomState)(nil), // 7: clawdoll.SCCLAWDOLLRoomState
+ (*SCCLAWDOLLPlayerInfo)(nil), // 8: clawdoll.SCCLAWDOLLPlayerInfo
+ (*SCCLAWDOLLPlayerEnter)(nil), // 9: clawdoll.SCCLAWDOLLPlayerEnter
+ (*SCCLAWDOLLPlayerLeave)(nil), // 10: clawdoll.SCCLAWDOLLPlayerLeave
+}
+var file_clawdoll_proto_depIdxs = []int32{
+ 2, // 0: clawdoll.SCCLAWDOLLRoomInfo.Players:type_name -> clawdoll.CLAWDOLLPlayerData
+ 1, // 1: clawdoll.SCCLAWDOLLOp.OpRetCode:type_name -> clawdoll.OpResultCode
+ 2, // 2: clawdoll.SCCLAWDOLLPlayerEnter.Data:type_name -> clawdoll.CLAWDOLLPlayerData
+ 3, // [3:3] is the sub-list for method output_type
+ 3, // [3:3] is the sub-list for method input_type
+ 3, // [3:3] is the sub-list for extension type_name
+ 3, // [3:3] is the sub-list for extension extendee
+ 0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_clawdoll_proto_init() }
+func file_clawdoll_proto_init() {
+ if File_clawdoll_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_clawdoll_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CLAWDOLLPlayerData); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCCLAWDOLLRoomInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CSCLAWDOLLOp); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCCLAWDOLLOp); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCCLAWDOLLRoundGameBilled); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCCLAWDOLLRoomState); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCCLAWDOLLPlayerInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCCLAWDOLLPlayerEnter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_clawdoll_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCCLAWDOLLPlayerLeave); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_clawdoll_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 9,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_clawdoll_proto_goTypes,
+ DependencyIndexes: file_clawdoll_proto_depIdxs,
+ EnumInfos: file_clawdoll_proto_enumTypes,
+ MessageInfos: file_clawdoll_proto_msgTypes,
+ }.Build()
+ File_clawdoll_proto = out.File
+ file_clawdoll_proto_rawDesc = nil
+ file_clawdoll_proto_goTypes = nil
+ file_clawdoll_proto_depIdxs = nil
+}
diff --git a/protocol/clawdoll/clawdoll.proto b/protocol/clawdoll/clawdoll.proto
new file mode 100644
index 0000000..e7091b2
--- /dev/null
+++ b/protocol/clawdoll/clawdoll.proto
@@ -0,0 +1,103 @@
+syntax = "proto3";
+package clawdoll;
+option go_package = "mongo.games.com/game/protocol/clawdoll";
+
+//娃娃机
+enum CLAWDOLLPacketID {
+ PACKET_CLAWDOLL_ZERO = 0; //弃用消息号
+ PACKET_SC_CLAWDOLL_ROOMINFO = 5601; //房间信息
+ PACKET_CS_CLAWDOLL_PLAYEROP = 5602; //玩家操作(客户->服务)
+ PACKET_SC_CLAWDOLL_PLAYEROP = 5603; //玩家操作(服务->客户)
+ PACKET_SC_CLAWDOLL_ROOMSTATE = 5604; //房间状态
+ PACKET_SC_CLAWDOLL_GAMEBILLED = 5605; //游戏结算
+ PACKET_SC_CLAWDOLL_PlayerEnter = 5606; // 玩家进入
+ PACKET_SC_CLAWDOLL_PlayerLeave = 5607; // 玩家离开
+ PACKET_SC_CLAWDOLL_PLAYERINFO = 5608; // 玩家状态信息变化
+}
+
+//操作结果
+enum OpResultCode {
+ OPRC_Success = 0; //成功
+ OPRC_Error = 1; //失败
+ OPRC_CoinNotEnough = 2; //钱不够
+ OPRC_PosAlReadyPlaying = 3; //本局位置已存在玩家
+}
+
+message CLAWDOLLPlayerData {
+ string Name = 1; //名字
+ int32 SnId = 2; //账号
+ int32 Head = 3; //头像
+ int32 Sex = 4; //性别
+ int64 Coin = 5; //金币
+ int32 HeadOutLine = 6; //头像框
+ int32 VIP = 7;
+ int32 Flag = 8; //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备)
+
+ int64 WinCoin = 9; // 本局赢分
+
+}
+
+//房间信息
+message SCCLAWDOLLRoomInfo {
+ int32 RoomId = 1; //房间id
+ int32 GameId = 2; //游戏id
+ int32 RoomMode = 3; //游戏模式
+ repeated int32 Params = 4; //规则参数
+ int32 State = 5; //房间当前状态
+ int32 TimeOut = 6; //该状态已经历时间 单位:秒
+ repeated CLAWDOLLPlayerData Players = 7; //房间内的玩家信息
+ int32 TotalPlayer = 8; //房间总人数
+ int32 RoundId = 9; //当前局数ID
+ repeated int32 ParamsEx = 10; //其他参数
+
+ int32 GameFreeId = 15;
+ int32 BaseScore = 16; //基础分
+}
+
+//玩家操作
+message CSCLAWDOLLOp {
+ int32 OpCode = 1;
+ repeated int64 Params = 2;
+}
+
+//玩家操作返回
+message SCCLAWDOLLOp {
+ int32 SnId = 1; //玩家ID
+ int32 OpCode = 2; //操作码
+ repeated int64 Params = 3; //操作参数 同上 CSCLAWDOLLOp
+ OpResultCode OpRetCode = 4; //操作结果
+}
+
+//发送给客户端的数据 单局结算
+message SCCLAWDOLLRoundGameBilled {
+ int32 RoundId = 1; //牌局ID
+ int32 ClowResult = 2; //抓取结果
+ int64 Award = 3; //获奖金额
+ int64 Balance = 4; //玩家余额
+}
+
+//房间状态
+message SCCLAWDOLLRoomState {
+ int32 State = 1; //房间当前状态
+ repeated float Params = 2;
+}
+
+//玩家信息
+message SCCLAWDOLLPlayerInfo {
+ int32 SnId = 1; //玩家ID
+ int64 gainCoin = 2; //本局赢取
+ int64 Coin = 3; // 玩家
+}
+
+
+//玩家进入
+//PACKET_SCCLAWDOLLPlayerEnter
+message SCCLAWDOLLPlayerEnter {
+ CLAWDOLLPlayerData Data = 1;
+}
+
+//玩家离开
+//PACKET_SCCLAWDOLLPlayerLeave
+message SCCLAWDOLLPlayerLeave {
+ int32 Pos = 1; //玩家位置
+}
\ No newline at end of file
diff --git a/protocol/doc.md b/protocol/doc.md
index 01bc184..6d8f4f4 100644
--- a/protocol/doc.md
+++ b/protocol/doc.md
@@ -5,6 +5,7 @@
- 2000~4999 client->worldsrv
- 5000~9999 client->gamesrv
- 10000~12000 client->ranksrv
+- 20000~29999 gamesrv->machine
--------------------------------------
# worldsrv
@@ -65,7 +66,7 @@
- 2720~2739
#### tournament(锦标赛)
-- 2740~2759
+- 2740~2779
#### RankMatch 排位赛
- 2780~2800
diff --git a/protocol/dollmachine/dollmachine.pb.go b/protocol/dollmachine/dollmachine.pb.go
new file mode 100644
index 0000000..6624f68
--- /dev/null
+++ b/protocol/dollmachine/dollmachine.pb.go
@@ -0,0 +1,537 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.27.1-devel
+// protoc v3.19.4
+// source: dollmachine.proto
+
+package dollmachine
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+//S-GAME M-娃娃机主机
+//娃娃机协议
+type DollMachinePacketID int32
+
+const (
+ DollMachinePacketID_PACKET_SMDollMachineZero DollMachinePacketID = 0
+ DollMachinePacketID_PACKET_SMDollMachineMove DollMachinePacketID = 3001
+ DollMachinePacketID_PACKET_SMDollMachineGrab DollMachinePacketID = 3002
+ DollMachinePacketID_PACKET_MSDollMachineGrab DollMachinePacketID = 3003
+ DollMachinePacketID_PACKET_MSDollMachineList DollMachinePacketID = 3004
+)
+
+// Enum value maps for DollMachinePacketID.
+var (
+ DollMachinePacketID_name = map[int32]string{
+ 0: "PACKET_SMDollMachineZero",
+ 3001: "PACKET_SMDollMachineMove",
+ 3002: "PACKET_SMDollMachineGrab",
+ 3003: "PACKET_MSDollMachineGrab",
+ 3004: "PACKET_MSDollMachineList",
+ }
+ DollMachinePacketID_value = map[string]int32{
+ "PACKET_SMDollMachineZero": 0,
+ "PACKET_SMDollMachineMove": 3001,
+ "PACKET_SMDollMachineGrab": 3002,
+ "PACKET_MSDollMachineGrab": 3003,
+ "PACKET_MSDollMachineList": 3004,
+ }
+)
+
+func (x DollMachinePacketID) Enum() *DollMachinePacketID {
+ p := new(DollMachinePacketID)
+ *p = x
+ return p
+}
+
+func (x DollMachinePacketID) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (DollMachinePacketID) Descriptor() protoreflect.EnumDescriptor {
+ return file_dollmachine_proto_enumTypes[0].Descriptor()
+}
+
+func (DollMachinePacketID) Type() protoreflect.EnumType {
+ return &file_dollmachine_proto_enumTypes[0]
+}
+
+func (x DollMachinePacketID) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DollMachinePacketID.Descriptor instead.
+func (DollMachinePacketID) EnumDescriptor() ([]byte, []int) {
+ return file_dollmachine_proto_rawDescGZIP(), []int{0}
+}
+
+//移动
+type SMDollMachineMove struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"`
+ Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` //娃娃机标识
+ Direction int32 `protobuf:"varint,3,opt,name=Direction,proto3" json:"Direction,omitempty"` // 1-前 2-后 3-左 4-右
+}
+
+func (x *SMDollMachineMove) Reset() {
+ *x = SMDollMachineMove{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_dollmachine_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SMDollMachineMove) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SMDollMachineMove) ProtoMessage() {}
+
+func (x *SMDollMachineMove) ProtoReflect() protoreflect.Message {
+ mi := &file_dollmachine_proto_msgTypes[0]
+ 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 SMDollMachineMove.ProtoReflect.Descriptor instead.
+func (*SMDollMachineMove) Descriptor() ([]byte, []int) {
+ return file_dollmachine_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *SMDollMachineMove) GetSnid() int32 {
+ if x != nil {
+ return x.Snid
+ }
+ return 0
+}
+
+func (x *SMDollMachineMove) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *SMDollMachineMove) GetDirection() int32 {
+ if x != nil {
+ return x.Direction
+ }
+ return 0
+}
+
+//下抓
+type SMDollMachineGrab struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-弱力抓 2 -强力抓 3-必出抓
+ Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` //娃娃机标识
+ Snid int32 `protobuf:"varint,3,opt,name=Snid,proto3" json:"Snid,omitempty"`
+}
+
+func (x *SMDollMachineGrab) Reset() {
+ *x = SMDollMachineGrab{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_dollmachine_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SMDollMachineGrab) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SMDollMachineGrab) ProtoMessage() {}
+
+func (x *SMDollMachineGrab) ProtoReflect() protoreflect.Message {
+ mi := &file_dollmachine_proto_msgTypes[1]
+ 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 SMDollMachineGrab.ProtoReflect.Descriptor instead.
+func (*SMDollMachineGrab) Descriptor() ([]byte, []int) {
+ return file_dollmachine_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SMDollMachineGrab) GetTypeId() int32 {
+ if x != nil {
+ return x.TypeId
+ }
+ return 0
+}
+
+func (x *SMDollMachineGrab) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *SMDollMachineGrab) GetSnid() int32 {
+ if x != nil {
+ return x.Snid
+ }
+ return 0
+}
+
+//返回下抓结果
+type MSDollMachineGrab struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"`
+ Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` //娃娃机标识
+ Result int32 `protobuf:"varint,3,opt,name=Result,proto3" json:"Result,omitempty"` //1-中奖 其他未中奖
+}
+
+func (x *MSDollMachineGrab) Reset() {
+ *x = MSDollMachineGrab{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_dollmachine_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MSDollMachineGrab) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MSDollMachineGrab) ProtoMessage() {}
+
+func (x *MSDollMachineGrab) ProtoReflect() protoreflect.Message {
+ mi := &file_dollmachine_proto_msgTypes[2]
+ 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 MSDollMachineGrab.ProtoReflect.Descriptor instead.
+func (*MSDollMachineGrab) Descriptor() ([]byte, []int) {
+ return file_dollmachine_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *MSDollMachineGrab) GetSnid() int32 {
+ if x != nil {
+ return x.Snid
+ }
+ return 0
+}
+
+func (x *MSDollMachineGrab) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *MSDollMachineGrab) GetResult() int32 {
+ if x != nil {
+ return x.Result
+ }
+ return 0
+}
+
+//返回所有娃娃机连接
+type MSDollMachineList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data []*DollMachine `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *MSDollMachineList) Reset() {
+ *x = MSDollMachineList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_dollmachine_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MSDollMachineList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MSDollMachineList) ProtoMessage() {}
+
+func (x *MSDollMachineList) ProtoReflect() protoreflect.Message {
+ mi := &file_dollmachine_proto_msgTypes[3]
+ 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 MSDollMachineList.ProtoReflect.Descriptor instead.
+func (*MSDollMachineList) Descriptor() ([]byte, []int) {
+ return file_dollmachine_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *MSDollMachineList) GetData() []*DollMachine {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+type DollMachine struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"`
+ Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` //1-空闲 2-无法使用
+}
+
+func (x *DollMachine) Reset() {
+ *x = DollMachine{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_dollmachine_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DollMachine) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DollMachine) ProtoMessage() {}
+
+func (x *DollMachine) ProtoReflect() protoreflect.Message {
+ mi := &file_dollmachine_proto_msgTypes[4]
+ 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 DollMachine.ProtoReflect.Descriptor instead.
+func (*DollMachine) Descriptor() ([]byte, []int) {
+ return file_dollmachine_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *DollMachine) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *DollMachine) GetStatus() int32 {
+ if x != nil {
+ return x.Status
+ }
+ return 0
+}
+
+var File_dollmachine_proto protoreflect.FileDescriptor
+
+var file_dollmachine_proto_rawDesc = []byte{
+ 0x0a, 0x11, 0x64, 0x6f, 0x6c, 0x6c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x64, 0x6f, 0x6c, 0x6c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x22, 0x55, 0x0a, 0x11, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69,
+ 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4f, 0x0a, 0x11, 0x53, 0x4d, 0x44, 0x6f, 0x6c,
+ 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x62, 0x12, 0x16, 0x0a, 0x06,
+ 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79,
+ 0x70, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x11, 0x4d, 0x53, 0x44, 0x6f,
+ 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x62, 0x12, 0x12, 0x0a,
+ 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69,
+ 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
+ 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x41, 0x0a, 0x11, 0x4d, 0x53, 0x44,
+ 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c,
+ 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64,
+ 0x6f, 0x6c, 0x6c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x6f, 0x6c, 0x6c, 0x4d,
+ 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x0b,
+ 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x2a, 0xaf, 0x01, 0x0a, 0x13, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x10, 0xb9, 0x17, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x47, 0x72, 0x61, 0x62, 0x10, 0xba, 0x17, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47,
+ 0x72, 0x61, 0x62, 0x10, 0xbb, 0x17, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x69,
+ 0x73, 0x74, 0x10, 0xbc, 0x17, 0x42, 0x2b, 0x5a, 0x29, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67,
+ 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x64, 0x6f, 0x6c, 0x6c, 0x6d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_dollmachine_proto_rawDescOnce sync.Once
+ file_dollmachine_proto_rawDescData = file_dollmachine_proto_rawDesc
+)
+
+func file_dollmachine_proto_rawDescGZIP() []byte {
+ file_dollmachine_proto_rawDescOnce.Do(func() {
+ file_dollmachine_proto_rawDescData = protoimpl.X.CompressGZIP(file_dollmachine_proto_rawDescData)
+ })
+ return file_dollmachine_proto_rawDescData
+}
+
+var file_dollmachine_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_dollmachine_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_dollmachine_proto_goTypes = []interface{}{
+ (DollMachinePacketID)(0), // 0: dollmachine.DollMachinePacketID
+ (*SMDollMachineMove)(nil), // 1: dollmachine.SMDollMachineMove
+ (*SMDollMachineGrab)(nil), // 2: dollmachine.SMDollMachineGrab
+ (*MSDollMachineGrab)(nil), // 3: dollmachine.MSDollMachineGrab
+ (*MSDollMachineList)(nil), // 4: dollmachine.MSDollMachineList
+ (*DollMachine)(nil), // 5: dollmachine.DollMachine
+}
+var file_dollmachine_proto_depIdxs = []int32{
+ 5, // 0: dollmachine.MSDollMachineList.data:type_name -> dollmachine.DollMachine
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 1, // [1:1] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_dollmachine_proto_init() }
+func file_dollmachine_proto_init() {
+ if File_dollmachine_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_dollmachine_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SMDollMachineMove); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_dollmachine_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SMDollMachineGrab); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_dollmachine_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MSDollMachineGrab); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_dollmachine_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MSDollMachineList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_dollmachine_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DollMachine); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_dollmachine_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 5,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_dollmachine_proto_goTypes,
+ DependencyIndexes: file_dollmachine_proto_depIdxs,
+ EnumInfos: file_dollmachine_proto_enumTypes,
+ MessageInfos: file_dollmachine_proto_msgTypes,
+ }.Build()
+ File_dollmachine_proto = out.File
+ file_dollmachine_proto_rawDesc = nil
+ file_dollmachine_proto_goTypes = nil
+ file_dollmachine_proto_depIdxs = nil
+}
diff --git a/protocol/dollmachine/dollmachine.proto b/protocol/dollmachine/dollmachine.proto
new file mode 100644
index 0000000..450795e
--- /dev/null
+++ b/protocol/dollmachine/dollmachine.proto
@@ -0,0 +1,43 @@
+syntax = "proto3";
+package dollmachine;
+option go_package = "mongo.games.com/game/protocol/dollmachine";
+
+//S-GAME M-娃娃机主机
+//娃娃机协议
+enum DollMachinePacketID {
+ PACKET_SMDollMachineZero = 0;
+ PACKET_SMDollMachineMove = 3001;
+ PACKET_SMDollMachineGrab = 3002;
+ PACKET_MSDollMachineGrab = 3003;
+ PACKET_MSDollMachineList = 3004;
+}
+
+//移动
+message SMDollMachineMove{
+ int32 Snid = 1;
+ int32 Id = 2; //娃娃机标识
+ int32 Direction = 3; // 1-前 2-后 3-左 4-右
+}
+
+//下抓
+message SMDollMachineGrab{
+ int32 TypeId = 1;//1-弱力抓 2 -强力抓 3-必出抓
+ int32 Id =2; //娃娃机标识
+ int32 Snid = 3;
+}
+
+//返回下抓结果
+message MSDollMachineGrab{
+ int32 Snid = 1;
+ int32 Id = 2; //娃娃机标识
+ int32 Result = 3;//1-中奖 其他未中奖
+}
+
+//返回所有娃娃机连接
+message MSDollMachineList{
+ repeated DollMachine data = 1;
+}
+message DollMachine{
+ int32 Id = 1;
+ int32 Status = 2; //1-空闲 2-无法使用
+}
\ No newline at end of file
diff --git a/protocol/machine/machine.pb.go b/protocol/machine/machine.pb.go
new file mode 100644
index 0000000..576911a
--- /dev/null
+++ b/protocol/machine/machine.pb.go
@@ -0,0 +1,594 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.27.1-devel
+// protoc v3.19.4
+// source: machine.proto
+
+package machine
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+//娃娃机协议
+type DollMachinePacketID int32
+
+const (
+ DollMachinePacketID_PACKET_SMDollMachineZero DollMachinePacketID = 0
+ DollMachinePacketID_PACKET_SMGameLinkSucceed DollMachinePacketID = 20000
+ DollMachinePacketID_PACKET_SMDollMachinePerate DollMachinePacketID = 20001
+ DollMachinePacketID_PACKET_SMDollMachineGrab DollMachinePacketID = 20002
+ DollMachinePacketID_PACKET_MSDollMachineGrab DollMachinePacketID = 20003
+ DollMachinePacketID_PACKET_MSDollMachineList DollMachinePacketID = 20004
+)
+
+// Enum value maps for DollMachinePacketID.
+var (
+ DollMachinePacketID_name = map[int32]string{
+ 0: "PACKET_SMDollMachineZero",
+ 20000: "PACKET_SMGameLinkSucceed",
+ 20001: "PACKET_SMDollMachinePerate",
+ 20002: "PACKET_SMDollMachineGrab",
+ 20003: "PACKET_MSDollMachineGrab",
+ 20004: "PACKET_MSDollMachineList",
+ }
+ DollMachinePacketID_value = map[string]int32{
+ "PACKET_SMDollMachineZero": 0,
+ "PACKET_SMGameLinkSucceed": 20000,
+ "PACKET_SMDollMachinePerate": 20001,
+ "PACKET_SMDollMachineGrab": 20002,
+ "PACKET_MSDollMachineGrab": 20003,
+ "PACKET_MSDollMachineList": 20004,
+ }
+)
+
+func (x DollMachinePacketID) Enum() *DollMachinePacketID {
+ p := new(DollMachinePacketID)
+ *p = x
+ return p
+}
+
+func (x DollMachinePacketID) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (DollMachinePacketID) Descriptor() protoreflect.EnumDescriptor {
+ return file_machine_proto_enumTypes[0].Descriptor()
+}
+
+func (DollMachinePacketID) Type() protoreflect.EnumType {
+ return &file_machine_proto_enumTypes[0]
+}
+
+func (x DollMachinePacketID) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DollMachinePacketID.Descriptor instead.
+func (DollMachinePacketID) EnumDescriptor() ([]byte, []int) {
+ return file_machine_proto_rawDescGZIP(), []int{0}
+}
+
+//通知链接成功
+type SMGameLinkSucceed struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *SMGameLinkSucceed) Reset() {
+ *x = SMGameLinkSucceed{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_machine_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SMGameLinkSucceed) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SMGameLinkSucceed) ProtoMessage() {}
+
+func (x *SMGameLinkSucceed) ProtoReflect() protoreflect.Message {
+ mi := &file_machine_proto_msgTypes[0]
+ 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 SMGameLinkSucceed.ProtoReflect.Descriptor instead.
+func (*SMGameLinkSucceed) Descriptor() ([]byte, []int) {
+ return file_machine_proto_rawDescGZIP(), []int{0}
+}
+
+//操作
+type SMDollMachineoPerate struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"`
+ Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` //娃娃机标识
+ Perate int32 `protobuf:"varint,3,opt,name=Perate,proto3" json:"Perate,omitempty"` // 1-前 2-后 3-左 4-右 5-投币
+}
+
+func (x *SMDollMachineoPerate) Reset() {
+ *x = SMDollMachineoPerate{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_machine_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SMDollMachineoPerate) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SMDollMachineoPerate) ProtoMessage() {}
+
+func (x *SMDollMachineoPerate) ProtoReflect() protoreflect.Message {
+ mi := &file_machine_proto_msgTypes[1]
+ 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 SMDollMachineoPerate.ProtoReflect.Descriptor instead.
+func (*SMDollMachineoPerate) Descriptor() ([]byte, []int) {
+ return file_machine_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SMDollMachineoPerate) GetSnid() int32 {
+ if x != nil {
+ return x.Snid
+ }
+ return 0
+}
+
+func (x *SMDollMachineoPerate) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *SMDollMachineoPerate) GetPerate() int32 {
+ if x != nil {
+ return x.Perate
+ }
+ return 0
+}
+
+//下抓
+type SMDollMachineGrab struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-弱力抓 2 -强力抓 3-必出抓
+ Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` //娃娃机标识
+ Snid int32 `protobuf:"varint,3,opt,name=Snid,proto3" json:"Snid,omitempty"`
+}
+
+func (x *SMDollMachineGrab) Reset() {
+ *x = SMDollMachineGrab{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_machine_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SMDollMachineGrab) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SMDollMachineGrab) ProtoMessage() {}
+
+func (x *SMDollMachineGrab) ProtoReflect() protoreflect.Message {
+ mi := &file_machine_proto_msgTypes[2]
+ 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 SMDollMachineGrab.ProtoReflect.Descriptor instead.
+func (*SMDollMachineGrab) Descriptor() ([]byte, []int) {
+ return file_machine_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *SMDollMachineGrab) GetTypeId() int32 {
+ if x != nil {
+ return x.TypeId
+ }
+ return 0
+}
+
+func (x *SMDollMachineGrab) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *SMDollMachineGrab) GetSnid() int32 {
+ if x != nil {
+ return x.Snid
+ }
+ return 0
+}
+
+//返回下抓结果
+type MSDollMachineGrab struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"`
+ Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` //娃娃机标识
+ Result int32 `protobuf:"varint,3,opt,name=Result,proto3" json:"Result,omitempty"` //1-中奖 其他未中奖
+}
+
+func (x *MSDollMachineGrab) Reset() {
+ *x = MSDollMachineGrab{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_machine_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MSDollMachineGrab) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MSDollMachineGrab) ProtoMessage() {}
+
+func (x *MSDollMachineGrab) ProtoReflect() protoreflect.Message {
+ mi := &file_machine_proto_msgTypes[3]
+ 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 MSDollMachineGrab.ProtoReflect.Descriptor instead.
+func (*MSDollMachineGrab) Descriptor() ([]byte, []int) {
+ return file_machine_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *MSDollMachineGrab) GetSnid() int32 {
+ if x != nil {
+ return x.Snid
+ }
+ return 0
+}
+
+func (x *MSDollMachineGrab) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *MSDollMachineGrab) GetResult() int32 {
+ if x != nil {
+ return x.Result
+ }
+ return 0
+}
+
+//返回所有娃娃机连接
+type MSDollMachineList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Data []*DollMachine `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
+}
+
+func (x *MSDollMachineList) Reset() {
+ *x = MSDollMachineList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_machine_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MSDollMachineList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MSDollMachineList) ProtoMessage() {}
+
+func (x *MSDollMachineList) ProtoReflect() protoreflect.Message {
+ mi := &file_machine_proto_msgTypes[4]
+ 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 MSDollMachineList.ProtoReflect.Descriptor instead.
+func (*MSDollMachineList) Descriptor() ([]byte, []int) {
+ return file_machine_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *MSDollMachineList) GetData() []*DollMachine {
+ if x != nil {
+ return x.Data
+ }
+ return nil
+}
+
+type DollMachine struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"`
+ VideoAddr string `protobuf:"bytes,2,opt,name=VideoAddr,proto3" json:"VideoAddr,omitempty"`
+}
+
+func (x *DollMachine) Reset() {
+ *x = DollMachine{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_machine_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DollMachine) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DollMachine) ProtoMessage() {}
+
+func (x *DollMachine) ProtoReflect() protoreflect.Message {
+ mi := &file_machine_proto_msgTypes[5]
+ 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 DollMachine.ProtoReflect.Descriptor instead.
+func (*DollMachine) Descriptor() ([]byte, []int) {
+ return file_machine_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *DollMachine) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *DollMachine) GetVideoAddr() string {
+ if x != nil {
+ return x.VideoAddr
+ }
+ return ""
+}
+
+var File_machine_proto protoreflect.FileDescriptor
+
+var file_machine_proto_rawDesc = []byte{
+ 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+ 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x4d, 0x47, 0x61,
+ 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x22, 0x52, 0x0a,
+ 0x14, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x6f, 0x50,
+ 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x65, 0x72,
+ 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x65, 0x72, 0x61, 0x74,
+ 0x65, 0x22, 0x4f, 0x0a, 0x11, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x47, 0x72, 0x61, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x0e,
+ 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
+ 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x11, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x22, 0x3d, 0x0a, 0x11, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63,
+ 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x2e, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61,
+ 0x74, 0x61, 0x22, 0x3b, 0x0a, 0x0b, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
+ 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x2a,
+ 0xd5, 0x01, 0x0a, 0x13, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50,
+ 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5a,
+ 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x53, 0x4d, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65,
+ 0x64, 0x10, 0xa0, 0x9c, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x72,
+ 0x61, 0x74, 0x65, 0x10, 0xa1, 0x9c, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47,
+ 0x72, 0x61, 0x62, 0x10, 0xa2, 0x9c, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47,
+ 0x72, 0x61, 0x62, 0x10, 0xa3, 0x9c, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c,
+ 0x69, 0x73, 0x74, 0x10, 0xa4, 0x9c, 0x01, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f,
+ 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_machine_proto_rawDescOnce sync.Once
+ file_machine_proto_rawDescData = file_machine_proto_rawDesc
+)
+
+func file_machine_proto_rawDescGZIP() []byte {
+ file_machine_proto_rawDescOnce.Do(func() {
+ file_machine_proto_rawDescData = protoimpl.X.CompressGZIP(file_machine_proto_rawDescData)
+ })
+ return file_machine_proto_rawDescData
+}
+
+var file_machine_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_machine_proto_goTypes = []interface{}{
+ (DollMachinePacketID)(0), // 0: machine.DollMachinePacketID
+ (*SMGameLinkSucceed)(nil), // 1: machine.SMGameLinkSucceed
+ (*SMDollMachineoPerate)(nil), // 2: machine.SMDollMachineoPerate
+ (*SMDollMachineGrab)(nil), // 3: machine.SMDollMachineGrab
+ (*MSDollMachineGrab)(nil), // 4: machine.MSDollMachineGrab
+ (*MSDollMachineList)(nil), // 5: machine.MSDollMachineList
+ (*DollMachine)(nil), // 6: machine.DollMachine
+}
+var file_machine_proto_depIdxs = []int32{
+ 6, // 0: machine.MSDollMachineList.data:type_name -> machine.DollMachine
+ 1, // [1:1] is the sub-list for method output_type
+ 1, // [1:1] is the sub-list for method input_type
+ 1, // [1:1] is the sub-list for extension type_name
+ 1, // [1:1] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_machine_proto_init() }
+func file_machine_proto_init() {
+ if File_machine_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_machine_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SMGameLinkSucceed); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_machine_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SMDollMachineoPerate); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_machine_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SMDollMachineGrab); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_machine_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MSDollMachineGrab); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_machine_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MSDollMachineList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_machine_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DollMachine); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_machine_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 6,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_machine_proto_goTypes,
+ DependencyIndexes: file_machine_proto_depIdxs,
+ EnumInfos: file_machine_proto_enumTypes,
+ MessageInfos: file_machine_proto_msgTypes,
+ }.Build()
+ File_machine_proto = out.File
+ file_machine_proto_rawDesc = nil
+ file_machine_proto_goTypes = nil
+ file_machine_proto_depIdxs = nil
+}
diff --git a/protocol/machine/machine.proto b/protocol/machine/machine.proto
new file mode 100644
index 0000000..00b6124
--- /dev/null
+++ b/protocol/machine/machine.proto
@@ -0,0 +1,48 @@
+syntax = "proto3";
+package machine;
+option go_package = "mongo.games.com/game/protocol/machine";
+
+//S-GAME M-娃娃机主机
+
+//娃娃机协议
+enum DollMachinePacketID {
+ PACKET_SMDollMachineZero = 0;
+ PACKET_SMGameLinkSucceed = 20000;
+ PACKET_SMDollMachinePerate = 20001;
+ PACKET_SMDollMachineGrab = 20002;
+ PACKET_MSDollMachineGrab = 20003;
+ PACKET_MSDollMachineList = 20004;
+}
+//通知链接成功
+message SMGameLinkSucceed{
+}
+
+//操作
+message SMDollMachineoPerate{
+ int32 Snid = 1;
+ int32 Id = 2; //娃娃机标识
+ int32 Perate = 3; // 1-前 2-后 3-左 4-右 5-投币
+}
+
+//下抓
+message SMDollMachineGrab{
+ int32 TypeId = 1;//1-弱力抓 2 -强力抓 3-必出抓
+ int32 Id =2; //娃娃机标识
+ int32 Snid = 3;
+}
+
+//返回下抓结果
+message MSDollMachineGrab{
+ int32 Snid = 1;
+ int32 Id = 2; //娃娃机标识
+ int32 Result = 3;//1-中奖 其他未中奖
+}
+
+//返回所有娃娃机连接
+message MSDollMachineList{
+ repeated DollMachine data = 1;
+}
+message DollMachine{
+ int32 Id = 1;
+ string VideoAddr = 2;
+}
\ No newline at end of file
diff --git a/protocol/player/player.pb.go b/protocol/player/player.pb.go
index ac836b7..d6670e6 100644
--- a/protocol/player/player.pb.go
+++ b/protocol/player/player.pb.go
@@ -87,6 +87,12 @@ const (
OpResultCode_OPRC_Jyb_CodeErr OpResultCode = 2103 //请输入正确的兑换码
OpResultCode_OPRC_Hundred_YouHadBetCannotLeave OpResultCode = 7001 //赢下注不能离开
OpResultCode_OPRC_Hundred_YouHadBankerCannotLeave OpResultCode = 7002 //已上庄不能离开
+ OpResultCode_OPRC_GuideStep_Finish OpResultCode = 8001 //该引导步骤已完成
+ OpResultCode_OPRC_GuideStep_Front OpResultCode = 8002 //前一个引导步骤未完成
+ OpResultCode_OPRC_GuideStep_End OpResultCode = 8003 //新手引导已结束
+ OpResultCode_OPRC_Guide_Close OpResultCode = 8004 //新手引导已关闭
+ OpResultCode_OPRC_Guide_Skip OpResultCode = 8005 //新手引导已跳过
+ OpResultCode_OPRC_Guide_SkipClose OpResultCode = 8006 //新手引导不能跳过
)
// Enum value maps for OpResultCode.
@@ -154,6 +160,12 @@ var (
2103: "OPRC_Jyb_CodeErr",
7001: "OPRC_Hundred_YouHadBetCannotLeave",
7002: "OPRC_Hundred_YouHadBankerCannotLeave",
+ 8001: "OPRC_GuideStep_Finish",
+ 8002: "OPRC_GuideStep_Front",
+ 8003: "OPRC_GuideStep_End",
+ 8004: "OPRC_Guide_Close",
+ 8005: "OPRC_Guide_Skip",
+ 8006: "OPRC_Guide_SkipClose",
}
OpResultCode_value = map[string]int32{
"OPRC_Sucess": 0,
@@ -218,6 +230,12 @@ var (
"OPRC_Jyb_CodeErr": 2103,
"OPRC_Hundred_YouHadBetCannotLeave": 7001,
"OPRC_Hundred_YouHadBankerCannotLeave": 7002,
+ "OPRC_GuideStep_Finish": 8001,
+ "OPRC_GuideStep_Front": 8002,
+ "OPRC_GuideStep_End": 8003,
+ "OPRC_Guide_Close": 8004,
+ "OPRC_Guide_Skip": 8005,
+ "OPRC_Guide_SkipClose": 8006,
}
)
@@ -391,6 +409,10 @@ const (
PlayerPacketID_PACKET_SCAwardLog PlayerPacketID = 2837 //返回获奖记录
PlayerPacketID_PACKET_CSPopUpWindowsConfig PlayerPacketID = 2838 //请求弹窗配置
PlayerPacketID_PACKET_SCPopUpWindowsConfig PlayerPacketID = 2839 //返回弹窗配置
+ PlayerPacketID_PACKET_CSUpdateAttribute PlayerPacketID = 2840 //请求更新属性
+ PlayerPacketID_PACKET_SCUpdateAttribute PlayerPacketID = 2841 //返回更新属性
+ PlayerPacketID_PACKET_SCGuideConfig PlayerPacketID = 2842 //返回引导配置
+ PlayerPacketID_PACKET_SCDataConfig PlayerPacketID = 2843 //通知配置更新
)
// Enum value maps for PlayerPacketID.
@@ -534,6 +556,10 @@ var (
2837: "PACKET_SCAwardLog",
2838: "PACKET_CSPopUpWindowsConfig",
2839: "PACKET_SCPopUpWindowsConfig",
+ 2840: "PACKET_CSUpdateAttribute",
+ 2841: "PACKET_SCUpdateAttribute",
+ 2842: "PACKET_SCGuideConfig",
+ 2843: "PACKET_SCDataConfig",
}
PlayerPacketID_value = map[string]int32{
"PACKET_PLAYERPACKET_ZERO": 0,
@@ -674,6 +700,10 @@ var (
"PACKET_SCAwardLog": 2837,
"PACKET_CSPopUpWindowsConfig": 2838,
"PACKET_SCPopUpWindowsConfig": 2839,
+ "PACKET_CSUpdateAttribute": 2840,
+ "PACKET_SCUpdateAttribute": 2841,
+ "PACKET_SCGuideConfig": 2842,
+ "PACKET_SCDataConfig": 2843,
}
)
@@ -1259,6 +1289,7 @@ type PlayerData struct {
RequestAddFriend []int32 `protobuf:"varint,49,rep,packed,name=RequestAddFriend,proto3" json:"RequestAddFriend,omitempty"` //请求添加好友信息
UseSkinId int32 `protobuf:"varint,50,opt,name=UseSkinId,proto3" json:"UseSkinId,omitempty"` // 皮肤id
ChannelID string `protobuf:"bytes,51,opt,name=ChannelID,proto3" json:"ChannelID,omitempty"` // 渠道ID
+ GuideStep int32 `protobuf:"varint,52,opt,name=GuideStep,proto3" json:"GuideStep,omitempty"` // 引导步骤; 最小为0,-1表示跳过引导了
}
func (x *PlayerData) Reset() {
@@ -1650,6 +1681,13 @@ func (x *PlayerData) GetChannelID() string {
return ""
}
+func (x *PlayerData) GetGuideStep() int32 {
+ if x != nil {
+ return x.GuideStep
+ }
+ return 0
+}
+
//周卡数据
type WeekInfo struct {
state protoimpl.MessageState
@@ -7420,7 +7458,8 @@ type CSVIPDraw struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 领取编号 0.每日礼包
+ Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 领取编号 0.每日礼包 1.等级礼包(Privilege9)
+ Vip int32 `protobuf:"varint,2,opt,name=Vip,proto3" json:"Vip,omitempty"` //领取的礼包vip等级
}
func (x *CSVIPDraw) Reset() {
@@ -7462,6 +7501,13 @@ func (x *CSVIPDraw) GetId() int32 {
return 0
}
+func (x *CSVIPDraw) GetVip() int32 {
+ if x != nil {
+ return x.Vip
+ }
+ return 0
+}
+
//VIP领取
//PACKET_SC_DRAWVIPGIFT
type SCVIPDraw struct {
@@ -7469,9 +7515,10 @@ type SCVIPDraw struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 领取编号 0.每日礼包 1.每日金币礼包 2.VIP礼包
- Vip int32 `protobuf:"varint,2,opt,name=Vip,proto3" json:"Vip,omitempty"` //领取的礼包vip等级
- OpRetCode OpResultCode `protobuf:"varint,3,opt,name=OpRetCode,proto3,enum=player.OpResultCode" json:"OpRetCode,omitempty"` //操作结果
+ Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 领取编号
+ Vip int32 `protobuf:"varint,2,opt,name=Vip,proto3" json:"Vip,omitempty"` //领取的礼包vip等级
+ OpRetCode OpResultCode `protobuf:"varint,3,opt,name=OpRetCode,proto3,enum=player.OpResultCode" json:"OpRetCode,omitempty"` //操作结果
+ Award map[int64]int64 `protobuf:"bytes,4,rep,name=Award,proto3" json:"Award,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //获得奖励
}
func (x *SCVIPDraw) Reset() {
@@ -7527,6 +7574,13 @@ func (x *SCVIPDraw) GetOpRetCode() OpResultCode {
return OpResultCode_OPRC_Sucess
}
+func (x *SCVIPDraw) GetAward() map[int64]int64 {
+ if x != nil {
+ return x.Award
+ }
+ return nil
+}
+
//VIP信息
//PACKET_CS_VIPINFO
type CSVIPInfo struct {
@@ -7572,24 +7626,26 @@ type VIPcfg struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- VipId int32 `protobuf:"varint,1,opt,name=VipId,proto3" json:"VipId,omitempty"` // 序号
- Item []*ItemInfo `protobuf:"bytes,2,rep,name=Item,proto3" json:"Item,omitempty"` // 道具
- VipEx int32 `protobuf:"varint,3,opt,name=VipEx,proto3" json:"VipEx,omitempty"` // VIP经验
- Price int64 `protobuf:"varint,4,opt,name=Price,proto3" json:"Price,omitempty"` // 金额
- Privilege1 []int32 `protobuf:"varint,5,rep,packed,name=Privilege1,proto3" json:"Privilege1,omitempty"` //每日礼包
- LineId []int32 `protobuf:"varint,6,rep,packed,name=LineId,proto3" json:"LineId,omitempty"` //头像框Id
- Privilege2 []int32 `protobuf:"varint,7,rep,packed,name=Privilege2,proto3" json:"Privilege2,omitempty"` //每日金币礼包1金币值2代表充值的金额
- Privilege3 []int32 `protobuf:"varint,8,rep,packed,name=Privilege3,proto3" json:"Privilege3,omitempty"` //VIP商城刷新次数和商品数量
- Privilege4 int32 `protobuf:"varint,9,opt,name=Privilege4,proto3" json:"Privilege4,omitempty"` //赛季积分的加成比例
- Privilege5 int32 `protobuf:"varint,10,opt,name=Privilege5,proto3" json:"Privilege5,omitempty"` //月卡到哦句领取金币的比例
- Privilege6 int32 `protobuf:"varint,11,opt,name=Privilege6,proto3" json:"Privilege6,omitempty"` //充值额外获取的钻石比例
- Privilege7 []*ItemInfo `protobuf:"bytes,12,rep,name=Privilege7,proto3" json:"Privilege7,omitempty"` //固定VIP礼包
- Privilege7Price int32 `protobuf:"varint,13,opt,name=Privilege7Price,proto3" json:"Privilege7Price,omitempty"`
- Privilege8 int32 `protobuf:"varint,14,opt,name=Privilege8,proto3" json:"Privilege8,omitempty"` //VIP客服标识
- ShopId2 int32 `protobuf:"varint,15,opt,name=ShopId2,proto3" json:"ShopId2,omitempty"`
- ShopId7 int32 `protobuf:"varint,16,opt,name=ShopId7,proto3" json:"ShopId7,omitempty"`
- BagStatus []int32 `protobuf:"varint,17,rep,packed,name=BagStatus,proto3" json:"BagStatus,omitempty"` //每日礼包|每日金币礼包|固定VIP礼包 0可领取 1不可领取
- MatchFreeTimes int32 `protobuf:"varint,18,opt,name=MatchFreeTimes,proto3" json:"MatchFreeTimes,omitempty"` // 比赛免费次数
+ VipId int32 `protobuf:"varint,1,opt,name=VipId,proto3" json:"VipId,omitempty"` // 序号
+ Item []*ItemInfo `protobuf:"bytes,2,rep,name=Item,proto3" json:"Item,omitempty"` // 道具
+ VipEx int32 `protobuf:"varint,3,opt,name=VipEx,proto3" json:"VipEx,omitempty"` // VIP经验
+ Price int64 `protobuf:"varint,4,opt,name=Price,proto3" json:"Price,omitempty"` // 金额
+ Privilege1 map[int64]int64 `protobuf:"bytes,5,rep,name=Privilege1,proto3" json:"Privilege1,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //每日礼包
+ LineId []int32 `protobuf:"varint,6,rep,packed,name=LineId,proto3" json:"LineId,omitempty"` //头像框Id
+ Privilege2 []int32 `protobuf:"varint,7,rep,packed,name=Privilege2,proto3" json:"Privilege2,omitempty"` //每日金币礼包1金币值2代表充值的金额
+ Privilege3 []int32 `protobuf:"varint,8,rep,packed,name=Privilege3,proto3" json:"Privilege3,omitempty"` //VIP商城刷新次数和商品数量
+ Privilege4 int32 `protobuf:"varint,9,opt,name=Privilege4,proto3" json:"Privilege4,omitempty"` //赛季积分的加成比例
+ Privilege5 int32 `protobuf:"varint,10,opt,name=Privilege5,proto3" json:"Privilege5,omitempty"` //月卡到哦句领取金币的比例
+ Privilege6 int32 `protobuf:"varint,11,opt,name=Privilege6,proto3" json:"Privilege6,omitempty"` //充值额外获取的钻石比例
+ Privilege7 []*ItemInfo `protobuf:"bytes,12,rep,name=Privilege7,proto3" json:"Privilege7,omitempty"` //固定VIP礼包
+ Privilege7Price int32 `protobuf:"varint,13,opt,name=Privilege7Price,proto3" json:"Privilege7Price,omitempty"`
+ Privilege8 int32 `protobuf:"varint,14,opt,name=Privilege8,proto3" json:"Privilege8,omitempty"` //VIP客服标识
+ ShopId2 int32 `protobuf:"varint,15,opt,name=ShopId2,proto3" json:"ShopId2,omitempty"`
+ ShopId7 int32 `protobuf:"varint,16,opt,name=ShopId7,proto3" json:"ShopId7,omitempty"`
+ BagStatus []int32 `protobuf:"varint,17,rep,packed,name=BagStatus,proto3" json:"BagStatus,omitempty"` //每日礼包|每日金币礼包|固定VIP礼包|等级礼包 0可领取 1不可领取
+ MatchFreeTimes int32 `protobuf:"varint,18,opt,name=MatchFreeTimes,proto3" json:"MatchFreeTimes,omitempty"` // 比赛免费次数
+ Privilege9 map[int64]int64 `protobuf:"bytes,19,rep,name=Privilege9,proto3" json:"Privilege9,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // vip免费礼包,每个vip等级领取一次
+ PrivilegeShow int32 `protobuf:"varint,20,opt,name=PrivilegeShow,proto3" json:"PrivilegeShow,omitempty"` // Privilege9 原价
}
func (x *VIPcfg) Reset() {
@@ -7652,7 +7708,7 @@ func (x *VIPcfg) GetPrice() int64 {
return 0
}
-func (x *VIPcfg) GetPrivilege1() []int32 {
+func (x *VIPcfg) GetPrivilege1() map[int64]int64 {
if x != nil {
return x.Privilege1
}
@@ -7750,6 +7806,20 @@ func (x *VIPcfg) GetMatchFreeTimes() int32 {
return 0
}
+func (x *VIPcfg) GetPrivilege9() map[int64]int64 {
+ if x != nil {
+ return x.Privilege9
+ }
+ return nil
+}
+
+func (x *VIPcfg) GetPrivilegeShow() int32 {
+ if x != nil {
+ return x.PrivilegeShow
+ }
+ return 0
+}
+
//VIP信息
//PACKET_SC_VIPINFO
type SCVIPInfo struct {
@@ -8077,8 +8147,11 @@ type SCPayGoodsInfo struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Gold []int32 `protobuf:"varint,1,rep,packed,name=Gold,proto3" json:"Gold,omitempty"` // 0.金币 1.钻石 3.经验
- Item []*PayItem `protobuf:"bytes,2,rep,name=Item,proto3" json:"Item,omitempty"` // 道具
+ Gold []int32 `protobuf:"varint,1,rep,packed,name=Gold,proto3" json:"Gold,omitempty"` // 0.金币 1.钻石 3.经验
+ Item []*PayItem `protobuf:"bytes,2,rep,name=Item,proto3" json:"Item,omitempty"` // 道具
+ ShopId int32 `protobuf:"varint,3,opt,name=ShopId,proto3" json:"ShopId,omitempty"` // 商品id
+ Money int64 `protobuf:"varint,4,opt,name=Money,proto3" json:"Money,omitempty"` // 现金
+ Name string `protobuf:"bytes,5,opt,name=Name,proto3" json:"Name,omitempty"` // 名称
}
func (x *SCPayGoodsInfo) Reset() {
@@ -8127,6 +8200,27 @@ func (x *SCPayGoodsInfo) GetItem() []*PayItem {
return nil
}
+func (x *SCPayGoodsInfo) GetShopId() int32 {
+ if x != nil {
+ return x.ShopId
+ }
+ return 0
+}
+
+func (x *SCPayGoodsInfo) GetMoney() int64 {
+ if x != nil {
+ return x.Money
+ }
+ return 0
+}
+
+func (x *SCPayGoodsInfo) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
// 资源更新
//PACKET_SC_RESOURCE
type SCResource struct {
@@ -10626,6 +10720,345 @@ func (x *WindowsInfo) GetGainNum() int32 {
return 0
}
+//PACKET_CSUpdateAttribute
+type CSUpdateAttribute struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 1.更新新手引导阶段 2.跳过新手引导 3.更新新手引导状态(测试用)
+ Param []int64 `protobuf:"varint,2,rep,packed,name=Param,proto3" json:"Param,omitempty"`
+}
+
+func (x *CSUpdateAttribute) Reset() {
+ *x = CSUpdateAttribute{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_player_proto_msgTypes[153]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CSUpdateAttribute) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CSUpdateAttribute) ProtoMessage() {}
+
+func (x *CSUpdateAttribute) ProtoReflect() protoreflect.Message {
+ mi := &file_player_proto_msgTypes[153]
+ 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 CSUpdateAttribute.ProtoReflect.Descriptor instead.
+func (*CSUpdateAttribute) Descriptor() ([]byte, []int) {
+ return file_player_proto_rawDescGZIP(), []int{153}
+}
+
+func (x *CSUpdateAttribute) GetTp() int32 {
+ if x != nil {
+ return x.Tp
+ }
+ return 0
+}
+
+func (x *CSUpdateAttribute) GetParam() []int64 {
+ if x != nil {
+ return x.Param
+ }
+ return nil
+}
+
+//PACKET_SCUpdateAttribute
+type SCUpdateAttribute struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=player.OpResultCode" json:"OpRetCode,omitempty"` //操作结果
+ Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"`
+ Param []int64 `protobuf:"varint,3,rep,packed,name=Param,proto3" json:"Param,omitempty"`
+}
+
+func (x *SCUpdateAttribute) Reset() {
+ *x = SCUpdateAttribute{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_player_proto_msgTypes[154]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCUpdateAttribute) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCUpdateAttribute) ProtoMessage() {}
+
+func (x *SCUpdateAttribute) ProtoReflect() protoreflect.Message {
+ mi := &file_player_proto_msgTypes[154]
+ 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 SCUpdateAttribute.ProtoReflect.Descriptor instead.
+func (*SCUpdateAttribute) Descriptor() ([]byte, []int) {
+ return file_player_proto_rawDescGZIP(), []int{154}
+}
+
+func (x *SCUpdateAttribute) GetOpRetCode() OpResultCode {
+ if x != nil {
+ return x.OpRetCode
+ }
+ return OpResultCode_OPRC_Sucess
+}
+
+func (x *SCUpdateAttribute) GetTp() int32 {
+ if x != nil {
+ return x.Tp
+ }
+ return 0
+}
+
+func (x *SCUpdateAttribute) GetParam() []int64 {
+ if x != nil {
+ return x.Param
+ }
+ return nil
+}
+
+//PACKET_SCGuideConfig
+type SCGuideConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 引导开关 1开启 2关闭
+ Skip int32 `protobuf:"varint,3,opt,name=Skip,proto3" json:"Skip,omitempty"` // 引导跳过开关 1开启 2关闭
+}
+
+func (x *SCGuideConfig) Reset() {
+ *x = SCGuideConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_player_proto_msgTypes[155]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCGuideConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCGuideConfig) ProtoMessage() {}
+
+func (x *SCGuideConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_player_proto_msgTypes[155]
+ 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 SCGuideConfig.ProtoReflect.Descriptor instead.
+func (*SCGuideConfig) Descriptor() ([]byte, []int) {
+ return file_player_proto_rawDescGZIP(), []int{155}
+}
+
+func (x *SCGuideConfig) GetOn() int32 {
+ if x != nil {
+ return x.On
+ }
+ return 0
+}
+
+func (x *SCGuideConfig) GetSkip() int32 {
+ if x != nil {
+ return x.Skip
+ }
+ return 0
+}
+
+type Config struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Tp 类型:
+ // 1:小精灵快捷入口 On开关 Value地址
+ // 2: ...
+ // ...
+ Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"`
+ On bool `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"`
+ Value string `protobuf:"bytes,3,opt,name=Value,proto3" json:"Value,omitempty"`
+ Num int64 `protobuf:"varint,4,opt,name=Num,proto3" json:"Num,omitempty"`
+ Values []string `protobuf:"bytes,5,rep,name=Values,proto3" json:"Values,omitempty"`
+ Nums []int64 `protobuf:"varint,6,rep,packed,name=Nums,proto3" json:"Nums,omitempty"`
+ Ons []bool `protobuf:"varint,7,rep,packed,name=Ons,proto3" json:"Ons,omitempty"`
+ Map map[int64]int64 `protobuf:"bytes,8,rep,name=Map,proto3" json:"Map,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+ MapStr map[string]string `protobuf:"bytes,9,rep,name=MapStr,proto3" json:"MapStr,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *Config) Reset() {
+ *x = Config{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_player_proto_msgTypes[156]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Config) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Config) ProtoMessage() {}
+
+func (x *Config) ProtoReflect() protoreflect.Message {
+ mi := &file_player_proto_msgTypes[156]
+ 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 Config.ProtoReflect.Descriptor instead.
+func (*Config) Descriptor() ([]byte, []int) {
+ return file_player_proto_rawDescGZIP(), []int{156}
+}
+
+func (x *Config) GetTp() int32 {
+ if x != nil {
+ return x.Tp
+ }
+ return 0
+}
+
+func (x *Config) GetOn() bool {
+ if x != nil {
+ return x.On
+ }
+ return false
+}
+
+func (x *Config) GetValue() string {
+ if x != nil {
+ return x.Value
+ }
+ return ""
+}
+
+func (x *Config) GetNum() int64 {
+ if x != nil {
+ return x.Num
+ }
+ return 0
+}
+
+func (x *Config) GetValues() []string {
+ if x != nil {
+ return x.Values
+ }
+ return nil
+}
+
+func (x *Config) GetNums() []int64 {
+ if x != nil {
+ return x.Nums
+ }
+ return nil
+}
+
+func (x *Config) GetOns() []bool {
+ if x != nil {
+ return x.Ons
+ }
+ return nil
+}
+
+func (x *Config) GetMap() map[int64]int64 {
+ if x != nil {
+ return x.Map
+ }
+ return nil
+}
+
+func (x *Config) GetMapStr() map[string]string {
+ if x != nil {
+ return x.MapStr
+ }
+ return nil
+}
+
+//PACKET_SCDataConfig
+type SCDataConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Cfg []*Config `protobuf:"bytes,1,rep,name=Cfg,proto3" json:"Cfg,omitempty"`
+}
+
+func (x *SCDataConfig) Reset() {
+ *x = SCDataConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_player_proto_msgTypes[157]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCDataConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCDataConfig) ProtoMessage() {}
+
+func (x *SCDataConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_player_proto_msgTypes[157]
+ 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 SCDataConfig.ProtoReflect.Descriptor instead.
+func (*SCDataConfig) Descriptor() ([]byte, []int) {
+ return file_player_proto_rawDescGZIP(), []int{157}
+}
+
+func (x *SCDataConfig) GetCfg() []*Config {
+ if x != nil {
+ return x.Cfg
+ }
+ return nil
+}
+
var File_player_proto protoreflect.FileDescriptor
var file_player_proto_rawDesc = []byte{
@@ -10692,7 +11125,7 @@ var file_player_proto_rawDesc = []byte{
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x42,
0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x41,
0x70, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0a, 0x41, 0x70, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0xdf, 0x0c, 0x0a, 0x0a,
+ 0x0a, 0x41, 0x70, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0xfd, 0x0c, 0x0a, 0x0a,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63,
0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64,
0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01,
@@ -10790,1281 +11223,1368 @@ var file_player_proto_rawDesc = []byte{
0x65, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64,
0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x73, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x49,
0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x33,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x1a,
- 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a,
- 0x08, 0x57, 0x65, 0x65, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x65, 0x65,
- 0x6b, 0x43, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x0c, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a,
- 0x0d, 0x77, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x77, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x49,
- 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47,
- 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d,
- 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x49, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x49, 0x64, 0x22, 0x8c, 0x02,
- 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x32,
- 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x12, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
- 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f,
- 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d,
- 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f,
- 0x67, 0x69, 0x63, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67,
- 0x69, 0x63, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x42, 0x69, 0x6e, 0x64, 0x4f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65,
- 0x41, 0x72, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
- 0x0b, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x04, 0x0a,
- 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65,
- 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x66,
- 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
- 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x56,
- 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, 0x0a,
- 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61,
- 0x6c, 0x12, 0x32, 0x0a, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
- 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c,
- 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x0a,
- 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x47, 0x72,
- 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x09,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a,
- 0x05, 0x56, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x56, 0x43,
- 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64,
- 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72,
- 0x61, 0x64, 0x65, 0x12, 0x47, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65,
- 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e,
- 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
- 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0a, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x0b,
- 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x3c,
- 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x11,
- 0x43, 0x53, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74,
- 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
- 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x6c,
- 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x22,
- 0x0a, 0x0c, 0x43, 0x53, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x12,
- 0x0a, 0x04, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x69,
- 0x63, 0x6b, 0x22, 0x56, 0x0a, 0x0c, 0x53, 0x43, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x69,
- 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f,
- 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52,
- 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x69, 0x63, 0x6b, 0x22, 0x94, 0x01, 0x0a, 0x10, 0x43,
- 0x53, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12,
- 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
- 0x20, 0x0a, 0x0b, 0x4f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
- 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77,
- 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d,
- 0x70, 0x22, 0x66, 0x0a, 0x10, 0x53, 0x43, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73,
- 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65,
- 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09,
- 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x28, 0x0a, 0x12, 0x43, 0x53, 0x50,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12,
- 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x49,
- 0x63, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52,
- 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x49, 0x63, 0x6f,
- 0x6e, 0x22, 0x3d, 0x0a, 0x19, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x20,
- 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65,
- 0x22, 0x71, 0x0a, 0x19, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x32, 0x0a,
- 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c,
- 0x69, 0x6e, 0x65, 0x22, 0x25, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x22, 0x59, 0x0a, 0x11, 0x53, 0x43,
- 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x78, 0x12,
- 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
- 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x03, 0x53, 0x65, 0x78, 0x22, 0x1d, 0x0a, 0x09, 0x43, 0x53, 0x48, 0x65, 0x61, 0x64, 0x55,
- 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x55, 0x72, 0x6c, 0x22, 0x51, 0x0a, 0x09, 0x53, 0x43, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72,
- 0x6c, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65,
- 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0xc2, 0x01, 0x0a, 0x18, 0x43, 0x53, 0x50, 0x6c,
- 0x61, 0x79, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20,
- 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67,
- 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45,
- 0x6e, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x6d, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x49, 0x6d, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02,
- 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
- 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7a, 0x0a, 0x18,
- 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65,
- 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c,
- 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10,
- 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xcc, 0x04, 0x0a, 0x0a, 0x43, 0x53, 0x52,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12,
- 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a,
- 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50,
- 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12,
- 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a,
- 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41,
- 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, 0x10, 0x0a,
- 0x03, 0x54, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12,
- 0x20, 0x0a, 0x0b, 0x54, 0x65, 0x6c, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0c,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x65, 0x6c, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
- 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x56, 0x65, 0x72,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a,
- 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x0e, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x12,
- 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x50,
- 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x61,
- 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
- 0x72, 0x54, 0x72, 0x65, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x50, 0x72, 0x6f,
- 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x43, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65,
- 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09,
- 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63,
- 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x12,
- 0x14, 0x0a, 0x05, 0x53, 0x72, 0x76, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
- 0x53, 0x72, 0x76, 0x54, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x10, 0x43, 0x53, 0x55, 0x70, 0x67, 0x72,
- 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65,
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x10,
- 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73,
- 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73,
- 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d,
- 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61,
- 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61,
- 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x54, 0x61, 0x67, 0x22, 0x78, 0x0a, 0x10, 0x53, 0x43, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64,
- 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65,
- 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c,
- 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03,
- 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x1e,
- 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x94,
- 0x01, 0x0a, 0x0c, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x12,
- 0x24, 0x0a, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41,
- 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x6c,
- 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54,
- 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
- 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73,
- 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73,
- 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64,
- 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
- 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
- 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x6c,
- 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41,
- 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x43, 0x53, 0x42, 0x69, 0x6e,
- 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e,
- 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x42,
- 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a,
- 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50,
- 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50,
- 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x42, 0x69,
- 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
- 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
- 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x61,
- 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x20,
- 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61,
- 0x6d, 0x65, 0x22, 0x3e, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c,
- 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c,
- 0x61, 0x67, 0x22, 0x5e, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f,
- 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
- 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41,
- 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f,
- 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f,
- 0x69, 0x6e, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52,
- 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x18, 0x0a,
- 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
- 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f,
- 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69,
- 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78,
- 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65,
- 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61,
- 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a,
- 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
- 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x09, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a,
- 0x02, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x16, 0x0a,
- 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52,
- 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x3c, 0x0a, 0x0c, 0x43, 0x53, 0x47, 0x65, 0x74, 0x44, 0x61,
- 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
- 0x56, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x0c, 0x53, 0x43, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61,
- 0x4c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12,
- 0x10, 0x0a, 0x03, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x65,
- 0x72, 0x12, 0x25, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x0f, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f,
- 0x67, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x0b, 0x47, 0x61, 0x6d,
- 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65,
- 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64,
- 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74,
- 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
- 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x65,
- 0x61, 0x76, 0x65, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, 0x65, 0x61,
- 0x76, 0x65, 0x54, 0x73, 0x22, 0x22, 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x47, 0x61, 0x6d,
- 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x6f, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65,
- 0x74, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x32, 0x0a, 0x09,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x12,
+ 0x1c, 0x0a, 0x09, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x18, 0x34, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x09, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x1a, 0x3c, 0x0a,
+ 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x08, 0x57,
+ 0x65, 0x65, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x65, 0x65, 0x6b, 0x43,
+ 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57,
+ 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x77,
+ 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0d, 0x77, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72,
+ 0x64, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d,
+ 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49,
+ 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x49, 0x64, 0x22, 0x8c, 0x02, 0x0a, 0x0c,
+ 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x09,
0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
- 0x12, 0x27, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13,
- 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e,
- 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x6e, 0x0a, 0x0e, 0x43, 0x53, 0x50,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x4f,
- 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x43,
- 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12,
- 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54,
- 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
- 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x8a, 0x01, 0x0a, 0x0e, 0x53, 0x43,
- 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x32, 0x0a, 0x09,
- 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,
- 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
- 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x70,
- 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
- 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43,
- 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42,
- 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x0e, 0x53, 0x61, 0x66, 0x65, 0x42,
- 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67,
- 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x54,
- 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x06, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4f,
- 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0b, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x1e, 0x0a,
- 0x0a, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0a, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x12, 0x0e, 0x0a,
- 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x25, 0x0a,
- 0x13, 0x43, 0x53, 0x47, 0x65, 0x74, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69,
- 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x02, 0x54, 0x73, 0x22, 0x75, 0x0a, 0x13, 0x53, 0x43, 0x47, 0x65, 0x74, 0x53, 0x61, 0x66,
- 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x32, 0x0a, 0x09, 0x4f,
- 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
- 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
- 0x2a, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
- 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f,
- 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x28, 0x0a, 0x12, 0x43,
- 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64,
- 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65,
- 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f,
- 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
- 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22,
- 0x5e, 0x0a, 0x12, 0x43, 0x53, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x50, 0x6c, 0x61, 0x79, 0x65,
- 0x72, 0x50, 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74,
- 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x22,
- 0x96, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x50, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x50, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
- 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
- 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70,
- 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69,
- 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x12, 0x43, 0x53, 0x57, 0x65,
- 0x62, 0x41, 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x12, 0x18,
- 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61,
- 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x57,
- 0x65, 0x62, 0x41, 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x12,
- 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
- 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
- 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43,
- 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x2a, 0x0a, 0x0c, 0x43, 0x53, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e,
- 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x5e, 0x0a,
- 0x0c, 0x53, 0x43, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a,
- 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2c, 0x0a,
- 0x0e, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12,
- 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x60, 0x0a, 0x0e, 0x53,
- 0x43, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a,
- 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x33, 0x0a,
- 0x13, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x53,
- 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x47, 0x65, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f,
- 0x6d, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2a, 0x0a, 0x12, 0x53, 0x43, 0x47, 0x65,
- 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14,
- 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54,
- 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72,
- 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74,
- 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3b, 0x0a,
- 0x10, 0x53, 0x43, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x65, 0x77, 0x4d, 0x73,
- 0x67, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65,
- 0x72, 0x4d, 0x73, 0x67, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2d, 0x0a, 0x13, 0x43, 0x53,
- 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x41, 0x63,
- 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x06, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x47,
- 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64,
- 0x65, 0x22, 0x68, 0x0a, 0x14, 0x53, 0x43, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56,
- 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52,
- 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a,
- 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x27, 0x0a, 0x11, 0x43,
- 0x53, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65,
- 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x43, 0x6f, 0x64, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x53, 0x43, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56,
- 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52,
- 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8d, 0x01,
- 0x0a, 0x11, 0x53, 0x43, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x73, 0x68, 0x69, 0x70, 0x54,
- 0x69, 0x70, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x73, 0x68,
- 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65,
- 0x65, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75,
- 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75,
- 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49,
- 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20,
- 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x29, 0x0a,
- 0x15, 0x43, 0x53, 0x47, 0x65, 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69,
- 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x22, 0x5d, 0x0a, 0x15, 0x53, 0x43, 0x47, 0x65,
- 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64,
- 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65,
- 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x3a, 0x0a, 0x12, 0x43, 0x53, 0x49, 0x6f, 0x73,
- 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49,
- 0x64, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x54, 0x65, 0x6c, 0x22, 0x48, 0x0a, 0x12, 0x53, 0x43, 0x49, 0x6f, 0x73, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52,
- 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70,
- 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x45, 0x0a,
- 0x0b, 0x53, 0x72, 0x76, 0x4d, 0x73, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08,
- 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
- 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x50,
- 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x50,
- 0x61, 0x72, 0x61, 0x6d, 0x22, 0x4d, 0x0a, 0x08, 0x53, 0x43, 0x53, 0x72, 0x76, 0x4d, 0x73, 0x67,
- 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e,
- 0x53, 0x72, 0x76, 0x4d, 0x73, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x50, 0x61, 0x72,
- 0x61, 0x6d, 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x43, 0x53, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x0f, 0x46, 0x69, 0x73, 0x68,
- 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54,
- 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4a, 0x0a, 0x0d, 0x53, 0x43, 0x4a, 0x61, 0x63,
- 0x6b, 0x70, 0x6f, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x4a, 0x61, 0x63, 0x6b,
- 0x70, 0x6f, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
- 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x73, 0x68, 0x4a, 0x61, 0x63, 0x6b, 0x70,
- 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x46, 0x69, 0x73, 0x68, 0x4a, 0x61, 0x63,
- 0x6b, 0x70, 0x6f, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x11, 0x53, 0x43, 0x46, 0x69,
- 0x73, 0x68, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a,
- 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69,
- 0x6e, 0x22, 0x40, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x62,
- 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6e, 0x69, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6e, 0x69, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4e,
- 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x69, 0x63,
- 0x65, 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x53, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65,
- 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x22, 0x2d, 0x0a, 0x13, 0x53, 0x43,
- 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65,
- 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x06, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x0a, 0x50, 0x61,
- 0x79, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x69, 0x76, 0x65,
- 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x69, 0x76, 0x65, 0x4e,
- 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c,
- 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45,
- 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3f, 0x0a, 0x0d,
- 0x53, 0x43, 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a,
- 0x08, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x23, 0x0a,
- 0x0d, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12,
- 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
- 0x49, 0x64, 0x22, 0x45, 0x0a, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x74, 0x12,
- 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12,
- 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
- 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc5, 0x03, 0x0a, 0x0d, 0x53, 0x43,
- 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53,
- 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12,
- 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69,
- 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a,
- 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
- 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x43, 0x61, 0x72, 0x64,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x56, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a,
- 0x08, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x08, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72,
- 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75,
- 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x50, 0x65,
- 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x75, 0x72, 0x50, 0x65,
- 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65,
- 0x4f, 0x72, 0x50, 0x65, 0x74, 0x52, 0x05, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x04,
- 0x50, 0x65, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x74, 0x52, 0x04, 0x50,
- 0x65, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x18,
- 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x12,
- 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67,
- 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x69,
- 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x67, 0x65, 0x18, 0x10,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x41, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d,
- 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49,
- 0x44, 0x22, 0x1b, 0x0a, 0x07, 0x43, 0x53, 0x50, 0x4d, 0x43, 0x6d, 0x64, 0x12, 0x10, 0x0a, 0x03,
- 0x43, 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x43, 0x6d, 0x64, 0x22, 0x28,
- 0x0a, 0x0e, 0x43, 0x53, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x43, 0x68, 0x67, 0x44, 0x61, 0x74, 0x61,
- 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xe4, 0x02, 0x0a, 0x08, 0x49, 0x74, 0x65,
- 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a,
- 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
- 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43,
- 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43,
- 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46,
- 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46,
- 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47,
- 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47,
- 0x6f, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43,
- 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x12, 0x0a,
- 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d,
- 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a,
- 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x54, 0x79,
- 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x22,
- 0x66, 0x0a, 0x0c, 0x4a, 0x79, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12,
- 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x10, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66,
- 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69,
- 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a,
- 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
- 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x43, 0x53, 0x50, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70,
- 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x79,
- 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
- 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
- 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
- 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x47,
- 0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
- 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4a, 0x79, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x52, 0x08, 0x47, 0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x89, 0x01,
- 0x0a, 0x11, 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x74,
- 0x65, 0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x43, 0x47, 0x61,
- 0x6d, 0x65, 0x45, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74,
- 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a,
- 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x08, 0x43, 0x53, 0x56,
- 0x49, 0x50, 0x42, 0x75, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x22, 0x84, 0x01, 0x0a, 0x08,
- 0x53, 0x43, 0x56, 0x49, 0x50, 0x42, 0x75, 0x79, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65,
- 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c,
- 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05,
- 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4d, 0x6f, 0x6e,
- 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x03, 0x56, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x6c, 0x56, 0x69, 0x70, 0x45, 0x78,
- 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x6c, 0x56, 0x69, 0x70, 0x45,
- 0x78, 0x70, 0x22, 0x1b, 0x0a, 0x09, 0x43, 0x53, 0x56, 0x49, 0x50, 0x44, 0x72, 0x61, 0x77, 0x12,
+ 0x12, 0x26, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61,
+ 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d,
+ 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64,
+ 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x69,
+ 0x63, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x69, 0x63,
+ 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x42, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x72,
+ 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x4d,
+ 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x04, 0x0a, 0x12, 0x53,
+ 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69,
+ 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42,
+ 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61,
+ 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x43,
+ 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12,
+ 0x32, 0x0a, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69,
+ 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x54,
+ 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46,
+ 0x6c, 0x6f, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x06, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x47,
+ 0x72, 0x61, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56,
+ 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x56, 0x43, 0x6f, 0x69,
+ 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64,
+ 0x65, 0x12, 0x47, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0c,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x43,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x68,
+ 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
+ 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x3c, 0x0a, 0x0e,
+ 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x11, 0x43, 0x53,
+ 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12,
0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22,
- 0x61, 0x0a, 0x09, 0x53, 0x43, 0x56, 0x49, 0x50, 0x44, 0x72, 0x61, 0x77, 0x12, 0x0e, 0x0a, 0x02,
- 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03,
- 0x56, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x32,
- 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x53, 0x56, 0x49, 0x50, 0x49, 0x6e, 0x66, 0x6f, 0x22,
- 0xbe, 0x04, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69,
- 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64,
- 0x12, 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
- 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, 0x0a, 0x05,
- 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69,
- 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31,
- 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67,
- 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x03,
- 0x28, 0x05, 0x52, 0x06, 0x4c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72,
- 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a,
- 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72,
- 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a,
- 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72,
- 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72,
- 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72,
- 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x30, 0x0a, 0x0a, 0x50, 0x72,
- 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
- 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f,
- 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18,
- 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65,
- 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c,
- 0x65, 0x67, 0x65, 0x38, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76,
- 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64,
- 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32,
- 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61,
- 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x42,
- 0x61, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63,
- 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x22, 0xdf, 0x01, 0x0a, 0x09, 0x53, 0x43, 0x56, 0x49, 0x50, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32,
- 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x0e, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67,
- 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x6c, 0x56, 0x69, 0x70,
- 0x45, 0x78, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x6c, 0x56, 0x69,
- 0x70, 0x45, 0x78, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
- 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4d, 0x6f, 0x6e,
- 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6f,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74,
- 0x69, 0x6f, 0x22, 0x3a, 0x0a, 0x12, 0x53, 0x43, 0x45, 0x61, 0x73, 0x79, 0x57, 0x65, 0x6c, 0x66,
- 0x61, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x57, 0x65, 0x6c, 0x66,
- 0x61, 0x72, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52,
- 0x0d, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x28,
- 0x0a, 0x12, 0x43, 0x53, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65,
- 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x6c, 0x0a, 0x12, 0x53, 0x43, 0x56, 0x49,
- 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
- 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f,
- 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x03, 0x56, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f,
- 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f,
- 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3b, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x49, 0x74, 0x65,
- 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65,
- 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d,
- 0x4e, 0x75, 0x6d, 0x22, 0x49, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x61, 0x79, 0x47, 0x6f, 0x6f, 0x64,
- 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x49, 0x74, 0x65,
- 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
- 0x2e, 0x50, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x1e,
- 0x0a, 0x0a, 0x53, 0x43, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03,
- 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21,
- 0x0a, 0x0b, 0x43, 0x53, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a,
- 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74,
- 0x61, 0x22, 0x41, 0x0a, 0x0b, 0x53, 0x43, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67,
+ 0x3b, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x22, 0x0a, 0x0c,
+ 0x43, 0x53, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04,
+ 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x69, 0x63, 0x6b,
+ 0x22, 0x56, 0x0a, 0x0c, 0x53, 0x43, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x69, 0x63, 0x6b,
0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
- 0x43, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
- 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x4d, 0x61, 0x78,
- 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x6e, 0x4d,
- 0x61, 0x78, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x22, 0x37, 0x0a, 0x13, 0x53, 0x43, 0x50, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20,
- 0x0a, 0x0b, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74,
- 0x22, 0x39, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x70, 0x4c, 0x65,
- 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x22, 0x0f, 0x0a, 0x0d, 0x43,
- 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa1, 0x01, 0x0a,
- 0x0d, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4e,
- 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53,
- 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x42, 0x69, 0x6e,
- 0x64, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x40,
- 0x0a, 0x12, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0x91, 0x01, 0x0a, 0x0f, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53,
- 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65,
- 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54,
- 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
- 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f,
- 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64,
- 0x65, 0x22, 0x4d, 0x0a, 0x09, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x12, 0x1a,
- 0x0a, 0x08, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65,
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04,
- 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65,
- 0x22, 0x35, 0x0a, 0x09, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x12, 0x28, 0x0a,
- 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c,
- 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x0a, 0x43, 0x53, 0x48, 0x74,
- 0x74, 0x70, 0x50, 0x61, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61,
- 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61,
- 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x48,
- 0x74, 0x74, 0x70, 0x50, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x4e, 0x69, 0x63, 0x6b, 0x22, 0x94, 0x01, 0x0a, 0x10, 0x43, 0x53, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a,
+ 0x0b, 0x4f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12,
+ 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+ 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x22,
+ 0x66, 0x0a, 0x10, 0x53, 0x43, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77,
+ 0x6f, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e,
+ 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70,
+ 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x28, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
+ 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x49, 0x63, 0x6f,
+ 0x6e, 0x22, 0x5c, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
- 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41,
- 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70,
- 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a,
- 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x50,
- 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22,
- 0x73, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
- 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x50,
- 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x0a, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49,
- 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04,
- 0x49, 0x74, 0x65, 0x6d, 0x22, 0x32, 0x0a, 0x0e, 0x43, 0x53, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c,
- 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
- 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x6f, 0x74,
- 0x74, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6f, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x68,
- 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f,
- 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74,
- 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65,
- 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13,
- 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49,
- 0x74, 0x65, 0x6d, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x67, 0x0a, 0x0b, 0x4c, 0x6f, 0x74,
- 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d,
- 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79,
- 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65,
- 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x13, 0x53, 0x43, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74,
- 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22,
- 0x1d, 0x0a, 0x05, 0x43, 0x53, 0x41, 0x44, 0x56, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61,
- 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x1d,
- 0x0a, 0x05, 0x53, 0x43, 0x41, 0x44, 0x56, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x9f, 0x01,
- 0x0a, 0x12, 0x53, 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41,
- 0x77, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x79,
- 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x77,
- 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0d, 0x77, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72,
- 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x57, 0x65, 0x65,
- 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x22,
- 0x6f, 0x0a, 0x0d, 0x53, 0x43, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e,
- 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b,
- 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x20,
- 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x64, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e,
- 0x22, 0x23, 0x0a, 0x11, 0x43, 0x53, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x45, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f,
- 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02,
- 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x40, 0x0a, 0x11,
- 0x53, 0x43, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x0d,
- 0x0a, 0x0b, 0x43, 0x53, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x32, 0x0a,
- 0x0b, 0x53, 0x43, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x04,
- 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x2e, 0x53, 0x4d, 0x53, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66,
- 0x6f, 0x22, 0x33, 0x0a, 0x07, 0x53, 0x4d, 0x53, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02,
- 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
- 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53,
- 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d,
- 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9b,
- 0x01, 0x0a, 0x14, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
- 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79,
- 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x75, 0x63,
- 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4c,
- 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d,
- 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
- 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x34, 0x0a, 0x10,
- 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
- 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x54, 0x79,
- 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x10, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c,
- 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53,
- 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x75, 0x63, 0x6b,
- 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02,
+ 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x49,
+ 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x22,
+ 0x3d, 0x0a, 0x19, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b,
+ 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x22, 0x71,
+ 0x0a, 0x19, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f,
+ 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
+ 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x20, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e,
+ 0x65, 0x22, 0x25, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x53, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x22, 0x59, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x78, 0x12, 0x32, 0x0a,
+ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
+ 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
+ 0x53, 0x65, 0x78, 0x22, 0x1d, 0x0a, 0x09, 0x43, 0x53, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c,
+ 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55,
+ 0x72, 0x6c, 0x22, 0x51, 0x0a, 0x09, 0x53, 0x43, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12,
+ 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0xc2, 0x01, 0x0a, 0x18, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
+ 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x54, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b,
+ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x10,
+ 0x0a, 0x03, 0x45, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x6e, 0x76,
+ 0x12, 0x18, 0x0a, 0x07, 0x49, 0x6d, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x49, 0x6d, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7a, 0x0a, 0x18, 0x53, 0x43,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
+ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x56, 0x65,
+ 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xcc, 0x04, 0x0a, 0x0a, 0x43, 0x53, 0x52, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a,
+ 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x50,
+ 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72,
+ 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a,
+ 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41,
+ 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x70, 0x6b,
+ 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x0a, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x54,
+ 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x20, 0x0a,
+ 0x0b, 0x54, 0x65, 0x6c, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x54, 0x65, 0x6c, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12,
+ 0x2a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
+ 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x50,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x1a, 0x0a,
+ 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x63,
+ 0x6b, 0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x61, 0x63, 0x6b,
+ 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x54,
+ 0x72, 0x65, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+ 0x74, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x49, 0x44, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x43, 0x52, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e,
+ 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70,
+ 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a,
+ 0x05, 0x53, 0x72, 0x76, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x72,
+ 0x76, 0x54, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x10, 0x43, 0x53, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64,
+ 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x56, 0x65,
+ 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
+ 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
+ 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70,
+ 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54,
+ 0x61, 0x67, 0x22, 0x78, 0x0a, 0x10, 0x53, 0x43, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
+ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65,
+ 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x94, 0x01, 0x0a,
+ 0x0c, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x12, 0x24, 0x0a,
+ 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63,
+ 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x6c, 0x69, 0x70,
+ 0x61, 0x79, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d,
+ 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69,
+ 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77,
+ 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77,
+ 0x6f, 0x72, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c,
+ 0x69, 0x70, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f,
+ 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x6c, 0x69, 0x70,
+ 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24,
+ 0x0a, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x41, 0x63, 0x63,
+ 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x42,
+ 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x42, 0x61,
+ 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e,
+ 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54,
+ 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+ 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73,
+ 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73,
+ 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64,
+ 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f,
+ 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x61, 0x6e, 0x6b,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x20, 0x0a, 0x0b,
+ 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20,
+ 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65,
+ 0x22, 0x3e, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67,
+ 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+ 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67,
+ 0x22, 0x5e, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64,
+ 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64,
+ 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e,
+ 0x22, 0x82, 0x01, 0x0a, 0x16, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63,
+ 0x68, 0x61, 0x72, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f,
+ 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70,
+ 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12,
+ 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43,
+ 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f,
+ 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f,
+ 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f,
+ 0x67, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a,
+ 0x09, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x09, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54,
+ 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52,
+ 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d,
+ 0x61, 0x72, 0x6b, 0x22, 0x3c, 0x0a, 0x0c, 0x43, 0x53, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61,
+ 0x4c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12,
+ 0x10, 0x0a, 0x03, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x65,
+ 0x72, 0x22, 0x63, 0x0a, 0x0c, 0x53, 0x43, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f,
+ 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
+ 0x03, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x65, 0x72, 0x12,
+ 0x25, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
+ 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x52,
+ 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x43,
+ 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e,
+ 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x0a, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e,
+ 0x0a, 0x0a, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18,
+ 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x65, 0x61, 0x76,
+ 0x65, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, 0x65, 0x61, 0x76, 0x65,
+ 0x54, 0x73, 0x22, 0x22, 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x43,
+ 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x6f, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x47,
+ 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70,
+ 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27,
+ 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f,
+ 0x67, 0x52, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x6e, 0x0a, 0x0e, 0x43, 0x53, 0x50, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x4f, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x70, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a,
+ 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d,
+ 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69,
+ 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x8a, 0x01, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70,
+ 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x4f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x70, 0x12, 0x12,
+ 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f,
+ 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69,
+ 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78,
+ 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x0e, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78,
+ 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x54, 0x79,
+ 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x06, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x50, 0x43,
+ 0x6f, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
+ 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4f,
+ 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0a, 0x4f, 0x50, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54,
+ 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x25, 0x0a, 0x13, 0x43,
+ 0x53, 0x47, 0x65, 0x74, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c,
+ 0x6f, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
+ 0x54, 0x73, 0x22, 0x75, 0x0a, 0x13, 0x53, 0x43, 0x47, 0x65, 0x74, 0x53, 0x61, 0x66, 0x65, 0x42,
+ 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52,
+ 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
+ 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a,
+ 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e,
+ 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x28, 0x0a, 0x12, 0x43, 0x53, 0x50,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43,
+ 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49,
+ 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52,
+ 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
+ 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x5e, 0x0a,
+ 0x12, 0x43, 0x53, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50,
+ 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50,
+ 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01,
+ 0x0a, 0x12, 0x53, 0x43, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x50, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f,
+ 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x12, 0x43, 0x53, 0x57, 0x65, 0x62, 0x41,
+ 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07,
+ 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41,
+ 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16,
+ 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x57, 0x65, 0x62,
+ 0x41, 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a,
+ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43,
+ 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44,
+ 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x2a, 0x0a, 0x0c, 0x43, 0x53, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x12,
+ 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x0c, 0x53,
+ 0x43, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x09, 0x4f,
+ 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
+ 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x0e, 0x43,
+ 0x53, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a,
+ 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x60, 0x0a, 0x0e, 0x53, 0x43, 0x42,
+ 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x4f,
+ 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
+ 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x33, 0x0a, 0x13, 0x53,
+ 0x43, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61,
+ 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65,
+ 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x47, 0x65, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65,
+ 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2a, 0x0a, 0x12, 0x53, 0x43, 0x47, 0x65, 0x6e, 0x43,
+ 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05,
+ 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4d, 0x73,
+ 0x67, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3b, 0x0a, 0x10, 0x53,
+ 0x43, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x12,
+ 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4d,
+ 0x73, 0x67, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2d, 0x0a, 0x13, 0x43, 0x53, 0x43, 0x75,
+ 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x41, 0x63, 0x6b, 0x12,
+ 0x16, 0x0a, 0x06, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x06, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x47, 0x65, 0x74,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x22,
+ 0x68, 0x0a, 0x14, 0x53, 0x43, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72,
+ 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x49,
+ 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x27, 0x0a, 0x11, 0x43, 0x53, 0x49,
+ 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x6f,
+ 0x64, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x53, 0x43, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72,
+ 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x11,
+ 0x53, 0x43, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x73, 0x68, 0x69, 0x70, 0x54, 0x69, 0x70,
+ 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x73, 0x68, 0x69, 0x70,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x73,
+ 0x68, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x12,
+ 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12,
+ 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
+ 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x29, 0x0a, 0x15, 0x43,
+ 0x53, 0x47, 0x65, 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,
+ 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x22, 0x5d, 0x0a, 0x15, 0x53, 0x43, 0x47, 0x65, 0x74, 0x53,
+ 0x6c, 0x69, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x3a, 0x0a, 0x12, 0x43, 0x53, 0x49, 0x6f, 0x73, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53,
+ 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12,
+ 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65,
+ 0x6c, 0x22, 0x48, 0x0a, 0x12, 0x53, 0x43, 0x49, 0x6f, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c,
+ 0x6c, 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x45, 0x0a, 0x0b, 0x53,
+ 0x72, 0x76, 0x4d, 0x73, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6e,
+ 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x6e,
+ 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x50, 0x61, 0x72,
+ 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x50, 0x61, 0x72,
+ 0x61, 0x6d, 0x22, 0x4d, 0x0a, 0x08, 0x53, 0x43, 0x53, 0x72, 0x76, 0x4d, 0x73, 0x67, 0x12, 0x14,
+ 0x0a, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d,
+ 0x73, 0x67, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x72,
+ 0x76, 0x4d, 0x73, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d,
+ 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x43, 0x53, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x0f, 0x46, 0x69, 0x73, 0x68, 0x4a, 0x61,
+ 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4a, 0x0a, 0x0d, 0x53, 0x43, 0x4a, 0x61, 0x63, 0x6b, 0x70,
+ 0x6f, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f,
+ 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x73, 0x68, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74,
+ 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4c, 0x69, 0x73,
+ 0x74, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x46, 0x69, 0x73, 0x68, 0x4a, 0x61, 0x63, 0x6b, 0x70,
+ 0x6f, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x11, 0x53, 0x43, 0x46, 0x69, 0x73, 0x68,
+ 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x43,
+ 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22,
+ 0x40, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x62, 0x69, 0x6e,
+ 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6e, 0x69, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x06, 0x53, 0x6e, 0x69, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x69, 0x63,
+ 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x69, 0x63, 0x65, 0x49,
+ 0x64, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x53, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64,
+ 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x22, 0x2d, 0x0a, 0x13, 0x53, 0x43, 0x47, 0x65,
+ 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x12,
+ 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x06, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x41,
+ 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x69, 0x76, 0x65, 0x4e, 0x75,
+ 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x69, 0x76, 0x65, 0x4e, 0x75, 0x6d,
+ 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x08, 0x47, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09,
+ 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e,
+ 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64,
+ 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3f, 0x0a, 0x0d, 0x53, 0x43,
+ 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x50,
+ 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x66,
+ 0x6f, 0x52, 0x08, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x23, 0x0a, 0x0d, 0x43,
+ 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04,
+ 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64,
+ 0x22, 0x45, 0x0a, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x74, 0x12, 0x0e, 0x0a,
+ 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a,
+ 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65,
+ 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc5, 0x03, 0x0a, 0x0d, 0x53, 0x43, 0x51, 0x75,
+ 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44,
+ 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69,
+ 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x43, 0x61, 0x72, 0x64, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x56, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49,
+ 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49,
+ 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, 0x52, 0x6f,
+ 0x6c, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x52,
+ 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x50, 0x65, 0x74, 0x49,
+ 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x75, 0x72, 0x50, 0x65, 0x74, 0x49,
+ 0x64, 0x12, 0x27, 0x0a, 0x05, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x11, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72,
+ 0x50, 0x65, 0x74, 0x52, 0x05, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x50, 0x65,
+ 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x74, 0x52, 0x04, 0x50, 0x65, 0x74,
+ 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61,
+ 0x74, 0x75, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e,
+ 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x03, 0x41, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49,
+ 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x22,
+ 0x1b, 0x0a, 0x07, 0x43, 0x53, 0x50, 0x4d, 0x43, 0x6d, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6d,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x43, 0x6d, 0x64, 0x22, 0x28, 0x0a, 0x0e,
+ 0x43, 0x53, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x43, 0x68, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16,
+ 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
+ 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xe4, 0x02, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49,
+ 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49,
+ 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74,
+ 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x69, 0x66, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c,
+ 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c,
+ 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x6f, 0x6d,
+ 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x54,
+ 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65,
+ 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x22, 0x66, 0x0a,
+ 0x0c, 0x4a, 0x79, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a,
+ 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+ 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44,
+ 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69,
+ 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65,
+ 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x64, 0x65, 0x22, 0x77, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65,
+ 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
+ 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09,
+ 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x47, 0x61, 0x69,
+ 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4a, 0x79, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72,
+ 0x64, 0x52, 0x08, 0x47, 0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x89, 0x01, 0x0a, 0x11,
+ 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d,
+ 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x24, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65,
+ 0x45, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x38, 0x0a,
+ 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+ 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x08, 0x43, 0x53, 0x56, 0x49, 0x50,
+ 0x42, 0x75, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x22, 0x84, 0x01, 0x0a, 0x08, 0x53, 0x43,
+ 0x56, 0x49, 0x50, 0x42, 0x75, 0x79, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
+ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f,
+ 0x6e, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56,
+ 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x6c, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x6c, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70,
+ 0x22, 0x2d, 0x0a, 0x09, 0x43, 0x53, 0x56, 0x49, 0x50, 0x44, 0x72, 0x61, 0x77, 0x12, 0x0e, 0x0a,
+ 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a,
+ 0x03, 0x56, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x22,
+ 0xcf, 0x01, 0x0a, 0x09, 0x53, 0x43, 0x56, 0x49, 0x50, 0x44, 0x72, 0x61, 0x77, 0x12, 0x0e, 0x0a,
+ 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a,
+ 0x03, 0x56, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12,
+ 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x43, 0x56, 0x49,
+ 0x50, 0x44, 0x72, 0x61, 0x77, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+ 0x01, 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x53, 0x56, 0x49, 0x50, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc2,
+ 0x06, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70,
+ 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12,
+ 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+ 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50,
+ 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63,
+ 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x56,
+ 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65,
+ 0x31, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28,
+ 0x05, 0x52, 0x06, 0x4c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50,
+ 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50,
+ 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50,
+ 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50,
+ 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50,
+ 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x30, 0x0a, 0x0a, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+ 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50,
+ 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37,
+ 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65,
+ 0x67, 0x65, 0x38, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69,
+ 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32,
+ 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12,
+ 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x67,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61,
+ 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68,
+ 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12,
+ 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x13, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x56, 0x49, 0x50,
+ 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x12,
+ 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77,
+ 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67,
+ 0x65, 0x53, 0x68, 0x6f, 0x77, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65,
+ 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67,
+ 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x09, 0x53, 0x43, 0x56, 0x49, 0x50, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65,
+ 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x56, 0x49, 0x50,
+ 0x63, 0x66, 0x67, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x6c,
+ 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f,
+ 0x6c, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70,
+ 0x49, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12,
+ 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
+ 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61,
+ 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x3a, 0x0a, 0x12, 0x53, 0x43, 0x45, 0x61, 0x73, 0x79, 0x57,
+ 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x57,
+ 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x05, 0x52, 0x0d, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63,
+ 0x68, 0x22, 0x28, 0x0a, 0x12, 0x43, 0x53, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c,
+ 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x6c, 0x0a, 0x12, 0x53,
+ 0x43, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a,
+ 0x08, 0x4e, 0x6f, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x08, 0x4e, 0x6f, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3b, 0x0a, 0x07, 0x50, 0x61, 0x79,
+ 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
+ 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49,
+ 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x8b, 0x01, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x61, 0x79,
+ 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, 0x6c,
+ 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x23, 0x0a,
+ 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x49, 0x74,
+ 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f,
+ 0x6e, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1e, 0x0a, 0x0a, 0x53, 0x43, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0b, 0x43, 0x53, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+ 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x41, 0x0a, 0x0b, 0x53, 0x43, 0x43, 0x6c, 0x69,
+ 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x12, 0x32, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
+ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x0f, 0x53, 0x43,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x55, 0x6e, 0x4d, 0x61, 0x78, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x0a, 0x55, 0x6e, 0x4d, 0x61, 0x78, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x22, 0x37, 0x0a,
+ 0x13, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c,
+ 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x6e, 0x50, 0x6f, 0x77,
+ 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x39, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76,
+ 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,
+ 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78,
+ 0x70, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e,
+ 0x66, 0x6f, 0x22, 0xa1, 0x01, 0x0a, 0x0d, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c,
+ 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4e, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x52,
+ 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e,
+ 0x66, 0x6f, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x52, 0x65,
+ 0x77, 0x61, 0x72, 0x64, 0x1a, 0x40, 0x0a, 0x12, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x52,
+ 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x91, 0x01, 0x0a, 0x0f, 0x43, 0x53, 0x50, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x72,
+ 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x41, 0x72,
+ 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65,
+ 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x44,
+ 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x0f, 0x53, 0x43,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a,
+ 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
+ 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a, 0x09, 0x43, 0x53, 0x42, 0x69, 0x6e,
+ 0x64, 0x54, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65,
+ 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54,
+ 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x35, 0x0a, 0x09, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64,
+ 0x54, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01,
+ 0x0a, 0x0a, 0x43, 0x53, 0x48, 0x74, 0x74, 0x70, 0x50, 0x61, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
+ 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07,
+ 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41,
+ 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16,
+ 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x8e,
+ 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x48, 0x74, 0x74, 0x70, 0x50, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a,
+ 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
+ 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43,
+ 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44,
+ 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x14, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
+ 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x73, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x68, 0x6f, 0x6e, 0x65,
+ 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e,
+ 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53, 0x63, 0x6f, 0x72,
+ 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
+ 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x32, 0x0a, 0x0e, 0x43, 0x53,
+ 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b,
+ 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6f,
+ 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
+ 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x53,
+ 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x68, 0x6f, 0x6e,
+ 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4c, 0x6f,
0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22,
- 0x1c, 0x0a, 0x1a, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
- 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x65, 0x0a,
- 0x1a, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
- 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4c,
- 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
- 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49,
- 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04,
- 0x49, 0x74, 0x65, 0x6d, 0x22, 0x33, 0x0a, 0x06, 0x53, 0x43, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x29,
- 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74,
- 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x53, 0x5f,
- 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x65,
- 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64,
- 0x22, 0x94, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12,
- 0x16, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64,
- 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52,
- 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, 0x0c, 0x41, 0x6e, 0x6e,
- 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x18, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63,
- 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75,
- 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x58, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64,
- 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12,
- 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64,
- 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f,
- 0x67, 0x22, 0x60, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66,
- 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x4f,
- 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65,
- 0x72, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x55, 0x72, 0x6c, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65,
- 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
- 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x50, 0x6f, 0x70, 0x55,
- 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x3f,
- 0x0a, 0x14, 0x53, 0x43, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x57, 0x69,
- 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22,
- 0x83, 0x01, 0x0a, 0x0b, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12,
- 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55,
- 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a,
- 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72,
- 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47,
- 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61,
- 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x2a, 0xef, 0x0d, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53,
- 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f,
- 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f,
- 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xe8, 0x07, 0x12, 0x18,
- 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d,
- 0x65, 0x53, 0x61, 0x6d, 0x65, 0x10, 0xef, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43,
- 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69,
- 0x6c, 0x65, 0x64, 0x10, 0xf1, 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e,
- 0x6f, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x10, 0xf5, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50,
- 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c,
- 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f,
- 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x95, 0x08,
- 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74,
- 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xa0, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52,
- 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0xa4, 0x08, 0x12,
- 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x45, 0x78,
- 0x69, 0x73, 0x74, 0x10, 0xa5, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x10, 0xa6, 0x08, 0x12, 0x13, 0x0a, 0x0e,
- 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x63, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa7,
- 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x65, 0x78, 0x45, 0x72, 0x72,
- 0x6f, 0x72, 0x10, 0xa8, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65,
- 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa9, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52,
- 0x43, 0x5f, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10,
- 0xaa, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x65, 0x72, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72,
- 0x10, 0xab, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49,
- 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xac, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52,
- 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
- 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xae, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52,
- 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x10,
- 0xaf, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x42, 0x6c, 0x61,
- 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb0, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52,
- 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x54, 0x6f, 0x6f, 0x4c, 0x65, 0x6e, 0x10, 0xb1,
- 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
- 0x72, 0x64, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, 0xb2, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50,
- 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c,
- 0x10, 0xbb, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x4d, 0x53, 0x43,
- 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xbc, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f,
- 0x50, 0x52, 0x43, 0x5f, 0x48, 0x61, 0x64, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x10, 0xc2, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52,
- 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x45, 0x78,
- 0x69, 0x73, 0x74, 0x10, 0xc3, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53,
- 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10,
- 0xc4, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x72, 0x4e, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xc5, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f,
- 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6c,
- 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x10, 0xc6, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f,
- 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43,
- 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xc7, 0x08, 0x12, 0x1a, 0x0a, 0x15,
- 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x43, 0x61, 0x6e, 0x74, 0x52,
- 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x10, 0xd0, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43,
- 0x5f, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x6f, 0x72, 0x10, 0xd4, 0x08, 0x12, 0x14,
- 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x10, 0xd5, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e,
- 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd6, 0x08, 0x12, 0x19, 0x0a, 0x14,
- 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x48, 0x61, 0x73,
- 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd7, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f,
- 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
- 0x65, 0x72, 0x10, 0xd8, 0x08, 0x12, 0x28, 0x0a, 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x70,
- 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x50, 0x61, 0x73,
- 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xd3, 0x0f, 0x12,
- 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70,
- 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10,
- 0xd5, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41,
- 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70,
- 0x74, 0x79, 0x10, 0xd6, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61,
- 0x66, 0x65, 0x62, 0x6f, 0x78, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c,
- 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xd7, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43,
- 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d,
- 0x70, 0x74, 0x79, 0x10, 0xd8, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42,
- 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd9, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f,
- 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65,
- 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xda, 0x0f, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43,
- 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c,
- 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdb, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43,
- 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdc, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f,
- 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63,
- 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdd, 0x0f, 0x12, 0x23,
- 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61,
- 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c,
- 0x10, 0xde, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64,
- 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c,
- 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdf, 0x0f, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43,
- 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x50, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xe0, 0x0f, 0x12, 0x20, 0x0a, 0x1b,
- 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xe1, 0x0f, 0x12, 0x1f,
- 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x49,
- 0x50, 0x5f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x67, 0x10, 0xe2, 0x0f, 0x12,
- 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b,
- 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe3, 0x0f, 0x12, 0x1f,
- 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61,
- 0x79, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe4, 0x0f, 0x12,
- 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6e, 0x64, 0x41,
- 0x6c, 0x69, 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x10, 0xe5, 0x0f, 0x12, 0x27, 0x0a,
- 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6c,
- 0x69, 0x70, 0x61, 0x79, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x10, 0xe6, 0x0f, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a,
- 0x79, 0x62, 0x5f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xb4, 0x10, 0x12, 0x17, 0x0a,
- 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78,
- 0x69, 0x73, 0x74, 0x10, 0xb5, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a,
- 0x79, 0x62, 0x5f, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, 0xb6, 0x10, 0x12, 0x15, 0x0a,
- 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72,
- 0x72, 0x10, 0xb7, 0x10, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e,
- 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x65, 0x74, 0x43, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xd9, 0x36, 0x12, 0x29, 0x0a, 0x24,
- 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75,
- 0x48, 0x61, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c,
- 0x65, 0x61, 0x76, 0x65, 0x10, 0xda, 0x36, 0x2a, 0xd4, 0x1f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79,
- 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41,
- 0x10, 0xb4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
- 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb5, 0x10, 0x12, 0x18,
- 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x41, 0x59, 0x43,
- 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xb6, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45,
- 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb7, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45,
- 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb8, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41,
- 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xb9, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54,
- 0x41, 0x45, 0x58, 0x10, 0xba, 0x10, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4d, 0x43, 0x4d, 0x44, 0x10, 0xbb, 0x10, 0x12, 0x1b, 0x0a, 0x16,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x43,
- 0x48, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xbc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x57, 0x45, 0x43,
- 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbd, 0x10, 0x12, 0x21, 0x0a, 0x1c,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45,
- 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbe, 0x10, 0x12,
- 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x54,
- 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xbf, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xc0,
- 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a,
- 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc1, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45,
- 0x10, 0xc2, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
- 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc3, 0x10, 0x12, 0x19,
- 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x50, 0x52, 0x45,
- 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc4, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d,
- 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc7, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54,
- 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53,
- 0x47, 0x10, 0xc9, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
- 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53, 0x47, 0x41, 0x43,
- 0x4b, 0x10, 0xca, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x5f, 0x53, 0x52, 0x56, 0x4d, 0x53, 0x47, 0x10, 0xcb, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43,
- 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcc, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43,
- 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcd, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43,
- 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xce, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43,
- 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xcf, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52,
- 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd0, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54,
- 0x45, 0x52, 0x10, 0xd1, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x10,
- 0xd2, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
- 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54,
- 0x45, 0x10, 0xd3, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
- 0x53, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f,
- 0x70, 0x65, 0x6e, 0x10, 0xd4, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49,
- 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd5, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x5f, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x10, 0xd6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdc, 0x10,
- 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48,
- 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdd, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49,
- 0x43, 0x4f, 0x4e, 0x10, 0xde, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xdf,
- 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43,
- 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, 0xe0, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53,
- 0x45, 0x58, 0x10, 0xe1, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x43, 0x53, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e,
- 0x54, 0x10, 0xe2, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54,
- 0x10, 0xe3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
- 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe4, 0x10, 0x12, 0x19,
- 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44,
- 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe5, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10,
- 0xe6, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
- 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe7, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f,
- 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x43, 0x4f,
- 0x49, 0x4e, 0x10, 0xe9, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52,
- 0x44, 0x10, 0xea, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44,
- 0x10, 0xeb, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
- 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x43, 0x4f, 0x44,
- 0x45, 0x10, 0xec, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x43, 0x4f,
- 0x44, 0x45, 0x10, 0xed, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f,
- 0x47, 0x10, 0xee, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47,
- 0x10, 0xef, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
- 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49, 0x4e, 0x4c,
- 0x4f, 0x47, 0x10, 0xf0, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49,
- 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0xf2, 0x10,
- 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45,
- 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0xf3, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49,
- 0x4e, 0x45, 0x10, 0xf4, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x53, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf5,
- 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49,
- 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf6, 0x10, 0x12, 0x19, 0x0a, 0x14,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45,
- 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf7, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c, 0x41, 0x59,
- 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf8, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c,
- 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf9, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f,
- 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfa, 0x10, 0x12, 0x20, 0x0a,
- 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50,
- 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfb, 0x10, 0x12,
- 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54,
- 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10,
- 0xfc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
- 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f,
- 0x44, 0x45, 0x10, 0xfd, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x56, 0x45, 0x52, 0x49,
- 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfe, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52,
- 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xff, 0x10, 0x12, 0x1f, 0x0a,
- 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x4f, 0x53, 0x49, 0x4e,
- 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x80, 0x11, 0x12, 0x1f,
- 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4f, 0x53, 0x49,
- 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x81, 0x11, 0x12,
- 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x45,
- 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x82, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c,
- 0x41, 0x59, 0x45, 0x52, 0x10, 0x83, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10,
- 0x84, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
- 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x85, 0x11, 0x12, 0x23, 0x0a,
- 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
- 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10,
- 0x86, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
- 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x87, 0x11, 0x12, 0x1f, 0x0a,
- 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
- 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x88, 0x11, 0x12, 0x1e,
- 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x52, 0x55, 0x53,
- 0x54, 0x45, 0x45, 0x53, 0x48, 0x49, 0x50, 0x54, 0x49, 0x50, 0x53, 0x10, 0x89, 0x11, 0x12, 0x17,
- 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x53, 0x45, 0x54,
- 0x54, 0x49, 0x4e, 0x47, 0x10, 0x8a, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x53, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x45, 0x58, 0x44, 0x52, 0x4f, 0x50, 0x49, 0x54,
- 0x45, 0x4d, 0x53, 0x10, 0x8b, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, 0x10, 0x8c, 0x11, 0x12, 0x15, 0x0a,
- 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55,
- 0x59, 0x10, 0x8d, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
- 0x53, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, 0x8e, 0x11,
- 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x52,
- 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, 0x8f, 0x11, 0x12, 0x16, 0x0a, 0x11,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46,
- 0x4f, 0x10, 0x90, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x91, 0x11, 0x12, 0x1b, 0x0a, 0x16,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x57, 0x45, 0x4c, 0x46, 0x41,
- 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x92, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c,
- 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x93, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69,
- 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x94, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x41, 0x59, 0x47, 0x4f, 0x4f, 0x44,
- 0x53, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x95, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x96,
- 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43,
- 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x97, 0x11, 0x12, 0x19, 0x0a, 0x14,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,
- 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x98, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x99,
- 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48,
- 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x9a, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65,
- 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9b, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65,
- 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9c, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c,
- 0x10, 0xf1, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
- 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf2, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55,
- 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x10, 0xf3, 0x15, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50,
- 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xf4, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55,
- 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0xf5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43,
- 0x6f, 0x64, 0x65, 0x10, 0xf6, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65,
- 0x10, 0xf7, 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
- 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf8, 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf9,
- 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69,
- 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x15, 0x12, 0x19, 0x0a, 0x14,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c,
- 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfb, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfc, 0x15, 0x12,
- 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6c, 0x6c,
- 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfd, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x43, 0x53, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e,
- 0x66, 0x6f, 0x10, 0xfe, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x53, 0x43, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
- 0x10, 0xff, 0x15, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
- 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66,
- 0x6f, 0x10, 0x80, 0x16, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e,
- 0x66, 0x6f, 0x10, 0x81, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10,
- 0x82, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
- 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x83, 0x16, 0x12,
- 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f,
- 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x84,
- 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x41, 0x44,
- 0x56, 0x10, 0x85, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
- 0x43, 0x41, 0x44, 0x56, 0x10, 0x86, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x53, 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41,
- 0x77, 0x61, 0x72, 0x79, 0x10, 0x87, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x10,
- 0x88, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x45,
- 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x10, 0x89,
- 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x45, 0x78,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x10, 0x8a, 0x16,
- 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x4d, 0x53,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x8b, 0x16, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
- 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10,
- 0x8c, 0x16, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
- 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e,
- 0x66, 0x6f, 0x10, 0x8d, 0x16, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
- 0x53, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
- 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x8e, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74,
- 0x74, 0x65, 0x72, 0x79, 0x10, 0x8f, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
- 0x65, 0x72, 0x79, 0x10, 0x90, 0x16, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
- 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x91, 0x16, 0x12, 0x26,
- 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f,
+ 0x67, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e,
+ 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16,
+ 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
+ 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75,
+ 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d,
+ 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x13, 0x53, 0x43, 0x50, 0x68,
+ 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+ 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1d, 0x0a, 0x05, 0x43, 0x53, 0x41, 0x44, 0x56, 0x12, 0x14,
+ 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50,
+ 0x61, 0x72, 0x61, 0x6d, 0x22, 0x1d, 0x0a, 0x05, 0x53, 0x43, 0x41, 0x44, 0x56, 0x12, 0x14, 0x0a,
+ 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61,
+ 0x72, 0x61, 0x6d, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, 0x65,
+ 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x05, 0x49, 0x74,
+ 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d,
+ 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x77, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61,
+ 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x77, 0x65, 0x65, 0x6b, 0x43, 0x61,
+ 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x57, 0x65, 0x65, 0x6b, 0x43,
+ 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x2e, 0x57, 0x65, 0x65, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x57, 0x65, 0x65,
+ 0x6b, 0x43, 0x61, 0x72, 0x64, 0x22, 0x6f, 0x0a, 0x0d, 0x53, 0x43, 0x50, 0x69, 0x67, 0x42, 0x61,
+ 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f,
+ 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f,
+ 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x4d, 0x61,
+ 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69,
+ 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x43,
+ 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x64, 0x64, 0x42, 0x61,
+ 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x23, 0x0a, 0x11, 0x43, 0x53, 0x45, 0x78, 0x63, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x54,
+ 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x45, 0x0a, 0x0d, 0x43,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x0d,
+ 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
+ 0x54, 0x70, 0x22, 0x40, 0x0a, 0x11, 0x53, 0x43, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x05, 0x44,
+ 0x61, 0x74, 0x61, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x53, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x22, 0x32, 0x0a, 0x0b, 0x53, 0x43, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x12, 0x23, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x0f, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x4d, 0x53, 0x49, 0x6e, 0x66,
+ 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x33, 0x0a, 0x07, 0x53, 0x4d, 0x53, 0x49, 0x6e,
+ 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
+ 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14,
+ 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
+ 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9b, 0x01, 0x0a, 0x14, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f,
+ 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a,
+ 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d,
+ 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e,
+ 0x75, 0x6d, 0x22, 0x34, 0x0a, 0x10, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c,
+ 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
+ 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x6f, 0x74,
+ 0x74, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x10, 0x53, 0x43, 0x44, 0x69,
+ 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a,
+ 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04,
+ 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52,
+ 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f,
0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x10, 0x92, 0x16, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x53, 0x43, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x93, 0x16, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x10,
- 0x94, 0x16, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x41,
- 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x10, 0x95, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64,
- 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x96, 0x16, 0x12, 0x20, 0x0a, 0x1b,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69,
- 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x97, 0x16, 0x42, 0x26,
- 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f,
- 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x61, 0x72, 0x64, 0x22, 0x65, 0x0a, 0x1a, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
+ 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72,
+ 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x53, 0x63, 0x6f, 0x72,
+ 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x13, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
+ 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x33, 0x0a, 0x06, 0x53, 0x43,
+ 0x49, 0x74, 0x65, 0x6d, 0x12, 0x29, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f,
+ 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22,
+ 0x25, 0x0a, 0x0b, 0x43, 0x53, 0x5f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x16,
+ 0x0a, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
+ 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x41, 0x77, 0x61,
+ 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a,
+ 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f,
+ 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12,
+ 0x3c, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x41,
+ 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+ 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x58, 0x0a,
+ 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a,
+ 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53,
+ 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f,
+ 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x22, 0x60, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12,
+ 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75,
+ 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x41, 0x6e,
+ 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
+ 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
+ 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06,
+ 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74,
+ 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14,
+ 0x43, 0x53, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x22, 0x3f, 0x0a, 0x14, 0x53, 0x43, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57,
+ 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x04,
+ 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+ 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77,
+ 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e,
+ 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75,
+ 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x22, 0x39, 0x0a, 0x11, 0x43,
+ 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
+ 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70,
+ 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52,
+ 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x6d, 0x0a, 0x11, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x4f,
+ 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
+ 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12,
+ 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05,
+ 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x33, 0x0a, 0x0d, 0x53, 0x43, 0x47, 0x75, 0x69, 0x64, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x22, 0xe0, 0x02, 0x0a, 0x06, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e,
+ 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a,
+ 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x75, 0x6d, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x03, 0x52, 0x04, 0x4e, 0x75, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x6e, 0x73,
+ 0x18, 0x07, 0x20, 0x03, 0x28, 0x08, 0x52, 0x03, 0x4f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x03, 0x4d,
+ 0x61, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x32, 0x0a, 0x06, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
+ 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x06, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61,
+ 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a,
+ 0x0c, 0x53, 0x43, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a,
+ 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6c, 0x61,
+ 0x79, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x43, 0x66, 0x67, 0x2a,
+ 0x87, 0x0f, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10,
+ 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10,
+ 0x01, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46,
+ 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xe8, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x10,
+ 0xef, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
+ 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xf1, 0x07,
+ 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x4c, 0x6f, 0x67, 0x69,
+ 0x6e, 0x10, 0xf5, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75,
+ 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12,
+ 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56,
+ 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x95, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50,
+ 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68,
+ 0x10, 0xa0, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b,
+ 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0xa4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52,
+ 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xa5, 0x08,
+ 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e,
+ 0x74, 0x6c, 0x79, 0x10, 0xa6, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49,
+ 0x63, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa7, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f,
+ 0x50, 0x52, 0x43, 0x5f, 0x53, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa8, 0x08, 0x12,
+ 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x10, 0xa9, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, 0x65, 0x72,
+ 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaa, 0x08, 0x12, 0x1f, 0x0a, 0x1a,
+ 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xab, 0x08, 0x12, 0x14, 0x0a,
+ 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74,
+ 0x10, 0xac, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65,
+ 0x42, 0x6f, 0x78, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x10, 0xae, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49,
+ 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0xaf, 0x08, 0x12, 0x15, 0x0a, 0x10,
+ 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74,
+ 0x10, 0xb0, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b,
+ 0x49, 0x73, 0x54, 0x6f, 0x6f, 0x4c, 0x65, 0x6e, 0x10, 0xb1, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f,
+ 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x71, 0x75, 0x61,
+ 0x6c, 0x10, 0xb2, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63,
+ 0x6b, 0x49, 0x73, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xbb, 0x08, 0x12, 0x16, 0x0a,
+ 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x10, 0xbc, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x61,
+ 0x64, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x10, 0xc2, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x72, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xc3, 0x08,
+ 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42,
+ 0x69, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xc4, 0x08, 0x12, 0x17, 0x0a, 0x12,
+ 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x42, 0x69,
+ 0x6e, 0x64, 0x10, 0xc5, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70,
+ 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f,
+ 0x6f, 0x70, 0x10, 0xc6, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69,
+ 0x6c, 0x65, 0x64, 0x10, 0xc7, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e,
+ 0x69, 0x63, 0x6b, 0x49, 0x73, 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x10,
+ 0xd0, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, 0x72, 0x6f,
+ 0x6d, 0x6f, 0x74, 0x6f, 0x72, 0x10, 0xd4, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x4e, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0xd5, 0x08, 0x12, 0x16,
+ 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42,
+ 0x69, 0x6e, 0x64, 0x10, 0xd6, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50,
+ 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x48, 0x61, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd7,
+ 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x10, 0xd8, 0x08, 0x12,
+ 0x28, 0x0a, 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49,
+ 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xd3, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52,
+ 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd5, 0x0f, 0x12, 0x21, 0x0a, 0x1c,
+ 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f,
+ 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd6, 0x0f, 0x12,
+ 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x62, 0x6f, 0x78, 0x5f,
+ 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10,
+ 0xd7, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42,
+ 0x61, 0x6e, 0x6b, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd8, 0x0f,
+ 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e,
+ 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd9,
+ 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61,
+ 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10,
+ 0xda, 0x0f, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42,
+ 0x61, 0x6e, 0x6b, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10,
+ 0xdb, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42,
+ 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67,
+ 0x61, 0x6c, 0x10, 0xdc, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69,
+ 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c,
+ 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdd, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xde, 0x0f, 0x12, 0x23, 0x0a,
+ 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79,
+ 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10,
+ 0xdf, 0x0f, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41,
+ 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72,
+ 0x72, 0x6f, 0x72, 0x10, 0xe0, 0x0f, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42,
+ 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xe1, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x6f, 0x6f, 0x4d,
+ 0x61, 0x6e, 0x79, 0x52, 0x65, 0x67, 0x10, 0xe2, 0x0f, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52,
+ 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe3, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x43, 0x6f, 0x75, 0x6e,
+ 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe4, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52,
+ 0x43, 0x5f, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x5f, 0x4e, 0x6f, 0x74,
+ 0x53, 0x61, 0x6d, 0x65, 0x10, 0xe5, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f,
+ 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x4e,
+ 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe6, 0x0f,
+ 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x52, 0x65, 0x63,
+ 0x65, 0x69, 0x76, 0x65, 0x10, 0xb4, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f,
+ 0x4a, 0x79, 0x62, 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xb5, 0x10,
+ 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x54, 0x69, 0x6d,
+ 0x65, 0x45, 0x72, 0x72, 0x10, 0xb6, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f,
+ 0x4a, 0x79, 0x62, 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x10, 0xb7, 0x10, 0x12, 0x26,
+ 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59,
+ 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65,
+ 0x61, 0x76, 0x65, 0x10, 0xd9, 0x36, 0x12, 0x29, 0x0a, 0x24, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48,
+ 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x61, 0x6e,
+ 0x6b, 0x65, 0x72, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xda,
+ 0x36, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53,
+ 0x74, 0x65, 0x70, 0x5f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xc1, 0x3e, 0x12, 0x19, 0x0a,
+ 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x5f,
+ 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x10, 0xc2, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x5f, 0x45, 0x6e, 0x64, 0x10, 0xc3,
+ 0x3e, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f,
+ 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0xc4, 0x3e, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x53, 0x6b, 0x69, 0x70, 0x10, 0xc5, 0x3e, 0x12, 0x19,
+ 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x53, 0x6b, 0x69,
+ 0x70, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0xc6, 0x3e, 0x2a, 0xc7, 0x20, 0x0a, 0x0e, 0x50, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18,
+ 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41,
+ 0x54, 0x41, 0x10, 0xb4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb5, 0x10,
+ 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x41,
+ 0x59, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xb6, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41,
+ 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb7, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41,
+ 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb8, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41,
+ 0x54, 0x41, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xb9, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44,
+ 0x41, 0x54, 0x41, 0x45, 0x58, 0x10, 0xba, 0x10, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4d, 0x43, 0x4d, 0x44, 0x10, 0xbb, 0x10, 0x12, 0x1b,
+ 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x42, 0x4f,
+ 0x54, 0x43, 0x48, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xbc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x57,
+ 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbd, 0x10, 0x12, 0x21,
+ 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e,
+ 0x47, 0x45, 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbe,
+ 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41,
+ 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xbf, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44,
+ 0x10, 0xc0, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
+ 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc1, 0x10, 0x12, 0x17, 0x0a, 0x12,
+ 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41,
+ 0x4d, 0x45, 0x10, 0xc2, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x43, 0x53, 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc3, 0x10,
+ 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x50,
+ 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc4, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54,
+ 0x4f, 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc7, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54, 0x4f,
+ 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57,
+ 0x4d, 0x53, 0x47, 0x10, 0xc9, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53, 0x47,
+ 0x41, 0x43, 0x4b, 0x10, 0xca, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x52, 0x56, 0x4d, 0x53, 0x47, 0x10, 0xcb, 0x10, 0x12, 0x1e, 0x0a,
+ 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a,
+ 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcc, 0x10, 0x12, 0x1e, 0x0a,
+ 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a,
+ 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcd, 0x10, 0x12, 0x1e, 0x0a,
+ 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a,
+ 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xce, 0x10, 0x12, 0x1e, 0x0a,
+ 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a,
+ 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xcf, 0x10, 0x12, 0x1b, 0x0a,
+ 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49,
+ 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd0, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d,
+ 0x4f, 0x54, 0x45, 0x52, 0x10, 0xd1, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45,
+ 0x52, 0x10, 0xd2, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x53, 0x54,
+ 0x41, 0x54, 0x45, 0x10, 0xd3, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49,
+ 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd4, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c,
+ 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd5, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x5f, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x10, 0xd6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10,
+ 0xdc, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
+ 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdd, 0x10, 0x12, 0x19, 0x0a,
+ 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47,
+ 0x45, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xde, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49, 0x43, 0x4f, 0x4e,
+ 0x10, 0xdf, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
+ 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, 0xe0, 0x10, 0x12, 0x18, 0x0a,
+ 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47,
+ 0x45, 0x53, 0x45, 0x58, 0x10, 0xe1, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f,
+ 0x55, 0x4e, 0x54, 0x10, 0xe2, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f, 0x55,
+ 0x4e, 0x54, 0x10, 0xe3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe4, 0x10,
+ 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49,
+ 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe5, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e,
+ 0x4b, 0x10, 0xe6, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe7, 0x10, 0x12, 0x1b, 0x0a,
+ 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
+ 0x52, 0x4f, 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50,
+ 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe9, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57,
+ 0x4f, 0x52, 0x44, 0x10, 0xea, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f,
+ 0x52, 0x44, 0x10, 0xeb, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x43, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x43,
+ 0x4f, 0x44, 0x45, 0x10, 0xec, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e,
+ 0x43, 0x4f, 0x44, 0x45, 0x10, 0xed, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e,
+ 0x4c, 0x4f, 0x47, 0x10, 0xee, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x4c,
+ 0x4f, 0x47, 0x10, 0xef, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49,
+ 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf0, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43,
+ 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10,
+ 0xf2, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
+ 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0xf3, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54,
+ 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf4, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49, 0x4e, 0x45,
+ 0x10, 0xf5, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
+ 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf6, 0x10, 0x12, 0x19,
+ 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4e, 0x56, 0x49,
+ 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf7, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c,
+ 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf8, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f,
+ 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf9, 0x10, 0x12, 0x20, 0x0a,
+ 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50,
+ 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfa, 0x10, 0x12,
+ 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42,
+ 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfb,
+ 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47,
+ 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44,
+ 0x45, 0x10, 0xfc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x5f, 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59,
+ 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfd, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x56, 0x45,
+ 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfe, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44,
+ 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xff, 0x10, 0x12,
+ 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x4f, 0x53,
+ 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x80, 0x11,
+ 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4f,
+ 0x53, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x81,
+ 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51,
+ 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x82, 0x11, 0x12, 0x1a, 0x0a,
+ 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59,
+ 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x83, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f,
+ 0x47, 0x10, 0x84, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x85, 0x11, 0x12,
+ 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41,
+ 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45,
+ 0x52, 0x10, 0x86, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x87, 0x11, 0x12,
+ 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41,
+ 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x88, 0x11,
+ 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x52,
+ 0x55, 0x53, 0x54, 0x45, 0x45, 0x53, 0x48, 0x49, 0x50, 0x54, 0x49, 0x50, 0x53, 0x10, 0x89, 0x11,
+ 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x53,
+ 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x8a, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x45, 0x58, 0x44, 0x52, 0x4f, 0x50,
+ 0x49, 0x54, 0x45, 0x4d, 0x53, 0x10, 0x8b, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, 0x10, 0x8c, 0x11, 0x12,
+ 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50,
+ 0x42, 0x55, 0x59, 0x10, 0x8d, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10,
+ 0x8e, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
+ 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, 0x8f, 0x11, 0x12, 0x16,
+ 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x49,
+ 0x4e, 0x46, 0x4f, 0x10, 0x90, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x91, 0x11, 0x12, 0x1b,
+ 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x57, 0x45, 0x4c,
+ 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x92, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76,
+ 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x93, 0x11, 0x12, 0x1f, 0x0a, 0x1a,
+ 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x94, 0x11, 0x12, 0x1b, 0x0a,
+ 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x41, 0x59, 0x47, 0x4f,
+ 0x4f, 0x44, 0x53, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x95, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
+ 0x10, 0x96, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
+ 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x97, 0x11, 0x12, 0x19,
+ 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45,
+ 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x98, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53,
+ 0x10, 0x99, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
+ 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x9a, 0x11, 0x12, 0x1e, 0x0a,
+ 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9b, 0x11, 0x12, 0x1e, 0x0a,
+ 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9c, 0x11, 0x12, 0x16, 0x0a,
+ 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55,
+ 0x72, 0x6c, 0x10, 0xf1, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x53, 0x43, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf2, 0x15, 0x12, 0x1c, 0x0a,
+ 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x10, 0xf3, 0x15, 0x12, 0x20, 0x0a, 0x1b, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55,
+ 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xf4, 0x15, 0x12, 0x1c, 0x0a,
+ 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0xf5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d,
+ 0x53, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf6, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f,
+ 0x64, 0x65, 0x10, 0xf7, 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf8, 0x15, 0x12, 0x15, 0x0a, 0x10,
+ 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c,
+ 0x10, 0xf9, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
+ 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x15, 0x12, 0x19,
+ 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54,
+ 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfb, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfc,
+ 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69,
+ 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfd, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfe, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x43, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e,
+ 0x66, 0x6f, 0x10, 0xff, 0x15, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49,
+ 0x6e, 0x66, 0x6f, 0x10, 0x80, 0x16, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
+ 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x81, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
+ 0x79, 0x10, 0x82, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x83,
+ 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50,
+ 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x10, 0x84, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
+ 0x41, 0x44, 0x56, 0x10, 0x85, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+ 0x5f, 0x53, 0x43, 0x41, 0x44, 0x56, 0x10, 0x86, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72,
+ 0x64, 0x41, 0x77, 0x61, 0x72, 0x79, 0x10, 0x87, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69,
+ 0x6e, 0x10, 0x88, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
+ 0x53, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x10, 0x89, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
+ 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x10,
+ 0x8a, 0x16, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53,
+ 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x8b, 0x16, 0x12, 0x17, 0x0a, 0x12, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x10, 0x8c, 0x16, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
+ 0x53, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
+ 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x8d, 0x16, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
+ 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x8e, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c,
+ 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x8f, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f,
+ 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x90, 0x16, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
+ 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x91, 0x16,
+ 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61,
+ 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79,
+ 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x92, 0x16, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x93, 0x16, 0x12, 0x16, 0x0a, 0x11,
+ 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f,
+ 0x67, 0x10, 0x94, 0x16, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+ 0x43, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x10, 0x95, 0x16, 0x12, 0x20, 0x0a, 0x1b,
+ 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x96, 0x16, 0x12, 0x20,
+ 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6f, 0x70, 0x55, 0x70,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x97, 0x16,
+ 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x98, 0x16, 0x12,
+ 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x99, 0x16, 0x12, 0x19,
+ 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x75, 0x69, 0x64, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x9a, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x10, 0x9b, 0x16, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d,
+ 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
}
var (
@@ -12080,7 +12600,7 @@ func file_player_proto_rawDescGZIP() []byte {
}
var file_player_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_player_proto_msgTypes = make([]protoimpl.MessageInfo, 157)
+var file_player_proto_msgTypes = make([]protoimpl.MessageInfo, 167)
var file_player_proto_goTypes = []interface{}{
(OpResultCode)(0), // 0: player.OpResultCode
(PlayerPacketID)(0), // 1: player.PlayerPacketID
@@ -12237,21 +12757,31 @@ var file_player_proto_goTypes = []interface{}{
(*CSPopUpWindowsConfig)(nil), // 152: player.CSPopUpWindowsConfig
(*SCPopUpWindowsConfig)(nil), // 153: player.SCPopUpWindowsConfig
(*WindowsInfo)(nil), // 154: player.WindowsInfo
- nil, // 155: player.PlayerData.RankScoreEntry
- nil, // 156: player.SCPlayerDataUpdate.RankScoreEntry
- nil, // 157: player.SCGameExDropItems.ItemsEntry
- nil, // 158: player.SCBindTelInfo.BindTelRewardEntry
- (*server.DB_GameItem)(nil), // 159: server.DB_GameItem
+ (*CSUpdateAttribute)(nil), // 155: player.CSUpdateAttribute
+ (*SCUpdateAttribute)(nil), // 156: player.SCUpdateAttribute
+ (*SCGuideConfig)(nil), // 157: player.SCGuideConfig
+ (*Config)(nil), // 158: player.Config
+ (*SCDataConfig)(nil), // 159: player.SCDataConfig
+ nil, // 160: player.PlayerData.RankScoreEntry
+ nil, // 161: player.SCPlayerDataUpdate.RankScoreEntry
+ nil, // 162: player.SCGameExDropItems.ItemsEntry
+ nil, // 163: player.SCVIPDraw.AwardEntry
+ nil, // 164: player.VIPcfg.Privilege1Entry
+ nil, // 165: player.VIPcfg.Privilege9Entry
+ nil, // 166: player.SCBindTelInfo.BindTelRewardEntry
+ nil, // 167: player.Config.MapEntry
+ nil, // 168: player.Config.MapStrEntry
+ (*server.DB_GameItem)(nil), // 169: server.DB_GameItem
}
var file_player_proto_depIdxs = []int32{
4, // 0: player.SCBillList.Items:type_name -> player.BillItem
0, // 1: player.SCSavePlayerInfo.OpRetCode:type_name -> player.OpResultCode
- 155, // 2: player.PlayerData.RankScore:type_name -> player.PlayerData.RankScoreEntry
+ 160, // 2: player.PlayerData.RankScore:type_name -> player.PlayerData.RankScoreEntry
9, // 3: player.PlayerData.WeekCard:type_name -> player.WeekInfo
0, // 4: player.SCPlayerData.OpRetCode:type_name -> player.OpResultCode
8, // 5: player.SCPlayerData.Data:type_name -> player.PlayerData
10, // 6: player.SCPlayerData.MiniGameArr:type_name -> player.MiniGameInfo
- 156, // 7: player.SCPlayerDataUpdate.RankScore:type_name -> player.SCPlayerDataUpdate.RankScoreEntry
+ 161, // 7: player.SCPlayerDataUpdate.RankScore:type_name -> player.SCPlayerDataUpdate.RankScoreEntry
8, // 8: player.SCThirdPlayerData.Data:type_name -> player.PlayerData
0, // 9: player.SCChangeNick.OpRetCode:type_name -> player.OpResultCode
0, // 10: player.SCChangePassword.OpRetCode:type_name -> player.OpResultCode
@@ -12288,38 +12818,45 @@ var file_player_proto_depIdxs = []int32{
93, // 41: player.JybInfoAward.ItemId:type_name -> player.ItemInfo
0, // 42: player.SCPlayerSetting.OpRetCode:type_name -> player.OpResultCode
94, // 43: player.SCPlayerSetting.GainItem:type_name -> player.JybInfoAward
- 157, // 44: player.SCGameExDropItems.Items:type_name -> player.SCGameExDropItems.ItemsEntry
+ 162, // 44: player.SCGameExDropItems.Items:type_name -> player.SCGameExDropItems.ItemsEntry
0, // 45: player.SCVIPBuy.OpRetCode:type_name -> player.OpResultCode
0, // 46: player.SCVIPDraw.OpRetCode:type_name -> player.OpResultCode
- 93, // 47: player.VIPcfg.Item:type_name -> player.ItemInfo
- 93, // 48: player.VIPcfg.Privilege7:type_name -> player.ItemInfo
- 0, // 49: player.SCVIPInfo.OpRetCode:type_name -> player.OpResultCode
- 103, // 50: player.SCVIPInfo.List:type_name -> player.VIPcfg
- 108, // 51: player.SCPayGoodsInfo.Item:type_name -> player.PayItem
- 0, // 52: player.SCClientLog.OpRetCode:type_name -> player.OpResultCode
- 158, // 53: player.SCBindTelInfo.BindTelReward:type_name -> player.SCBindTelInfo.BindTelRewardEntry
- 0, // 54: player.SCPlayerSMSCode.Code:type_name -> player.OpResultCode
- 0, // 55: player.SCBindTel.Code:type_name -> player.OpResultCode
- 0, // 56: player.SCHttpPass.OpRetCode:type_name -> player.OpResultCode
- 128, // 57: player.SCPhoneLotteryInfo.Item:type_name -> player.LotteryItem
- 128, // 58: player.SCPhoneLottery.Item:type_name -> player.LotteryItem
- 108, // 59: player.SCGetWeekCardAwary.Items:type_name -> player.PayItem
- 9, // 60: player.SCGetWeekCardAwary.WeekCard:type_name -> player.WeekInfo
- 135, // 61: player.SCExchangeChannel.Datas:type_name -> player.ChannelSwitch
- 139, // 62: player.SCSMSConfig.Info:type_name -> player.SMSInfo
- 128, // 63: player.SCDiamondLotteryInfo.Item:type_name -> player.LotteryItem
- 128, // 64: player.SCDiamondLottery.Item:type_name -> player.LotteryItem
- 128, // 65: player.SCDiamondLotteryLuckyAward.Item:type_name -> player.LotteryItem
- 159, // 66: player.SCItem.Items:type_name -> server.DB_GameItem
- 149, // 67: player.SCAwardLog.AwardLog:type_name -> player.AwardLogData
- 151, // 68: player.SCAwardLog.AnnouncerLog:type_name -> player.AnnouncerLogInfo
- 150, // 69: player.AwardLogData.AwardLog:type_name -> player.AwardLogInfo
- 154, // 70: player.SCPopUpWindowsConfig.Info:type_name -> player.WindowsInfo
- 71, // [71:71] is the sub-list for method output_type
- 71, // [71:71] is the sub-list for method input_type
- 71, // [71:71] is the sub-list for extension type_name
- 71, // [71:71] is the sub-list for extension extendee
- 0, // [0:71] is the sub-list for field type_name
+ 163, // 47: player.SCVIPDraw.Award:type_name -> player.SCVIPDraw.AwardEntry
+ 93, // 48: player.VIPcfg.Item:type_name -> player.ItemInfo
+ 164, // 49: player.VIPcfg.Privilege1:type_name -> player.VIPcfg.Privilege1Entry
+ 93, // 50: player.VIPcfg.Privilege7:type_name -> player.ItemInfo
+ 165, // 51: player.VIPcfg.Privilege9:type_name -> player.VIPcfg.Privilege9Entry
+ 0, // 52: player.SCVIPInfo.OpRetCode:type_name -> player.OpResultCode
+ 103, // 53: player.SCVIPInfo.List:type_name -> player.VIPcfg
+ 108, // 54: player.SCPayGoodsInfo.Item:type_name -> player.PayItem
+ 0, // 55: player.SCClientLog.OpRetCode:type_name -> player.OpResultCode
+ 166, // 56: player.SCBindTelInfo.BindTelReward:type_name -> player.SCBindTelInfo.BindTelRewardEntry
+ 0, // 57: player.SCPlayerSMSCode.Code:type_name -> player.OpResultCode
+ 0, // 58: player.SCBindTel.Code:type_name -> player.OpResultCode
+ 0, // 59: player.SCHttpPass.OpRetCode:type_name -> player.OpResultCode
+ 128, // 60: player.SCPhoneLotteryInfo.Item:type_name -> player.LotteryItem
+ 128, // 61: player.SCPhoneLottery.Item:type_name -> player.LotteryItem
+ 108, // 62: player.SCGetWeekCardAwary.Items:type_name -> player.PayItem
+ 9, // 63: player.SCGetWeekCardAwary.WeekCard:type_name -> player.WeekInfo
+ 135, // 64: player.SCExchangeChannel.Datas:type_name -> player.ChannelSwitch
+ 139, // 65: player.SCSMSConfig.Info:type_name -> player.SMSInfo
+ 128, // 66: player.SCDiamondLotteryInfo.Item:type_name -> player.LotteryItem
+ 128, // 67: player.SCDiamondLottery.Item:type_name -> player.LotteryItem
+ 128, // 68: player.SCDiamondLotteryLuckyAward.Item:type_name -> player.LotteryItem
+ 169, // 69: player.SCItem.Items:type_name -> server.DB_GameItem
+ 149, // 70: player.SCAwardLog.AwardLog:type_name -> player.AwardLogData
+ 151, // 71: player.SCAwardLog.AnnouncerLog:type_name -> player.AnnouncerLogInfo
+ 150, // 72: player.AwardLogData.AwardLog:type_name -> player.AwardLogInfo
+ 154, // 73: player.SCPopUpWindowsConfig.Info:type_name -> player.WindowsInfo
+ 0, // 74: player.SCUpdateAttribute.OpRetCode:type_name -> player.OpResultCode
+ 167, // 75: player.Config.Map:type_name -> player.Config.MapEntry
+ 168, // 76: player.Config.MapStr:type_name -> player.Config.MapStrEntry
+ 158, // 77: player.SCDataConfig.Cfg:type_name -> player.Config
+ 78, // [78:78] is the sub-list for method output_type
+ 78, // [78:78] is the sub-list for method input_type
+ 78, // [78:78] is the sub-list for extension type_name
+ 78, // [78:78] is the sub-list for extension extendee
+ 0, // [0:78] is the sub-list for field type_name
}
func init() { file_player_proto_init() }
@@ -14164,6 +14701,66 @@ func file_player_proto_init() {
return nil
}
}
+ file_player_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CSUpdateAttribute); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_player_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCUpdateAttribute); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_player_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCGuideConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_player_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Config); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_player_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCDataConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -14171,7 +14768,7 @@ func file_player_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_player_proto_rawDesc,
NumEnums: 2,
- NumMessages: 157,
+ NumMessages: 167,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/protocol/player/player.proto b/protocol/player/player.proto
index 8c070d2..4b45515 100644
--- a/protocol/player/player.proto
+++ b/protocol/player/player.proto
@@ -75,6 +75,13 @@ enum OpResultCode {
OPRC_Hundred_YouHadBetCannotLeave = 7001; //赢下注不能离开
OPRC_Hundred_YouHadBankerCannotLeave = 7002; //已上庄不能离开
+
+ OPRC_GuideStep_Finish = 8001; //该引导步骤已完成
+ OPRC_GuideStep_Front = 8002; //前一个引导步骤未完成
+ OPRC_GuideStep_End = 8003; //新手引导已结束
+ OPRC_Guide_Close = 8004; //新手引导已关闭
+ OPRC_Guide_Skip = 8005; //新手引导已跳过
+ OPRC_Guide_SkipClose = 8006; //新手引导不能跳过
}
//获取玩家数据消息id
@@ -197,7 +204,6 @@ enum PlayerPacketID {
PACKET_SCBillList = 2813; // 账变记录
PACKET_CSSavePlayerInfo = 2814; // 保存个人资料
PACKET_SCSavePlayerInfo = 2815; // 保存个人资料
-
PACKET_CS_PhoneLotteryInfo = 2816;//请求抽奖信息
PACKET_SC_PhoneLotteryInfo = 2817;//返回抽奖信息
PACKET_CS_PhoneLottery = 2818;//请求抽奖
@@ -222,7 +228,10 @@ enum PlayerPacketID {
PACKET_SCAwardLog = 2837; //返回获奖记录
PACKET_CSPopUpWindowsConfig = 2838;//请求弹窗配置
PACKET_SCPopUpWindowsConfig = 2839;//返回弹窗配置
-
+ PACKET_CSUpdateAttribute = 2840;//请求更新属性
+ PACKET_SCUpdateAttribute = 2841;//返回更新属性
+ PACKET_SCGuideConfig = 2842;//返回引导配置
+ PACKET_SCDataConfig = 2843;//通知配置更新
}
// 账变记录
@@ -334,6 +343,7 @@ message PlayerData {
repeated int32 RequestAddFriend = 49;//请求添加好友信息
int32 UseSkinId = 50; // 皮肤id
string ChannelID = 51; // 渠道ID
+ int32 GuideStep = 52; // 引导步骤; 最小为0,-1表示跳过引导了
}
//周卡数据
@@ -977,15 +987,17 @@ message SCVIPBuy {
//VIP领取
//PACKET_CS_DRAWVIPGIFT
message CSVIPDraw {
- int32 Id = 1; // 领取编号 0.每日礼包
+ int32 Id = 1; // 领取编号 0.每日礼包 1.等级礼包(Privilege9)
+ int32 Vip = 2; //领取的礼包vip等级
}
//VIP领取
//PACKET_SC_DRAWVIPGIFT
message SCVIPDraw {
- int32 Id = 1; // 领取编号 0.每日礼包 1.每日金币礼包 2.VIP礼包
+ int32 Id = 1; // 领取编号
int32 Vip = 2; //领取的礼包vip等级
OpResultCode OpRetCode = 3; //操作结果
+ map Award = 4; //获得奖励
}
//VIP信息
@@ -998,7 +1010,7 @@ message VIPcfg {
repeated ItemInfo Item = 2; // 道具
int32 VipEx = 3; // VIP经验
int64 Price = 4; // 金额
- repeated int32 Privilege1 = 5; //每日礼包
+ map Privilege1 = 5; //每日礼包
repeated int32 LineId = 6; //头像框Id
repeated int32 Privilege2 = 7; //每日金币礼包1金币值2代表充值的金额
repeated int32 Privilege3 = 8;//VIP商城刷新次数和商品数量
@@ -1010,8 +1022,10 @@ message VIPcfg {
int32 Privilege8 = 14;//VIP客服标识
int32 ShopId2 = 15;
int32 ShopId7 = 16;
- repeated int32 BagStatus = 17;//每日礼包|每日金币礼包|固定VIP礼包 0可领取 1不可领取
+ repeated int32 BagStatus = 17;//每日礼包|每日金币礼包|固定VIP礼包|等级礼包 0可领取 1不可领取
int32 MatchFreeTimes = 18;// 比赛免费次数
+ map Privilege9 = 19; // vip免费礼包,每个vip等级领取一次
+ int32 PrivilegeShow = 20;// Privilege9 原价
}
//VIP信息
@@ -1052,6 +1066,9 @@ message PayItem {
message SCPayGoodsInfo{
repeated int32 Gold = 1;// 0.金币 1.钻石 3.经验
repeated PayItem Item = 2;// 道具
+ int32 ShopId = 3;// 商品id
+ int64 Money = 4;// 现金
+ string Name = 5;// 名称
}
// 资源更新
@@ -1311,4 +1328,43 @@ message WindowsInfo{
int32 Sort = 3;//排序
int32 PartNum = 4;//参与人数
int32 GainNum = 5;//领取人数
+}
+
+//PACKET_CSUpdateAttribute
+message CSUpdateAttribute{
+ int32 Tp = 1; // 1.更新新手引导阶段 2.跳过新手引导 3.更新新手引导状态(测试用)
+ repeated int64 Param = 2;
+}
+//PACKET_SCUpdateAttribute
+message SCUpdateAttribute{
+ OpResultCode OpRetCode = 1; //操作结果
+ int32 Tp = 2;
+ repeated int64 Param = 3;
+}
+
+//PACKET_SCGuideConfig
+message SCGuideConfig{
+ int32 On = 2; // 引导开关 1开启 2关闭
+ int32 Skip = 3; // 引导跳过开关 1开启 2关闭
+}
+
+message Config{
+ // Tp 类型:
+ // 1:小精灵快捷入口 On开关 Value地址
+ // 2: ...
+ // ...
+ int32 Tp = 1;
+ bool On = 2;
+ string Value = 3;
+ int64 Num = 4;
+ repeated string Values = 5;
+ repeated int64 Nums = 6;
+ repeated bool Ons = 7;
+ map Map = 8;
+ map MapStr = 9;
+}
+
+//PACKET_SCDataConfig
+message SCDataConfig{
+ repeated Config Cfg = 1;
}
\ No newline at end of file
diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go
index 6b80939..def91f5 100644
--- a/protocol/server/pbdata.pb.go
+++ b/protocol/server/pbdata.pb.go
@@ -10496,6 +10496,8 @@ type DB_VIP struct {
Award map[int64]int64 `protobuf:"bytes,18,rep,name=Award,proto3" json:"Award,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
ParamName []string `protobuf:"bytes,19,rep,name=ParamName,proto3" json:"ParamName,omitempty"`
MatchFreeTimes int32 `protobuf:"varint,20,opt,name=MatchFreeTimes,proto3" json:"MatchFreeTimes,omitempty"`
+ Privilege9 []int32 `protobuf:"varint,21,rep,packed,name=Privilege9,proto3" json:"Privilege9,omitempty"`
+ PrivilegeShow int32 `protobuf:"varint,22,opt,name=PrivilegeShow,proto3" json:"PrivilegeShow,omitempty"`
}
func (x *DB_VIP) Reset() {
@@ -10670,6 +10672,20 @@ func (x *DB_VIP) GetMatchFreeTimes() int32 {
return 0
}
+func (x *DB_VIP) GetPrivilege9() []int32 {
+ if x != nil {
+ return x.Privilege9
+ }
+ return nil
+}
+
+func (x *DB_VIP) GetPrivilegeShow() int32 {
+ if x != nil {
+ return x.PrivilegeShow
+ }
+ return 0
+}
+
type DB_VIPArray struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -10717,6 +10733,116 @@ func (x *DB_VIPArray) GetArr() []*DB_VIP {
return nil
}
+type DB_VIPShow struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"`
+ SkinId int32 `protobuf:"varint,2,opt,name=SkinId,proto3" json:"SkinId,omitempty"`
+ VIPLevel int32 `protobuf:"varint,3,opt,name=VIPLevel,proto3" json:"VIPLevel,omitempty"`
+}
+
+func (x *DB_VIPShow) Reset() {
+ *x = DB_VIPShow{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_pbdata_proto_msgTypes[138]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DB_VIPShow) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DB_VIPShow) ProtoMessage() {}
+
+func (x *DB_VIPShow) ProtoReflect() protoreflect.Message {
+ mi := &file_pbdata_proto_msgTypes[138]
+ 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 DB_VIPShow.ProtoReflect.Descriptor instead.
+func (*DB_VIPShow) Descriptor() ([]byte, []int) {
+ return file_pbdata_proto_rawDescGZIP(), []int{138}
+}
+
+func (x *DB_VIPShow) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *DB_VIPShow) GetSkinId() int32 {
+ if x != nil {
+ return x.SkinId
+ }
+ return 0
+}
+
+func (x *DB_VIPShow) GetVIPLevel() int32 {
+ if x != nil {
+ return x.VIPLevel
+ }
+ return 0
+}
+
+type DB_VIPShowArray struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Arr []*DB_VIPShow `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"`
+}
+
+func (x *DB_VIPShowArray) Reset() {
+ *x = DB_VIPShowArray{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_pbdata_proto_msgTypes[139]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DB_VIPShowArray) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DB_VIPShowArray) ProtoMessage() {}
+
+func (x *DB_VIPShowArray) ProtoReflect() protoreflect.Message {
+ mi := &file_pbdata_proto_msgTypes[139]
+ 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 DB_VIPShowArray.ProtoReflect.Descriptor instead.
+func (*DB_VIPShowArray) Descriptor() ([]byte, []int) {
+ return file_pbdata_proto_rawDescGZIP(), []int{139}
+}
+
+func (x *DB_VIPShowArray) GetArr() []*DB_VIPShow {
+ if x != nil {
+ return x.Arr
+ }
+ return nil
+}
+
var File_pbdata_proto protoreflect.FileDescriptor
var file_pbdata_proto_rawDesc = []byte{
@@ -12099,7 +12225,7 @@ var file_pbdata_proto_rawDesc = []byte{
0x03, 0x44, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41,
0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69,
- 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x06, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56,
+ 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xce, 0x06, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56,
0x49, 0x50, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18,
@@ -12140,21 +12266,34 @@ var file_pbdata_proto_rawDesc = []byte{
0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69,
- 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50,
+ 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x1a,
+ 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38,
+ 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, 0x72, 0x72, 0x61,
- 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03,
- 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d,
- 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56,
+ 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42,
+ 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x50, 0x0a, 0x0a, 0x44, 0x42, 0x5f,
+ 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12,
+ 0x1a, 0x0a, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x37, 0x0a, 0x0f, 0x44,
+ 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24,
+ 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x52,
+ 0x03, 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61,
+ 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -12169,7 +12308,7 @@ func file_pbdata_proto_rawDescGZIP() []byte {
return file_pbdata_proto_rawDescData
}
-var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 151)
+var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 153)
var file_pbdata_proto_goTypes = []interface{}{
(*DB_ActSign)(nil), // 0: server.DB_ActSign
(*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray
@@ -12309,19 +12448,21 @@ var file_pbdata_proto_goTypes = []interface{}{
(*DB_TipsArray)(nil), // 135: server.DB_TipsArray
(*DB_VIP)(nil), // 136: server.DB_VIP
(*DB_VIPArray)(nil), // 137: server.DB_VIPArray
- nil, // 138: server.DB_CollectBox.ItemIDEntry
- nil, // 139: server.DB_GameItem.GainEntry
- nil, // 140: server.DB_GiftBox.ItemIDEntry
- nil, // 141: server.DB_GiftCard.RewardsEntry
- nil, // 142: server.DB_GiftCard.DayRewardsEntry
- nil, // 143: server.DB_PetSkill.ItemConsumEntry
- nil, // 144: server.DB_PropExchange.CostEntry
- nil, // 145: server.DB_PropExchange.GainEntry
- nil, // 146: server.DB_Skin.UnlockItemEntry
- nil, // 147: server.DB_SkinLevel.UpItemEntry
- nil, // 148: server.DB_Task.AwardEntry
- nil, // 149: server.DB_VIP.Privilege7Entry
- nil, // 150: server.DB_VIP.AwardEntry
+ (*DB_VIPShow)(nil), // 138: server.DB_VIPShow
+ (*DB_VIPShowArray)(nil), // 139: server.DB_VIPShowArray
+ nil, // 140: server.DB_CollectBox.ItemIDEntry
+ nil, // 141: server.DB_GameItem.GainEntry
+ nil, // 142: server.DB_GiftBox.ItemIDEntry
+ nil, // 143: server.DB_GiftCard.RewardsEntry
+ nil, // 144: server.DB_GiftCard.DayRewardsEntry
+ nil, // 145: server.DB_PetSkill.ItemConsumEntry
+ nil, // 146: server.DB_PropExchange.CostEntry
+ nil, // 147: server.DB_PropExchange.GainEntry
+ nil, // 148: server.DB_Skin.UnlockItemEntry
+ nil, // 149: server.DB_SkinLevel.UpItemEntry
+ nil, // 150: server.DB_Task.AwardEntry
+ nil, // 151: server.DB_VIP.Privilege7Entry
+ nil, // 152: server.DB_VIP.AwardEntry
}
var file_pbdata_proto_depIdxs = []int32{
0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign
@@ -12336,7 +12477,7 @@ var file_pbdata_proto_depIdxs = []int32{
18, // 9: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules
20, // 10: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank
22, // 11: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer
- 138, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry
+ 140, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry
24, // 13: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox
26, // 14: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain
28, // 15: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch
@@ -12353,7 +12494,7 @@ var file_pbdata_proto_depIdxs = []int32{
50, // 26: server.DB_GamMatchLVArray.Arr:type_name -> server.DB_GamMatchLV
52, // 27: server.DB_GameCoinPoolArray.Arr:type_name -> server.DB_GameCoinPool
54, // 28: server.DB_GameFreeArray.Arr:type_name -> server.DB_GameFree
- 139, // 29: server.DB_GameItem.Gain:type_name -> server.DB_GameItem.GainEntry
+ 141, // 29: server.DB_GameItem.Gain:type_name -> server.DB_GameItem.GainEntry
56, // 30: server.DB_GameItemArray.Arr:type_name -> server.DB_GameItem
58, // 31: server.DB_GameMatchLevelArray.Arr:type_name -> server.DB_GameMatchLevel
60, // 32: server.DB_GameRuleArray.Arr:type_name -> server.DB_GameRule
@@ -12362,10 +12503,10 @@ var file_pbdata_proto_depIdxs = []int32{
66, // 35: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction
68, // 36: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet
70, // 37: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role
- 140, // 38: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry
+ 142, // 38: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry
72, // 39: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox
- 141, // 40: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry
- 142, // 41: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry
+ 143, // 40: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry
+ 144, // 41: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry
74, // 42: server.DB_GiftCardArray.Arr:type_name -> server.DB_GiftCard
76, // 43: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate
78, // 44: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds
@@ -12378,7 +12519,7 @@ var file_pbdata_proto_depIdxs = []int32{
92, // 51: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl
94, // 52: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer
96, // 53: server.DB_PassShowArray.Arr:type_name -> server.DB_PassShow
- 143, // 54: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry
+ 145, // 54: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry
98, // 55: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill
100, // 56: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery
102, // 57: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond
@@ -12386,31 +12527,32 @@ var file_pbdata_proto_depIdxs = []int32{
106, // 59: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp
108, // 60: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType
110, // 61: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd
- 144, // 62: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry
- 145, // 63: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry
+ 146, // 62: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry
+ 147, // 63: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry
112, // 64: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange
114, // 65: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle
116, // 66: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel
118, // 67: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward
120, // 68: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words
- 146, // 69: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry
+ 148, // 69: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry
122, // 70: server.DB_SkinArray.Arr:type_name -> server.DB_Skin
- 147, // 71: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry
+ 149, // 71: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry
124, // 72: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel
126, // 73: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight
128, // 74: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance
- 148, // 75: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry
+ 150, // 75: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry
130, // 76: server.DB_TaskArray.Arr:type_name -> server.DB_Task
132, // 77: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping
134, // 78: server.DB_TipsArray.Arr:type_name -> server.DB_Tips
- 149, // 79: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry
- 150, // 80: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry
+ 151, // 79: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry
+ 152, // 80: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry
136, // 81: server.DB_VIPArray.Arr:type_name -> server.DB_VIP
- 82, // [82:82] is the sub-list for method output_type
- 82, // [82:82] is the sub-list for method input_type
- 82, // [82:82] is the sub-list for extension type_name
- 82, // [82:82] is the sub-list for extension extendee
- 0, // [0:82] is the sub-list for field type_name
+ 138, // 82: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow
+ 83, // [83:83] is the sub-list for method output_type
+ 83, // [83:83] is the sub-list for method input_type
+ 83, // [83:83] is the sub-list for extension type_name
+ 83, // [83:83] is the sub-list for extension extendee
+ 0, // [0:83] is the sub-list for field type_name
}
func init() { file_pbdata_proto_init() }
@@ -14075,6 +14217,30 @@ func file_pbdata_proto_init() {
return nil
}
}
+ file_pbdata_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DB_VIPShow); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_pbdata_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DB_VIPShowArray); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -14082,7 +14248,7 @@ func file_pbdata_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_pbdata_proto_rawDesc,
NumEnums: 0,
- NumMessages: 151,
+ NumMessages: 153,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto
index d6f391e..490d130 100644
--- a/protocol/server/pbdata.proto
+++ b/protocol/server/pbdata.proto
@@ -1741,9 +1741,27 @@ message DB_VIP {
int32 MatchFreeTimes = 20;
+ repeated int32 Privilege9 = 21;
+
+ int32 PrivilegeShow = 22;
+
}
message DB_VIPArray {
repeated DB_VIP Arr = 1;
}
+message DB_VIPShow {
+
+ int32 Id = 1;
+
+ int32 SkinId = 2;
+
+ int32 VIPLevel = 3;
+
+}
+
+message DB_VIPShowArray {
+ repeated DB_VIPShow Arr = 1;
+}
+
diff --git a/protocol/shop/shop.pb.go b/protocol/shop/shop.pb.go
index 8ac0e2d..3165a5f 100644
--- a/protocol/shop/shop.pb.go
+++ b/protocol/shop/shop.pb.go
@@ -1262,6 +1262,7 @@ type SCShopExchange struct {
RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=shop.OpResultCode" json:"RetCode,omitempty"`
CreateTs int64 `protobuf:"varint,2,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //订单创建日期
OrderId string `protobuf:"bytes,3,opt,name=OrderId,proto3" json:"OrderId,omitempty"` //订单号
+ GoodsId int32 `protobuf:"varint,4,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品Id
}
func (x *SCShopExchange) Reset() {
@@ -1317,6 +1318,13 @@ func (x *SCShopExchange) GetOrderId() string {
return ""
}
+func (x *SCShopExchange) GetGoodsId() int32 {
+ if x != nil {
+ return x.GoodsId
+ }
+ return 0
+}
+
//PACKET_CS_SHOP_EXCHANGELIST
type CSShopExchangeList struct {
state protoimpl.MessageState
@@ -1378,6 +1386,7 @@ type ShopExchangeInfo struct {
NotVipShopLimit int32 `protobuf:"varint,15,opt,name=NotVipShopLimit,proto3" json:"NotVipShopLimit,omitempty"` //非VIP限购总数
ShopType int32 `protobuf:"varint,16,opt,name=ShopType,proto3" json:"ShopType,omitempty"` //商品类型
TelData []*TelChargeData `protobuf:"bytes,17,rep,name=TelData,proto3" json:"TelData,omitempty"`
+ Items []*ItemInfo `protobuf:"bytes,18,rep,name=Items,proto3" json:"Items,omitempty"` //道具
}
func (x *ShopExchangeInfo) Reset() {
@@ -1517,6 +1526,13 @@ func (x *ShopExchangeInfo) GetTelData() []*TelChargeData {
return nil
}
+func (x *ShopExchangeInfo) GetItems() []*ItemInfo {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
type ExchangeType struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2585,196 +2601,200 @@ var file_shop_proto_rawDesc = []byte{
0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x74, 0x0a, 0x0e, 0x53, 0x43,
- 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x07,
- 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e,
- 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
- 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49,
- 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64,
- 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xf7, 0x03, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x70, 0x45,
- 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x54,
- 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12,
- 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x44,
- 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
- 0x2a, 0x0a, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54,
- 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54,
- 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
- 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65,
- 0x6d, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49,
- 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x56, 0x49, 0x50, 0x44, 0x61,
- 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x4e, 0x6f, 0x74,
- 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0d,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d,
- 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x53, 0x68,
- 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x56,
- 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x4e,
- 0x6f, 0x74, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70,
- 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61,
- 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61,
- 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
- 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12,
- 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61,
- 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
- 0x49, 0x64, 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44,
- 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, 0x6f,
- 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54,
- 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54,
- 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e,
- 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x9a, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x53, 0x68,
- 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c,
- 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
- 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x05,
- 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x68,
- 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x57, 0x65,
- 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x68, 0x6f,
- 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, 0x65,
- 0x69, 0x67, 0x68, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x09, 0x43, 0x53, 0x50, 0x61, 0x79, 0x49, 0x6e,
- 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x12, 0x14,
- 0x0a, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42,
- 0x75, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x45,
- 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20,
- 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d,
- 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x43, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a,
+ 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x53,
+ 0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x0a,
0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12,
0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
- 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55,
- 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x2a, 0x0a,
- 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, 0x65,
- 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a,
- 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
- 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0xd3, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x49,
- 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72,
- 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54,
- 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75,
- 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65,
- 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20,
- 0x03, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x49,
- 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
- 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49,
- 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a,
- 0x02, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x39, 0x0a,
- 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x25, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x11, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69,
- 0x73, 0x74, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x6c,
- 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79,
- 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65,
- 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x41, 0x64, 0x64, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x02, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x41,
- 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x22, 0x2e,
- 0x0a, 0x08, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64,
- 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x22, 0x11,
- 0x0a, 0x0f, 0x43, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f,
- 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70,
- 0x53, 0x68, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e,
- 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72,
- 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
- 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x95, 0x02, 0x0a,
- 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a,
- 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e,
- 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x17,
- 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45,
- 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f,
- 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x03, 0x12,
- 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x4f,
- 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61,
- 0x52, 0x74, 0x74, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0x06, 0x12,
- 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x63, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50,
- 0x52, 0x43, 0x5f, 0x4a, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67,
- 0x68, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x69, 0x70, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x09, 0x12,
- 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x49, 0x4d, 0x43, 0x6f,
- 0x64, 0x65, 0x10, 0x0a, 0x2a, 0x91, 0x05, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
- 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f,
- 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10,
- 0xc4, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
- 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc5, 0x13, 0x12, 0x1c, 0x0a, 0x17,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x41,
- 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc6, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x44, 0x4c,
- 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc7, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, 0x59,
- 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc8, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, 0x59, 0x53,
- 0x48, 0x4f, 0x50, 0x10, 0xc9, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47,
- 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xca, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43,
- 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xcb, 0x13, 0x12, 0x1c,
- 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50,
- 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcc, 0x13, 0x12, 0x1c, 0x0a, 0x17,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45,
- 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcd, 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43,
- 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xce, 0x13, 0x12, 0x20, 0x0a, 0x1b,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45,
- 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x13, 0x12, 0x1a,
- 0x0a, 0x15, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x49, 0x56, 0x45, 0x43, 0x4f,
- 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd2, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41,
- 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd3,
- 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x41,
- 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd4, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x4c,
- 0x49, 0x53, 0x54, 0x10, 0xd5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x53, 0x43, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53,
- 0x54, 0x10, 0xd6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
- 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd7, 0x13, 0x12, 0x18,
- 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45,
- 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd8, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49, 0x50,
- 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xd9, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49, 0x50,
- 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xda, 0x13, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67,
- 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65,
- 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x68, 0x6f, 0x70, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72,
+ 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43,
+ 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73,
+ 0x74, 0x22, 0x9d, 0x04, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69,
+ 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63,
+ 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07,
+ 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47,
+ 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61,
+ 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61,
+ 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x45, 0x78,
+ 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f,
+ 0x70, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06,
+ 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61,
+ 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68,
+ 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e,
+ 0x56, 0x49, 0x50, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x56, 0x49, 0x50, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c,
+ 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x44, 0x61,
+ 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x11, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f,
+ 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70,
+ 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0f, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74,
+ 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x07,
+ 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61,
+ 0x74, 0x61, 0x52, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x05, 0x49,
+ 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f,
+ 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d,
+ 0x73, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43,
+ 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x02, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65,
+ 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68,
+ 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70,
+ 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04,
+ 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x9a, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x53,
+ 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a,
+ 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73,
+ 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x57,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x68,
+ 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x09, 0x43, 0x53, 0x50, 0x61, 0x79, 0x49,
+ 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a,
+ 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x12,
+ 0x14, 0x0a, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+ 0x42, 0x75, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
+ 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12,
+ 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75,
+ 0x6d, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x43, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c,
+ 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03,
+ 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x2a,
+ 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74,
+ 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18,
+ 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0xd3, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x79,
+ 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65,
+ 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72,
+ 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e,
+ 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
+ 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x08,
+ 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e,
+ 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08,
+ 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x39,
+ 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x11, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c,
+ 0x69, 0x73, 0x74, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x43, 0x53, 0x50,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54,
+ 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x64,
+ 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e,
+ 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x22,
+ 0x2e, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x41,
+ 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x22,
+ 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68,
+ 0x6f, 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69,
+ 0x70, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49,
+ 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66,
+ 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x95, 0x02,
+ 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f,
+ 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12,
+ 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12,
+ 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74,
+ 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43,
+ 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x03,
+ 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14,
+ 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74,
+ 0x61, 0x52, 0x74, 0x74, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45,
+ 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0x06,
+ 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x63, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4f,
+ 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75,
+ 0x67, 0x68, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x69, 0x70,
+ 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x09,
+ 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x49, 0x4d, 0x43,
+ 0x6f, 0x64, 0x65, 0x10, 0x0a, 0x2a, 0x91, 0x05, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48,
+ 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f,
+ 0x10, 0xc4, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
+ 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc5, 0x13, 0x12, 0x1c, 0x0a,
+ 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f,
+ 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc6, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x44,
+ 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc7, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41,
+ 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc8, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, 0x59,
+ 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc9, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e,
+ 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xca, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58,
+ 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xcb, 0x13, 0x12,
+ 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f,
+ 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcc, 0x13, 0x12, 0x1c, 0x0a,
+ 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f,
+ 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcd, 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58,
+ 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xce, 0x13, 0x12, 0x20, 0x0a,
+ 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f,
+ 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x13, 0x12,
+ 0x1a, 0x0a, 0x15, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x49, 0x56, 0x45, 0x43,
+ 0x4f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd2, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10,
+ 0xd3, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50,
+ 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd4, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f,
+ 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
+ 0x54, 0x5f, 0x53, 0x43, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49,
+ 0x53, 0x54, 0x10, 0xd6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+ 0x43, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd7, 0x13, 0x12,
+ 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x4c, 0x41, 0x59,
+ 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd8, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49,
+ 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xd9, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49,
+ 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xda, 0x13, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e,
+ 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d,
+ 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x68, 0x6f, 0x70, 0x62,
+ 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2836,19 +2856,20 @@ var file_shop_proto_depIdxs = []int32{
0, // 7: shop.SCShopExchange.RetCode:type_name -> shop.OpResultCode
17, // 8: shop.ShopExchangeInfo.ExType:type_name -> shop.ExchangeType
18, // 9: shop.ShopExchangeInfo.TelData:type_name -> shop.TelChargeData
- 0, // 10: shop.SCShopExchangeList.RetCode:type_name -> shop.OpResultCode
- 16, // 11: shop.SCShopExchangeList.Infos:type_name -> shop.ShopExchangeInfo
- 19, // 12: shop.SCShopExchangeList.Weight:type_name -> shop.ShopWeight
- 0, // 13: shop.SCPayInfo.RetCode:type_name -> shop.OpResultCode
- 24, // 14: shop.PayInfoList.ItemInfo:type_name -> shop.ItemInfo
- 25, // 15: shop.SCGetPayInfoList.Info:type_name -> shop.PayInfoList
- 29, // 16: shop.SCGetPlayerAddrs.Addrs:type_name -> shop.AddrData
- 2, // 17: shop.SCUpdateVipShop.info:type_name -> shop.ShopInfo
- 18, // [18:18] is the sub-list for method output_type
- 18, // [18:18] is the sub-list for method input_type
- 18, // [18:18] is the sub-list for extension type_name
- 18, // [18:18] is the sub-list for extension extendee
- 0, // [0:18] is the sub-list for field type_name
+ 24, // 10: shop.ShopExchangeInfo.Items:type_name -> shop.ItemInfo
+ 0, // 11: shop.SCShopExchangeList.RetCode:type_name -> shop.OpResultCode
+ 16, // 12: shop.SCShopExchangeList.Infos:type_name -> shop.ShopExchangeInfo
+ 19, // 13: shop.SCShopExchangeList.Weight:type_name -> shop.ShopWeight
+ 0, // 14: shop.SCPayInfo.RetCode:type_name -> shop.OpResultCode
+ 24, // 15: shop.PayInfoList.ItemInfo:type_name -> shop.ItemInfo
+ 25, // 16: shop.SCGetPayInfoList.Info:type_name -> shop.PayInfoList
+ 29, // 17: shop.SCGetPlayerAddrs.Addrs:type_name -> shop.AddrData
+ 2, // 18: shop.SCUpdateVipShop.info:type_name -> shop.ShopInfo
+ 19, // [19:19] is the sub-list for method output_type
+ 19, // [19:19] is the sub-list for method input_type
+ 19, // [19:19] is the sub-list for extension type_name
+ 19, // [19:19] is the sub-list for extension extendee
+ 0, // [0:19] is the sub-list for field type_name
}
func init() { file_shop_proto_init() }
diff --git a/protocol/shop/shop.proto b/protocol/shop/shop.proto
index 894d02a..f54c60b 100644
--- a/protocol/shop/shop.proto
+++ b/protocol/shop/shop.proto
@@ -160,6 +160,7 @@ message SCShopExchange{
OpResultCode RetCode = 1;
int64 CreateTs = 2;//订单创建日期
string OrderId = 3;//订单号
+ int32 GoodsId = 4;//商品Id
}
//PACKET_CS_SHOP_EXCHANGELIST
@@ -183,6 +184,7 @@ message ShopExchangeInfo{
int32 NotVipShopLimit = 15;//非VIP限购总数
int32 ShopType = 16; //商品类型
repeated TelChargeData TelData = 17;
+ repeated ItemInfo Items = 18; //道具
}
diff --git a/protocol/tournament/tournament.pb.go b/protocol/tournament/tournament.pb.go
index eeb30bb..1b84ad3 100644
--- a/protocol/tournament/tournament.pb.go
+++ b/protocol/tournament/tournament.pb.go
@@ -39,6 +39,10 @@ const (
TOURNAMENTID_PACKET_TM_SCTMSeasonRank TOURNAMENTID = 2754 //赛季排行榜
TOURNAMENTID_PACKET_TM_CSTMSeasonAward TOURNAMENTID = 2755 //领取赛季奖励
TOURNAMENTID_PACKET_TM_SCTMSeasonAward TOURNAMENTID = 2756 //领取赛季奖励
+ TOURNAMENTID_PACKET_TM_CSMatchList TOURNAMENTID = 2757 // 比赛列表
+ TOURNAMENTID_PACKET_TM_SCMatchList TOURNAMENTID = 2758 // 比赛列表
+ TOURNAMENTID_PACKET_TM_CSRoomList TOURNAMENTID = 2759 // 比赛房间列表
+ TOURNAMENTID_PACKET_TM_SCRoomList TOURNAMENTID = 2760 // 比赛房间列表
)
// Enum value maps for TOURNAMENTID.
@@ -60,6 +64,10 @@ var (
2754: "PACKET_TM_SCTMSeasonRank",
2755: "PACKET_TM_CSTMSeasonAward",
2756: "PACKET_TM_SCTMSeasonAward",
+ 2757: "PACKET_TM_CSMatchList",
+ 2758: "PACKET_TM_SCMatchList",
+ 2759: "PACKET_TM_CSRoomList",
+ 2760: "PACKET_TM_SCRoomList",
}
TOURNAMENTID_value = map[string]int32{
"PACKET_TM_ZERO": 0,
@@ -78,6 +86,10 @@ var (
"PACKET_TM_SCTMSeasonRank": 2754,
"PACKET_TM_CSTMSeasonAward": 2755,
"PACKET_TM_SCTMSeasonAward": 2756,
+ "PACKET_TM_CSMatchList": 2757,
+ "PACKET_TM_SCMatchList": 2758,
+ "PACKET_TM_CSRoomList": 2759,
+ "PACKET_TM_SCRoomList": 2760,
}
)
@@ -400,9 +412,10 @@ type TMInfo struct {
AwardShow string `protobuf:"bytes,18,opt,name=AwardShow,proto3" json:"AwardShow,omitempty"` //主要奖励展示
Rule string `protobuf:"bytes,19,opt,name=Rule,proto3" json:"Rule,omitempty"`
SortId int32 `protobuf:"varint,20,opt,name=SortId,proto3" json:"SortId,omitempty"`
- OnChannelName []string `protobuf:"bytes,21,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` //在哪个渠道开启
- ShowId int32 `protobuf:"varint,22,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分
- AwardNum int32 `protobuf:"varint,23,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量
+ OnChannelName []string `protobuf:"bytes,21,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` //在哪个渠道开启
+ ShowId int32 `protobuf:"varint,22,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分
+ AwardNum int32 `protobuf:"varint,23,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量
+ AudienceSwitch int32 `protobuf:"varint,27,opt,name=AudienceSwitch,proto3" json:"AudienceSwitch,omitempty"` // 观战开关 1开启 2关闭
}
func (x *TMInfo) Reset() {
@@ -598,6 +611,13 @@ func (x *TMInfo) GetAwardNum() int32 {
return 0
}
+func (x *TMInfo) GetAudienceSwitch() int32 {
+ if x != nil {
+ return x.AudienceSwitch
+ }
+ return 0
+}
+
type MatchTypeInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1683,6 +1703,521 @@ func (x *SCTMSeasonAward) GetCode() int32 {
return 0
}
+//PACKET_TM_CSMatchList
+type CSMatchList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ MatchId int64 `protobuf:"varint,1,opt,name=MatchId,proto3" json:"MatchId,omitempty"` // 比赛id 0表示所有比赛场
+ Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"` // 房间类型 0所有房间 1可观战房间
+}
+
+func (x *CSMatchList) Reset() {
+ *x = CSMatchList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_tournament_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CSMatchList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CSMatchList) ProtoMessage() {}
+
+func (x *CSMatchList) ProtoReflect() protoreflect.Message {
+ mi := &file_tournament_proto_msgTypes[22]
+ 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 CSMatchList.ProtoReflect.Descriptor instead.
+func (*CSMatchList) Descriptor() ([]byte, []int) {
+ return file_tournament_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *CSMatchList) GetMatchId() int64 {
+ if x != nil {
+ return x.MatchId
+ }
+ return 0
+}
+
+func (x *CSMatchList) GetTp() int32 {
+ if x != nil {
+ return x.Tp
+ }
+ return 0
+}
+
+type MatchPlayer struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id
+ Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 玩家名字
+ HeadUrl string `protobuf:"bytes,3,opt,name=HeadUrl,proto3" json:"HeadUrl,omitempty"` //头像地址
+ UseRoleId int32 `protobuf:"varint,4,opt,name=UseRoleId,proto3" json:"UseRoleId,omitempty"` //使用的人物模型id
+ UseSkinId int32 `protobuf:"varint,5,opt,name=UseSkinId,proto3" json:"UseSkinId,omitempty"` // 皮肤id
+ Rank int32 `protobuf:"varint,6,opt,name=Rank,proto3" json:"Rank,omitempty"` //排名
+ Score int32 `protobuf:"varint,7,opt,name=Score,proto3" json:"Score,omitempty"` //分数
+}
+
+func (x *MatchPlayer) Reset() {
+ *x = MatchPlayer{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_tournament_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MatchPlayer) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MatchPlayer) ProtoMessage() {}
+
+func (x *MatchPlayer) ProtoReflect() protoreflect.Message {
+ mi := &file_tournament_proto_msgTypes[23]
+ 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 MatchPlayer.ProtoReflect.Descriptor instead.
+func (*MatchPlayer) Descriptor() ([]byte, []int) {
+ return file_tournament_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *MatchPlayer) GetSnId() int32 {
+ if x != nil {
+ return x.SnId
+ }
+ return 0
+}
+
+func (x *MatchPlayer) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *MatchPlayer) GetHeadUrl() string {
+ if x != nil {
+ return x.HeadUrl
+ }
+ return ""
+}
+
+func (x *MatchPlayer) GetUseRoleId() int32 {
+ if x != nil {
+ return x.UseRoleId
+ }
+ return 0
+}
+
+func (x *MatchPlayer) GetUseSkinId() int32 {
+ if x != nil {
+ return x.UseSkinId
+ }
+ return 0
+}
+
+func (x *MatchPlayer) GetRank() int32 {
+ if x != nil {
+ return x.Rank
+ }
+ return 0
+}
+
+func (x *MatchPlayer) GetScore() int32 {
+ if x != nil {
+ return x.Score
+ }
+ return 0
+}
+
+type MatchInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ MatchId int64 `protobuf:"varint,1,opt,name=MatchId,proto3" json:"MatchId,omitempty"` // 比赛id
+ InstanceId int64 `protobuf:"varint,2,opt,name=InstanceId,proto3" json:"InstanceId,omitempty"` // 本场比赛id
+ Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 比赛名字
+ Round int32 `protobuf:"varint,4,opt,name=Round,proto3" json:"Round,omitempty"` // 当前第几轮
+ TotalRound int32 `protobuf:"varint,5,opt,name=TotalRound,proto3" json:"TotalRound,omitempty"` // 总轮数
+ RemainNum int32 `protobuf:"varint,6,opt,name=RemainNum,proto3" json:"RemainNum,omitempty"` // 剩余人数
+ Players []*MatchPlayer `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` // 玩家列表
+}
+
+func (x *MatchInfo) Reset() {
+ *x = MatchInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_tournament_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MatchInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MatchInfo) ProtoMessage() {}
+
+func (x *MatchInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_tournament_proto_msgTypes[24]
+ 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 MatchInfo.ProtoReflect.Descriptor instead.
+func (*MatchInfo) Descriptor() ([]byte, []int) {
+ return file_tournament_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *MatchInfo) GetMatchId() int64 {
+ if x != nil {
+ return x.MatchId
+ }
+ return 0
+}
+
+func (x *MatchInfo) GetInstanceId() int64 {
+ if x != nil {
+ return x.InstanceId
+ }
+ return 0
+}
+
+func (x *MatchInfo) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *MatchInfo) GetRound() int32 {
+ if x != nil {
+ return x.Round
+ }
+ return 0
+}
+
+func (x *MatchInfo) GetTotalRound() int32 {
+ if x != nil {
+ return x.TotalRound
+ }
+ return 0
+}
+
+func (x *MatchInfo) GetRemainNum() int32 {
+ if x != nil {
+ return x.RemainNum
+ }
+ return 0
+}
+
+func (x *MatchInfo) GetPlayers() []*MatchPlayer {
+ if x != nil {
+ return x.Players
+ }
+ return nil
+}
+
+type SCTMMatchList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ List []*MatchInfo `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"`
+ MatchId int64 `protobuf:"varint,2,opt,name=MatchId,proto3" json:"MatchId,omitempty"`
+ Tp int32 `protobuf:"varint,3,opt,name=Tp,proto3" json:"Tp,omitempty"`
+}
+
+func (x *SCTMMatchList) Reset() {
+ *x = SCTMMatchList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_tournament_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCTMMatchList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCTMMatchList) ProtoMessage() {}
+
+func (x *SCTMMatchList) ProtoReflect() protoreflect.Message {
+ mi := &file_tournament_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 SCTMMatchList.ProtoReflect.Descriptor instead.
+func (*SCTMMatchList) Descriptor() ([]byte, []int) {
+ return file_tournament_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *SCTMMatchList) GetList() []*MatchInfo {
+ if x != nil {
+ return x.List
+ }
+ return nil
+}
+
+func (x *SCTMMatchList) GetMatchId() int64 {
+ if x != nil {
+ return x.MatchId
+ }
+ return 0
+}
+
+func (x *SCTMMatchList) GetTp() int32 {
+ if x != nil {
+ return x.Tp
+ }
+ return 0
+}
+
+//PACKET_TM_CSRoomList
+type CSRoomList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 本场比赛id 0表示所有房间
+ Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"` // 房间类型 0所有房间 1可观战房间
+}
+
+func (x *CSRoomList) Reset() {
+ *x = CSRoomList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_tournament_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CSRoomList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CSRoomList) ProtoMessage() {}
+
+func (x *CSRoomList) ProtoReflect() protoreflect.Message {
+ mi := &file_tournament_proto_msgTypes[26]
+ 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 CSRoomList.ProtoReflect.Descriptor instead.
+func (*CSRoomList) Descriptor() ([]byte, []int) {
+ return file_tournament_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *CSRoomList) GetId() int64 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *CSRoomList) GetTp() int32 {
+ if x != nil {
+ return x.Tp
+ }
+ return 0
+}
+
+type MatchRoom struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ RoomId int64 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` // 房间id
+ MatchId int64 `protobuf:"varint,2,opt,name=MatchId,proto3" json:"MatchId,omitempty"` // 比赛id
+ InstanceId int64 `protobuf:"varint,3,opt,name=InstanceId,proto3" json:"InstanceId,omitempty"` // 本场比赛id
+ Round int32 `protobuf:"varint,4,opt,name=Round,proto3" json:"Round,omitempty"` // 当前第几轮
+ TotalRound int32 `protobuf:"varint,5,opt,name=TotalRound,proto3" json:"TotalRound,omitempty"` // 总轮数
+ Players []*MatchPlayer `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` // 玩家列表
+}
+
+func (x *MatchRoom) Reset() {
+ *x = MatchRoom{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_tournament_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MatchRoom) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MatchRoom) ProtoMessage() {}
+
+func (x *MatchRoom) ProtoReflect() protoreflect.Message {
+ mi := &file_tournament_proto_msgTypes[27]
+ 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 MatchRoom.ProtoReflect.Descriptor instead.
+func (*MatchRoom) Descriptor() ([]byte, []int) {
+ return file_tournament_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *MatchRoom) GetRoomId() int64 {
+ if x != nil {
+ return x.RoomId
+ }
+ return 0
+}
+
+func (x *MatchRoom) GetMatchId() int64 {
+ if x != nil {
+ return x.MatchId
+ }
+ return 0
+}
+
+func (x *MatchRoom) GetInstanceId() int64 {
+ if x != nil {
+ return x.InstanceId
+ }
+ return 0
+}
+
+func (x *MatchRoom) GetRound() int32 {
+ if x != nil {
+ return x.Round
+ }
+ return 0
+}
+
+func (x *MatchRoom) GetTotalRound() int32 {
+ if x != nil {
+ return x.TotalRound
+ }
+ return 0
+}
+
+func (x *MatchRoom) GetPlayers() []*MatchPlayer {
+ if x != nil {
+ return x.Players
+ }
+ return nil
+}
+
+type SCRoomList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ List []*MatchRoom `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"`
+ Id int64 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"`
+ Tp int32 `protobuf:"varint,3,opt,name=Tp,proto3" json:"Tp,omitempty"`
+}
+
+func (x *SCRoomList) Reset() {
+ *x = SCRoomList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_tournament_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SCRoomList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SCRoomList) ProtoMessage() {}
+
+func (x *SCRoomList) ProtoReflect() protoreflect.Message {
+ mi := &file_tournament_proto_msgTypes[28]
+ 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 SCRoomList.ProtoReflect.Descriptor instead.
+func (*SCRoomList) Descriptor() ([]byte, []int) {
+ return file_tournament_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *SCRoomList) GetList() []*MatchRoom {
+ if x != nil {
+ return x.List
+ }
+ return nil
+}
+
+func (x *SCRoomList) GetId() int64 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *SCRoomList) GetTp() int32 {
+ if x != nil {
+ return x.Tp
+ }
+ return 0
+}
+
var File_tournament_proto protoreflect.FileDescriptor
var file_tournament_proto_rawDesc = []byte{
@@ -1706,7 +2241,7 @@ var file_tournament_proto_rawDesc = []byte{
0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74,
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb2, 0x06,
+ 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xda, 0x06,
0x0a, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65,
0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61,
@@ -1758,140 +2293,206 @@ var file_tournament_proto_rawDesc = []byte{
0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e,
0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e,
- 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49,
- 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49,
- 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12,
- 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x12,
- 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22,
- 0x6e, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x06,
- 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74,
- 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f,
- 0x52, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x35, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65,
- 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x6f, 0x75,
- 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70,
- 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x22, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54,
- 0x4d, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x06, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a,
- 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52,
- 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22,
- 0x6c, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54,
- 0x4d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67,
- 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54,
- 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x06, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x38, 0x0a,
- 0x0a, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f,
- 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43,
- 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x69, 0x67,
- 0x6e, 0x52, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
- 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
- 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x53,
- 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
- 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a,
- 0x0d, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x18,
- 0x0a, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53,
- 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61,
- 0x78, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x22, 0x25, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d,
- 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22,
- 0x6b, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x08,
- 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
- 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d,
- 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
- 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f,
- 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x22, 0x88, 0x03, 0x0a,
- 0x0f, 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f,
- 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64,
- 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16,
- 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
- 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d,
- 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49,
- 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49,
- 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x52, 0x61, 0x6e,
- 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74,
- 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c,
- 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b,
- 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x53, 0x54, 0x4d, 0x53,
- 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x0e, 0x53, 0x43,
- 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02,
- 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f,
- 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69, 0x6d,
- 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76, 0x12, 0x18,
- 0x0a, 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x58, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61,
- 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
- 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12,
- 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61,
- 0x6e, 0x6b, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e,
- 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x4a, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
- 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x6f,
- 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52,
- 0x61, 0x6e, 0x6b, 0x52, 0x0b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x73,
- 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x02, 0x4c, 0x76, 0x22, 0x35, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f,
- 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0xd9, 0x03, 0x0a, 0x0c, 0x54,
- 0x4f, 0x55, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x4e, 0x54, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x0e, 0x50,
- 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12,
- 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54,
- 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xb4, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
- 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x10,
- 0xb5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f,
- 0x43, 0x53, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb6, 0x15, 0x12,
- 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54,
- 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb7, 0x15, 0x12, 0x19, 0x0a, 0x14,
- 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e,
- 0x52, 0x61, 0x63, 0x65, 0x10, 0xb8, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x10,
- 0xb9, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f,
- 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x10, 0xba, 0x15,
- 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43,
- 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xbb, 0x15,
- 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43,
- 0x54, 0x4d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0xbc, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
+ 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77,
+ 0x69, 0x74, 0x63, 0x68, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, 0x64, 0x69,
+ 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x5b, 0x0a, 0x0d, 0x4d, 0x61,
+ 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d, 0x49,
+ 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e,
+ 0x74, 0x2e, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f,
+ 0x12, 0x35, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x54,
+ 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x4d, 0x52,
+ 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x06, 0x54,
+ 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a,
+ 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x69, 0x6e,
+ 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x57, 0x69,
+ 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0x6c, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x4d, 0x52,
+ 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54,
+ 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x54, 0x4d, 0x52,
+ 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x75, 0x72,
+ 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x06, 0x54,
+ 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x38, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x52,
+ 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54,
+ 0x4d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x22,
+ 0x64, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f,
+ 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x24, 0x0a, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72,
+ 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x0d, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53,
+ 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75,
+ 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d,
+ 0x22, 0x25, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a,
+ 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0x6b, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d,
+ 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74,
+ 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69,
+ 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61,
+ 0x6d, 0x6f, 0x6e, 0x64, 0x22, 0x88, 0x03, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+ 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43,
+ 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f,
+ 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x6e,
+ 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x6f, 0x75,
+ 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x3f,
+ 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
+ 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x43, 0x50, 0x72,
+ 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x6f,
+ 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12,
+ 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28,
+ 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e,
+ 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e,
+ 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68,
+ 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0x10, 0x0a, 0x0e, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66,
+ 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69,
+ 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x53,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e,
+ 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x16,
+ 0x0a, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
+ 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72,
+ 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x22, 0x58, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12,
+ 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
+ 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x53,
+ 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x4a, 0x0a, 0x0e,
+ 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x38,
+ 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74,
+ 0x2e, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x0b, 0x52, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x53, 0x54, 0x4d,
+ 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c,
+ 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x22, 0x35, 0x0a, 0x0f, 0x53,
+ 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e,
+ 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12,
+ 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f,
+ 0x64, 0x65, 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54,
+ 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0xb5, 0x01, 0x0a, 0x0b,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53,
+ 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a,
+ 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x55,
+ 0x73, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
+ 0x55, 0x73, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e,
+ 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a,
+ 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63,
+ 0x6f, 0x72, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e,
+ 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+ 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+ 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x6f,
+ 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c,
+ 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x4e,
+ 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e,
+ 0x4e, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x07,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e,
+ 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x07, 0x50,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x64, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x4d, 0x4d, 0x61,
+ 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02,
+ 0x54, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x2c, 0x0a, 0x0a,
+ 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0xc6, 0x01, 0x0a, 0x09, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d,
+ 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64,
+ 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f,
+ 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x6e, 0x64,
+ 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x0a, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x15, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02,
+ 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02,
+ 0x54, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x2a, 0xc7, 0x04, 0x0a,
+ 0x0c, 0x54, 0x4f, 0x55, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x4e, 0x54, 0x49, 0x44, 0x12, 0x12, 0x0a,
+ 0x0e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10,
+ 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43,
+ 0x53, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xb4, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
+ 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f,
+ 0x73, 0x10, 0xb5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54,
+ 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb6,
+ 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53,
+ 0x43, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb7, 0x15, 0x12, 0x19,
+ 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x53, 0x69,
+ 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x10, 0xb8, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43,
+ 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63,
+ 0x65, 0x10, 0xb9, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54,
+ 0x4d, 0x5f, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x10,
+ 0xba, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f,
+ 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10,
+ 0xbb, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f,
+ 0x53, 0x43, 0x54, 0x4d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0xbc, 0x15, 0x12, 0x1d, 0x0a, 0x18,
+ 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xbf, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xc0, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73,
- 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xbf, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
+ 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x10, 0xc1, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f,
- 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xc0, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
+ 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x10, 0xc2, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e,
- 0x52, 0x61, 0x6e, 0x6b, 0x10, 0xc1, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
- 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52,
- 0x61, 0x6e, 0x6b, 0x10, 0xc2, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x10, 0xc3, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
- 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x10, 0xc4, 0x15, 0x2a, 0xa2, 0x01, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x52,
+ 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xc3, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xc4, 0x15, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
+ 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73,
+ 0x74, 0x10, 0xc5, 0x15, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54,
+ 0x4d, 0x5f, 0x53, 0x43, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xc6, 0x15,
+ 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53,
+ 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xc7, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50,
+ 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x4c,
+ 0x69, 0x73, 0x74, 0x10, 0xc8, 0x15, 0x2a, 0xa2, 0x01, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x52,
0x61, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52,
@@ -1920,7 +2521,7 @@ func file_tournament_proto_rawDescGZIP() []byte {
}
var file_tournament_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_tournament_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
+var file_tournament_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_tournament_proto_goTypes = []interface{}{
(TOURNAMENTID)(0), // 0: tournament.TOURNAMENTID
(SignRaceCode)(0), // 1: tournament.SignRaceCode
@@ -1946,7 +2547,14 @@ var file_tournament_proto_goTypes = []interface{}{
(*SCTMSeasonRank)(nil), // 21: tournament.SCTMSeasonRank
(*CSTMSeasonAward)(nil), // 22: tournament.CSTMSeasonAward
(*SCTMSeasonAward)(nil), // 23: tournament.SCTMSeasonAward
- nil, // 24: tournament.SCPromotionInfo.RecordEntry
+ (*CSMatchList)(nil), // 24: tournament.CSMatchList
+ (*MatchPlayer)(nil), // 25: tournament.MatchPlayer
+ (*MatchInfo)(nil), // 26: tournament.MatchInfo
+ (*SCTMMatchList)(nil), // 27: tournament.SCTMMatchList
+ (*CSRoomList)(nil), // 28: tournament.CSRoomList
+ (*MatchRoom)(nil), // 29: tournament.MatchRoom
+ (*SCRoomList)(nil), // 30: tournament.SCRoomList
+ nil, // 31: tournament.SCPromotionInfo.RecordEntry
}
var file_tournament_proto_depIdxs = []int32{
3, // 0: tournament.MatchInfoAward.ItemInfo:type_name -> tournament.ItemInfo
@@ -1956,14 +2564,18 @@ var file_tournament_proto_depIdxs = []int32{
6, // 4: tournament.SCTMInfos.TypeList:type_name -> tournament.MatchTypeInfo
9, // 5: tournament.SCTMRankList.TMRank:type_name -> tournament.TMRank
3, // 6: tournament.RankAward.ItemInfo:type_name -> tournament.ItemInfo
- 24, // 7: tournament.SCPromotionInfo.Record:type_name -> tournament.SCPromotionInfo.RecordEntry
+ 31, // 7: tournament.SCPromotionInfo.Record:type_name -> tournament.SCPromotionInfo.RecordEntry
15, // 8: tournament.SCPromotionInfo.RankAward:type_name -> tournament.RankAward
19, // 9: tournament.SCTMSeasonRank.ReasonRanks:type_name -> tournament.SeasonRank
- 10, // [10:10] is the sub-list for method output_type
- 10, // [10:10] is the sub-list for method input_type
- 10, // [10:10] is the sub-list for extension type_name
- 10, // [10:10] is the sub-list for extension extendee
- 0, // [0:10] is the sub-list for field type_name
+ 25, // 10: tournament.MatchInfo.Players:type_name -> tournament.MatchPlayer
+ 26, // 11: tournament.SCTMMatchList.List:type_name -> tournament.MatchInfo
+ 25, // 12: tournament.MatchRoom.Players:type_name -> tournament.MatchPlayer
+ 29, // 13: tournament.SCRoomList.List:type_name -> tournament.MatchRoom
+ 14, // [14:14] is the sub-list for method output_type
+ 14, // [14:14] is the sub-list for method input_type
+ 14, // [14:14] is the sub-list for extension type_name
+ 14, // [14:14] is the sub-list for extension extendee
+ 0, // [0:14] is the sub-list for field type_name
}
func init() { file_tournament_proto_init() }
@@ -2236,6 +2848,90 @@ func file_tournament_proto_init() {
return nil
}
}
+ file_tournament_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CSMatchList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_tournament_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MatchPlayer); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_tournament_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MatchInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_tournament_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCTMMatchList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_tournament_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CSRoomList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_tournament_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MatchRoom); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_tournament_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SCRoomList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -2243,7 +2939,7 @@ func file_tournament_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_tournament_proto_rawDesc,
NumEnums: 2,
- NumMessages: 23,
+ NumMessages: 30,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/protocol/tournament/tournament.proto b/protocol/tournament/tournament.proto
index 514bcbe..7c4086e 100644
--- a/protocol/tournament/tournament.proto
+++ b/protocol/tournament/tournament.proto
@@ -20,6 +20,10 @@ enum TOURNAMENTID{
PACKET_TM_SCTMSeasonRank = 2754;//赛季排行榜
PACKET_TM_CSTMSeasonAward = 2755;//领取赛季奖励
PACKET_TM_SCTMSeasonAward = 2756;//领取赛季奖励
+ PACKET_TM_CSMatchList = 2757;// 比赛列表
+ PACKET_TM_SCMatchList = 2758;// 比赛列表
+ PACKET_TM_CSRoomList = 2759; // 比赛房间列表
+ PACKET_TM_SCRoomList = 2760; // 比赛房间列表
}
//比赛场场次
//PACKET_TM_CSTMInfo
@@ -65,6 +69,7 @@ message TMInfo{
repeated string OnChannelName = 21;//在哪个渠道开启
int32 ShowId = 22; // 比赛区分
int32 AwardNum = 23; //比赛奖励剩余数量
+ int32 AudienceSwitch = 27; // 观战开关 1开启 2关闭
}
message MatchTypeInfo{
@@ -187,4 +192,57 @@ message CSTMSeasonAward {
message SCTMSeasonAward {
int32 Lv = 1;//段位
int32 Code = 2;//0成功 1失败
+}
+
+//PACKET_TM_CSMatchList
+message CSMatchList{
+ int64 MatchId = 1; // 比赛id 0表示所有比赛场
+ int32 Tp = 2; // 房间类型 0所有房间 1可观战房间
+}
+
+message MatchPlayer{
+ int32 SnId = 1; // 玩家id
+ string Name = 2; // 玩家名字
+ string HeadUrl = 3;//头像地址
+ int32 UseRoleId = 4;//使用的人物模型id
+ int32 UseSkinId = 5; // 皮肤id
+ int32 Rank = 6;//排名
+ int32 Score = 7;//分数
+}
+
+message MatchInfo{
+ int64 MatchId = 1; // 比赛id
+ int64 InstanceId = 2; // 本场比赛id
+ string Name = 3; // 比赛名字
+ int32 Round = 4; // 当前第几轮
+ int32 TotalRound = 5; // 总轮数
+ int32 RemainNum = 6; // 剩余人数
+ repeated MatchPlayer Players = 7; // 玩家列表
+}
+
+message SCTMMatchList{
+ repeated MatchInfo List = 1;
+ int64 MatchId = 2;
+ int32 Tp = 3;
+}
+
+//PACKET_TM_CSRoomList
+message CSRoomList{
+ int64 Id = 1; // 本场比赛id 0表示所有房间
+ int32 Tp = 2; // 房间类型 0所有房间 1可观战房间
+}
+
+message MatchRoom{
+ int64 RoomId = 1; // 房间id
+ int64 MatchId = 2; // 比赛id
+ int64 InstanceId = 3; // 本场比赛id
+ int32 Round = 4; // 当前第几轮
+ int32 TotalRound = 5; // 总轮数
+ repeated MatchPlayer Players = 7; // 玩家列表
+}
+
+message SCRoomList{
+ repeated MatchRoom List = 1;
+ int64 Id = 2;
+ int32 Tp = 3;
}
\ No newline at end of file
diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go
index 7e989e6..cecb617 100644
--- a/protocol/webapi/common.pb.go
+++ b/protocol/webapi/common.pb.go
@@ -3258,6 +3258,7 @@ type ExchangeShop struct {
NotVipShopLimit int32 `protobuf:"varint,15,opt,name=NotVipShopLimit,proto3" json:"NotVipShopLimit,omitempty"` //非VIP限购总数
ShopType int32 `protobuf:"varint,16,opt,name=ShopType,proto3" json:"ShopType,omitempty"` //商品类型
TelData []*TelChargeData `protobuf:"bytes,17,rep,name=TelData,proto3" json:"TelData,omitempty"`
+ Items []*ItemInfo `protobuf:"bytes,18,rep,name=Items,proto3" json:"Items,omitempty"`
}
func (x *ExchangeShop) Reset() {
@@ -3397,6 +3398,13 @@ func (x *ExchangeShop) GetTelData() []*TelChargeData {
return nil
}
+func (x *ExchangeShop) GetItems() []*ItemInfo {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
type TelChargeData struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -4107,12 +4115,13 @@ type GameMatchDate struct {
AwardShow string `protobuf:"bytes,18,opt,name=AwardShow,proto3" json:"AwardShow,omitempty"` //主要奖励展示
Rule string `protobuf:"bytes,19,opt,name=Rule,proto3" json:"Rule,omitempty"`
SortId int32 `protobuf:"varint,20,opt,name=SortId,proto3" json:"SortId,omitempty"`
- UseRobot int32 `protobuf:"varint,21,opt,name=UseRobot,proto3" json:"UseRobot,omitempty"` //0机器人有参与 1纯真人
- MatchLevel int32 `protobuf:"varint,22,opt,name=MatchLevel,proto3" json:"MatchLevel,omitempty"` // 难度等级
- OnChannelName []string `protobuf:"bytes,23,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启的渠道名称
- CardType int32 `protobuf:"varint,24,opt,name=CardType,proto3" json:"CardType,omitempty"` // 手机卡类型
- ShowId int32 `protobuf:"varint,25,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分
- AwardNum int32 `protobuf:"varint,26,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量
+ UseRobot int32 `protobuf:"varint,21,opt,name=UseRobot,proto3" json:"UseRobot,omitempty"` //0机器人有参与 1纯真人
+ MatchLevel int32 `protobuf:"varint,22,opt,name=MatchLevel,proto3" json:"MatchLevel,omitempty"` // 难度等级
+ OnChannelName []string `protobuf:"bytes,23,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启的渠道名称
+ CardType int32 `protobuf:"varint,24,opt,name=CardType,proto3" json:"CardType,omitempty"` // 手机卡类型
+ ShowId int32 `protobuf:"varint,25,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分
+ AwardNum int32 `protobuf:"varint,26,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量
+ AudienceSwitch int32 `protobuf:"varint,27,opt,name=AudienceSwitch,proto3" json:"AudienceSwitch,omitempty"` // 观战开关 1开启 2关闭
}
func (x *GameMatchDate) Reset() {
@@ -4329,6 +4338,13 @@ func (x *GameMatchDate) GetAwardNum() int32 {
return 0
}
+func (x *GameMatchDate) GetAudienceSwitch() int32 {
+ if x != nil {
+ return x.AudienceSwitch
+ }
+ return 0
+}
+
// etcd /game/game_match
type GameMatchDateList struct {
state protoimpl.MessageState
@@ -5469,12 +5485,12 @@ type VIPcfg struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- VipId int32 `protobuf:"varint,1,opt,name=VipId,proto3" json:"VipId,omitempty"` // 序号
- Award map[int64]int64 `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 道具
- VipEx int32 `protobuf:"varint,3,opt,name=VipEx,proto3" json:"VipEx,omitempty"` // VIP经验
- Price int64 `protobuf:"varint,4,opt,name=Price,proto3" json:"Price,omitempty"` // 金额
- Privilege1 []int32 `protobuf:"varint,5,rep,packed,name=Privilege1,proto3" json:"Privilege1,omitempty"` //特权1 VIP比赛场免费次数
- Privilege2 []int32 `protobuf:"varint,6,rep,packed,name=Privilege2,proto3" json:"Privilege2,omitempty"` //每日金币 0金币值 1充值金额
+ VipId int32 `protobuf:"varint,1,opt,name=VipId,proto3" json:"VipId,omitempty"` // 序号
+ Award map[int64]int64 `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 道具
+ VipEx int32 `protobuf:"varint,3,opt,name=VipEx,proto3" json:"VipEx,omitempty"` // VIP经验
+ Price int64 `protobuf:"varint,4,opt,name=Price,proto3" json:"Price,omitempty"` // 金额
+ Privilege1 map[int64]int64 `protobuf:"bytes,5,rep,name=Privilege1,proto3" json:"Privilege1,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //特权1 VIP比赛场免费次数
+ Privilege2 []int32 `protobuf:"varint,6,rep,packed,name=Privilege2,proto3" json:"Privilege2,omitempty"` //每日金币 0金币值 1充值金额
Privilege3 []int32 `protobuf:"varint,7,rep,packed,name=Privilege3,proto3" json:"Privilege3,omitempty"`
Privilege4 int32 `protobuf:"varint,8,opt,name=Privilege4,proto3" json:"Privilege4,omitempty"`
Privilege5 int32 `protobuf:"varint,9,opt,name=Privilege5,proto3" json:"Privilege5,omitempty"`
@@ -5485,7 +5501,8 @@ type VIPcfg struct {
RewardOutlineID []int32 `protobuf:"varint,14,rep,packed,name=RewardOutlineID,proto3" json:"RewardOutlineID,omitempty"`
ShopId2 int32 `protobuf:"varint,15,opt,name=ShopId2,proto3" json:"ShopId2,omitempty"`
ShopId7 int32 `protobuf:"varint,16,opt,name=ShopId7,proto3" json:"ShopId7,omitempty"`
- MatchFreeTimes int32 `protobuf:"varint,17,opt,name=MatchFreeTimes,proto3" json:"MatchFreeTimes,omitempty"` // vip比赛场免费次数
+ MatchFreeTimes int32 `protobuf:"varint,17,opt,name=MatchFreeTimes,proto3" json:"MatchFreeTimes,omitempty"` // vip比赛场免费次数
+ Privilege9 map[int64]int64 `protobuf:"bytes,18,rep,name=Privilege9,proto3" json:"Privilege9,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // vip免费礼包,每个vip等级领取一次
}
func (x *VIPcfg) Reset() {
@@ -5548,7 +5565,7 @@ func (x *VIPcfg) GetPrice() int64 {
return 0
}
-func (x *VIPcfg) GetPrivilege1() []int32 {
+func (x *VIPcfg) GetPrivilege1() map[int64]int64 {
if x != nil {
return x.Privilege1
}
@@ -5639,6 +5656,13 @@ func (x *VIPcfg) GetMatchFreeTimes() int32 {
return 0
}
+func (x *VIPcfg) GetPrivilege9() map[int64]int64 {
+ if x != nil {
+ return x.Privilege9
+ }
+ return nil
+}
+
// etcd /game/VIPcfg VIP配置
type VIPcfgDataList struct {
state protoimpl.MessageState
@@ -8057,6 +8081,198 @@ func (x *AnnouncerLogInfo) GetTypeId() int32 {
return 0
}
+// etcd /game/guide_config
+type GuideConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台
+ On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 引导开关 1开启 2关闭
+ Skip int32 `protobuf:"varint,3,opt,name=Skip,proto3" json:"Skip,omitempty"` // 引导跳过开关 1开启 2关闭
+}
+
+func (x *GuideConfig) Reset() {
+ *x = GuideConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_common_proto_msgTypes[85]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GuideConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GuideConfig) ProtoMessage() {}
+
+func (x *GuideConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_common_proto_msgTypes[85]
+ 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 GuideConfig.ProtoReflect.Descriptor instead.
+func (*GuideConfig) Descriptor() ([]byte, []int) {
+ return file_common_proto_rawDescGZIP(), []int{85}
+}
+
+func (x *GuideConfig) GetPlatform() string {
+ if x != nil {
+ return x.Platform
+ }
+ return ""
+}
+
+func (x *GuideConfig) GetOn() int32 {
+ if x != nil {
+ return x.On
+ }
+ return 0
+}
+
+func (x *GuideConfig) GetSkip() int32 {
+ if x != nil {
+ return x.Skip
+ }
+ return 0
+}
+
+// etcd /game/match_audience
+type MatchAudience struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台
+ SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家ID
+ Ts int64 `protobuf:"varint,3,opt,name=Ts,proto3" json:"Ts,omitempty"` // 时间戳
+}
+
+func (x *MatchAudience) Reset() {
+ *x = MatchAudience{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_common_proto_msgTypes[86]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MatchAudience) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MatchAudience) ProtoMessage() {}
+
+func (x *MatchAudience) ProtoReflect() protoreflect.Message {
+ mi := &file_common_proto_msgTypes[86]
+ 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 MatchAudience.ProtoReflect.Descriptor instead.
+func (*MatchAudience) Descriptor() ([]byte, []int) {
+ return file_common_proto_rawDescGZIP(), []int{86}
+}
+
+func (x *MatchAudience) GetPlatform() string {
+ if x != nil {
+ return x.Platform
+ }
+ return ""
+}
+
+func (x *MatchAudience) GetSnId() int32 {
+ if x != nil {
+ return x.SnId
+ }
+ return 0
+}
+
+func (x *MatchAudience) GetTs() int64 {
+ if x != nil {
+ return x.Ts
+ }
+ return 0
+}
+
+// etcd /game/spirit
+type SpiritConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台
+ On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 精灵开关 1开启 2关闭
+ Url string `protobuf:"bytes,3,opt,name=Url,proto3" json:"Url,omitempty"`
+}
+
+func (x *SpiritConfig) Reset() {
+ *x = SpiritConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_common_proto_msgTypes[87]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SpiritConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SpiritConfig) ProtoMessage() {}
+
+func (x *SpiritConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_common_proto_msgTypes[87]
+ 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 SpiritConfig.ProtoReflect.Descriptor instead.
+func (*SpiritConfig) Descriptor() ([]byte, []int) {
+ return file_common_proto_rawDescGZIP(), []int{87}
+}
+
+func (x *SpiritConfig) GetPlatform() string {
+ if x != nil {
+ return x.Platform
+ }
+ return ""
+}
+
+func (x *SpiritConfig) GetOn() int32 {
+ if x != nil {
+ return x.On
+ }
+ return 0
+}
+
+func (x *SpiritConfig) GetUrl() string {
+ if x != nil {
+ return x.Url
+ }
+ return ""
+}
+
var File_common_proto protoreflect.FileDescriptor
var file_common_proto_rawDesc = []byte{
@@ -8644,7 +8860,7 @@ var file_common_proto_rawDesc = []byte{
0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65,
0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x22, 0xf3, 0x03, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53,
+ 0x72, 0x6d, 0x22, 0x9b, 0x04, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53,
0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a,
@@ -8675,150 +8891,155 @@ var file_common_proto_rawDesc = []byte{
0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61,
0x74, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70,
0x69, 0x2e, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52,
- 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x65, 0x6c, 0x43,
- 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a,
- 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22,
- 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
- 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
- 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x73,
- 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
- 0x64, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68,
- 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74,
- 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2a, 0x0a, 0x06,
- 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x77,
- 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74,
- 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x70,
- 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79,
- 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79,
- 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61,
- 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16,
- 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
- 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x83, 0x05, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x53,
- 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50,
- 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12,
- 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
- 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12,
- 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x02, 0x41, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52,
- 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a,
- 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x03,
- 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12,
- 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05,
- 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61,
- 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x12,
- 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74,
- 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73,
- 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65,
- 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65,
- 0x61, 0x12, 0x31, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68,
- 0x6f, 0x70, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41,
- 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c,
- 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c,
- 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d,
- 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
- 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18,
- 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74,
- 0x63, 0x68, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x0c,
- 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04,
- 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62,
- 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69,
- 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x50,
- 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74,
- 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d,
- 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
- 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65,
- 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69,
- 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55,
- 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x22, 0x89, 0x07, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63,
- 0x68, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65,
- 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46,
- 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79,
- 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54,
- 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d,
- 0x65, 0x62, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d,
- 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4d,
- 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a,
- 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77,
- 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41,
- 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53,
- 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43,
- 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73,
- 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11,
- 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e,
- 0x64, 0x12, 0x38, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49,
- 0x74, 0x65, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61,
- 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x53, 0x69, 0x67,
- 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d,
- 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65,
- 0x65, 0x6b, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54,
- 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x0e, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61,
- 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69,
- 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f,
- 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12,
- 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d,
- 0x70, 0x18, 0x10, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69,
- 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65,
- 0x55, 0x52, 0x4c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65,
- 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77,
- 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f,
- 0x77, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18,
- 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a,
- 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d,
- 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53,
- 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f,
- 0x77, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x18,
- 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x22,
+ 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d,
+ 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69,
+ 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73,
+ 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74,
+ 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a,
+ 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x45, 0x78,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28,
+ 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77,
+ 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68,
+ 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68,
+ 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a,
+ 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x83,
+ 0x05, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49,
+ 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65,
+ 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a,
+ 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
+ 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x41,
+ 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x41, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41,
+ 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x64, 0x54,
+ 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67,
+ 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6f, 0x6c,
+ 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a,
+ 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07,
+ 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
+ 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+ 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a,
+ 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52,
+ 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x12, 0x31, 0x0a, 0x05, 0x41, 0x77, 0x61,
+ 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70,
+ 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08,
+ 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
+ 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69,
+ 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18,
+ 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x72, 0x73,
+ 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x46,
+ 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77,
+ 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d,
+ 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x50, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e,
+ 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74,
+ 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65,
+ 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49,
+ 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65,
+ 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49,
+ 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61,
+ 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d,
+ 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a,
+ 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb1, 0x07, 0x0a, 0x0d,
+ 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a,
+ 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a,
+ 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74,
+ 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53,
+ 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61,
+ 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, 0x77,
+ 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73,
+ 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x53, 0x69, 0x67,
+ 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x53,
+ 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
+ 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f,
+ 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x0e, 0x53, 0x69, 0x67,
+ 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49,
+ 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49,
+ 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65,
+ 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63,
+ 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05,
+ 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x12,
+ 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72,
+ 0x74, 0x48, 0x4d, 0x53, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4d, 0x61, 0x74, 0x63,
+ 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x28, 0x0a,
+ 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53,
+ 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d,
+ 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68,
+ 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x10, 0x20, 0x03, 0x28, 0x03, 0x52,
+ 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12,
+ 0x1a, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x11, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c,
+ 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53,
+ 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f,
+ 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f,
+ 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18,
+ 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65,
+ 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61,
+ 0x6d, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54,
+ 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54,
+ 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x19, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x65,
+ 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x0e, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22,
0x5a, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65,
0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x61, 0x6d, 0x65,
@@ -8957,7 +9178,7 @@ var file_common_proto_rawDesc = []byte{
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14,
0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43,
0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xc4, 0x05, 0x0a, 0x06, 0x56,
+ 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xa2, 0x07, 0x0a, 0x06, 0x56,
0x49, 0x50, 0x63, 0x66, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x05, 0x41,
0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62,
@@ -8965,8 +9186,10 @@ var file_common_proto_rawDesc = []byte{
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05,
0x56, 0x69, 0x70, 0x45, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70,
0x45, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76,
- 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72,
+ 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76,
+ 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77,
+ 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72,
0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76,
0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72,
0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76,
@@ -8994,335 +9217,362 @@ var file_common_proto_rawDesc = []byte{
0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37,
0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46,
- 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72,
+ 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76,
+ 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77,
+ 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69,
+ 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72,
+ 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72,
0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37,
+ 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x22, 0x70, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c,
- 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66,
- 0x67, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69,
- 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61,
- 0x74, 0x69, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66,
- 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a,
- 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76,
- 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b,
- 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x0b, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c,
+ 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0x70, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x52,
+ 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69,
+ 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12,
+ 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52,
+ 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x52,
+ 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c,
+ 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b,
+ 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x0b, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77,
+ 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74,
+ 0x63, 0x68, 0x22, 0x64, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
+ 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61,
+ 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x75, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73,
+ 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x05,
+ 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65,
+ 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22,
+ 0xb4, 0x03, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a,
+ 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70,
+ 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
+ 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f,
+ 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
+ 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75,
+ 0x44, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c,
+ 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c,
+ 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78,
+ 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22,
+ 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d,
+ 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x12, 0x1c, 0x0a, 0x09,
+ 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61,
+ 0x79, 0x55, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70,
+ 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69,
+ 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+ 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x0e,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c,
+ 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61,
+ 0x6e, 0x48, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48,
+ 0x75, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68,
+ 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x12,
+ 0x20, 0x0a, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72,
+ 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68,
+ 0x61, 0x22, 0x4f, 0x0a, 0x19, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x50, 0x68, 0x6f, 0x6e,
+ 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a,
+ 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77,
+ 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74,
+ 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6c,
+ 0x6c, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06,
- 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77,
- 0x69, 0x74, 0x63, 0x68, 0x22, 0x64, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e,
- 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53,
- 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72,
- 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65,
- 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x75, 0x0a, 0x10, 0x43, 0x68,
- 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d,
- 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
- 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a,
- 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d,
- 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49,
- 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c,
- 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a,
- 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a,
- 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04,
- 0x51, 0x75, 0x44, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75,
- 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22,
- 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d,
- 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73,
- 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64,
- 0x73, 0x4d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x12, 0x1c,
- 0x0a, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05,
- 0x50, 0x61, 0x79, 0x55, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x79,
- 0x55, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1e, 0x0a, 0x0a,
- 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10,
- 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
- 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f,
- 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x54,
- 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61,
- 0x6e, 0x48, 0x75, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x65, 0x6e,
- 0x43, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68,
- 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63,
- 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68,
- 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e,
- 0x43, 0x68, 0x61, 0x22, 0x4f, 0x0a, 0x19, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x50, 0x68,
- 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06,
- 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77,
- 0x69, 0x74, 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43,
- 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08,
- 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74,
- 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
- 0x22, 0x67, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63,
- 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x52, 0x61, 0x6e,
- 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03,
- 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x10,
- 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d,
- 0x22, 0x8e, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x24,
- 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53,
- 0x63, 0x6f, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65,
- 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e,
- 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x50,
- 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73,
- 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a,
- 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11,
- 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72,
- 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x73, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65,
- 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07,
- 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64,
- 0x73, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70,
- 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61,
- 0x72, 0x64, 0x73, 0x33, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65,
- 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x53,
- 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72,
- 0x65, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x28, 0x0a, 0x06, 0x41,
- 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65,
- 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41,
- 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0xea, 0x01, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74,
- 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e,
- 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
- 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74,
- 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x04,
- 0x43, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62,
- 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f,
- 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x14,
- 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73,
- 0x53, 0x68, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68,
- 0x6f, 0x77, 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03,
- 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x28,
- 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
- 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xec, 0x01, 0x0a, 0x13, 0x50, 0x65, 0x72,
- 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x0b, 0x4c, 0x65,
- 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x4c, 0x65, 0x76, 0x65,
- 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45,
- 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x45,
- 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a,
- 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69,
- 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x52, 0x61, 0x6e,
- 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x50,
- 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74,
- 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54,
- 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x04, 0x44, 0x61, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
- 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e,
- 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x94, 0x01, 0x0a,
- 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49,
- 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49,
- 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65,
- 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x64, 0x64,
- 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x64, 0x64, 0x72,
- 0x61, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f,
- 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03,
- 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14,
- 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43,
- 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61,
- 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x3d, 0x0a,
- 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x77,
- 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x77, 0x61,
- 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xd3, 0x01, 0x0a,
- 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44,
- 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a,
- 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65,
- 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
- 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a,
- 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x61,
- 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44,
- 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x37, 0x0a, 0x07, 0x50, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62,
- 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65,
- 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65,
- 0x72, 0x73, 0x22, 0x70, 0x0a, 0x14, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74,
- 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
- 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65,
- 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
- 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
- 0x44, 0x61, 0x74, 0x61, 0x22, 0x53, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x67,
+ 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61,
+ 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03,
+ 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x8e,
+ 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29,
- 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74,
- 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x52, 0x61,
- 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52,
- 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52,
- 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x61,
- 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65,
- 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69,
- 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22,
- 0xb3, 0x01, 0x0a, 0x0c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64,
- 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61,
- 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18,
- 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x12, 0x2b, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72,
- 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69,
- 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
- 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54,
- 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xed, 0x01,
- 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65,
- 0x6c, 0x12, 0x35, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c,
- 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
- 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76,
- 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, 0x02,
- 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e,
- 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
- 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x55, 0x6e,
- 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x21, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65,
- 0x6d, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12,
- 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x05, 0x52, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1c, 0x0a,
- 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65,
- 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x06,
- 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b,
- 0x50, 0x61, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x12, 0x26, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65,
- 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x41, 0x77, 0x61,
- 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c,
+ 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0d,
+ 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63,
+ 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x61,
+ 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x50, 0x61, 0x79,
+ 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05,
+ 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77,
+ 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52,
+ 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72,
+ 0x64, 0x73, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61,
+ 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77,
+ 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x33,
+ 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e,
+ 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x73, 0x33, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0x91, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
+ 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66,
+ 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61,
+ 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61,
+ 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61,
+ 0x72, 0x64, 0x32, 0x22, 0xea, 0x01, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02,
+ 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
+ 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f,
+ 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d,
+ 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f,
+ 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70,
+ 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74,
+ 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05,
+ 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76,
+ 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68,
+ 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77,
+ 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x06,
+ 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77,
+ 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06,
+ 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xec, 0x01, 0x0a, 0x13, 0x50, 0x65, 0x72, 0x6d, 0x69,
+ 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18,
+ 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x0b, 0x4c, 0x65, 0x76, 0x65,
+ 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76,
+ 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+ 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x45, 0x78, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x52,
+ 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52,
+ 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x50, 0x65, 0x72,
+ 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12,
+ 0x12, 0x0a, 0x04, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44,
+ 0x61, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65,
+ 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x44,
+ 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65,
+ 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49,
+ 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61,
+ 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74,
+ 0x65, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74,
+ 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72,
+ 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x44,
+ 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74,
+ 0x61, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x49,
+ 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61,
+ 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
+ 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d,
+ 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d,
+ 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f,
+ 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x69, 0x61,
+ 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x37, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70,
+ 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
+ 0x22, 0x70, 0x0a, 0x14, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65,
+ 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44,
+ 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61,
+ 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
+ 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61,
+ 0x74, 0x61, 0x22, 0x53, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x05,
+ 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d,
+ 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b,
+ 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e,
+ 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e,
+ 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76,
+ 0x65, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x61, 0x6e, 0x6b,
+ 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49,
+ 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xb3, 0x01,
+ 0x0a, 0x0c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e,
+ 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14,
+ 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f,
+ 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07,
+ 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54,
+ 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x12, 0x2b, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18,
+ 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52,
+ 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77,
+ 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70,
+ 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x09,
+ 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76,
+ 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,
+ 0x35, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76,
+ 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06,
+ 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, 0x02, 0x0a, 0x08,
+ 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x55, 0x6e, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
+ 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x2e,
+ 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a,
+ 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53,
+ 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
+ 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4c, 0x65, 0x76,
+ 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61,
+ 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x06, 0x4c, 0x65,
+ 0x76, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61,
+ 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x26,
+ 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+ 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52,
+ 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f,
+ 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69,
+ 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75,
+ 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72,
+ 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63,
+ 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x70, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f,
+ 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a,
+ 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53,
+ 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f,
+ 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69,
+ 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x41,
+ 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x22, 0x60, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64,
+ 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12,
+ 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75,
+ 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x41, 0x6e,
+ 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
+ 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
+ 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06,
+ 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74,
+ 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x0b,
+ 0x47, 0x75, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64,
- 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61,
- 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52,
- 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, 0x0c, 0x41, 0x6e, 0x6e,
- 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63,
- 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75,
- 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x70, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64,
- 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12,
- 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64,
- 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61,
- 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52,
- 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x22, 0x60, 0x0a, 0x0c, 0x41, 0x77, 0x61,
- 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65,
- 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49,
- 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
- 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x10,
- 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
- 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16,
- 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
- 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x42, 0x26,
- 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f,
- 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x22, 0x4f, 0x0a, 0x0d, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08,
+ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02,
+ 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4c, 0x0a, 0x0c,
+ 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08,
+ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f,
+ 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61,
+ 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61,
+ 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -9337,7 +9587,7 @@ func file_common_proto_rawDescGZIP() []byte {
return file_common_proto_rawDescData
}
-var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 93)
+var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 98)
var file_common_proto_goTypes = []interface{}{
(*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting
(*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting
@@ -9424,30 +9674,35 @@ var file_common_proto_goTypes = []interface{}{
(*AwardLogData)(nil), // 82: webapi.AwardLogData
(*AwardLogInfo)(nil), // 83: webapi.AwardLogInfo
(*AnnouncerLogInfo)(nil), // 84: webapi.AnnouncerLogInfo
- nil, // 85: webapi.Platform.BindTelRewardEntry
- nil, // 86: webapi.PlayerData.RankScoreEntry
- nil, // 87: webapi.ItemShop.AwardEntry
- nil, // 88: webapi.VIPcfg.AwardEntry
- nil, // 89: webapi.VIPcfg.Privilege7Entry
- nil, // 90: webapi.ActInviteConfig.PayScoreEntry
- nil, // 91: webapi.SkinLevel.UpItemEntry
- nil, // 92: webapi.SkinItem.UnlockParamEntry
- (*server.DB_GameFree)(nil), // 93: server.DB_GameFree
- (*server.DB_GameItem)(nil), // 94: server.DB_GameItem
+ (*GuideConfig)(nil), // 85: webapi.GuideConfig
+ (*MatchAudience)(nil), // 86: webapi.MatchAudience
+ (*SpiritConfig)(nil), // 87: webapi.SpiritConfig
+ nil, // 88: webapi.Platform.BindTelRewardEntry
+ nil, // 89: webapi.PlayerData.RankScoreEntry
+ nil, // 90: webapi.ItemShop.AwardEntry
+ nil, // 91: webapi.VIPcfg.AwardEntry
+ nil, // 92: webapi.VIPcfg.Privilege1Entry
+ nil, // 93: webapi.VIPcfg.Privilege7Entry
+ nil, // 94: webapi.VIPcfg.Privilege9Entry
+ nil, // 95: webapi.ActInviteConfig.PayScoreEntry
+ nil, // 96: webapi.SkinLevel.UpItemEntry
+ nil, // 97: webapi.SkinItem.UnlockParamEntry
+ (*server.DB_GameFree)(nil), // 98: server.DB_GameFree
+ (*server.DB_GameItem)(nil), // 99: server.DB_GameItem
}
var file_common_proto_depIdxs = []int32{
2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch
3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig
4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame
- 85, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry
+ 88, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry
6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus
- 93, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree
+ 98, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree
8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree
0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting
1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting
1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting
- 93, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree
- 86, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry
+ 98, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree
+ 89, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry
32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo
14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo
14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo
@@ -9457,67 +9712,70 @@ var file_common_proto_depIdxs = []int32{
23, // 18: webapi.CommonNoticeList.List:type_name -> webapi.CommonNotice
27, // 19: webapi.ExchangeShop.ExType:type_name -> webapi.ExchangeType
26, // 20: webapi.ExchangeShop.TelData:type_name -> webapi.TelChargeData
- 25, // 21: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop
- 29, // 22: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight
- 87, // 23: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry
- 30, // 24: webapi.ItemShopList.List:type_name -> webapi.ItemShop
- 32, // 25: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo
- 33, // 26: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward
- 32, // 27: webapi.GameMatchDate.SignupCostItem:type_name -> webapi.ItemInfo
- 34, // 28: webapi.GameMatchDateList.List:type_name -> webapi.GameMatchDate
- 36, // 29: webapi.GameMatchType.List:type_name -> webapi.MatchTypeInfo
- 38, // 30: webapi.WelfareTurnplateDate.Date:type_name -> webapi.WelfareDate
- 39, // 31: webapi.WelfareTurnplateDateList.List:type_name -> webapi.WelfareTurnplateDate
- 40, // 32: webapi.WelfareTurnplateDateList.RateList:type_name -> webapi.WelfareTurnplateRate
- 38, // 33: webapi.AddUpWelfareDate.AddUpDate:type_name -> webapi.WelfareDate
- 38, // 34: webapi.Welfare7SignDate.Date:type_name -> webapi.WelfareDate
- 42, // 35: webapi.Welfare7SignDate.AddUpDate:type_name -> webapi.AddUpWelfareDate
- 42, // 36: webapi.Welfare7SignDate.AddUpDate2:type_name -> webapi.AddUpWelfareDate
- 42, // 37: webapi.Welfare7SignDate.AddUpDate2Google:type_name -> webapi.AddUpWelfareDate
- 43, // 38: webapi.Welfare7SignDate.AddUpDate2Type:type_name -> webapi.AddUpDate2TypeData
- 44, // 39: webapi.Welfare7SignDateList.List:type_name -> webapi.Welfare7SignDate
- 46, // 40: webapi.WelfareBlindBoxDataList.List:type_name -> webapi.BlindBoxData
- 38, // 41: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate
- 48, // 42: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree
- 48, // 43: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree
- 88, // 44: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry
- 89, // 45: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry
- 51, // 46: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg
- 38, // 47: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate
- 55, // 48: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig
- 90, // 49: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry
- 62, // 50: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward
- 62, // 51: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward
- 62, // 52: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward
- 32, // 53: webapi.PermitLevelConfig.Award1:type_name -> webapi.ItemInfo
- 32, // 54: webapi.PermitLevelConfig.Award2:type_name -> webapi.ItemInfo
- 32, // 55: webapi.PermitExchangeConfig.Gain:type_name -> webapi.ItemInfo
- 32, // 56: webapi.PermitExchangeConfig.Cost:type_name -> webapi.ItemInfo
- 32, // 57: webapi.PermitRankConfig.ItemId:type_name -> webapi.ItemInfo
- 64, // 58: webapi.PermitChannelConfig.LevelConfig:type_name -> webapi.PermitLevelConfig
- 65, // 59: webapi.PermitChannelConfig.ExchangeConfig:type_name -> webapi.PermitExchangeConfig
- 66, // 60: webapi.PermitChannelConfig.RankConfig:type_name -> webapi.PermitRankConfig
- 67, // 61: webapi.ActPermitConfig.Configs:type_name -> webapi.PermitChannelConfig
- 71, // 62: webapi.DiamondLotteryPlayers.Award:type_name -> webapi.AwardData
- 69, // 63: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo
- 70, // 64: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers
- 72, // 65: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData
- 94, // 66: webapi.ItemConfig.Items:type_name -> server.DB_GameItem
- 32, // 67: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo
- 75, // 68: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo
- 76, // 69: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo
- 91, // 70: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry
- 92, // 71: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry
- 78, // 72: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel
- 79, // 73: webapi.SkinConfig.Items:type_name -> webapi.SkinItem
- 82, // 74: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData
- 84, // 75: webapi.AwardLogConfig.AnnouncerLog:type_name -> webapi.AnnouncerLogInfo
- 83, // 76: webapi.AwardLogData.AwardLog:type_name -> webapi.AwardLogInfo
- 77, // [77:77] is the sub-list for method output_type
- 77, // [77:77] is the sub-list for method input_type
- 77, // [77:77] is the sub-list for extension type_name
- 77, // [77:77] is the sub-list for extension extendee
- 0, // [0:77] is the sub-list for field type_name
+ 32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo
+ 25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop
+ 29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight
+ 90, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry
+ 30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop
+ 32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo
+ 33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward
+ 32, // 28: webapi.GameMatchDate.SignupCostItem:type_name -> webapi.ItemInfo
+ 34, // 29: webapi.GameMatchDateList.List:type_name -> webapi.GameMatchDate
+ 36, // 30: webapi.GameMatchType.List:type_name -> webapi.MatchTypeInfo
+ 38, // 31: webapi.WelfareTurnplateDate.Date:type_name -> webapi.WelfareDate
+ 39, // 32: webapi.WelfareTurnplateDateList.List:type_name -> webapi.WelfareTurnplateDate
+ 40, // 33: webapi.WelfareTurnplateDateList.RateList:type_name -> webapi.WelfareTurnplateRate
+ 38, // 34: webapi.AddUpWelfareDate.AddUpDate:type_name -> webapi.WelfareDate
+ 38, // 35: webapi.Welfare7SignDate.Date:type_name -> webapi.WelfareDate
+ 42, // 36: webapi.Welfare7SignDate.AddUpDate:type_name -> webapi.AddUpWelfareDate
+ 42, // 37: webapi.Welfare7SignDate.AddUpDate2:type_name -> webapi.AddUpWelfareDate
+ 42, // 38: webapi.Welfare7SignDate.AddUpDate2Google:type_name -> webapi.AddUpWelfareDate
+ 43, // 39: webapi.Welfare7SignDate.AddUpDate2Type:type_name -> webapi.AddUpDate2TypeData
+ 44, // 40: webapi.Welfare7SignDateList.List:type_name -> webapi.Welfare7SignDate
+ 46, // 41: webapi.WelfareBlindBoxDataList.List:type_name -> webapi.BlindBoxData
+ 38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate
+ 48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree
+ 48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree
+ 91, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry
+ 92, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry
+ 93, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry
+ 94, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry
+ 51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg
+ 38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate
+ 55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig
+ 95, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry
+ 62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward
+ 62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward
+ 62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward
+ 32, // 56: webapi.PermitLevelConfig.Award1:type_name -> webapi.ItemInfo
+ 32, // 57: webapi.PermitLevelConfig.Award2:type_name -> webapi.ItemInfo
+ 32, // 58: webapi.PermitExchangeConfig.Gain:type_name -> webapi.ItemInfo
+ 32, // 59: webapi.PermitExchangeConfig.Cost:type_name -> webapi.ItemInfo
+ 32, // 60: webapi.PermitRankConfig.ItemId:type_name -> webapi.ItemInfo
+ 64, // 61: webapi.PermitChannelConfig.LevelConfig:type_name -> webapi.PermitLevelConfig
+ 65, // 62: webapi.PermitChannelConfig.ExchangeConfig:type_name -> webapi.PermitExchangeConfig
+ 66, // 63: webapi.PermitChannelConfig.RankConfig:type_name -> webapi.PermitRankConfig
+ 67, // 64: webapi.ActPermitConfig.Configs:type_name -> webapi.PermitChannelConfig
+ 71, // 65: webapi.DiamondLotteryPlayers.Award:type_name -> webapi.AwardData
+ 69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo
+ 70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers
+ 72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData
+ 99, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem
+ 32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo
+ 75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo
+ 76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo
+ 96, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry
+ 97, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry
+ 78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel
+ 79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem
+ 82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData
+ 84, // 78: webapi.AwardLogConfig.AnnouncerLog:type_name -> webapi.AnnouncerLogInfo
+ 83, // 79: webapi.AwardLogData.AwardLog:type_name -> webapi.AwardLogInfo
+ 80, // [80:80] is the sub-list for method output_type
+ 80, // [80:80] is the sub-list for method input_type
+ 80, // [80:80] is the sub-list for extension type_name
+ 80, // [80:80] is the sub-list for extension extendee
+ 0, // [0:80] is the sub-list for field type_name
}
func init() { file_common_proto_init() }
@@ -10546,6 +10804,42 @@ func file_common_proto_init() {
return nil
}
}
+ file_common_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GuideConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_common_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MatchAudience); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_common_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SpiritConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -10553,7 +10847,7 @@ func file_common_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_common_proto_rawDesc,
NumEnums: 0,
- NumMessages: 93,
+ NumMessages: 98,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto
index 003356f..77e0520 100644
--- a/protocol/webapi/common.proto
+++ b/protocol/webapi/common.proto
@@ -384,6 +384,7 @@ message ExchangeShop {
int32 NotVipShopLimit = 15;//非VIP限购总数
int32 ShopType = 16; //商品类型
repeated TelChargeData TelData = 17;
+ repeated ItemInfo Items = 18;
}
message TelChargeData{
@@ -489,6 +490,7 @@ message GameMatchDate {
int32 CardType = 24; // 手机卡类型
int32 ShowId = 25; // 比赛区分
int32 AwardNum = 26; //比赛奖励剩余数量
+ int32 AudienceSwitch = 27; // 观战开关 1开启 2关闭
}
// etcd /game/game_match
@@ -615,7 +617,7 @@ message VIPcfg {
map Award = 2; // 道具
int32 VipEx = 3; // VIP经验
int64 Price = 4; // 金额
- repeated int32 Privilege1 = 5; //特权1 VIP比赛场免费次数
+ map Privilege1 = 5; //特权1 VIP比赛场免费次数
repeated int32 Privilege2 = 6; //每日金币 0金币值 1充值金额
repeated int32 Privilege3 = 7;
int32 Privilege4 = 8;
@@ -628,6 +630,7 @@ message VIPcfg {
int32 ShopId2 = 15;
int32 ShopId7 = 16;
int32 MatchFreeTimes = 17; // vip比赛场免费次数
+ map Privilege9 = 18; // vip免费礼包,每个vip等级领取一次
}
// etcd /game/VIPcfg VIP配置
@@ -881,3 +884,24 @@ message AnnouncerLogInfo{
int32 ItemId = 4; //获得物品ID
int32 TypeId = 5; //1-话费 2-实物
}
+
+// etcd /game/guide_config
+message GuideConfig {
+ string Platform = 1; // 平台
+ int32 On = 2; // 引导开关 1开启 2关闭
+ int32 Skip = 3; // 引导跳过开关 1开启 2关闭
+}
+
+// etcd /game/match_audience
+message MatchAudience {
+ string Platform = 1; // 平台
+ int32 SnId = 2; // 玩家ID
+ int64 Ts = 3; // 时间戳
+}
+
+// etcd /game/spirit
+message SpiritConfig {
+ string Platform = 1; // 平台
+ int32 On = 2; // 精灵开关 1开启 2关闭
+ string Url = 3;
+}
\ No newline at end of file
diff --git a/public b/public
index 13589ad..07c189d 160000
--- a/public
+++ b/public
@@ -1 +1 @@
-Subproject commit 13589ad17018a4a9d50fdc9d8223e3ccf492a0ce
+Subproject commit 07c189d652b84910258fa33eb3214d39c53edec4
diff --git a/srvdata/db_vipshow.go b/srvdata/db_vipshow.go
new file mode 100644
index 0000000..1a81665
--- /dev/null
+++ b/srvdata/db_vipshow.go
@@ -0,0 +1,77 @@
+
+// Code generated by xlsx2proto.
+// DO NOT EDIT!
+
+package srvdata
+
+import (
+ "google.golang.org/protobuf/proto"
+
+ "mongo.games.com/game/protocol/server"
+)
+
+var PBDB_VIPShowMgr = &DB_VIPShowMgr{
+ Datas: &server.DB_VIPShowArray{},
+ pool: make(map[int32]*server.DB_VIPShow),
+
+}
+
+type DB_VIPShowMgr struct {
+ Datas *server.DB_VIPShowArray
+ pool map[int32]*server.DB_VIPShow
+
+}
+
+func (this *DB_VIPShowMgr) unmarshal(data []byte) error {
+ err := proto.Unmarshal(data, this.Datas)
+ if err == nil {
+ this.arrangeData()
+ }
+ return err
+}
+
+func (this *DB_VIPShowMgr) reunmarshal(data []byte) error {
+ newDatas := &server.DB_VIPShowArray{}
+ err := proto.Unmarshal(data, newDatas)
+ if err == nil {
+ for _, item := range newDatas.Arr {
+ existItem := this.GetData(item.GetId())
+ if existItem == nil {
+ this.pool[item.GetId()] = item
+ this.Datas.Arr = append(this.Datas.Arr, item)
+
+ } else {
+ *existItem = *item
+ }
+ }
+ }
+ return err
+}
+
+func (this *DB_VIPShowMgr) arrangeData() {
+ if this.Datas == nil {
+ return
+ }
+
+ dataArr := this.Datas.GetArr()
+ if dataArr == nil {
+ return
+ }
+
+ for _, data := range dataArr {
+ this.pool[data.GetId()] = data
+
+ }
+}
+
+func (this *DB_VIPShowMgr) GetData(id int32) *server.DB_VIPShow {
+ if data, ok := this.pool[id]; ok {
+ return data
+ }
+ return nil
+}
+
+
+func init() {
+ DataMgr.register("DB_VIPShow.dat", &ProtobufDataLoader{dh: PBDB_VIPShowMgr})
+}
diff --git a/worldsrv/aaa b/worldsrv/aaa
deleted file mode 100644
index 510d34c..0000000
--- a/worldsrv/aaa
+++ /dev/null
@@ -1,31 +0,0 @@
-71001,71002,71003,72001,72002,72003,72004,72005,73001,73002,73003,73004,74001,74002,74003,74004,74005,74006,75001,75002,75003,75004,75005,75006,76001,76002,76003,76004,76005,76006,77001,77002,77003,77004,77005,78001,78002,78003,79001,79002,79003,79004,79005,77006
-
-5001,5002,5003,5004,5005,5006
-
-"79003":NumberLong(1),
-"73001":NumberLong(24),
-"74006":NumberLong(1),
-"79005":NumberLong(1),
-"76006":NumberLong(16),
-"74003":NumberLong(1),
-"72004":NumberLong(1),
-"73004":NumberLong(1)
-
-
-"30008":NumberLong(712),
-"30009":NumberLong(97),
-"30010":NumberLong(20),
-"30011":NumberLong(3)
-
-
-"5001":NumberLong(2),
-"5002":NumberLong(18),
-"5003":NumberLong(6),
-"5004":NumberLong(13),
-"5005":NumberLong(13),
-"5006":NumberLong(4)
-
-30008 712
-30009 97
-30010 20
-30011 3
\ No newline at end of file
diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go
index 568c7f9..282ea93 100644
--- a/worldsrv/action_game.go
+++ b/worldsrv/action_game.go
@@ -1,25 +1,22 @@
package main
import (
- "errors"
"fmt"
"math/rand"
"time"
- webapi_proto "mongo.games.com/game/protocol/webapi"
+ "mongo.games.com/goserver/core/basic"
+ "mongo.games.com/goserver/core/logger"
+ "mongo.games.com/goserver/core/netlib"
+ "mongo.games.com/goserver/core/task"
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/proto"
"mongo.games.com/game/protocol/gamehall"
- "mongo.games.com/game/protocol/player"
"mongo.games.com/game/protocol/server"
+ webapiproto "mongo.games.com/game/protocol/webapi"
"mongo.games.com/game/srvdata"
- "mongo.games.com/game/webapi"
- "mongo.games.com/goserver/core/basic"
- "mongo.games.com/goserver/core/logger"
- "mongo.games.com/goserver/core/netlib"
- "mongo.games.com/goserver/core/task"
)
type CSEnterRoomPacketFactory struct {
@@ -49,7 +46,7 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in
var roomId int
var gameId int
var gameMode int
- var cfg *webapi_proto.GameFree
+ var cfg *webapiproto.GameFree
oldPlatform := p.Platform
// 进入原来的房间
@@ -146,6 +143,7 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in
if p.Roles != nil {
roleId = p.Roles.ModId
}
+ skinId := int32(300001)
var tm *TmMatch
if len(scene.params) > 3 {
sortId := scene.params[0]
@@ -155,10 +153,11 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in
grade = tm.copyRobotGrades[randIndex].grade
snid = tm.copyRobotGrades[randIndex].copySnid
roleId = tm.copyRobotGrades[randIndex].copyRoleId
+ skinId = tm.copyRobotGrades[randIndex].CopySkinId
tm.copyRobotGrades = append(tm.copyRobotGrades[:randIndex], tm.copyRobotGrades[randIndex+1:]...)
}
}
- mc := NewMatchContext(p, tm, grade, snid, 1, roleId, 0)
+ mc := NewMatchContext(p, tm, grade, snid, 1, roleId, skinId, 0)
if mc != nil {
mc.gaming = true
p.matchCtx = mc
@@ -197,16 +196,22 @@ func (this *CSAudienceEnterRoomHandler) Process(s *netlib.Session, packetid int,
var code = gamehall.OpResultCode_Game_OPRC_Sucess_Game
var sp ScenePolicy
var dbGameFree *server.DB_GameFree
- var cfg *webapi_proto.GameFree
+ var cfg *webapiproto.GameFree
scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId()))
if scene == nil {
code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game
logger.Logger.Trace("CSAudienceEnterRoomHandler scene == nil")
goto failed
}
- if scene.IsMatchScene() {
+ if !scene.CanAudience() {
code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game
- logger.Logger.Tracef("CSAudienceEnterRoomHandler scene.IsMatchScene() %v", scene.sceneId)
+ logger.Logger.Tracef("CSAudienceEnterRoomHandler scene.CanAudience() %v", scene.sceneId)
+ goto failed
+ }
+
+ if scene.IsMatchScene() && !PlatformMgrSingleton.IsMatchAudience(p.Platform, p.SnId) {
+ code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game
+ logger.Logger.Tracef("CSAudienceEnterRoomHandler scene.IsMatchAudience() %v", scene.sceneId)
goto failed
}
if p.scene != nil {
@@ -339,906 +344,6 @@ func (this *CSReturnRoomHandler) Process(s *netlib.Session, packetid int, data i
return nil
}
-type CSJoinGamePacketFactory struct {
-}
-type CSJoinGameHandler struct {
-}
-
-func (this *CSJoinGamePacketFactory) CreatePacket() interface{} {
- pack := &gamehall.CSJoinGame{}
- return pack
-}
-func (this *CSJoinGameHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
- logger.Logger.Trace("CSJoinGameHandler Process recv ", data)
- if msg, ok := data.(*gamehall.CSJoinGame); ok {
- p := PlayerMgrSington.GetPlayer(sid)
- if p == nil {
- logger.Logger.Warn("CSJoinGameHandler p == nil")
- return nil
- }
- if p.scene == nil {
- logger.Logger.Warn("CSJoinGameHandler scene == nil")
- return nil
- }
-
- newPlayer := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
- if newPlayer != nil {
- pack := &gamehall.SCJoinGame{
- MsgType: proto.Int32(msg.GetMsgType()),
- OpRetCode: gamehall.OpResultCode_Game(0),
- }
- if !p.scene.IsTestScene() {
- // 入场限额检查
- if p.scene.dbGameFree.GetLimitCoin() != 0 && int64(p.scene.dbGameFree.GetLimitCoin()) > p.Coin {
- pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_MoneyNotEnough_Game
- newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack)
- return nil
- }
- // 携带金币检查
- if p.scene.dbGameFree.GetMaxCoinLimit() != 0 && int64(p.scene.dbGameFree.GetMaxCoinLimit()) < p.Coin && !p.IsRob {
- pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_CoinTooMore_Game
- newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack)
- return nil
- }
- }
- // 是否还有空座位
- if p.scene.IsFull() {
- pack.OpRetCode = gamehall.OpResultCode_Game(1)
- newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack)
- return nil
- }
- p.scene.AudienceSit(newPlayer, -1)
- newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack)
- }
- }
- return nil
-}
-
-type CSGetDataLogPacketFactory struct {
-}
-type CSGetDataLogHandler struct {
-}
-
-func (this *CSGetDataLogPacketFactory) CreatePacket() interface{} {
- pack := &player.CSGetDataLog{}
- return pack
-}
-
-func (this *CSGetDataLogHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
- logger.Logger.Trace("CSGetDataLogHandler Process recv ", data)
- if msg, ok := data.(*player.CSGetDataLog); ok {
- p := PlayerMgrSington.GetPlayer(sid)
- if p == nil {
- logger.Logger.Warn("CSGetDataLogHandler p == nil")
- return nil
- }
- ts := int64(msg.GetVer())
- if ts == 0 {
- ts = time.Now().Unix()
- }
- type LogData struct {
- datas []model.CoinLog
- err error
- }
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- datas, err := model.GetCoinLogBySnidAndLessTs(p.Platform, p.SnId, ts)
- return &LogData{datas: datas, err: err}
- }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
- if d, ok := data.(*LogData); ok {
- if d != nil && d.err == nil {
- pack := &player.SCGetDataLog{
- DataType: msg.DataType,
- }
- ver := msg.GetVer()
- for i := 0; i < len(d.datas); i++ {
- ts := d.datas[i].Time.Unix()
- if int32(ts) < ver {
- ver = int32(ts)
- }
- pack.Datas = append(pack.Datas, &player.DataLog{
- LogType: proto.Int32(d.datas[i].LogType),
- ChangeCount: proto.Int64(d.datas[i].Count),
- RestCount: proto.Int64(d.datas[i].RestCount),
- Remark: proto.String(d.datas[i].Remark),
- Ts: proto.Int32(int32(ts)),
- })
- }
- pack.Ver = proto.Int32(ver)
- proto.SetDefaults(pack)
- p.SendToClient(int(player.PlayerPacketID_PACKET_SC_GETDATALOG), pack)
- }
- }
- }), "GetCoinLogBySnidAndLessTs").StartByFixExecutor("coinlog_r")
- }
- return nil
-}
-
-// 第三方-->系统
-func _LeaveTransferThird2SystemTask(p *Player) {
-
- if p.thrscene == 0 {
- logger.Logger.Tracef("player snid=%v TransferThird2SystemTask p.thrscene == 0 return", p.SnId)
- return
- }
-
- //if p.thrscene.sceneMode != int(common.SceneMode_Thr) {
- // logger.Logger.Infof("player snid=%v TransferThird2SystemTask p.scene == thrID return", p.SnId)
- // return
- //}
-
- if p.thridBalanceRefreshReqing {
- logger.Logger.Tracef("player snid=%v TransferThird2SystemTask p.thridBalanceRefreshReqing == true return", p.SnId)
- return
- }
- gainway := common.GainWay_Transfer_Thrid2System
- plt := webapi.ThridPlatformMgrSington.FindPlatformByPlatformBaseGameId(p.thrscene)
- if plt == nil {
- logger.Logger.Tracef("player snid=%v TransferThird2SystemTask plt == nil return", p.SnId)
- return
- }
-
- oper := plt.GetPlatformBase().Name + "2System"
- amount := int64(0)
- timeStamp := time.Now().UnixNano()
- p.thridBalanceRefreshReqing = true
- //timeout := false
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- for i := int32(0); i < model.GameParamData.ThirdPltTransferMaxTry; {
- var err error
- var coinLog *model.PayCoinLog
- var coinlogex *model.CoinLog
- //var apiHasTransfer = false
- remark := plt.GetPlatformBase().Name + "转出到系统"
- //allow := plt.ReqIsAllowTransfer(p.SnId, p.Platform, p.Channel)
- //if !allow {
- // goto Rollback
- //}
- err, amount = plt.ReqLeaveGame(p.SnId, fmt.Sprintf("%v", p.thrscene), p.Ip, p.Platform, p.Channel)
- if err != nil {
- goto Rollback
- }
- if amount <= 0 {
- return nil
- }
- if plt.GetPlatformBase().TransferInteger {
- amount = (amount / 100) * 100
- if amount <= 0 {
- return nil
- }
- }
- timeStamp = time.Now().UnixNano()
- //如果請求超時的話資金就不能從三方出來,玩家的錢只會少
- //err, timeout = plt.ReqTransfer(p.SnId, -amount, strconv.FormatInt(timeStamp, 10), p.Platform, p.Channel, p.Ip)
- //if err != nil || timeout {
- // goto Rollback
- //}
- //apiHasTransfer = true
- coinLog = model.NewPayCoinLog(timeStamp, int32(p.SnId), amount, int32(gainway), oper, model.PayCoinLogType_Coin, 0)
- timeStamp = coinLog.TimeStamp
- err = model.InsertPayCoinLogs(p.Platform, coinLog)
- if err != nil {
- goto Rollback
- }
- coinlogex = model.NewCoinLogEx(&model.CoinLogParam{
- Platform: p.Platform,
- SnID: p.SnId,
- Channel: p.Channel,
- ChangeType: common.BillTypeCoin,
- ChangeNum: amount,
- RemainNum: p.Coin + amount,
- Add: 0,
- LogType: int32(gainway),
- GameID: 0,
- GameFreeID: 0,
- BaseCoin: 0,
- Operator: oper,
- Remark: remark,
- })
- err = model.InsertCoinLog(coinlogex)
- if err != nil {
- goto Rollback
- }
- return nil
- Rollback:
- if coinLog != nil {
- model.RemovePayCoinLog(p.Platform, coinLog.LogId)
- }
- if coinlogex != nil {
- model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId)
- }
- //如果發現有任何一個超時,則就不在往下執行,因為不知道數據是否正確
- /*
- if timeout {
- logger.Logger.Errorf("player snid=%v third->system transfer %v timeout at try %v times,then stop try!", p.SnId, -amount, i+1)
- break
- }
- if apiHasTransfer {
- err, timeout = plt.ReqTransfer(p.SnId, amount, strconv.FormatInt(time.Now().UnixNano(), 10), p.Platform, p.Channel, p.Ip)
- if err != nil {
- logger.Logger.Errorf("player snid=%v third->system transfer rollback fail at try %v times", p.SnId, i+1)
- }
- }
- //如果发现有任何一個超时,則就不在往下执行,因为不知道数据是否在三方已经处理
- if timeout {
- logger.Logger.Errorf("player snid=%v third->system rollback transfer %v timeout at try %v times,then stop try!", p.SnId, amount, i+1)
- break
- }
- */
- logger.Logger.Tracef("player snid=%v third->system transfer rollback at try %v times", p.SnId, i+1)
- i++
- if i < model.GameParamData.ThirdPltTransferMaxTry {
- time.Sleep(time.Duration(model.GameParamData.ThirdPltTransferInterval) * time.Second)
- }
- }
- return errors.New("third->system transfer error >max try times!")
- }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) {
- statePack := &gamehall.SCThridGameBalanceUpdateState{}
- if data != nil {
- p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = false
- p.thridBalanceReqIsSucces = false
- statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
- logger.Logger.Trace("SCThridAccountTransferHandler third->system transfer error:", data)
- } else {
- p.thridBalanceReqIsSucces = true
- statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
- // p.thrscene = nil
- p.Coin += amount
- p.SetPayTs(timeStamp)
- p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true
- //ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, thirdBalance)
- }
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack)
- p.dirty = true
-
- if statePack.OpRetCode == gamehall.OpResultCode_Game_OPRC_Sucess_Game {
- //退出成功 重置场景状态
- if p.thrscene != 0 {
- p.thrscene = 0
- p.scene = nil
- }
- }
-
- p.thridBalanceRefreshReqing = false
- p.diffData.Coin = -1 //强制更新金币
- p.SendDiffData()
- return
- }), "ThridAccountTransfer").Start()
-}
-
-// 进入三方
-//type CSEnterThridGamePacketFactory struct {
-//}
-//type CSEnterThridGameHandler struct {
-//}
-
-//func (this *CSEnterThridGamePacketFactory) CreatePacket() interface{} {
-// pack := &gamehall.CSEnterThridGame{}
-// return pack
-//}
-
-//func (this *CSEnterThridGameHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
-// logger.Logger.Trace("CSEnterThridGameHandler Process recv ", data)
-// p := PlayerMgrSington.GetPlayer(sid)
-// if p == nil {
-// logger.Logger.Warn("CSEnterThridGameHandler p == nil")
-// return nil
-// }
-//
-// if msg, ok := data.(*gamehall.CSEnterThridGame); ok {
-// // msg.ThridGameId = proto.Int32(9010001)
-// returnErrorCodeFunc := func(code gamehall.OpResultCode_Game) {
-// pack := &gamehall.SCEnterThridGame{}
-// pack.OpRetCode = code
-// pack.ThridGameId = msg.ThridGameId
-// p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_ENTERTHRIDGAME), pack)
-// logger.Trace(pack)
-// }
-// //正在请求刷新余额中不能进入三方
-// if p.thridBalanceRefreshReqing {
-// logger.Logger.Warn("CSEnterThridGameHandler client req thridBalanceRefreshReqing", p.SnId)
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_ThirdPltProcessing_Game)
-// return nil
-// }
-// //msg.ThridGameId=proto.Int32(430010001)
-//
-// //找到对应的平台
-// thridPltGameItem, plt := ThirdPltGameMappingConfig.FindThirdInfoBySystemGameId(msg.ThridGameId)
-// if thridPltGameItem == nil || plt == nil {
-// logger.Logger.Infof("Player %v no platform", p.SnId)
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game)
-// return nil
-// }
-//
-// if p.thrscene != 0 && p.thrscene != plt.GetPlatformBase().BaseGameID {
-// logger.Logger.Infof("Player %v in game.", p.SnId)
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_ThirdPltProcessing_Game)
-// return nil
-// }
-// if p.isDelete {
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game)
-// return nil
-// }
-// //pt := PlatformMgrSingleton.GetPackageTag(p.PackageID)
-// //if pt != nil && pt.IsForceBind == 1 {
-// // if p.BeUnderAgentCode == "" || p.BeUnderAgentCode == "0" {
-// // returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_MustBindPromoter_Game)
-// // return nil
-// // }
-// //}
-//
-// //检测房间状态是否开启
-// gps := PlatformMgrSingleton.GetGameFree(p.Platform, msg.GetThridGameId())
-// if gps == nil {
-// logger.Logger.Infof("Player %v no cfg room close", p.SnId)
-//
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game)
-// return nil
-// }
-// dbGameFree := gps.DbGameFree
-// if dbGameFree == nil {
-// logger.Logger.Infof("Player %v no gamefree", p.SnId)
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game)
-// return nil
-// }
-// pfConfig := PlatformMgrSingleton.GetPlatform(p.Platform)
-// if pfConfig == nil || pfConfig.ThirdGameMerchant == nil || pfConfig.ThirdGameMerchant[int32(plt.GetPlatformBase().BaseGameID)] == 0 {
-// logger.Logger.Infof("Player %v no pfcfg", p.SnId)
-//
-// // returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game)
-// // return nil
-// }
-//
-// //检查限额,金额不足
-// if dbGameFree.GetLimitCoin() != 0 && p.GetCoin() < int64(dbGameFree.GetLimitCoin()) {
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_CoinNotEnough_Game)
-// return nil
-// }
-//
-// //检查平台配额是否足够
-// /*if plt.GetPlatformBase().IsNeedCheckQuota {
-// dgQuota := ThirdPlatformMgrSington.GetThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag)
-// if dgQuota <= 0 || dgQuota <= p.GetCoin() {
-// logger.Logger.Infof("Player snid %v %v platfrom Quota of game not enough.", p.SnId, plt.GetPlatformBase().Name)
-// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_Dg_QuotaNotEnough_Game)
-// return nil
-// }
-// }*/
-//
-// //检查场景是否开放或者存在,预设数据
-// //scene := SceneMgrSingleton.GetThirdScene(plt)
-// //if scene != nil {
-// p.thrscene = plt.GetPlatformBase().BaseGameID
-// //检查场景是否开放或者存在,预设数据
-// scene := SceneMgrSingleton.GetThirdScene(plt) //仅用于占位
-// if scene != nil {
-// p.scene = scene
-// }
-// //} else {
-// // logger.Logger.Infof("Player %v no scene", p.SnId)
-//
-// // returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game)
-// // return nil
-// //}
-//
-// AskEnterThridGame(p, plt, thridPltGameItem, s)
-// }
-// return nil
-//}
-//func AskEnterThridGame(p *Player, plt webapi.IThirdPlatform, thridPltGameItem *server.DB_ThirdPlatformGameMapping,
-// s *netlib.Session) {
-// pack := &gamehall.SCEnterThridGame{}
-// pack.ThridGameId = thridPltGameItem.SystemGameID
-// amount := p.GetCoin()
-// if plt.GetPlatformBase().TransferInteger {
-// amount = (amount / 100) * 100
-// }
-// p.Coin = p.GetCoin() - amount
-// gainway := common.GainWay_Transfer_System2Thrid
-// oper := "System2" + plt.GetPlatformBase().Name
-// timeStamp := time.Now().UnixNano()
-// p.thridBalanceRefreshReqing = true
-// transferTimeOut := false
-// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
-// var err error
-// //var ok bool
-// url := ""
-// remark := "转入" + plt.GetPlatformBase().Name + thridPltGameItem.GetDesc()
-// //thridPlatformCoin := int64(0)
-// var coinLog *model.PayCoinLog
-// var coinlogex *model.CoinLog
-// /*err = ensureThridPltUserName(plt, p, amount, s.RemoteAddr())
-// if err != nil && err != webapi.ErrNoCreated {
-// goto Rollback
-// }*/
-// //ok = utils.RunPanicless(func() {
-// err, url = enterThridPltUserName(plt, p, amount, thridPltGameItem.GetThirdGameID(), s.RemoteAddr())
-// //err, url = plt.ReqEnterGame(p.SnId, thridGameId, s.RemoteAddr(), p.Platform, p.Channel, p.Ip)
-// //})
-// if err == webapi.ErrRequestTimeout { // 超时
-// transferTimeOut = true
-// }
-// //ok = true
-// if err != nil && !transferTimeOut {
-// logger.Logger.Errorf("plt.ReqEnterGame() snid:%v error: %v", p.SnId, err)
-// if thrErr, ok := err.(webapi.ThirdError); ok {
-// if thrErr.IsClose() {
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Thr_GameClose_Game
-// } else {
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
-// }
-// } else {
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
-// }
-// goto Rollback
-// }
-// coinLog = model.NewPayCoinLog(timeStamp, int32(p.SnId), -amount, int32(gainway), oper, model.PayCoinLogType_Coin, 0)
-// timeStamp = coinLog.TimeStamp
-// err = model.InsertPayCoinLogs(p.Platform, coinLog)
-// if err != nil {
-// goto Rollback
-// }
-// coinlogex = model.NewCoinLogEx(&model.CoinLogParam{
-// Platform: p.Platform,
-// SnID: p.SnId,
-// ChangeType: common.BillTypeCoin,
-// ChangeNum: -amount,
-// RemainNum: p.Coin,
-// Add: 0,
-// LogType: int32(gainway),
-// GameID: 0,
-// GameFreeID: 0,
-// BaseCoin: 0,
-// Operator: oper,
-// Remark: remark,
-// })
-// err = model.InsertCoinLog(coinlogex)
-// if err != nil {
-// goto Rollback
-// }
-// //
-// //err, transferTimeOut = plt.ReqTransfer(p.SnId, amount, strconv.FormatInt(timeStamp, 10), p.Platform, p.Channel, p.Ip)
-// if transferTimeOut {
-// logger.Logger.Errorf("plt.ReqTransfer() snid:%v error:%v", p.SnId, err)
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
-// goto Rollback
-// }
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
-// pack.ScreenOrientationType = proto.Int32(thridPltGameItem.GetScreenOrientationType())
-// pack.EnterUrl = proto.String(url)
-// return nil
-// Rollback:
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
-// if coinLog != nil {
-// model.RemovePayCoinLog(p.Platform, coinLog.LogId)
-// }
-// if coinlogex != nil {
-// if transferTimeOut {
-// err2 := model.UpdateCoinLogRemark(coinlogex.Platform, coinlogex.LogId, plt.GetPlatformBase().Name+"需人工处理")
-// if err2 != nil {
-// logger.Logger.Errorf("thr UpdateCoinLogRemark(%v) error: %v", coinlogex.LogId, err2)
-// }
-// } else {
-// model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId)
-// }
-//
-// }
-// return errors.New("system->third transfer rollback!")
-// }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) {
-// if pack.GetOpRetCode() == gamehall.OpResultCode_Game_OPRC_Sucess_Game {
-// // ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, -amount)
-// p.SetPayTs(timeStamp)
-// } else {
-// //如帐变出现问题,就在日志里面查下面的输出信息!!!
-// //如果转账超时,三方的转账是否成功就是未知的,这时不能将金币再加到玩家身上。
-// //如果出现超时问题,就需要人工对账。
-// //注意:这个地方说的超时已经包含CG工程Check订单后的超时
-// if transferTimeOut {
-// logger.Logger.Errorf("CSEnterThridGameHandler player snid:%v transfer %v to %v timeout:", p.SnId, amount, plt.GetPlatformBase().Name)
-// } else {
-// p.Coin += amount
-// }
-// p.thrscene = 0
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
-// logger.Logger.Trace("enterThridPltUserName system->third transfer error:", data)
-// }
-// p.dirty = true
-// p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = false
-//
-// p.SendDiffData()
-// p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_ENTERTHRIDGAME), pack)
-// p.thridBalanceRefreshReqing = false
-// logger.Logger.Trace("CSEnterThridGameHandler send client:", pack)
-// return
-// }), "CSEnterThridGameHandler").Start()
-//}
-//
-//func ensureThridPltUserName(pltform webapi.IThirdPlatform, p *Player, amount int64, ip string) error {
-// var err error
-// err = pltform.ReqCreateAccount(p.SnId, p.Platform, p.Channel, p.GetIP())
-// if err != nil {
-// if err != webapi.ErrNoCreated {
-// logger.Logger.Errorf("Snid=%v Plt=%v ReqCreateAccount error:%v", p.SnId, pltform.GetPlatformBase().Name, err)
-// }
-// return err
-// }
-// return nil
-//}
-
-//func enterThridPltUserName(pltform webapi.IThirdPlatform, p *Player, amount int64, gameId, ip string) (err error, url string) {
-// // (snId int32, gameId string, clientIP string, platform, channel string, amount int64)
-// err, url = pltform.ReqEnterGame(p.SnId, "", p.GetIP(), p.Platform, p.Channel, amount)
-// if err != nil {
-// if err != webapi.ErrNoCreated {
-// logger.Logger.Errorf("Snid=%v Plt=%v ReqEnterGame error:%v", p.SnId, pltform.GetPlatformBase().Name, err)
-// }
-// return err, ""
-// }
-// return
-//}
-
-// 离开三方
-//type CSLeaveThridGamePacketFactory struct {
-//}
-//type CSLeaveThridGameHandler struct {
-//}
-//
-//func (this *CSLeaveThridGamePacketFactory) CreatePacket() interface{} {
-// pack := &gamehall.CSLeaveThridGame{}
-// return pack
-//}
-//
-//func (this *CSLeaveThridGameHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
-// if _, ok := data.(*gamehall.CSLeaveThridGame); ok {
-// p := PlayerMgrSington.GetPlayer(sid)
-// if p == nil {
-// logger.Logger.Warn("CSLeaveThridGameHandler p == nil")
-// return nil
-// }
-// logger.Logger.Trace("CSLeaveThridGameHandler Process recv ", p.SnId)
-// _LeaveTransferThird2SystemTask(p)
-// pack := &gamehall.SCLeaveThridGame{}
-// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
-// p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_LEAVETHRIDGAME), pack)
-// }
-// return nil
-//}
-
-// 刷新
-type CSThridBalanceRefreshPacketFactory struct {
-}
-type CSThridBalanceRefreshHandler struct {
-}
-
-func (this *CSThridBalanceRefreshPacketFactory) CreatePacket() interface{} {
- pack := &gamehall.CSThridGameBalanceUpdate{}
- return pack
-}
-func (this *CSThridBalanceRefreshHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
- logger.Logger.Trace("CSThridBalanceRefreshHandler Process recv ", data)
- if _, ok := data.(*gamehall.CSThridGameBalanceUpdate); ok {
- p := PlayerMgrSington.GetPlayer(sid)
- if p == nil {
- logger.Logger.Warn("CSThridBalanceRefreshHandler p == nil")
- return nil
- }
- //if p.scene != nil {
- // logger.Logger.Tracef("player snid=%v CSThridBalanceRefreshHandler p.scene != nil return", p.SnId)
- // return nil
- //}
-
- //请求太快,不做处理,给API减轻一些压力
- if p.thridBalanceRefreshReqing {
- logger.Logger.Warn("CSThridBalanceRefreshHandler client req too fast")
- pack := &gamehall.SCThridGameBalanceUpdate{
- OpRetCode: gamehall.OpResultCode_Game_OPRC_Error_Game,
- }
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack)
- return nil
- }
- // p.thridBalanceRefreshReqing = true
- RefreshTransferThird2SystemTask(p)
- /*
- gainway := common.GainWay_Transfer_Thrid2System
- waitgroup := webapi.ThridPlatformMgrSington.AllPlatformCount()
- isSucces := true
- timeout := false
-
- webapi.ThridPlatformMgrSington.ThridPlatformMap.Range(func(key, value interface{}) bool {
- plt := value.(webapi.IThirdPlatform)
- if stateOk, exist := p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name]; exist && stateOk {
- waitgroup--
- if 0 == waitgroup {
- statePack := &gamehall.SCThridGameBalanceUpdateState{}
- pack := &gamehall.SCThridGameBalanceUpdate{}
- pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
- p.thridBalanceReqIsSucces = true
- statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack)
- pack.Coin = proto.Int64(p.Coin)
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack)
- p.thridBalanceRefreshReqing = false
- }
- return true
- }
- var tsk task.Task
- tsk = task.New(nil,
- task.CallableWrapper(func(o *basic.Object) interface{} {
- plt := tsk.GetEnv("plt").(webapi.IThirdPlatform)
- tsk.PutEnv("timeStamp", time.Now().UnixNano())
- var err error
- var coinLog *model.PayCoinLog
- var coinlogex *model.CoinLog
- var apiHasTransfer = false
- remark := "刷新" + plt.GetPlatformBase().Name + "转出到系统"
- thirdBalance := int64(0)
- //allow := false
- if plt == nil {
- logger.Logger.Tracef("player snid=%v CSThridBalanceRefreshHandler plt == nil return", p.SnId)
- return int64(-1)
- }
-
- pfConfig := PlatformMgrSingleton.GetPlatform(p.Platform)
- if pfConfig == nil {
- return int64(0)
- }
-
- if pfConfig.ThirdGameMerchant == nil || pfConfig.ThirdGameMerchant[int32(plt.GetPlatformBase().BaseGameID)] == 0 {
- return int64(0)
- }
-
- oper := plt.GetPlatformBase().Name + "2System"
- err = ensureThridPltUserName(plt, p, thirdBalance, s.RemoteAddr())
- if err != nil {
- if err == webapi.ErrNoCreated {
- return int64(0)
- }
- logger.Logger.Tracef("player snid=%v at %v ensureThridPltUserName() err: %v", p.SnId, plt.GetPlatformBase().Name, err)
- goto Rollback
- }
- //allow = plt.ReqIsAllowTransfer(p.SnId, p.Platform, p.Channel)
- //if !allow {
- // logger.Logger.Tracef("player snid=%v at %v is not allow Transfer", p.SnId, plt.GetPlatformBase().Name)
- // goto Rollback
- //}
- err, thirdBalance = plt.ReqUserBalance(p.SnId, p.Platform, p.Channel, p.Ip)
- if err != nil {
- logger.Logger.Tracef("player snid=%v at %v plt.ReqUserBalance() err: %v", p.SnId, plt.GetPlatformBase().Name, err)
- goto Rollback
- }
- if thirdBalance <= 0 {
- return int64(0)
- }
- if plt.GetPlatformBase().TransferInteger {
- thirdBalance = (thirdBalance / 100) * 100
- if thirdBalance <= 0 {
- return int64(0)
- }
- }
- err, timeout = plt.ReqTransfer(p.SnId, -thirdBalance, strconv.FormatInt(time.Now().UnixNano(), 10), p.Platform, p.Channel, p.Ip)
- if err != nil || timeout {
- logger.Logger.Tracef("player snid=%v at %v plt.ReqTransfer() err: %v", p.SnId, plt.GetPlatformBase().Name, err)
- goto Rollback
- }
- apiHasTransfer = true
- coinLog = model.NewPayCoinLog(time.Now().UnixNano(), int32(p.SnId), thirdBalance, int32(gainway), oper, model.PayCoinLogType_Coin, 0)
- tsk.PutEnv("timeStamp", coinLog.TimeStamp)
- err = model.InsertPayCoinLogs(p.Platform, coinLog)
- if err != nil {
- logger.Logger.Tracef("player snid=%v at %v model.InsertPayCoinLogs() err: %v", p.SnId, plt.GetPlatformBase().Name, err)
- goto Rollback
- }
- coinlogex = model.NewCoinLogEx(p.SnId, thirdBalance, p.Coin+thirdBalance, p.SafeBoxCoin, 0, int32(gainway),
- 0, oper, remark, p.Platform, p.Channel, p.BeUnderAgentCode, 0, p.PackageID, int32(plt.GetPlatformBase().VultGameID))
- err = model.InsertCoinLog(coinlogex)
- if err != nil {
- logger.Logger.Tracef("player snid=%v at %v model.InsertCoinLogs() err: %v", p.SnId, plt.GetPlatformBase().Name, err)
- goto Rollback
- }
- tsk.PutEnv("plt", plt)
- return thirdBalance
- Rollback:
- if coinLog != nil {
- model.RemovePayCoinLog(p.Platform, coinLog.LogId)
- }
- if coinlogex != nil {
- model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId)
- }
- if timeout {
- logger.Logger.Errorf("player snid=%v CSThridBalanceRefreshHandler transfer %v to %v timeout!", p.SnId, -thirdBalance, plt.GetPlatformBase().Name)
- return int64(-1)
- }
- if apiHasTransfer {
- err, timeout = plt.ReqTransfer(p.SnId, thirdBalance, strconv.FormatInt(time.Now().UnixNano(), 10), p.Platform, p.Channel, p.Ip)
- if timeout {
- logger.Logger.Errorf("player snid=%v CSThridBalanceRefreshHandler transfer rollback %v to %v timeout!", p.SnId, thirdBalance, plt.GetPlatformBase().Name)
- }
- }
- return int64(-1)
- }),
- task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) {
- thirdBalance := data.(int64)
- plt := tsk.GetEnv("plt").(webapi.IThirdPlatform)
- timeStamp := tsk.GetEnv("timeStamp").(int64)
- if thirdBalance < 0 {
- isSucces = false
- logger.Logger.Tracef("player snid=%v at platform=%v CSThridBalanceRefreshHandler third->system transfer fail", p.SnId, plt.GetPlatformBase().Name)
- } else if thirdBalance > 0 {
- p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true
- p.Coin += thirdBalance
- p.SetPayTs(timeStamp)
- //ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, thirdBalance)
- p.dirty = true
- logger.Logger.Tracef("player snid=%v at platform=%v CSThridBalanceRefreshHandler third->system transfer succes", p.SnId, plt.GetPlatformBase().Name)
- } else {
- p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true
- }
- if atomic.AddInt32(&waitgroup, -1) == 0 {
- p.diffData.Coin = -1
- p.SendDiffData()
- statePack := &gamehall.SCThridGameBalanceUpdateState{}
- pack := &gamehall.SCThridGameBalanceUpdate{}
- if isSucces {
- pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
- p.thridBalanceReqIsSucces = true
- statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
- } else {
- pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
- p.thridBalanceReqIsSucces = false
- statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
- }
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack)
- pack.Coin = proto.Int64(p.Coin)
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack)
- p.thridBalanceRefreshReqing = false
- logger.Logger.Tracef("SendToClient() player snid=%v at CSThridBalanceRefreshHandler() pack:%v", p.SnId, pack.String())
- }
- }), "ThridAccount")
- tsk.PutEnv("plt", value)
- tsk.Start()
- return true
- })*/
- }
- return nil
-}
-
-// 刷新 第三方-->系统
-func RefreshTransferThird2SystemTask(p *Player) {
-
- /*if p.thrscene == 0 {
- logger.Logger.Tracef("player snid=%v RefreshTransferThird2SystemTask p.thrscene == 0 return", p.SnId)
- return
- }*/
-
- if p.thridBalanceRefreshReqing {
- logger.Logger.Tracef("player snid=%v RefreshTransferThird2SystemTask p.thridBalanceRefreshReqing == true return", p.SnId)
- return
- }
- gainway := common.GainWay_Transfer_Thrid2System
-
- amount := int64(0)
- timeStamp := time.Now().UnixNano()
- p.thridBalanceRefreshReqing = true
- //timeout := false
- webapi.ThridPlatformMgrSington.ThridPlatformMap.Range(func(key, value interface{}) bool {
- // plt := value.(webapi.IThirdPlatform)
-
- var tsk task.Task
- tsk = task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- // plt := webapi.ThridPlatformMgrSington.FindPlatformByPlatformBaseGameId(p.thrscene)
- plt := tsk.GetEnv("plt").(webapi.IThirdPlatform)
- if plt == nil {
- logger.Logger.Tracef("player snid=%v RefreshTransferThird2SystemTask plt == nil return", p.SnId)
- return errors.New("third->system plt is nil")
- }
- for i := int32(0); i < model.GameParamData.ThirdPltTransferMaxTry; {
- var err error
- var coinLog *model.PayCoinLog
- var coinlogex *model.CoinLog
-
- oper := plt.GetPlatformBase().Name + "2System"
- remark := "刷新" + plt.GetPlatformBase().Name + "转出到系统"
- err, amount = plt.ReqUserBalance(p.SnId, p.Platform, p.Channel, p.Ip)
-
- // err, amount = plt.ReqLeaveGame(p.SnId, fmt.Sprintf("%v", p.thrscene), p.Ip, p.Platform, p.Channel)
- if err != nil {
- goto Rollback
- }
- if amount <= 0 {
- return nil
- }
- if plt.GetPlatformBase().TransferInteger {
- amount = (amount / 100) * 100
- if amount <= 0 {
- return nil
- }
- }
- timeStamp = time.Now().UnixNano()
-
- coinLog = model.NewPayCoinLog(timeStamp, int32(p.SnId), amount, int32(gainway), oper, model.PayCoinLogType_Coin, 0)
- timeStamp = coinLog.TimeStamp
- err = model.InsertPayCoinLogs(p.Platform, coinLog)
- if err != nil {
- goto Rollback
- }
- coinlogex = model.NewCoinLogEx(&model.CoinLogParam{
- Platform: p.Platform,
- SnID: p.SnId,
- Channel: p.Channel,
- ChangeType: common.BillTypeCoin,
- ChangeNum: amount,
- RemainNum: p.Coin + amount,
- Add: 0,
- LogType: int32(gainway),
- GameID: 0,
- GameFreeID: 0,
- BaseCoin: 0,
- Operator: oper,
- Remark: remark,
- })
- err = model.InsertCoinLog(coinlogex)
- if err != nil {
- goto Rollback
- }
- return nil
- Rollback:
- if coinLog != nil {
- model.RemovePayCoinLog(p.Platform, coinLog.LogId)
- }
- if coinlogex != nil {
- model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId)
- }
-
- logger.Logger.Tracef("player snid=%v third->system transfer rollback at try %v times", p.SnId, i+1)
- i++
- if i < model.GameParamData.ThirdPltTransferMaxTry {
- time.Sleep(time.Duration(model.GameParamData.ThirdPltTransferInterval) * time.Duration(time.Second))
- }
- }
- return errors.New("third->system transfer error >max try times!")
- }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) {
- statePack := &gamehall.SCThridGameBalanceUpdateState{}
- pack := &gamehall.SCThridGameBalanceUpdate{}
- plt := tsk.GetEnv("plt").(webapi.IThirdPlatform)
- if data != nil {
- p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = false
- p.thridBalanceReqIsSucces = false
- statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
- pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game
- logger.Logger.Trace("SCThridAccountTransferHandler third->system transfer error:", data)
- } else {
- p.thridBalanceReqIsSucces = true
- statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
- pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game
- // p.thrscene = nil
- p.Coin += amount
- p.SetPayTs(timeStamp)
- p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true
- //ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, thirdBalance)
- }
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack)
-
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack)
- pack.Coin = proto.Int64(p.Coin)
- p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack)
- p.dirty = true
-
- //这个地方虽然说拉取失败,但是为了不影响玩家玩其他的游戏,还是可以进入其它场景
- //后面玩家自己通过手动刷新余额
- if p.thrscene != 0 {
- p.thrscene = 0
- p.scene = nil
- }
- p.thridBalanceRefreshReqing = false
- p.diffData.Coin = -1 //强制更新金币
- p.SendDiffData()
- return
- }), "ThridAccountRefresh")
- tsk.PutEnv("plt", value)
- tsk.Start()
- return true
- })
-}
-
type CSQueryRoomInfoPacketFactory struct {
}
type CSQueryRoomInfoHandler struct {
@@ -1322,30 +427,6 @@ func (this *CSQueryRoomInfoHandler) ProcessLocalGame(s *netlib.Session, packetid
return nil
}
-type CSLotteryLogPacketFactory struct {
-}
-type CSLotteryLogHandler struct {
-}
-
-func (this *CSLotteryLogPacketFactory) CreatePacket() interface{} {
- pack := &gamehall.CSLotteryLog{}
- return pack
-}
-
-func (this *CSLotteryLogHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
- logger.Logger.Trace("CSLotteryLogHandler Process recv ", data)
- //if msg, ok := data.(*gamehall.CSLotteryLog); ok {
- // p := PlayerMgrSington.GetPlayer(sid)
- // if p == nil {
- // logger.Logger.Warn("CSLotteryLogHandler p == nil")
- // return nil
- // }
- //
- // LotteryMgrSington.FetchLotteryLog(p, msg.GetGameFreeId())
- //}
- return nil
-}
-
// 获取指定游戏配置 包括分场信息
type CSGetGameConfigPacketFactory struct {
}
@@ -1493,9 +574,11 @@ func (this *CSEnterGameHandler) ProcessLocal(s *netlib.Session, packetid int, da
if len(params) != 0 {
roomId = params[0]
- platformName := CoinSceneMgrSingleton.GetPlatformBySceneId(int(roomId))
+ platformName := SceneMgrSingleton.GetPlatformBySceneId(int(roomId))
if p.IsRob {
- p.Platform = platformName
+ if platformName != "" {
+ p.Platform = platformName
+ }
} else if p.GMLevel > 0 && p.Platform == platformName { //允许GM直接按房间ID进场
roomId = params[0]
}
@@ -1591,13 +674,12 @@ func (this *CSEnterGameHandler) ProcessNormal(s *netlib.Session, packetid int, d
case common.IsHundredType(gameType):
if len(params) != 0 {
roomId = params[0]
- name, ok := HundredSceneMgrSington.GetPlatformNameBySceneId(roomId)
+ platform := SceneMgrSingleton.GetPlatformBySceneId(int(roomId))
if p.IsRob {
- //机器人先伪装成对应平台的用户
- if ok {
- p.Platform = name
+ if platform != "" {
+ p.Platform = platform
}
- } else if p.GMLevel > 0 && p.Platform == name { //允许GM直接按房间ID进场
+ } else if p.GMLevel > 0 && p.Platform == platform { //允许GM直接按房间ID进场
roomId = params[0]
}
}
@@ -1610,7 +692,7 @@ func (this *CSEnterGameHandler) ProcessNormal(s *netlib.Session, packetid int, d
}
}
}
- ret = gamehall.OpResultCode_Game(HundredSceneMgrSington.PlayerEnter(p, msg.GetId()))
+ ret = gamehall.OpResultCode_Game(HundredSceneMgrSingleton.PlayerEnter(p, msg.GetId()))
if p.scene != nil {
pack.OpParams = append(pack.OpParams, msg.GetId())
if ret != gamehall.OpResultCode_Game_OPRC_Sucess_Game {
@@ -1622,9 +704,11 @@ func (this *CSEnterGameHandler) ProcessNormal(s *netlib.Session, packetid int, d
case common.IsCoinSceneType(gameType):
if len(params) != 0 {
roomId = params[0]
- platformName := CoinSceneMgrSingleton.GetPlatformBySceneId(int(roomId))
+ platformName := SceneMgrSingleton.GetPlatformBySceneId(int(roomId))
if p.IsRob {
- p.Platform = platformName
+ if platformName != "" {
+ p.Platform = platformName
+ }
} else if p.GMLevel > 0 && p.Platform == platformName { //允许GM直接按房间ID进场
roomId = params[0]
}
@@ -1682,7 +766,10 @@ func (this *CSQuitGameHandler) Process(s *netlib.Session, packetid int, data int
dbGameFree := srvdata.PBDB_GameFreeMgr.GetData(msg.GetId())
gameType := dbGameFree.GetGameType()
if common.IsHundredType(gameType) {
- ret = gamehall.OpResultCode_Game(HundredSceneMgrSington.PlayerTryLeave(p))
+ ret = gamehall.OpResultCode_Game(HundredSceneMgrSingleton.PlayerTryLeave(p))
+ if gamehall.OpResultCode_Game_OPRC_OpYield_Game == ret {
+ return nil
+ }
} else if common.IsCoinSceneType(gameType) {
ret = gamehall.OpResultCode_Game(CoinSceneMgrSingleton.PlayerTryLeave(p, msg.IsAudience))
if gamehall.OpResultCode_Game_OPRC_OpYield_Game == ret {
@@ -1752,7 +839,7 @@ func (this *CSCreateRoomHandler) ProcessLocalGame(s *netlib.Session, packetid in
var gameSite int32
var csp *CoinScenePool
var baseScore int32
- var gps *webapi_proto.GameFree
+ var gps *webapiproto.GameFree
//根据携带金额取可创房间 DB_Createroom
arrs := srvdata.PBDB_CreateroomMgr.Datas.Arr
@@ -1864,7 +951,7 @@ func (this *CSCreateRoomHandler) ProcessLocalGame(s *netlib.Session, packetid in
goto failed
}
scene, code = p.CreateLocalGameScene(roomId, int(gameId), int(gameSite), int(msg.GetSceneMode()), maxPlayerNum,
- params, dbGameFree, baseScore, csp.groupId)
+ params, dbGameFree, baseScore, 0)
if scene != nil && code == gamehall.OpResultCode_Game_OPRC_Sucess_Game {
logger.Logger.Tracef("CSCreateRoomHandler SnId:%v Create Sucess GameId:%v", p.SnId, gameId)
csp.AddScene(scene)
@@ -1905,7 +992,7 @@ func (this *CSCreateRoomHandler) ProcessThirteen(s *netlib.Session, packetid int
var baseScore = msg.GetBaseCoin()
var sp ScenePolicy
var gamefreeId = msg.GetId()
- var gps *webapi_proto.GameFree
+ var gps *webapiproto.GameFree
var maxPlayerNum = int(msg.GetMaxPlayerNum())
var csp *CoinScenePool
var roomId int
@@ -1968,7 +1055,7 @@ func (this *CSCreateRoomHandler) ProcessThirteen(s *netlib.Session, packetid int
goto failed
}
scene, code = p.CreateLocalGameScene(roomId, int(gameId), int(dbGameFree.GetSceneType()), int(msg.GetSceneMode()),
- maxPlayerNum, params, dbGameFree, baseScore, csp.groupId)
+ maxPlayerNum, params, dbGameFree, baseScore, 0)
if scene != nil {
if code == gamehall.OpResultCode_Game_OPRC_Sucess_Game {
logger.Logger.Tracef("CSCreateRoomHandler SnId:%v Create Sucess GameId:%v", p.SnId, gameId)
@@ -2155,27 +1242,9 @@ func init() {
// 返回房间
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_RETURNROOM), &CSReturnRoomHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_RETURNROOM), &CSReturnRoomPacketFactory{})
-
- common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_JOINGAME), &CSJoinGameHandler{})
- netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_JOINGAME), &CSJoinGamePacketFactory{})
-
- common.RegisterHandler(int(player.PlayerPacketID_PACKET_CS_GETDATALOG), &CSGetDataLogHandler{})
- netlib.RegisterFactory(int(player.PlayerPacketID_PACKET_CS_GETDATALOG), &CSGetDataLogPacketFactory{})
-
- //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_ENTERTHRIDGAME), &CSEnterThridGameHandler{})
- //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_ENTERTHRIDGAME), &CSEnterThridGamePacketFactory{})
-
- //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_LEAVETHRIDGAME), &CSLeaveThridGameHandler{})
- //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_LEAVETHRIDGAME), &CSLeaveThridGamePacketFactory{})
-
- //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_THRIDGAMEBALANCEUPDATE), &CSThridBalanceRefreshHandler{})
- //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_THRIDGAMEBALANCEUPDATE), &CSThridBalanceRefreshPacketFactory{})
-
- //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_GETPRIVATEROOMHISTORY), &CSGetPrivateRoomHistoryHandler{})
- //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_GETPRIVATEROOMHISTORY), &CSGetPrivateRoomHistoryPacketFactory{})
-
- common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_LOTTERYLOG), &CSLotteryLogHandler{})
- netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_LOTTERYLOG), &CSLotteryLogPacketFactory{})
+ //观众坐下
+ common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitHandler{})
+ netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitPacketFactory{})
//获取指定游戏配置 包括分场信息
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_GETGAMECONFIG), &CSGetGameConfigHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_GETGAMECONFIG), &CSGetGameConfigPacketFactory{})
@@ -2194,9 +1263,6 @@ func init() {
//查询公共房间列表
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_QUERYROOMINFO), &CSQueryRoomInfoHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_QUERYROOMINFO), &CSQueryRoomInfoPacketFactory{})
- //观众坐下
- common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitHandler{})
- netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitPacketFactory{})
//我的游戏信息及平台公告
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_COMNOTICE), &CSRecordAndNoticeHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_COMNOTICE), &CSRecordAndNoticePacketFactory{})
diff --git a/worldsrv/action_hundredscene.go b/worldsrv/action_hundredscene.go
index e8a25de..aa7e96d 100644
--- a/worldsrv/action_hundredscene.go
+++ b/worldsrv/action_hundredscene.go
@@ -2,12 +2,15 @@ package main
import (
"fmt"
+ "time"
+
+ "mongo.games.com/goserver/core/logger"
+ "mongo.games.com/goserver/core/netlib"
+
"mongo.games.com/game/common"
"mongo.games.com/game/proto"
"mongo.games.com/game/protocol/gamehall"
"mongo.games.com/game/srvdata"
- "mongo.games.com/goserver/core/logger"
- "mongo.games.com/goserver/core/netlib"
)
type CSHundredSceneGetPlayerNumPacketFactory struct {
@@ -25,7 +28,7 @@ func (this *CSHundredSceneGetPlayerNumHandler) Process(s *netlib.Session, packet
if msg, ok := data.(*gamehall.CSHundredSceneGetPlayerNum); ok {
p := PlayerMgrSington.GetPlayer(sid)
if p != nil {
- nums := HundredSceneMgrSington.GetPlayerNums(p, msg.GetGameId(), msg.GetGameModel())
+ nums := HundredSceneMgrSingleton.GetPlayerNums(p, msg.GetGameId(), msg.GetGameModel())
pack := &gamehall.SCHundredSceneGetPlayerNum{
Nums: nums,
}
@@ -60,7 +63,7 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da
}
oldPlatform := p.Platform
switch msg.GetOpType() {
- case HundredSceneOp_Enter:
+ case HundredSceneOPEnter:
//pt := PlatformMgrSingleton.GetPackageTag(p.PackageID)
//if pt != nil && pt.IsForceBind == 1 {
// if p.BeUnderAgentCode == "" || p.BeUnderAgentCode == "0" {
@@ -79,13 +82,13 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da
params := msg.GetOpParams()
if len(params) != 0 {
roomId = params[0]
- name, ok := HundredSceneMgrSington.GetPlatformNameBySceneId(roomId)
+ platform := SceneMgrSingleton.GetPlatformBySceneId(int(roomId))
if p.IsRob {
//机器人先伪装成对应平台的用户
- if ok {
- p.Platform = name
+ if platform != "" {
+ p.Platform = platform
}
- } else if p.GMLevel > 0 && p.Platform == name { //允许GM直接按房间ID进场
+ } else if p.GMLevel > 0 && p.Platform == platform { //允许GM直接按房间ID进场
roomId = params[0]
}
}
@@ -152,7 +155,7 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da
}
}
- ret = HundredSceneMgrSington.PlayerEnter(p, msg.GetId())
+ ret = HundredSceneMgrSingleton.PlayerEnter(p, msg.GetId())
if p.scene != nil {
pack.OpParams = append(pack.OpParams, msg.GetId())
//TODO 有房间还进入失败,尝试returnroom
@@ -161,9 +164,9 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da
return nil
}
}
- case HundredSceneOp_Leave:
- ret = HundredSceneMgrSington.PlayerTryLeave(p)
- case HundredSceneOp_Change:
+ case HundredSceneOPLeave:
+ ret = HundredSceneMgrSingleton.PlayerTryLeave(p)
+ case HundredSceneOPChange:
/*var exclude int32
if p.scene != nil {
exclude = int32(p.scene.sceneId)
@@ -172,10 +175,10 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da
if len(params) != 0 {
exclude = params[0]
}
- if HundredSceneMgrSington.PlayerInChanging(p) { //换桌中
+ if HundredSceneMgrSingleton.PlayerInChanging(p) { //换桌中
return nil
}
- ret = HundredSceneMgrSington.PlayerTryChange(p, msg.GetId(), exclude)*/
+ ret = HundredSceneMgrSingleton.PlayerTryChange(p, msg.GetId(), exclude)*/
}
done:
//机器人要避免身上的平台标记被污染
@@ -210,38 +213,38 @@ func (this *CSGameObservePacketFactory) CreatePacket() interface{} {
func (this *CSGameObserveHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSGameObserveHandler Process recv ", data)
- if _, ok := data.(*gamehall.CSGameObserve); ok {
+ if msg, ok := data.(*gamehall.CSGameObserve); ok {
p := PlayerMgrSington.GetPlayer(sid)
if p != nil {
- //if msg.GetStartOrEnd() {
- // gameStateMgr.PlayerRegiste(p, msg.GetGameId(), msg.GetStartOrEnd())
- // pack := &gamehall.SCGameSubList{}
- // statePack := &gamehall.SCGameState{}
- // scenes := HundredSceneMgrSington.GetPlatformScene(p.Platform, msg.GetGameId())
- // for _, value := range scenes {
- // pack.List = append(pack.List, &gamehall.GameSubRecord{
- // GameFreeId: proto.Int32(value.dbGameFree.GetId()),
- // NewLog: proto.Int32(-1),
- // LogCnt: proto.Int(len(value.GameLog)),
- // TotleLog: value.GameLog,
- // })
- // leftTime := int64(value.StateSec) - (time.Now().Unix() - value.StateTs)
- // if leftTime < 0 {
- // leftTime = 0
- // }
- // statePack.List = append(statePack.List, &gamehall.GameState{
- // GameFreeId: proto.Int32(value.dbGameFree.GetId()),
- // Ts: proto.Int64(leftTime),
- // Sec: proto.Int32(value.StateSec),
- // })
- // }
- // p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESUBLIST), pack)
- // logger.Logger.Trace("SCGameSubList:", pack)
- // p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESTATE), statePack)
- // logger.Logger.Trace("SCGameState:", statePack)
- //} else {
- // gameStateMgr.PlayerClear(p)
- //}
+ if msg.GetStartOrEnd() {
+ gameStateMgr.PlayerRegiste(p, msg.GetGameId(), msg.GetStartOrEnd())
+ pack := &gamehall.SCGameSubList{}
+ statePack := &gamehall.SCGameState{}
+ scenes := HundredSceneMgrSingleton.GetPlatformScene(p.Platform, msg.GetGameId())
+ for _, value := range scenes {
+ pack.List = append(pack.List, &gamehall.GameSubRecord{
+ GameFreeId: proto.Int32(value.dbGameFree.GetId()),
+ NewLog: proto.Int32(-1),
+ LogCnt: proto.Int(len(value.GameLog)),
+ TotleLog: value.GameLog,
+ })
+ leftTime := int64(value.StateSec) - (time.Now().Unix() - value.StateTs)
+ if leftTime < 0 {
+ leftTime = 0
+ }
+ statePack.List = append(statePack.List, &gamehall.GameState{
+ GameFreeId: proto.Int32(value.dbGameFree.GetId()),
+ Ts: proto.Int64(leftTime),
+ Sec: proto.Int32(value.StateSec),
+ })
+ }
+ p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESUBLIST), pack)
+ logger.Logger.Trace("SCGameSubList:", pack)
+ p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESTATE), statePack)
+ logger.Logger.Trace("SCGameState:", statePack)
+ } else {
+ gameStateMgr.PlayerClear(p)
+ }
}
}
return nil
@@ -268,7 +271,7 @@ func (this *CSGameObserveHandler) Process(s *netlib.Session, packetid int, data
// // gameid == common.GameId_Avengers || gameid == common.GameId_EasterIsland {
// // gameStateMgr.PlayerRegiste(p, msg.GetGameId(), true)
// // pack := &gamehall.SCHundredSceneGetGameJackpot{}
-// // scenes := HundredSceneMgrSington.GetPlatformScene(p.Platform, msg.GetGameId())
+// // scenes := HundredSceneMgrSingleton.GetPlatformScene(p.Platform, msg.GetGameId())
// // for _, v := range scenes {
// // jpfi := &gamehall.GameJackpotFundInfo{
// // GameFreeId: proto.Int32(v.dbGameFree.GetId()),
diff --git a/worldsrv/action_player.go b/worldsrv/action_player.go
index dc6c7f8..93974ec 100644
--- a/worldsrv/action_player.go
+++ b/worldsrv/action_player.go
@@ -1748,7 +1748,7 @@ func (this *CSPlayerVIPDrawHandler) Process(s *netlib.Session, packetid int, dat
return nil
}
- p.VIPDraw(msg.GetId())
+ p.VIPDraw(msg.GetId(), msg.GetVip())
}
return nil
}
@@ -3027,6 +3027,119 @@ func CSPopUpWindowsConfig(s *netlib.Session, packetId int, data interface{}, sid
}), "Api_PopupWindowsConfig").Start()
return nil
}
+
+func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid int64) error {
+ logger.Logger.Tracef("CSUpdateAttribute %v", data)
+ p := PlayerMgrSington.GetPlayer(sid)
+ if p == nil {
+ return nil
+ }
+ msg, ok := data.(*player_proto.CSUpdateAttribute)
+ if !ok {
+ return nil
+ }
+
+ stepId := p.GuideStep + 1
+ pack := &player_proto.SCUpdateAttribute{
+ OpRetCode: player_proto.OpResultCode_OPRC_Error,
+ Tp: msg.GetTp(),
+ Param: msg.GetParam(),
+ }
+
+ send := func() {
+ p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCUpdateAttribute), pack)
+ logger.Logger.Tracef("SCUpdateAttribute %v", pack)
+ // 日志
+ if pack.OpRetCode == player_proto.OpResultCode_OPRC_Sucess {
+ switch msg.GetTp() {
+ case common.AttributeGuideStep, common.AttributeGuideSkip:
+ d := model.CustomData{
+ Event: "guide",
+ Platform: p.Platform,
+ GuideTp: msg.GetTp(),
+ N: int64(stepId),
+ }
+ b, _ := json.Marshal(d)
+ LogChannelSingleton.WriteLog(&model.ClientLogMysql{
+ Data: string(b),
+ Platform: p.Platform,
+ Snid: p.SnId,
+ Ts: time.Now().Unix(),
+ CreateTs: p.CreateTime.Unix(),
+ })
+ }
+ }
+ }
+
+ switch msg.GetTp() {
+ case common.AttributeGuideStep:
+ if len(msg.GetParam()) == 0 || msg.GetParam()[0] == 0 || p.GuideStep < 0 {
+ return nil
+ }
+ if PlatformMgrSingleton.GetConfig(p.Platform).GuideConfig.GetOn() != common.On {
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_Guide_Close
+ send()
+ return nil
+ }
+ if p.GuideStep >= model.GameParamData.GuideStepMaxNum {
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_GuideStep_End
+ send()
+ return nil
+ }
+ if int64(p.GuideStep) >= msg.GetParam()[0] {
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_GuideStep_Finish
+ send()
+ return nil
+ }
+ if int64(p.GuideStep)+1 < msg.GetParam()[0] {
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_GuideStep_Front
+ send()
+ return nil
+ }
+ p.GuideStep = int32(msg.GetParam()[0])
+ stepId = p.GuideStep
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_Sucess
+ send()
+ // 获得10v卡
+ if p.GuideStep == 2 {
+ BagMgrSingleton.AddItemsV2(&ItemParam{
+ P: p,
+ Change: []*Item{
+ {
+ ItemId: common.ItemIDVCard,
+ ItemNum: 10,
+ },
+ },
+ GainWay: common.GainWayGuide,
+ Operator: "system",
+ Remark: "新手引导奖励",
+ })
+ }
+ return nil
+ case common.AttributeGuideSkip:
+ if PlatformMgrSingleton.GetConfig(p.Platform).GuideConfig.GetSkip() != common.On {
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_Guide_SkipClose
+ send()
+ return nil
+ }
+ if p.GuideStep >= 0 && p.GuideStep < model.GameParamData.GuideStepMaxNum {
+ p.GuideStep = -1 // 跳过引导为 -1
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_Sucess
+ send()
+ return nil
+ }
+ case common.AttributeGuideTest:
+ if !common.Config.IsDevMode {
+ return nil
+ }
+ p.GuideStep = int32(msg.GetParam()[0])
+ pack.OpRetCode = player_proto.OpResultCode_OPRC_Sucess
+ send()
+ return nil
+ }
+ return nil
+}
+
func init() {
// 用户信息
common.Register(int(player_proto.PlayerPacketID_PACKET_CS_PLAYERDATA), player_proto.CSPlayerData{}, CSPlayerData)
@@ -3058,4 +3171,6 @@ func init() {
common.Register(int(player_proto.PlayerPacketID_PACKET_CSAwardLog), player_proto.CS_AwardLog{}, CSAwardLog)
//弹窗配置
common.Register(int(player_proto.PlayerPacketID_PACKET_CSPopUpWindowsConfig), player_proto.CSPopUpWindowsConfig{}, CSPopUpWindowsConfig)
+ // 更新属性;新手引导阶段
+ common.Register(int(player_proto.PlayerPacketID_PACKET_CSUpdateAttribute), player_proto.CSUpdateAttribute{}, CSUpdateAttribute)
}
diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go
index 080ce3c..6dc0a87 100644
--- a/worldsrv/action_server.go
+++ b/worldsrv/action_server.go
@@ -13,32 +13,32 @@ import (
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/proto"
- gamehall_proto "mongo.games.com/game/protocol/gamehall"
- login_proto "mongo.games.com/game/protocol/login"
- player_proto "mongo.games.com/game/protocol/player"
- server_proto "mongo.games.com/game/protocol/server"
+ gamehallproto "mongo.games.com/game/protocol/gamehall"
+ loginproto "mongo.games.com/game/protocol/login"
+ playerproto "mongo.games.com/game/protocol/player"
+ serverproto "mongo.games.com/game/protocol/server"
"mongo.games.com/game/srvdata"
)
func init() {
// 销毁房间
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWDestroyScene{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWDestroyScene{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive GWDestroyScene:", pack)
- if msg, ok := pack.(*server_proto.GWDestroyScene); ok {
+ if msg, ok := pack.(*serverproto.GWDestroyScene); ok {
SceneMgrSingleton.DestroyScene(int(msg.GetSceneId()), msg.GetIsCompleted())
}
return nil
}))
// 离开房间
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWPlayerLeave{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWPlayerLeave{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
- if msg, ok := pack.(*server_proto.GWPlayerLeave); ok {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ if msg, ok := pack.(*serverproto.GWPlayerLeave); ok {
logger.Logger.Trace("receive GWPlayerLeave:", msg.GetPlayerId())
scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId()))
if scene != nil {
@@ -68,7 +68,7 @@ func init() {
}
}
case scene.IsHundredScene():
- if !HundredSceneMgrSington.PlayerLeave(p, int(msg.GetReason())) {
+ if !HundredSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) {
logger.Logger.Warnf("GWPlayerLeave snid:%v sceneid:%v gameid:%v modeid:%v [hundredcene]",
p.SnId, scene.sceneId, scene.gameId, scene.gameMode)
}
@@ -228,12 +228,12 @@ func init() {
}))
// 观众离开房间
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWPlayerLeave{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWPlayerLeave{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive PACKET_GW_AUDIENCELEAVE GWPlayerLeave:", pack)
- if msg, ok := pack.(*server_proto.GWPlayerLeave); ok {
+ if msg, ok := pack.(*serverproto.GWPlayerLeave); ok {
scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId()))
if scene != nil {
p := PlayerMgrSington.GetPlayerBySnId(msg.GetPlayerId())
@@ -270,12 +270,12 @@ func init() {
}))
// 房间游戏开始
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_SCENESTART), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWSceneStart{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_SCENESTART), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWSceneStart{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_SCENESTART), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_SCENESTART), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive SSPacketID_PACKET_GW_SCENESTART GWSceneStart:", pack)
- if msg, ok := pack.(*server_proto.GWSceneStart); ok {
+ if msg, ok := pack.(*serverproto.GWSceneStart); ok {
scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId()))
if scene != nil {
scene.starting = msg.GetStart()
@@ -299,12 +299,12 @@ func init() {
// 房间游戏状态
// 捕鱼
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_SCENESTATE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWSceneState{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_SCENESTATE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWSceneState{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_SCENESTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_SCENESTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive SSPacketID_PACKET_GW_SCENESTATE GWSceneState:", pack)
- if msg, ok := pack.(*server_proto.GWSceneState); ok {
+ if msg, ok := pack.(*serverproto.GWSceneState); ok {
scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId()))
if scene != nil {
scene.state = msg.GetCurrState()
@@ -315,12 +315,12 @@ func init() {
}))
// 用户状态同步 flag
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWPlayerFlag{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWPlayerFlag{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive GWPlayerFlag:", pack)
- if msg, ok := pack.(*server_proto.GWPlayerFlag); ok {
+ if msg, ok := pack.(*serverproto.GWPlayerFlag); ok {
player := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
if player != nil {
player.flag = msg.GetFlag()
@@ -330,12 +330,12 @@ func init() {
}))
// 房间服务器状态切换
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.ServerStateSwitch{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.ServerStateSwitch{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive SSPacketID_PACKET_GB_STATE_SWITCH ServerStateSwitch:", pack)
- if sr, ok := pack.(*server_proto.ServerStateSwitch); ok {
+ if sr, ok := pack.(*serverproto.ServerStateSwitch); ok {
srvid := int(sr.GetSrvId())
gameSess := GameSessMgrSington.GetGameSess(srvid)
if gameSess != nil {
@@ -360,13 +360,13 @@ func init() {
// 游戏服务器的系统广播
// 捕鱼
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWNewNotice{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWNewNotice{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.HandlerWrapper(func(s *netlib.Session,
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
logger.Logger.Trace("receive GWNewNotice:", pack)
- if msg, ok := pack.(*server_proto.GWNewNotice); ok {
+ if msg, ok := pack.(*serverproto.GWNewNotice); ok {
//立即发送改为定期发送,控制下广播包的频度
HorseRaceLampMgrSington.PushGameHorseRaceLamp(msg.GetCh(), msg.GetPlatform(), msg.GetContent(), int32(msg.GetMsgtype()), msg.GetIsrob(), msg.GetPriority())
}
@@ -374,13 +374,13 @@ func init() {
}))
// 同步每局游戏那些玩家一起玩的
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWScenePlayerLog{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWScenePlayerLog{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.HandlerWrapper(func(s *netlib.Session,
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
logger.Logger.Trace("receive GWScenePlayerLog:", pack)
- if msg, ok := pack.(*server_proto.GWScenePlayerLog); ok {
+ if msg, ok := pack.(*serverproto.GWScenePlayerLog); ok {
sceneLimitMgr.ReceiveData(msg.GetGameId(), msg.GetSnids())
}
return nil
@@ -388,11 +388,11 @@ func init() {
// 强制离开房间
// 返回房间失败
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWPlayerForceLeave{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWPlayerForceLeave{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
- if msg, ok := pack.(*server_proto.GWPlayerForceLeave); ok {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ if msg, ok := pack.(*serverproto.GWPlayerForceLeave); ok {
logger.Logger.Warn("receive GWPlayerForceLeave:", msg)
scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId()))
if scene != nil {
@@ -406,7 +406,7 @@ func init() {
logger.Logger.Warnf("GWPlayerForceLeave snid:%v sceneid:%v gameid:%v modeid:%v [coinscene]", p.SnId, scene.sceneId, scene.gameId, scene.gameMode)
}
case scene.IsHundredScene():
- if !HundredSceneMgrSington.PlayerLeave(p, int(msg.GetReason())) {
+ if !HundredSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) {
logger.Logger.Warnf("GWPlayerForceLeave snid:%v sceneid:%v gameid:%v modeid:%v [hundredcene]", p.SnId, scene.sceneId, scene.gameId, scene.gameMode)
}
case scene.IsMatchScene():
@@ -438,12 +438,12 @@ func init() {
//1.同步玩家游戏场内的实时金币
//2.触发相关任务:统计有效下注金币数,赢取金币数,牌局次数等
//3.黑名单处理
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWPlayerData{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWPlayerData{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive GWPlayerBet:", pack)
- if msg, ok := pack.(*server_proto.GWPlayerData); ok {
+ if msg, ok := pack.(*serverproto.GWPlayerData); ok {
scene := SceneMgrSingleton.GetScene(int(msg.GetSceneId()))
if scene == nil {
return nil
@@ -573,13 +573,13 @@ func init() {
}))
//推送游戏的状态
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_GAMESTATE), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWGameState{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_GAMESTATE), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWGameState{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_GAMESTATE), netlib.HandlerWrapper(func(s *netlib.Session,
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_GAMESTATE), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
logger.Logger.Trace("receive SSPacketID_PACKET_GW_GAMESTATE GWGameState:", pack)
- if msg, ok := pack.(*server_proto.GWGameState); ok {
+ if msg, ok := pack.(*serverproto.GWGameState); ok {
scene := SceneMgrSingleton.GetScene(int(msg.GetSceneId()))
if scene != nil {
scene.State = msg.GetState()
@@ -591,38 +591,38 @@ func init() {
if leftTime < 0 {
leftTime = 0
}
- pack := &gamehall_proto.SCGameState{}
- pack.List = append(pack.List, &gamehall_proto.GameState{
+ pack := &gamehallproto.SCGameState{}
+ pack.List = append(pack.List, &gamehallproto.GameState{
GameFreeId: proto.Int32(scene.dbGameFree.GetId()),
Ts: proto.Int64(leftTime),
Sec: proto.Int32(scene.StateSec),
})
gameStateMgr.BrodcastGameState(int32(scene.gameId), scene.limitPlatform.IdStr,
- int(gamehall_proto.GameHallPacketID_PACKET_SC_GAMESTATE), pack)
+ int(gamehallproto.GameHallPacketID_PACKET_SC_GAMESTATE), pack)
}
}
}
return nil
}))
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWGameJackList{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWGameJackList{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive SSPacketID_PACKET_GW_JACKPOTLIST GWGameJackList:", pack)
- if msg, ok := pack.(*server_proto.GWGameJackList); ok {
+ if msg, ok := pack.(*serverproto.GWGameJackList); ok {
FishJackListMgr.Insert(msg.GetCoin(), msg.GetSnId(), msg.GetRoomId(), msg.GetJackType(), msg.GetGameId(),
msg.GetPlatform(), msg.GetChannel(), msg.GetName())
}
return nil
}))
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWGameJackCoin{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWGameJackCoin{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive SSPacketID_PACKET_GW_JACKPOTCOIN GWGameJackCoin:", pack)
- if msg, ok := pack.(*server_proto.GWGameJackCoin); ok {
+ if msg, ok := pack.(*serverproto.GWGameJackCoin); ok {
for i, pl := range msg.Platform {
FishJackpotCoinMgr.Jackpot[pl] = msg.Coin[i]
}
@@ -631,12 +631,12 @@ func init() {
}))
//强制换桌
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.GWChangeSceneEvent{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.GWChangeSceneEvent{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive SSPacketID_PACKET_GW_CHANGESCENEEVENT GWChangeSceneEvent:", pack)
- if msg, ok := pack.(*server_proto.GWChangeSceneEvent); ok {
+ if msg, ok := pack.(*serverproto.GWChangeSceneEvent); ok {
scene := SceneMgrSingleton.GetScene(int(msg.GetSceneId()))
if scene != nil {
scene.PlayerTryChange()
@@ -646,13 +646,13 @@ func init() {
}))
//玩家中转消息
- netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.PacketFactoryWrapper(func() interface{} {
- return &server_proto.SSRedirectToPlayer{}
+ netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.PacketFactoryWrapper(func() interface{} {
+ return &serverproto.SSRedirectToPlayer{}
}))
- netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.HandlerWrapper(func(s *netlib.Session,
+ netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
logger.Logger.Trace("SSRedirectToPlayer Process recv ", pack)
- if msg, ok := pack.(*server_proto.SSRedirectToPlayer); ok {
+ if msg, ok := pack.(*serverproto.SSRedirectToPlayer); ok {
p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
if p == nil {
return nil
@@ -670,13 +670,13 @@ type CSPMCmdHandler struct {
}
func (this *CSPMCmdPacketFactory) CreatePacket() interface{} {
- pack := &player_proto.CSPMCmd{}
+ pack := &playerproto.CSPMCmd{}
return pack
}
func (this *CSPMCmdHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSPMCmdHandler Process recv ", data)
- if msg, ok := data.(*player_proto.CSPMCmd); ok {
+ if msg, ok := data.(*playerproto.CSPMCmd); ok {
p := PlayerMgrSington.GetPlayer(sid)
if p == nil {
logger.Logger.Trace("CSPMCmdHandler p == nil")
@@ -729,13 +729,13 @@ type CSRobotChgDataHandler struct {
}
func (this *CSRobotChgDataPacketFactory) CreatePacket() interface{} {
- pack := &player_proto.CSRobotChgData{}
+ pack := &playerproto.CSRobotChgData{}
return pack
}
func (this *CSRobotChgDataHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSRobotChgDataHandler Process recv ", data)
- if _, ok := data.(*player_proto.CSRobotChgData); ok {
+ if _, ok := data.(*playerproto.CSRobotChgData); ok {
p := PlayerMgrSington.GetPlayer(sid)
if p == nil {
logger.Logger.Trace("CSRobotChgDataHandler p == nil")
@@ -756,13 +756,13 @@ type CSAccountInvalidHandler struct {
}
func (this *CSAccountInvalidPacketFactory) CreatePacket() interface{} {
- pack := &login_proto.CSAccountInvalid{}
+ pack := &loginproto.CSAccountInvalid{}
return pack
}
func (this *CSAccountInvalidHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSAccountInvalidHandler Process recv ", data)
- if _, ok := data.(*login_proto.CSAccountInvalid); ok {
+ if _, ok := data.(*loginproto.CSAccountInvalid); ok {
p := PlayerMgrSington.GetPlayer(sid)
if p != nil && p.IsRobot() {
snid := p.SnId
@@ -789,12 +789,12 @@ func (this *CSAccountInvalidHandler) Process(s *netlib.Session, packetid int, da
}
func init() {
- common.RegisterHandler(int(player_proto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdHandler{})
- netlib.RegisterFactory(int(player_proto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdPacketFactory{})
+ common.RegisterHandler(int(playerproto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdHandler{})
+ netlib.RegisterFactory(int(playerproto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdPacketFactory{})
- common.RegisterHandler(int(player_proto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataHandler{})
- netlib.RegisterFactory(int(player_proto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataPacketFactory{})
+ common.RegisterHandler(int(playerproto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataHandler{})
+ netlib.RegisterFactory(int(playerproto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataPacketFactory{})
- common.RegisterHandler(int(login_proto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidHandler{})
- netlib.RegisterFactory(int(login_proto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidPacketFactory{})
+ common.RegisterHandler(int(loginproto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidHandler{})
+ netlib.RegisterFactory(int(loginproto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidPacketFactory{})
}
diff --git a/worldsrv/action_shop.go b/worldsrv/action_shop.go
index 92a22da..ee854bc 100644
--- a/worldsrv/action_shop.go
+++ b/worldsrv/action_shop.go
@@ -311,6 +311,7 @@ func (this *CSShopExchangeHandler) Process(s *netlib.Session, packetid int, data
if !f {
pack := &shop.SCShopExchange{
RetCode: shop.OpResultCode_OPRC_ExchangeLimitAcc,
+ GoodsId: msg.GetGoodsId(),
}
p.SendToClient(int(shop.SPacketID_PACKET_SC_SHOP_EXCHANGE), pack)
return nil
diff --git a/worldsrv/action_tournament.go b/worldsrv/action_tournament.go
index 3d44e47..f55d5d7 100644
--- a/worldsrv/action_tournament.go
+++ b/worldsrv/action_tournament.go
@@ -1,11 +1,11 @@
package main
import (
- "mongo.games.com/goserver/core/logger"
- "mongo.games.com/goserver/core/netlib"
-
"mongo.games.com/game/common"
"mongo.games.com/game/protocol/tournament"
+ "mongo.games.com/goserver/core/logger"
+ "mongo.games.com/goserver/core/netlib"
+ "sort"
)
func CSTMInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error {
@@ -94,9 +94,135 @@ func CSSignRace(s *netlib.Session, packetid int, data interface{}, sid int64) er
return nil
}
+func CSMatchList(s *netlib.Session, packetId int, data interface{}, sid int64) error {
+ logger.Logger.Trace("CSMatchList ", data)
+ msg, ok := data.(*tournament.CSMatchList)
+ if !ok {
+ return nil
+ }
+ p := PlayerMgrSington.GetPlayer(sid)
+ if p == nil {
+ logger.Logger.Warnf("CSMatchList p == nil.")
+ return nil
+ }
+ pack := &tournament.SCTMMatchList{
+ MatchId: msg.GetMatchId(),
+ Tp: msg.GetTp(),
+ }
+
+ audience := msg.GetTp() == 1
+ list := TournamentMgr.GetTmMatch(p.Platform, int32(msg.GetMatchId()), p.LastChannel, audience, 0)
+
+ // 开始时间排序
+ sort.Slice(list, func(i, j int) bool {
+ return list[i].StartTime < list[j].StartTime
+ })
+
+ for _, v := range list {
+ round := TournamentMgr.GetRound(v.SortId)
+ d := &tournament.MatchInfo{
+ MatchId: int64(v.TMId),
+ InstanceId: v.SortId,
+ Name: v.gmd.MatchName,
+ Round: round,
+ TotalRound: v.GetTotalRound(),
+ RemainNum: TournamentMgr.GetRemainNum(v.SortId),
+ }
+ for _, v := range TournamentMgr.GetRemainPlayer(v.SortId) {
+ var name, headUrl string
+ p := PlayerMgrSington.GetPlayerBySnId(v.SnId)
+ if p != nil {
+ name = p.Name
+ headUrl = p.HeadUrl
+ }
+ d.Players = append(d.Players, &tournament.MatchPlayer{
+ SnId: v.SnId,
+ Name: name,
+ HeadUrl: headUrl,
+ UseRoleId: v.RoleId,
+ UseSkinId: v.SkinId,
+ Rank: v.Rank,
+ Score: v.Grade,
+ })
+ }
+
+ sort.Slice(d.Players, func(i, j int) bool {
+ if d.Players[i].Score > d.Players[j].Score {
+ return true
+ }
+ if d.Players[i].Score < d.Players[j].Score {
+ return false
+ }
+ return d.Players[i].SnId < d.Players[j].SnId
+ })
+
+ pack.List = append(pack.List, d)
+ }
+
+ p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCMatchList), pack)
+ logger.Logger.Tracef("SCMatchList %v", pack)
+ return nil
+}
+
+func CSRoomList(s *netlib.Session, packetId int, data interface{}, sid int64) error {
+ logger.Logger.Trace("CSRoomList ", data)
+ msg, ok := data.(*tournament.CSRoomList)
+ if !ok {
+ return nil
+ }
+ p := PlayerMgrSington.GetPlayer(sid)
+ if p == nil {
+ logger.Logger.Warnf("CSRoomList p == nil.")
+ return nil
+ }
+ pack := &tournament.SCRoomList{
+ Id: msg.GetId(),
+ Tp: msg.GetTp(),
+ }
+
+ audience := msg.GetTp() == 1
+ scenes := TournamentMgr.GetTmRoom(p.Platform, 0, p.LastChannel, audience, msg.GetId())
+ for _, v := range scenes {
+ tm := TournamentMgr.GetTm(v.matchId)
+ if tm == nil {
+ continue
+ }
+ room := &tournament.MatchRoom{
+ RoomId: int64(v.sceneId),
+ MatchId: int64(tm.TMId),
+ InstanceId: tm.SortId,
+ Round: TournamentMgr.GetRound(tm.SortId),
+ TotalRound: tm.GetTotalRound(),
+ }
+ for _, v := range v.players {
+ if v.matchCtx == nil {
+ continue
+ }
+ d := &tournament.MatchPlayer{
+ SnId: v.matchCtx.copySnid,
+ Name: v.Name,
+ HeadUrl: v.HeadUrl,
+ UseRoleId: v.matchCtx.copyRoleId,
+ UseSkinId: v.matchCtx.copySkinId,
+ Rank: v.matchCtx.rank,
+ Score: v.matchCtx.grade,
+ }
+ room.Players = append(room.Players, d)
+ }
+ pack.List = append(pack.List, room)
+ }
+ p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCRoomList), pack)
+ logger.Logger.Tracef("SCRoomList %v", pack)
+ return nil
+}
+
func init() {
- // 比赛信息列表
+ // 比赛配置列表
common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSTMInfo), tournament.CSTMInfo{}, CSTMInfo)
// 比赛报名
common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSSignRace), tournament.CSSignRace{}, CSSignRace)
+ // 比赛中比赛列表
+ common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSMatchList), tournament.CSMatchList{}, CSMatchList)
+ // 比赛中房间列表
+ common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSRoomList), tournament.CSRoomList{}, CSRoomList)
}
diff --git a/worldsrv/awardlogmgr.go b/worldsrv/awardlogmgr.go
index 6c9f71d..298f59c 100644
--- a/worldsrv/awardlogmgr.go
+++ b/worldsrv/awardlogmgr.go
@@ -128,6 +128,7 @@ func (this *AwardLogManager) Update() {
func (this *AwardLogManager) Shutdown() {
this.Save()
+ module.UnregisteModule(this)
}
func (this *AwardLogManager) OnHourTimer() {
diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go
index db7f97b..675e14f 100644
--- a/worldsrv/bagmgr.go
+++ b/worldsrv/bagmgr.go
@@ -592,25 +592,47 @@ func (this *BagMgr) VerifyUpJybInfo(p *Player, args *model.VerifyUpJybInfoArgs)
p.dirty = true
}
}
+ jybLog := &model.JybLog{
+ Platform: p.Platform,
+ Id: jyb.JybId.Hex(),
+ Ts: time.Now().Unix(),
+ SnId: p.SnId,
+ Tp: jyb.CodeType,
+ Name: jyb.Name,
+ }
for _, v := range jyb.Award.Item {
//if _, code := BagMgrSingleton.UpBagInfo(p.SnId, p.Platform, v.ItemId, v.ItemNum); code == bag.OpResultCode_OPRC_Sucess { // 需修改
pack.GainItem.ItemId = append(pack.GainItem.ItemId, &playerproto.ItemInfo{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
})
+ jybLog.Award = append(jybLog.Award, &model.JybItem{
+ Id: v.ItemId,
+ Num: int32(v.ItemNum),
+ })
}
if jyb.Award.Coin > 0 {
p.AddCoin(jyb.Award.Coin, 0, common.GainWay_ActJybAward, "system", "礼包码兑换")
if !p.IsRob {
LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ActJybAward, model.SystemFreeGive_CoinType_Coin, int64(jyb.Award.Coin)))
}
+ jybLog.Award = append(jybLog.Award, &model.JybItem{
+ Id: common.ItemIDCoin,
+ Num: int32(jyb.Award.Coin),
+ })
}
if jyb.Award.Diamond > 0 {
p.AddDiamond(jyb.Award.Diamond, 0, common.GainWay_ActJybAward, "system", "礼包码兑换")
if !p.IsRob {
LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_GiveType_ActJybAward, model.SystemFreeGive_CoinType_Diamond, int64(jyb.Award.Diamond)))
}
+ jybLog.Award = append(jybLog.Award, &model.JybItem{
+ Id: common.ItemIDDiamond,
+ Num: int32(jyb.Award.Coin),
+ })
}
+ // 领取日志
+ LogChannelSingleton.WriteLog(jybLog)
p.dirty = true
pack.GainItem.Coin = jyb.Award.Coin
pack.GainItem.Diamond = jyb.Award.Diamond
diff --git a/worldsrv/coinscenemgr.go b/worldsrv/coinscenemgr.go
index 809e9f8..8f25966 100644
--- a/worldsrv/coinscenemgr.go
+++ b/worldsrv/coinscenemgr.go
@@ -10,21 +10,17 @@ import (
"mongo.games.com/goserver/core/transact"
"mongo.games.com/game/common"
+ "mongo.games.com/game/model"
"mongo.games.com/game/proto"
- hall_proto "mongo.games.com/game/protocol/gamehall"
+ hallproto "mongo.games.com/game/protocol/gamehall"
"mongo.games.com/game/protocol/server"
"mongo.games.com/game/protocol/webapi"
"mongo.games.com/game/srvdata"
)
var CoinSceneMgrSingleton = &CoinSceneMgr{
- playerChanging: make(map[int32]int32),
- //按平台管理
+ playerChanging: make(map[int32]int32),
scenesOfPlatform: make(map[string]map[int32]*CoinScenePool),
- platformOfScene: make(map[int]string),
- //按组管理
- scenesOfGroup: make(map[int32]map[int32]*CoinScenePool),
- groupOfScene: make(map[int]int32),
}
type CreateRoomCache struct {
@@ -33,16 +29,8 @@ type CreateRoomCache struct {
}
type CoinSceneMgr struct {
- playerChanging map[int32]int32 // snid:gamefreeid 换桌中的玩家
-
- //按平台管理
- scenesOfPlatform map[string]map[int32]*CoinScenePool // platform:gamefreeid
- platformOfScene map[int]string // sceneid:platform; 创建房间后记录房间所在平台
-
- //按组管理
- scenesOfGroup map[int32]map[int32]*CoinScenePool // groupid:gamefreeid
- groupOfScene map[int]int32 // sceneid:groupid;
-
+ scenesOfPlatform map[string]map[int32]*CoinScenePool // 场次房间池 platform:gamefreeid
+ playerChanging map[int32]int32 // 换桌中的玩家 snid:gamefreeid
//延迟创建房间列表
delayCache []*CreateRoomCache // 待预创建房间
}
@@ -50,215 +38,126 @@ type CoinSceneMgr struct {
// GetCoinScenePool 获取一个场景池
// plt 平台id
// id 场次id
-func (csm *CoinSceneMgr) GetCoinScenePool(plt string, id int32) *CoinScenePool {
+func (m *CoinSceneMgr) GetCoinScenePool(plt string, id int32) *CoinScenePool {
gf := PlatformMgrSingleton.GetGameFree(plt, id)
- if gf == nil {
+ if gf == nil || gf.DbGameFree == nil {
return nil
}
- groupId := gf.GetGroupId()
- if groupId != 0 {
- if _, ok := csm.scenesOfGroup[groupId]; ok {
- if csp, ok := csm.scenesOfGroup[groupId][id]; ok {
- return csp
- }
- }
- } else {
- if ss, ok := csm.scenesOfPlatform[plt]; ok {
- if csp, ok := ss[id]; ok && csp != nil {
- return csp
- }
- }
- }
- if gf.GetDbGameFree() == nil {
- return nil
+ if ss, ok := m.scenesOfPlatform[plt]; ok {
+ if csp, ok := ss[id]; ok && csp != nil {
+ return csp
+ }
}
// 创建了一个新的
- // 应该是走不到这里,因为模块启动时所有场次都创建了房间池
- pool := newCoinScenePool(plt, groupId, gf.GetDbGameFree())
- if groupId != 0 {
- v, ok := csm.scenesOfGroup[groupId]
- if !ok || v == nil {
- csm.scenesOfGroup[groupId] = make(map[int32]*CoinScenePool)
- }
- csm.scenesOfGroup[groupId][id] = pool
- } else {
- v, ok := csm.scenesOfPlatform[plt]
- if !ok || v == nil {
- csm.scenesOfPlatform[plt] = make(map[int32]*CoinScenePool)
- }
- csm.scenesOfPlatform[plt][id] = pool
+ // 模块启动时所有场次都创建了房间池
+ pool := newCoinScenePool(plt, gf.GetDbGameFree())
+ v, ok := m.scenesOfPlatform[plt]
+ if !ok || v == nil {
+ m.scenesOfPlatform[plt] = make(map[int32]*CoinScenePool)
}
+ m.scenesOfPlatform[plt][id] = pool
return pool
}
-func (csm *CoinSceneMgr) findCoinScenePool(platform string, id int32) (pools map[int32]*CoinScenePool, groupID int32,
- dbGameFree *server.DB_GameFree) {
+func (m *CoinSceneMgr) findCoinScenePool(platform string, id int32) (pools map[int32]*CoinScenePool, dbGameFree *server.DB_GameFree) {
gf := PlatformMgrSingleton.GetGameFree(platform, id)
if gf == nil || gf.GetDbGameFree() == nil {
- return nil, 0, nil
- }
- groupId := gf.GetGroupId()
-
- var ss map[int32]*CoinScenePool
- var ok bool
- if groupId != 0 {
- ss, ok = csm.scenesOfGroup[groupId]
- if !ok {
- ss = make(map[int32]*CoinScenePool)
- csm.scenesOfGroup[groupId] = ss
- }
- return ss, groupId, gf.GetDbGameFree()
+ return nil, nil
}
- ss, ok = csm.scenesOfPlatform[platform]
- if !ok {
+ ss, ok := m.scenesOfPlatform[platform]
+ if !ok || ss == nil {
ss = make(map[int32]*CoinScenePool)
- csm.scenesOfPlatform[platform] = ss
+ m.scenesOfPlatform[platform] = ss
}
- return ss, 0, gf.GetDbGameFree()
+ return ss, gf.GetDbGameFree()
}
// PlayerEnter 玩家进入房间池
-func (csm *CoinSceneMgr) PlayerEnter(p *Player, id int32, roomId int32, exclude []int32, isChangeRoom bool) hall_proto.OpResultCode {
- logger.Logger.Tracef("(csm *CoinSceneMgr) PlayerEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude)
+func (m *CoinSceneMgr) PlayerEnter(p *Player, id int32, roomId int32, exclude []int32, isChangeRoom bool) hallproto.OpResultCode {
+ logger.Logger.Tracef("CoinSceneMgr PlayerEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude)
if p.isDelete { //删档用户不让进游戏
- return hall_proto.OpResultCode_OPRC_RoomHadClosed
+ return hallproto.OpResultCode_OPRC_RoomHadClosed
+ }
+ // 玩家已经在房间里了
+ if m.InCoinScene(p) {
+ logger.Logger.Warnf("CoinSceneMgr PlayerEnter snid:%v find in gamefreeid:%v roomId:%v", p.SnId, p.scene.dbGameFree.Id, p.scene.sceneId)
+ return hallproto.OpResultCode_OPRC_Error
}
-
//多平台支持
platform := p.GetPlatform()
if platform == nil {
- return hall_proto.OpResultCode_OPRC_RoomHadClosed
+ return hallproto.OpResultCode_OPRC_RoomHadClosed
}
-
- // 玩家已经在房间里了
- if p.scene != nil {
- logger.Logger.Warnf("(csm *CoinSceneMgr) PlayerEnter snid:%v find in gameId:%v gamefreeid:%v", p.SnId, p.scene.gameId, id)
- return hall_proto.OpResultCode_OPRC_Error
- }
-
- csp := csm.GetCoinScenePool(platform.IdStr, id)
-
- ret := csp.PlayerEnter(p, roomId, exclude, isChangeRoom)
-
- logger.Logger.Warnf("(csm *CoinSceneMgr) PlayerEnter snid:%v find in id:%v exclude:%v return false", p.SnId, id, exclude)
+ csp := m.GetCoinScenePool(platform.IdStr, id)
+ ret := csp.playerEnter(p, roomId, exclude, isChangeRoom)
+ logger.Logger.Tracef("CoinSceneMgr PlayerEnter snid:%v id:%v ret:%v", p.SnId, id, ret)
return ret
}
// AudienceEnter 观众进入房间
-func (csm *CoinSceneMgr) AudienceEnter(p *Player, id int32, roomId int32, exclude []int32, ischangeroom bool) hall_proto.OpResultCode {
+func (m *CoinSceneMgr) AudienceEnter(p *Player, id int32, roomId int32, exclude []int32, ischangeroom bool) hallproto.OpResultCode {
+ logger.Logger.Tracef("CoinSceneMgr AudienceEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude)
+ if p.isDelete { //删档用户不让进游戏
+ return hallproto.OpResultCode_OPRC_RoomHadClosed
+ }
+ if m.InCoinScene(p) {
+ logger.Logger.Warnf("CoinSceneMgr AudienceEnter snid:%v find in gamefreeid:%v roomId:%v", p.SnId, p.scene.dbGameFree.Id, p.scene.sceneId)
+ return hallproto.OpResultCode_OPRC_Error
+ }
//多平台支持
platform := p.GetPlatform()
if platform == nil {
- return hall_proto.OpResultCode_OPRC_RoomHadClosed
+ return hallproto.OpResultCode_OPRC_RoomHadClosed
}
- pools, _, _ := csm.findCoinScenePool(platform.IdStr, id)
+ pools, _ := m.findCoinScenePool(platform.IdStr, id)
if pools == nil {
- return hall_proto.OpResultCode_OPRC_RoomHadClosed
+ return hallproto.OpResultCode_OPRC_RoomHadClosed
}
-
if len(pools) == 0 {
- return hall_proto.OpResultCode_OPRC_NoFindDownTiceRoom
+ return hallproto.OpResultCode_OPRC_NoFindDownTiceRoom
}
- if csp, ok := pools[id]; ok && csp != nil {
- ret := csp.AudienceEnter(p, roomId, exclude, ischangeroom)
- logger.Logger.Warnf("(csm *CoinSceneMgr) AudienceEnter snid:%v find in id:%v exclude:%v return false", p.SnId, id, exclude)
- return ret
- }
- logger.Logger.Warnf("(csm *CoinSceneMgr) AudienceEnter snid:%v find in id:%v exclude:%v csp.AudienceEnter return false", p.SnId, id, exclude)
- return hall_proto.OpResultCode_OPRC_Error
-}
-
-func (csm *CoinSceneMgr) playerLeave(p *Player, reason int) bool {
- if p == nil || p.scene == nil {
- return true
+ csp, ok := pools[id]
+ if !ok || csp == nil {
+ return hallproto.OpResultCode_OPRC_RoomHadClosed
}
- s := p.scene
- if s.groupId != 0 {
- if ss, ok := csm.scenesOfGroup[s.groupId]; ok && ss != nil {
- if csp, ok := ss[s.dbGameFree.GetId()]; ok && csp != nil {
- if !csp.PlayerLeave(p, reason) {
- csp.AudienceLeave(p, reason)
- }
- }
- return true
- }
- }
-
- // 玩家身上平台
- if platform := p.GetPlatform(); platform != nil {
- if ss, ok := csm.scenesOfPlatform[platform.IdStr]; ok && ss != nil {
- if csp, ok := ss[s.dbGameFree.GetId()]; ok && csp != nil {
- if !csp.PlayerLeave(p, reason) {
- csp.AudienceLeave(p, reason)
- }
- }
- return true
- }
- }
-
- // 房间所在平台
- if s.limitPlatform != nil {
- if ss, ok := csm.scenesOfPlatform[s.limitPlatform.IdStr]; ok && ss != nil {
- if csp, ok := ss[s.dbGameFree.GetId()]; ok && csp != nil {
- if !csp.PlayerLeave(p, reason) {
- csp.AudienceLeave(p, reason)
- }
- }
- return true
- }
- }
-
- return true
+ ret := csp.audienceEnter(p, roomId, exclude, ischangeroom)
+ logger.Logger.Tracef("CoinSceneMgr AudienceEnter snid:%v id:%v ret:%v", p.SnId, id, ret)
+ return ret
}
// PlayerLeave 玩家离开
-func (csm *CoinSceneMgr) PlayerLeave(p *Player, reason int) bool {
- logger.Logger.Tracef("玩家离开: snid %v, reason %v isAudience %v", p.SnId, reason)
- return csm.playerLeave(p, reason)
+// 游戏服玩家离开房间消息触发
+func (m *CoinSceneMgr) PlayerLeave(p *Player, reason int) bool {
+ logger.Logger.Tracef("玩家离开: snid %v, reason %v", p.SnId, reason)
+ if p.scene == nil || p.scene.csp == nil {
+ return false
+ }
+ if p.scene.csp.playerLeave(p, reason) {
+ return true
+ }
+ if p.scene.csp.audienceLeave(p, reason) {
+ return true
+ }
+ return false
}
// OnDestroyScene 解散房间
+// 游戏服解散房间消息触发
// sceneId 房间id
-func (csm *CoinSceneMgr) OnDestroyScene(sceneId int) {
- if platformName, ok := csm.platformOfScene[sceneId]; ok {
- if ss, ok := csm.scenesOfPlatform[platformName]; ok {
- for _, csp := range ss {
- csp.OnDestroyScene(sceneId)
- }
- }
- delete(csm.platformOfScene, sceneId)
+func (m *CoinSceneMgr) OnDestroyScene(sceneId int) {
+ if s := SceneMgrSingleton.GetScene(sceneId); s != nil && s.csp != nil {
+ s.csp.onDestroyScene(sceneId)
}
-
- if groupId, ok := csm.groupOfScene[sceneId]; ok {
- if ss, ok := csm.scenesOfGroup[groupId]; ok {
- for _, csp := range ss {
- csp.OnDestroyScene(sceneId)
- }
- }
- delete(csm.groupOfScene, sceneId)
- }
-}
-
-// GetPlatformBySceneId 获取房间所在平台
-func (csm *CoinSceneMgr) GetPlatformBySceneId(sceneId int) string {
- if platformName, ok := csm.platformOfScene[sceneId]; ok {
- return platformName
- }
- s := SceneMgrSingleton.GetScene(sceneId)
- if s != nil && s.limitPlatform != nil {
- return s.limitPlatform.IdStr
- }
- return DefaultPlatform
}
// GetPlayerNums 获取场次人数
-func (csm *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int32 {
+func (m *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int32 {
//多平台支持
platform := p.GetPlatform()
var nums [10]int32
@@ -275,22 +174,11 @@ func (csm *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int3
for _, id := range ids {
gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, id)
if gps != nil {
- if gps.GroupId != 0 {
- if ss, exist := csm.scenesOfGroup[gps.GroupId]; exist {
- if csp, exist := ss[id]; exist {
- sceneType := csp.GetSceneType() - 1
- if sceneType >= 0 && sceneType < len(nums) {
- nums[sceneType] += csp.GetPlayerNum() + csp.GetFakePlayerNum()
- }
- }
- }
- } else {
- if ss, ok := csm.scenesOfPlatform[platform.IdStr]; ok {
- if csp, exist := ss[id]; exist {
- sceneType := csp.GetSceneType() - 1
- if sceneType >= 0 && sceneType < len(nums) {
- nums[sceneType] += csp.GetPlayerNum() + csp.GetFakePlayerNum()
- }
+ if ss, ok := m.scenesOfPlatform[platform.IdStr]; ok {
+ if csp, exist := ss[id]; exist {
+ sceneType := csp.GetSceneType() - 1
+ if sceneType >= 0 && sceneType < len(nums) {
+ nums[sceneType] += csp.GetPlayerNum() + csp.GetFakePlayerNum()
}
}
}
@@ -304,9 +192,9 @@ func (csm *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int3
}
// InCoinScene 是否在场次中
-func (csm *CoinSceneMgr) InCoinScene(p *Player) bool {
+func (m *CoinSceneMgr) InCoinScene(p *Player) bool {
if p == nil {
- logger.Logger.Tracef("(csm *CoinSceneMgr) InCoinScene p == nil snid:%v ", p.SnId)
+ logger.Logger.Tracef("(m *CoinSceneMgr) InCoinScene p == nil")
return false
}
@@ -321,10 +209,10 @@ func (csm *CoinSceneMgr) InCoinScene(p *Player) bool {
}
// PlayerTryLeave 通知游戏服务玩家要离开房间
-func (csm *CoinSceneMgr) PlayerTryLeave(p *Player, isAudience bool) hall_proto.OpResultCode {
- if !csm.InCoinScene(p) {
- logger.Logger.Tracef("(csm *CoinSceneMgr) PlayerTryLeave !csm.InCoinScene(p) snid:%v ", p.SnId)
- return hall_proto.OpResultCode_OPRC_Sucess
+func (m *CoinSceneMgr) PlayerTryLeave(p *Player, isAudience bool) hallproto.OpResultCode {
+ if !m.InCoinScene(p) {
+ logger.Logger.Tracef("(m *CoinSceneMgr) PlayerTryLeave !m.InCoinScene(p) snid:%v ", p.SnId)
+ return hallproto.OpResultCode_OPRC_Sucess
}
// 通知gamesrv
@@ -332,46 +220,54 @@ func (csm *CoinSceneMgr) PlayerTryLeave(p *Player, isAudience bool) hall_proto.O
if isAudience {
op = common.CoinSceneOp_AudienceLeave
}
- pack := &hall_proto.CSCoinSceneOp{
- Id: proto.Int32(p.scene.csp.id),
+ pack := &hallproto.CSCoinSceneOp{
+ Id: proto.Int32(p.scene.csp.ID()),
OpType: proto.Int32(op),
}
- proto.SetDefaults(pack)
- common.TransmitToServer(p.sid, int(hall_proto.CoinSceneGamePacketID_PACKET_CS_COINSCENE_OP), pack, p.scene.gameSess.Session)
- logger.Logger.Tracef("(csm *CoinSceneMgr) PlayerTryLeave snid:%v id:%v", p.SnId, pack.GetId())
- return hall_proto.OpResultCode_OPRC_OpYield
+ common.TransmitToServer(p.sid, int(hallproto.CoinSceneGamePacketID_PACKET_CS_COINSCENE_OP), pack, p.scene.gameSess.Session)
+ logger.Logger.Tracef("(m *CoinSceneMgr) PlayerTryLeave snid:%v id:%v", p.SnId, pack.GetId())
+
+ return hallproto.OpResultCode_OPRC_OpYield
}
-func (csm *CoinSceneMgr) PlayerInChanging(p *Player) bool {
- _, exist := csm.playerChanging[p.SnId]
+// PlayerInChanging 换房中
+func (m *CoinSceneMgr) PlayerInChanging(p *Player) bool {
+ _, exist := m.playerChanging[p.SnId]
return exist
}
-func (csm *CoinSceneMgr) ClearPlayerChanging(p *Player) {
- delete(csm.playerChanging, p.SnId)
+// ClearPlayerChanging 换房结束
+func (m *CoinSceneMgr) ClearPlayerChanging(p *Player) {
+ delete(m.playerChanging, p.SnId)
}
-func (csm *CoinSceneMgr) PlayerTryChange(p *Player, id int32, exclude []int32, isAudience bool) hall_proto.OpResultCode {
- if csm.InCoinScene(p) {
- return csm.StartChangeCoinSceneTransact(p, id, exclude, isAudience)
+// PlayerTryChange 换房
+// id 场次id
+// excludeRoomId 排除的房间id
+// isAudience 是否是观众
+func (m *CoinSceneMgr) PlayerTryChange(p *Player, id int32, excludeRoomId []int32, isAudience bool) hallproto.OpResultCode {
+ if m.InCoinScene(p) {
+ return m.StartChangeCoinSceneTransact(p, id, excludeRoomId, isAudience)
}
+ // 不在场次中,进入房间观战
if isAudience {
- return csm.AudienceEnter(p, id, 0, exclude, true)
+ return m.AudienceEnter(p, id, 0, excludeRoomId, true)
}
- return csm.PlayerEnter(p, id, 0, exclude, true)
+ // 不在场次中,进入房间
+ return m.PlayerEnter(p, id, 0, excludeRoomId, true)
}
-func (csm *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclude []int32, isAudience bool) hall_proto.OpResultCode {
+func (m *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclude []int32, isAudience bool) hallproto.OpResultCode {
if p == nil || p.scene == nil {
- logger.Logger.Warnf("(csm *CoinSceneMgr) StartChangeCoinSceneTransact p == nil || p.scene == nil snid:%v id:%v", p.SnId, id)
- return hall_proto.OpResultCode_OPRC_Error
+ logger.Logger.Warnf("(m *CoinSceneMgr) StartChangeCoinSceneTransact p == nil || p.scene == nil snid:%v id:%v", p.SnId, id)
+ return hallproto.OpResultCode_OPRC_Error
}
tNow := time.Now()
if !p.lastChangeScene.IsZero() && tNow.Sub(p.lastChangeScene) < time.Second {
- logger.Logger.Warnf("(csm *CoinSceneMgr) StartChangeCoinSceneTransact !p.lastChangeScene.IsZero() && tNow.Sub(p.lastChangeScene) < time.Second snid:%v id:%v", p.SnId, id)
- return hall_proto.OpResultCode_OPRC_ChangeRoomTooOften
+ logger.Logger.Warnf("(m *CoinSceneMgr) StartChangeCoinSceneTransact !p.lastChangeScene.IsZero() && tNow.Sub(p.lastChangeScene) < time.Second snid:%v id:%v", p.SnId, id)
+ return hallproto.OpResultCode_OPRC_ChangeRoomTooOften
}
tnp := &transact.TransNodeParam{
@@ -391,12 +287,12 @@ func (csm *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclu
tNode := transact.DTCModule.StartTrans(tnp, ctx, CoinSceneChangeTimeOut)
if tNode != nil {
tNode.Go(core.CoreObject())
- csm.playerChanging[p.SnId] = id
+ m.playerChanging[p.SnId] = id
p.lastChangeScene = tNow
- return hall_proto.OpResultCode_OPRC_Sucess
+ return hallproto.OpResultCode_OPRC_Sucess
}
- logger.Logger.Warnf("(csm *CoinSceneMgr) StartChangeCoinSceneTransact tNode == nil snid:%v id:%v", p.SnId, id)
- return hall_proto.OpResultCode_OPRC_Error
+ logger.Logger.Warnf("(m *CoinSceneMgr) StartChangeCoinSceneTransact tNode == nil snid:%v id:%v", p.SnId, id)
+ return hallproto.OpResultCode_OPRC_Error
}
// TouchCreateRoom 触发预创建房间
@@ -404,44 +300,47 @@ func (csm *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclu
// 2.游戏服建立连接后触发
// 3.房间解散后触发
// 4.场次配置更新后
-func (csm *CoinSceneMgr) TouchCreateRoom(platform string, gameFreeId int32) {
+func (m *CoinSceneMgr) TouchCreateRoom(platform string, gameFreeId int32) {
+ if model.GameParamData.ClosePreCreateRoom {
+ return
+ }
gf := PlatformMgrSingleton.GetGameFree(platform, gameFreeId)
if gf.Status && gf.DbGameFree.GetCreateRoomNum() > 0 {
logger.Logger.Tracef("TouchCreateRoom platform:%v gameFreeId:%v", platform, gameFreeId)
- csm.delayCache = append(csm.delayCache, &CreateRoomCache{
+ m.delayCache = append(m.delayCache, &CreateRoomCache{
platformName: platform,
gameFreeId: gameFreeId,
})
}
}
-func (csm *CoinSceneMgr) ModuleName() string {
+func (m *CoinSceneMgr) ModuleName() string {
return "CoinSceneMgr"
}
-func (csm *CoinSceneMgr) Init() {
+func (m *CoinSceneMgr) Init() {
// 房间池初始化
for _, platform := range PlatformMgrSingleton.GetPlatforms() {
if platform.Isolated || platform.IdStr == "" {
for _, v := range srvdata.PBDB_GameFreeMgr.Datas.GetArr() {
gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, v.GetId())
if gps != nil {
- csm.GetCoinScenePool(platform.IdStr, v.GetId())
- csm.TouchCreateRoom(platform.IdStr, v.GetId())
+ m.GetCoinScenePool(platform.IdStr, v.GetId())
+ m.TouchCreateRoom(platform.IdStr, v.GetId())
}
}
}
}
}
-func (csm *CoinSceneMgr) Update() {
- cnt := len(csm.delayCache)
+func (m *CoinSceneMgr) Update() {
+ cnt := len(m.delayCache)
if cnt > 0 {
- data := csm.delayCache[cnt-1]
- csm.delayCache = csm.delayCache[:cnt-1]
+ data := m.delayCache[cnt-1]
+ m.delayCache = m.delayCache[:cnt-1]
gf := PlatformMgrSingleton.GetGameFree(data.platformName, data.gameFreeId)
if gf != nil && gf.DbGameFree != nil {
- csp := csm.GetCoinScenePool(data.platformName, data.gameFreeId)
+ csp := m.GetCoinScenePool(data.platformName, data.gameFreeId)
if csp != nil {
csp.PreCreateRoom()
}
@@ -449,22 +348,22 @@ func (csm *CoinSceneMgr) Update() {
}
}
-func (csm *CoinSceneMgr) Shutdown() {
- module.UnregisteModule(csm)
+func (m *CoinSceneMgr) Shutdown() {
+ module.UnregisteModule(m)
}
//=====================PlatformObserver======================
-func (this *CoinSceneMgr) OnPlatformCreate(p *Platform) {
+func (m *CoinSceneMgr) OnPlatformCreate(p *Platform) {
}
-func (this *CoinSceneMgr) OnPlatformDestroy(p *Platform) {
+func (m *CoinSceneMgr) OnPlatformDestroy(p *Platform) {
if p == nil {
return
}
var ids []int
- if v, ok := this.scenesOfPlatform[p.IdStr]; ok {
+ if v, ok := m.scenesOfPlatform[p.IdStr]; ok {
for _, csp := range v {
for _, scene := range csp.scenes {
ids = append(ids, scene.sceneId)
@@ -474,24 +373,18 @@ func (this *CoinSceneMgr) OnPlatformDestroy(p *Platform) {
SceneMgrSingleton.DoDelete(ids, true)
}
-func (this *CoinSceneMgr) OnPlatformChangeDisabled(p *Platform, disabled bool) {
+func (m *CoinSceneMgr) OnPlatformChangeDisabled(p *Platform, disabled bool) {
if disabled {
- this.OnPlatformDestroy(p)
+ m.OnPlatformDestroy(p)
}
}
-func (this *CoinSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCfg *webapi.GameFree) {
+func (m *CoinSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCfg *webapi.GameFree) {
if p == nil || newCfg == nil {
return
}
- var ss map[int32]*CoinScenePool
- var ok bool
- if oldCfg.GroupId != newCfg.GroupId || oldCfg.GroupId != 0 {
- ss, ok = this.scenesOfGroup[oldCfg.GroupId]
- } else {
- ss, ok = this.scenesOfPlatform[p.IdStr]
- }
+ ss, ok := m.scenesOfPlatform[p.IdStr]
if !ok || ss == nil {
return
}
@@ -503,62 +396,36 @@ func (this *CoinSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCfg *
ids = append(ids, scene.sceneId)
}
SceneMgrSingleton.DoDelete(ids, true)
- this.TouchCreateRoom(p.IdStr, newCfg.DbGameFree.Id)
+ m.TouchCreateRoom(p.IdStr, newCfg.DbGameFree.Id)
}
}
-func (this *CoinSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFreeId int32) {
+func (m *CoinSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFreeId int32) {
if p == nil {
return
}
- if csps, ok := this.scenesOfPlatform[p.IdStr]; ok {
- var ids []int
- for _, csp := range csps {
+ var ids []int
+ if v, ok := m.scenesOfPlatform[p.IdStr]; ok {
+ for _, csp := range v {
for _, scene := range csp.scenes {
if scene.dbGameFree.Id == gameFreeId {
ids = append(ids, scene.sceneId)
}
}
}
- SceneMgrSingleton.DoDelete(ids, true)
}
+ SceneMgrSingleton.DoDelete(ids, true)
}
//=========================PlatformGameGroupObserver==============================
-func (this *CoinSceneMgr) OnGameGroupUpdate(oldCfg, newCfg *webapi.GameConfigGroup) {
- if newCfg == nil {
- return
- }
- if scenes, exist := this.scenesOfGroup[newCfg.Id]; exist {
- if cps, ok := scenes[newCfg.DbGameFree.Id]; ok {
- needDestroy := false
- if cps.dbGameFree.GetBot() != newCfg.DbGameFree.GetBot() ||
- cps.dbGameFree.GetBaseScore() != newCfg.DbGameFree.GetBaseScore() ||
- cps.dbGameFree.GetLimitCoin() != newCfg.DbGameFree.GetLimitCoin() ||
- cps.dbGameFree.GetMaxCoinLimit() != newCfg.DbGameFree.GetMaxCoinLimit() ||
- cps.dbGameFree.GetTaxRate() != newCfg.DbGameFree.GetTaxRate() ||
- !common.SliceInt64Equal(cps.dbGameFree.GetOtherIntParams(), newCfg.DbGameFree.GetOtherIntParams()) ||
- !common.SliceInt64Equal(cps.dbGameFree.GetRobotTakeCoin(), newCfg.DbGameFree.GetRobotTakeCoin()) ||
- !common.SliceInt64Equal(cps.dbGameFree.GetRobotLimitCoin(), newCfg.DbGameFree.GetRobotLimitCoin()) {
- needDestroy = true
- }
- //TODO 预创建房间配置更新,unsupport group model
- cps.dbGameFree = newCfg.DbGameFree
- if needDestroy {
- var ids []int
- for _, scene := range cps.scenes {
- ids = append(ids, scene.sceneId)
- }
- SceneMgrSingleton.DoDelete(ids, true)
- }
- }
- }
+func (m *CoinSceneMgr) OnGameGroupUpdate(oldCfg, newCfg *webapi.GameConfigGroup) {
+
}
//=========================GameSessionListener======================================
-func (csm *CoinSceneMgr) OnGameSessionRegiste(gs *GameSession) {
+func (m *CoinSceneMgr) OnGameSessionRegiste(gs *GameSession) {
wildGs := len(gs.gameIds) == 0 || common.InSliceInt32(gs.gameIds, 0) // 是否所有游戏都支持
for _, platform := range PlatformMgrSingleton.GetPlatforms() {
if platform.IdStr == DefaultPlatform {
@@ -568,13 +435,13 @@ func (csm *CoinSceneMgr) OnGameSessionRegiste(gs *GameSession) {
gps := PlatformMgrSingleton.GetGameFrees(platform.IdStr)
for _, v := range gps {
if v != nil && (wildGs || common.InSliceInt32(gs.gameIds, v.DbGameFree.GetGameId())) {
- csm.TouchCreateRoom(platform.IdStr, v.DbGameFree.Id)
+ m.TouchCreateRoom(platform.IdStr, v.DbGameFree.Id)
}
}
}
}
-func (this *CoinSceneMgr) OnGameSessionUnregiste(gs *GameSession) {
+func (m *CoinSceneMgr) OnGameSessionUnregiste(gs *GameSession) {
//todo 游戏服务断开,是否解散房间?
}
diff --git a/worldsrv/coinscenepool.go b/worldsrv/coinscenepool.go
index f6688d9..6045eac 100644
--- a/worldsrv/coinscenepool.go
+++ b/worldsrv/coinscenepool.go
@@ -1,9 +1,9 @@
package main
import (
- "mongo.games.com/game/common"
"mongo.games.com/goserver/core/logger"
+ "mongo.games.com/game/common"
"mongo.games.com/game/model"
gamehallproto "mongo.games.com/game/protocol/gamehall"
serverproto "mongo.games.com/game/protocol/server"
@@ -13,8 +13,6 @@ import (
// CoinScenePool 房间池
type CoinScenePool struct {
platform string // 平台id
- groupId int32 // 组id
- id int32 // 场次id
dbGameFree *serverproto.DB_GameFree // 场次配置
dbGameRule *serverproto.DB_GameRule // 场次配置
scenes map[int]*Scene // 所有房间,房间id
@@ -26,7 +24,7 @@ type CoinScenePool struct {
policy ICoinScenePool
}
-func newCoinScenePool(platform string, groupId int32, dbGameFree *serverproto.DB_GameFree) *CoinScenePool {
+func newCoinScenePool(platform string, dbGameFree *serverproto.DB_GameFree) *CoinScenePool {
if dbGameFree == nil {
return nil
}
@@ -42,8 +40,6 @@ func newCoinScenePool(platform string, groupId int32, dbGameFree *serverproto.DB
csp := &CoinScenePool{
platform: platform,
- groupId: groupId,
- id: dbGameFree.GetId(),
dbGameFree: dbGameFree,
dbGameRule: dbGameRule,
scenes: make(map[int]*Scene),
@@ -59,6 +55,10 @@ func newCoinScenePool(platform string, groupId int32, dbGameFree *serverproto.DB
return csp
}
+func (csp *CoinScenePool) ID() int32 {
+ return csp.dbGameFree.Id
+}
+
func (csp *CoinScenePool) GetPlayerNum() int32 {
return int32(len(csp.players))
}
@@ -73,7 +73,8 @@ func (csp *CoinScenePool) GetFakePlayerNum() int32 {
return 0
}
-// GetSceneType 获取场次id
+// GetSceneType 获取场次类型
+// 新手场,中级场 ...
func (csp *CoinScenePool) GetSceneType() int {
if csp.dbGameFree != nil {
return int(csp.dbGameFree.GetSceneType())
@@ -89,14 +90,79 @@ func (csp *CoinScenePool) CanInviteRob() bool {
return false
}
-// CanEnter 检查入场条件
-func (csp *CoinScenePool) CanEnter(p *Player) gamehallproto.OpResultCode {
+// PreCreateRoom 预创建房间
+func (csp *CoinScenePool) PreCreateRoom() {
+ if csp.platform == DefaultPlatform || model.GameParamData.ClosePreCreateRoom {
+ return
+ }
+ if p := PlatformMgrSingleton.GetPlatform(csp.platform); p == nil || p.Disable {
+ return
+ }
+ preCreateNum := int(csp.dbGameFree.GetCreateRoomNum())
+ if preCreateNum <= 0 {
+ return
+ }
+ num := preCreateNum - csp.GetRoomNum(common.SceneMode_Public)
+ if num > 0 {
+ logger.Logger.Tracef("预创建房间 [inc:%v] platform:%v gameFreeId:%v", num, csp.platform, csp.dbGameFree.Id)
+ for i := 0; i < num; i++ {
+ scene := csp.policy.NewPreCreateScene(csp)
+ if scene != nil {
+ csp.AddScene(scene)
+ }
+ }
+ }
+}
+
+func (csp *CoinScenePool) GetRoomNum(mode ...int) int {
+ tp := 0
+ if len(mode) > 0 {
+ tp = mode[0]
+ }
+
+ var num int
+ for _, scene := range csp.scenes {
+ if tp > 0 {
+ if scene.IsSceneMode(tp) {
+ num++
+ }
+ } else {
+ num++
+ }
+ }
+ return num
+}
+
+// GetHasTruePlayerSceneCnt 有真人的房间数量
+func (csp *CoinScenePool) GetHasTruePlayerSceneCnt() int {
+ cnt := 0
+ for _, s := range csp.scenes {
+ if s.GetTruePlayerCnt() != 0 {
+ cnt++
+ }
+ }
+ return cnt
+}
+
+// AddScene 添加房间
+// 自定义房间参数的时候创建房间后添加到房间池
+// 创建房间后,调用AddScene添加到房间池,在玩家进入房间之前调用
+func (csp *CoinScenePool) AddScene(s *Scene) {
+ if s == nil {
+ return
+ }
+ csp.scenes[s.sceneId] = s
+ s.csp = csp
+}
+
+// canEnter 检查入场条件
+func (csp *CoinScenePool) canEnter(p *Player) gamehallproto.OpResultCode {
if csp.dbGameFree == nil || p == nil {
return gamehallproto.OpResultCode_OPRC_Error
}
//检测房间状态是否开启
- gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.id)
+ gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.ID())
if gps == nil || !gps.Status {
return gamehallproto.OpResultCode_OPRC_RoomHadClosed
}
@@ -106,7 +172,7 @@ func (csp *CoinScenePool) CanEnter(p *Player) gamehallproto.OpResultCode {
return gamehallproto.OpResultCode_OPRC_RoomHadClosed
}
- //检查游戏次数限制
+ // 检查游戏次数限制
if !p.IsRob {
todayData, _ := p.GetDaliyGameData(int(dbGameFree.GetId()))
if dbGameFree.GetPlayNumLimit() != 0 &&
@@ -119,14 +185,14 @@ func (csp *CoinScenePool) CanEnter(p *Player) gamehallproto.OpResultCode {
return csp.policy.CanEnter(csp, p)
}
-// CanAudienceEnter 检查观众入场条件
-func (csp *CoinScenePool) CanAudienceEnter(p *Player) gamehallproto.OpResultCode {
+// canAudienceEnter 检查观众入场条件
+func (csp *CoinScenePool) canAudienceEnter(p *Player) gamehallproto.OpResultCode {
if csp.dbGameFree == nil || p == nil {
return gamehallproto.OpResultCode_OPRC_Error
}
//检测房间状态是否开启
- gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.id)
+ gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.ID())
if gps == nil {
return gamehallproto.OpResultCode_OPRC_RoomHadClosed
}
@@ -139,35 +205,16 @@ func (csp *CoinScenePool) CanAudienceEnter(p *Player) gamehallproto.OpResultCode
return csp.policy.CanAudienceEnter(csp, p)
}
-// AddScene 添加房间
-func (csp *CoinScenePool) AddScene(s *Scene) {
- if s == nil {
- return
- }
- csp.scenes[s.sceneId] = s
- s.csp = csp
- if csp.groupId != 0 {
- CoinSceneMgrSingleton.groupOfScene[s.sceneId] = csp.groupId
- } else {
- CoinSceneMgrSingleton.platformOfScene[s.sceneId] = csp.platform
- }
-}
-
-// PlayerEnter 玩家进入房间池
+// playerEnter 玩家进入房间池
// exclude 排除的房间id
// isChangeRoom 是否换房
-func (csp *CoinScenePool) PlayerEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode {
- if ret := csp.CanEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess {
- logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter find snid:%v csp.CanEnter coin:%v ret:%v id:%v", p.SnId,
+func (csp *CoinScenePool) playerEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode {
+ if ret := csp.canEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess {
+ logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter find snid:%v csp.canEnter coin:%v ret:%v id:%v", p.SnId,
p.Coin, ret, csp.dbGameFree.GetId())
return ret
}
- if p.scene != nil {
- logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter[p.scene != nil] find snid:%v in scene:%v gameId:%v", p.SnId, p.scene.sceneId, p.scene.gameId)
- return gamehallproto.OpResultCode_OPRC_Error
- }
-
var scene *Scene
// 进入房间
// 指定房间id进入,忽略排除exclude,只有机器人和进入预创建房间才允许
@@ -204,15 +251,17 @@ func (csp *CoinScenePool) PlayerEnter(p *Player, roomId int32, exclude []int32,
if scene == nil {
scene = csp.policy.NewScene(csp, p)
if scene != nil {
+ logger.Logger.Infof("(csp *CoinScenePool) PlayerEnter create new scene:%v snid:%v gamefreeid:%v", scene.sceneId, p.SnId, csp.ID())
csp.AddScene(scene)
} else {
- logger.Logger.Errorf("Create %v scene failed.", csp.id)
+ logger.Logger.Errorf("Create %v scene failed.", csp.ID())
}
}
if scene != nil {
if scene.PlayerEnter(p, -1, isChangeRoom) {
- csp.OnPlayerEnter(p, scene)
+ logger.Logger.Infof("(csp *CoinScenePool) PlayerEnter snid:%v sceneid:%v gamefreeid:%v success", p.SnId, scene.sceneId, csp.ID())
+ csp.onPlayerEnter(p, scene)
return gamehallproto.OpResultCode_OPRC_Sucess
}
}
@@ -220,18 +269,13 @@ func (csp *CoinScenePool) PlayerEnter(p *Player, roomId int32, exclude []int32,
return gamehallproto.OpResultCode_OPRC_SceneServerMaintain
}
-// AudienceEnter 观众入场
-func (csp *CoinScenePool) AudienceEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode {
- if ret := csp.CanAudienceEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess {
- logger.Logger.Warnf("(csp *CoinScenePool) AudienceEnter find snid:%v csp.CanEnter coin:%v ret:%v id:%v", p.SnId, p.Coin, ret, csp.dbGameFree.GetId())
+// audienceEnter 观众入场
+func (csp *CoinScenePool) audienceEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode {
+ if ret := csp.canAudienceEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess {
+ logger.Logger.Warnf("(csp *CoinScenePool) AudienceEnter find snid:%v csp.canEnter coin:%v ret:%v id:%v", p.SnId, p.Coin, ret, csp.dbGameFree.GetId())
return ret
}
- if p.scene != nil {
- logger.Logger.Warnf("(csp *CoinScenePool) AudienceEnter[p.scene != nil] find snid:%v in scene:%v gameId:%v", p.SnId, p.scene.sceneId, p.scene.gameId)
- return gamehallproto.OpResultCode_OPRC_Error
- }
-
var scene *Scene
if roomId != 0 {
if s, ok := csp.scenes[int(roomId)]; ok {
@@ -261,7 +305,8 @@ func (csp *CoinScenePool) AudienceEnter(p *Player, roomId int32, exclude []int32
}
if scene.AudienceEnter(p, isChangeRoom) {
- csp.OnPlayerEnter(p, scene)
+ logger.Logger.Infof("(csp *CoinScenePool) AudienceEnter snid:%v sceneid:%v gamefreeid:%v success", p.SnId, scene.sceneId, csp.ID())
+ csp.onPlayerEnter(p, scene)
return gamehallproto.OpResultCode_OPRC_Sucess
}
@@ -269,78 +314,14 @@ func (csp *CoinScenePool) AudienceEnter(p *Player, roomId int32, exclude []int32
return gamehallproto.OpResultCode_OPRC_NoFindDownTiceRoom
}
-// OnPlayerEnter 玩家进入房间完成
-func (csp *CoinScenePool) OnPlayerEnter(p *Player, scene *Scene) {
+// onPlayerEnter 玩家进入房间完成
+func (csp *CoinScenePool) onPlayerEnter(p *Player, scene *Scene) {
csp.players[p.SnId] = struct{}{}
csp.policy.OnPlayerEnter(csp, p, scene)
}
-// PlayerLeave 玩家离开房间
-func (csp *CoinScenePool) PlayerLeave(p *Player, reason int) bool {
- if p.scene == nil {
- return true
- }
- if p.scene.csp != csp && p.scene == csp.scenes[p.scene.sceneId] {
- logger.Logger.Error("bug")
- }
- if p.scene.csp != csp {
- return false
- }
- if p.scene != csp.scenes[p.scene.sceneId] {
- logger.Logger.Error("bug")
- }
- s, ok := csp.scenes[p.scene.sceneId]
- if !ok || s == nil {
- return false
- }
- if !s.HasPlayer(p) {
- return false
- }
-
- if !csp.policy.PlayerLeave(csp, p, reason) {
- return false
- }
-
- s.PlayerLeave(p, reason)
- logger.Logger.Tracef("(csp *CoinScenePool) PlayerLeave snid:%v in scene:%v", p.SnId, s.sceneId)
-
- csp.policy.OnPlayerLeave(csp, s, p)
-
- csp.OnPlayerLeave(s, p)
- return true
-}
-
-// AudienceLeave 观众离开房间
-func (csp *CoinScenePool) AudienceLeave(p *Player, reason int) bool {
- if p.scene == nil {
- return true
- }
- if p.scene.csp != csp {
- return false
- }
- s, ok := csp.scenes[p.scene.sceneId]
- if !ok || s == nil {
- return false
- }
- if !s.HasAudience(p) {
- return false
- }
-
- if !csp.policy.AudienceLeave(csp, p, reason) {
- return false
- }
-
- s.AudienceLeave(p, reason)
- logger.Logger.Tracef("(csp *CoinScenePool) AudienceLeave snid:%v in scene:%v", p.SnId, s.sceneId)
-
- csp.policy.OnPlayerLeave(csp, s, p)
-
- csp.OnPlayerLeave(s, p)
- return true
-}
-
// OnPlayerLeave 离开房间完成
-func (csp *CoinScenePool) OnPlayerLeave(s *Scene, p *Player) {
+func (csp *CoinScenePool) onPlayerLeave(s *Scene, p *Player) {
if s == nil || p == nil {
return
}
@@ -370,17 +351,68 @@ func (csp *CoinScenePool) OnPlayerLeave(s *Scene, p *Player) {
}
}
-// OnDestroyScene 解散房间
-// 房间解散一定是游戏服确认的,worldsrv收到游戏房间解散消息后解散房间
-func (csp *CoinScenePool) OnDestroyScene(sceneId int) {
+// playerLeave 玩家离开房间
+func (csp *CoinScenePool) playerLeave(p *Player, reason int) bool {
+ if p.scene != csp.scenes[p.scene.sceneId] {
+ logger.Logger.Error("bug")
+ }
+ s, ok := csp.scenes[p.scene.sceneId]
+ if !ok || s == nil {
+ return false
+ }
+ if !s.HasPlayer(p) {
+ return false
+ }
+
+ if !csp.policy.PlayerLeave(csp, p, reason) {
+ return false
+ }
+
+ s.PlayerLeave(p, reason)
+ logger.Logger.Tracef("(csp *CoinScenePool) PlayerLeave snid:%v in scene:%v", p.SnId, s.sceneId)
+
+ csp.policy.OnPlayerLeave(csp, s, p)
+
+ csp.onPlayerLeave(s, p)
+ return true
+}
+
+// audienceLeave 观众离开房间
+func (csp *CoinScenePool) audienceLeave(p *Player, reason int) bool {
+ s, ok := csp.scenes[p.scene.sceneId]
+ if !ok || s == nil {
+ return false
+ }
+ if !s.HasAudience(p) {
+ return false
+ }
+
+ if !csp.policy.AudienceLeave(csp, p, reason) {
+ return false
+ }
+
+ s.AudienceLeave(p, reason)
+ logger.Logger.Tracef("(csp *CoinScenePool) AudienceLeave snid:%v in scene:%v", p.SnId, s.sceneId)
+
+ csp.policy.OnPlayerLeave(csp, s, p)
+
+ csp.onPlayerLeave(s, p)
+ return true
+}
+
+// onDestroyScene 解散房间
+// 房间解散一定是游戏服确认的,worldsrv收到游戏房间解散消息后解散房间,此时房间内玩家应该都离开了
+// 或者游戏服异常断开触发房间解散,此时房间中还有人
+func (csp *CoinScenePool) onDestroyScene(sceneId int) {
scene, ok := csp.scenes[sceneId]
- if !ok {
+ if !ok || scene == nil {
return
}
logger.Logger.Tracef("(csp *CoinScenePool) OnDestroyScene scene:%v", sceneId)
// todo 是否需要优化
+ // 游戏服异常断开,同步一次金币
for id := range scene.players {
player := PlayerMgrSington.GetPlayerBySnId(id)
if player != nil {
@@ -407,96 +439,13 @@ func (csp *CoinScenePool) OnDestroyScene(sceneId int) {
}
csp.policy.OnDestroyScene(csp, sceneId)
+ for k := range scene.players {
+ delete(csp.players, k)
+ }
+ for k := range scene.audiences {
+ delete(csp.players, k)
+ }
scene.csp = nil // 解除关联
delete(csp.scenes, sceneId)
CoinSceneMgrSingleton.TouchCreateRoom(csp.platform, csp.dbGameFree.Id)
}
-
-// PreCreateRoom 预创建房间
-func (csp *CoinScenePool) PreCreateRoom() {
- if csp.platform == DefaultPlatform {
- return
- }
- if p := PlatformMgrSingleton.GetPlatform(csp.platform); p == nil || p.Disable {
- return
- }
- preCreateNum := int(csp.dbGameFree.GetCreateRoomNum())
- if preCreateNum <= 0 || model.GameParamData.ClosePreCreateRoom {
- return
- }
- num := preCreateNum - csp.GetRoomNum(common.SceneMode_Public)
- if num > 0 {
- logger.Logger.Tracef("预创建房间 [inc:%v] platform:%v gameFreeId:%v", num, csp.platform, csp.dbGameFree.Id)
- for i := 0; i < num; i++ {
- scene := csp.policy.NewPreCreateScene(csp)
- if scene != nil {
- csp.AddScene(scene)
- }
- }
- }
-}
-
-func (csp *CoinScenePool) GetRoomNum(mode ...int) int {
- tp := 0
- if len(mode) > 0 {
- tp = mode[0]
- }
-
- var num int
- for _, scene := range csp.scenes {
- if tp > 0 {
- if scene.IsSceneMode(tp) {
- num++
- }
- } else {
- num++
- }
- }
- return num
-}
-
-// ListRoom 房间列表
-//func (csp *CoinScenePool) ListRoom(p *Player) bool {
-// if p.scene != nil {
-// logger.Logger.Warnf("(csp *CoinScenePool) PlayerListRoom[p.scene != nil] find snid:%v in scene:%v gameId:%v", p.SnId, p.scene.sceneId, p.scene.gameId)
-// return false
-// }
-//
-// if len(csp.scenes) == 0 {
-// return false
-// }
-//
-// pack := &gamehallproto.SCCoinSceneListRoom{
-// Id: csp.dbGameFree.Id,
-// LimitCoin: csp.dbGameFree.LimitCoin,
-// MaxCoinLimit: csp.dbGameFree.MaxCoinLimit,
-// BaseScore: csp.dbGameFree.BaseScore,
-// MaxScore: csp.dbGameFree.MaxChip,
-// OtherIntParams: csp.dbGameFree.OtherIntParams,
-// }
-//
-// maxPlayerNum := 0
-// for sceneId, s := range csp.scenes {
-// data := &gamehallproto.CoinSceneInfo{
-// SceneId: proto.Int(sceneId),
-// PlayerNum: proto.Int(len(s.players)),
-// }
-// pack.Datas = append(pack.Datas, data)
-// maxPlayerNum = s.playerNum
-// }
-// pack.MaxPlayerNum = proto.Int(maxPlayerNum)
-// proto.SetDefaults(pack)
-// p.SendToClient(int(gamehallproto.CoinSceneGamePacketID_PACKET_SC_COINSCENE_LISTROOM), pack)
-// return true
-//}
-
-// GetHasTruePlayerSceneCnt 有真人的房间数量
-func (csp *CoinScenePool) GetHasTruePlayerSceneCnt() int {
- cnt := 0
- for _, s := range csp.scenes {
- if s.GetTruePlayerCnt() != 0 {
- cnt++
- }
- }
- return cnt
-}
diff --git a/worldsrv/coinscenepool_base.go b/worldsrv/coinscenepool_base.go
index 670d816..bdc02a9 100644
--- a/worldsrv/coinscenepool_base.go
+++ b/worldsrv/coinscenepool_base.go
@@ -157,7 +157,7 @@ func (this *BaseCoinScenePool) PlayerEnter(pool *CoinScenePool, p *Player, exclu
}
} else { //按类型匹配
//优先真人
- if scene == nil && len(scenes) != 0 && matchTrueManRule == MatchTrueManPriority {
+ if len(scenes) != 0 && matchTrueManRule == MatchTrueManPriority {
var selScene []*Scene
for _, value := range scenes {
if value != nil {
@@ -211,14 +211,14 @@ func (this *BaseCoinScenePool) AudienceLeave(pool *CoinScenePool, p *Player, rea
func (this *BaseCoinScenePool) OnPlayerLeave(pool *CoinScenePool, s *Scene, p *Player) {}
func (this *BaseCoinScenePool) NewScene(pool *CoinScenePool, p *Player) *Scene {
- gameId := int(pool.dbGameRule.GetGameId())
+ gameId := int(pool.dbGameFree.GetGameId())
gs := GameSessMgrSington.GetMinLoadSess(gameId)
if gs == nil {
logger.Logger.Warnf("Get %v game min session failed.", gameId)
return nil
}
- gameMode := pool.dbGameRule.GetGameMode()
+ gameMode := pool.dbGameFree.GetGameMode()
params := common.CopySliceInt32ToInt64(pool.dbGameRule.GetParams())
limitPlatform := PlatformMgrSingleton.GetPlatform(pool.platform)
if limitPlatform == nil || !limitPlatform.Isolated {
@@ -228,7 +228,7 @@ func (this *BaseCoinScenePool) NewScene(pool *CoinScenePool, p *Player) *Scene {
sceneId := SceneMgrSingleton.GenOneCoinSceneId()
scene := SceneMgrSingleton.CreateScene(0, 0, sceneId, gameId, int(gameMode), common.SceneMode_Public,
- 1, -1, params, gs, limitPlatform, pool.groupId, pool.dbGameFree, pool.id)
+ 1, -1, params, gs, limitPlatform, 0, pool.dbGameFree, pool.ID())
return scene
}
diff --git a/worldsrv/coinscenepool_local.go b/worldsrv/coinscenepool_local.go
index d458859..09f6c84 100644
--- a/worldsrv/coinscenepool_local.go
+++ b/worldsrv/coinscenepool_local.go
@@ -233,7 +233,7 @@ func (l *CoinScenePoolLocal) NewScene(pool *CoinScenePool, p *Player) *Scene {
}
scene := SceneMgrSingleton.CreateLocalGameScene(p.SnId, sceneId, gameId, gameSite, common.SceneMode_Public, 1, common.CopySliceInt32ToInt64(params),
- gs, limitPlatform, 0, pool.dbGameFree, baseScore, pool.groupId, pool.id)
+ gs, limitPlatform, 0, pool.dbGameFree, baseScore, 0, pool.ID())
return scene
}
@@ -285,7 +285,7 @@ func (l *CoinScenePoolLocal) NewPreCreateScene(pool *CoinScenePool) *Scene {
}
if baseScore != 0 {
scene = SceneMgrSingleton.CreateLocalGameScene(0, sceneId, gameId, gameSite, common.SceneMode_Public, 1, common.CopySliceInt32ToInt64(params),
- gs, limitPlatform, playerNum, pool.dbGameFree, baseScore, pool.groupId, pool.id)
+ gs, limitPlatform, playerNum, pool.dbGameFree, baseScore, 0, pool.ID())
if scene != nil {
logger.Logger.Tracef("CreateLocalGameScene success.gameId:%v gameSite:%v baseScore:%v randIdx:%v", scene.gameId, scene.gameSite, baseScore, randIdx)
}
diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go
index 69d72a8..a3bf947 100644
--- a/worldsrv/etcd.go
+++ b/worldsrv/etcd.go
@@ -5,7 +5,6 @@ import (
"encoding/json"
"strconv"
"strings"
- "time"
"go.etcd.io/etcd/client/v3"
"mongo.games.com/goserver/core/basic"
@@ -88,6 +87,12 @@ func init() {
etcd.Register(etcd.ETCDKEY_RANK_TYPE, webapi.RankTypeConfig{}, platformConfigEvent)
//获奖记录配置
etcd.Register(etcd.ETCDKEY_AWARD_CONFIG, webapi.AwardLogConfig{}, platformConfigEvent)
+ // 新手引导
+ etcd.Register(etcd.ETCDKEY_GUIDE, webapi.GuideConfig{}, platformConfigEvent)
+ // 比赛观众
+ etcd.Register(etcd.ETCDKEY_MatchAudience, webapi.MatchAudience{}, handlerEvent)
+ // 小精灵配置
+ etcd.Register(etcd.ETCDKEY_Spirit, webapi.SpiritConfig{}, platformConfigEvent)
}
func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
@@ -115,11 +120,7 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
PlatformMgrSingleton.GetConfig(config.Platform).CommonNotices = config
if !isInit {
// 通知公共变更
- for _, v := range PlayerMgrSington.playerOfPlatform[config.Platform] {
- if v != nil && v.IsOnLine() {
- v.SendToClient(int(hallproto.GameHallPacketID_PACKET_SC_NoticeChange), &hallproto.SCNoticeChange{})
- }
- }
+ PlayerMgrSington.BroadcastMessageToPlatform(config.Platform, int(hallproto.GameHallPacketID_PACKET_SC_NoticeChange), &hallproto.SCNoticeChange{})
}
case *webapi.GameConfigGlobal:
if isInit {
@@ -188,16 +189,12 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
PlatformMgrSingleton.GetConfig(config.Platform).ChannelSwitch[config.GetTp()] = config
if !isInit {
// 通知变更
- for _, v := range PlayerMgrSington.playerOfPlatform[config.Platform] {
- if v != nil && v.IsOnLine() {
- v.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCExchangeChannel), &playerproto.SCExchangeChannel{
- Datas: []*playerproto.ChannelSwitch{{
- Tp: config.Tp,
- OnChannelName: config.OnChannelName,
- }},
- })
- }
- }
+ PlayerMgrSington.BroadcastMessageToPlatform(config.Platform, int(playerproto.PlayerPacketID_PACKET_SCExchangeChannel), &playerproto.SCExchangeChannel{
+ Datas: []*playerproto.ChannelSwitch{{
+ Tp: config.Tp,
+ OnChannelName: config.OnChannelName,
+ }},
+ })
}
case *webapi.GameConfigGroup:
PlatformGameGroupMgrSington.UpsertGameGroup(config)
@@ -245,36 +242,40 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
PlatformMgrSingleton.GetConfig(config.Platform).PermitStartTs = startTs
PlatformMgrSingleton.GetConfig(config.Platform).PermitEndTs = endTs
}
- f := func() {
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- if st.StartTs <= 0 || st.EndTs <= 0 {
- return nil
- }
- b, err := json.Marshal(st)
+ f1 := func() {
+ if st.StartTs <= 0 || st.EndTs <= 0 {
+ return
+ }
+ b, err := json.Marshal(st)
+ if err != nil {
+ logger.Logger.Errorf("permit startts save error: %v", err)
+ } else {
+ logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs)
+ err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b))
if err != nil {
- logger.Logger.Errorf("permit startts save error: %v", err)
- } else {
- logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs)
- err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b))
- if err != nil {
- logger.Logger.Errorf("permit startts update error:%v", err)
- }
+ logger.Logger.Errorf("permit startts update error:%v", err)
}
- return nil
- }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
- if st.StartTs > 0 {
- LogChannelSingleton.WriteLog(&model.BackendPermitCycle{
- Platform: config.Platform,
- StartTs: st.StartTs,
- EndTs: st.EndTs - 1,
- })
- }
- })).StartByExecutor("permit_start_ts")
+ }
+ }
+ f2 := func() {
+ if st.StartTs > 0 {
+ LogChannelSingleton.WriteLog(&model.BackendPermitCycle{
+ Platform: config.Platform,
+ StartTs: st.StartTs,
+ EndTs: st.EndTs - 1,
+ })
+ }
}
if isInit {
- time.AfterFunc(time.Second*5, f) //todo 优化
+ f1()
+ f2()
} else {
- f()
+ task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
+ f1()
+ return nil
+ }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
+ f2()
+ })).StartByExecutor("permit_start_ts")
}
case *webapi.ItemConfig:
@@ -305,13 +306,9 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
})
}
if len(items) > 0 {
- for _, v := range PlayerMgrSington.playerOfPlatform[config.Platform] {
- if v != nil && v.IsOnLine() {
- v.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCItem), &playerproto.SCItem{
- Items: items,
- })
- }
- }
+ PlayerMgrSington.BroadcastMessageToPlatform(config.Platform, int(playerproto.PlayerPacketID_PACKET_SCItem), &playerproto.SCItem{
+ Items: items,
+ })
}
}
@@ -321,10 +318,24 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
PlatformMgrSingleton.GetConfig(config.Platform).RankTypeConfig = config
case *webapi.AwardLogConfig:
PlatformMgrSingleton.GetConfig(config.Platform).AwardLogConfig = config
+ case *webapi.GuideConfig:
+ PlatformMgrSingleton.GetConfig(config.Platform).GuideConfig = config
+ case *webapi.SpiritConfig:
+ PlatformMgrSingleton.GetConfig(config.Platform).SpiritConfig = config
+ if !isInit {
+ PlayerMgrSington.BroadcastMessageToPlatform(config.Platform, int(playerproto.PlayerPacketID_PACKET_SCDataConfig), &playerproto.SCDataConfig{
+ Cfg: []*playerproto.Config{
+ {
+ Tp: 1,
+ On: config.GetOn() == 1,
+ Value: config.GetUrl(),
+ },
+ },
+ })
+ }
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
}
-
}
func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
@@ -389,6 +400,13 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c
if isInit || event.Type == clientv3.EventTypePut {
ActMgrSington.AddGiveConfig(config, config.Platform)
}
+ case *webapi.MatchAudience:
+ switch event.Type {
+ case clientv3.EventTypePut:
+ PlatformMgrSingleton.AddMatchAudience(config)
+ case clientv3.EventTypeDelete:
+ PlatformMgrSingleton.DelMatchAudience(config)
+ }
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
diff --git a/worldsrv/gamesessmgr.go b/worldsrv/gamesessmgr.go
index 830ab6d..5dc0682 100644
--- a/worldsrv/gamesessmgr.go
+++ b/worldsrv/gamesessmgr.go
@@ -66,7 +66,7 @@ func (this *GameSessMgr) OnRegiste(s *netlib.Session) {
}
gs.OnRegiste()
//尝试创建百人场
- HundredSceneMgrSington.TryCreateRoom()
+ HundredSceneMgrSingleton.TryCreateRoom()
}
} else if srvInfo.GetType() == srvlib.GateServiceType {
logger.Logger.Warn("(this *GameSessMgr) OnRegiste (GateSrv):", s)
diff --git a/worldsrv/hundredscenemgr.go b/worldsrv/hundredscenemgr.go
index 835e4d7..2726c9d 100644
--- a/worldsrv/hundredscenemgr.go
+++ b/worldsrv/hundredscenemgr.go
@@ -10,383 +10,193 @@ import (
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/proto"
- gamehall_proto "mongo.games.com/game/protocol/gamehall"
- server_proto "mongo.games.com/game/protocol/server"
+ gamehallproto "mongo.games.com/game/protocol/gamehall"
+ serverproto "mongo.games.com/game/protocol/server"
"mongo.games.com/game/protocol/webapi"
"mongo.games.com/game/srvdata"
)
const (
- HundredSceneType_Primary int = iota //初级
- HundredSceneType_Mid //中级
- HundredSceneType_Senior //高级
- HundredSceneType_Professor //专家
- HundredSceneType_Experience //体验场
- HundredSceneType_Max
+ HundredSceneOPEnter int32 = iota //进入
+ HundredSceneOPLeave //离开
+ HundredSceneOPChange //换桌
)
-const (
- HundredSceneOp_Enter int32 = iota //进入
- HundredSceneOp_Leave //离开
- HundredSceneOp_Change //换桌
- HundredSceneOp_Audience //观战
-)
-
-var HundredSceneMgrSington = &HundredSceneMgr{
- //分平台管理
+var HundredSceneMgrSingleton = &HundredSceneMgr{
scenesOfPlatform: make(map[string]map[int32]*Scene),
- platformOfScene: make(map[int32]string),
- //分组管理
- scenesOfGroup: make(map[int32]map[int32]*Scene),
- groupOfScene: make(map[int32]int32),
- playerIning: make(map[int32]int32),
}
type HundredSceneMgr struct {
- //分平台管理
scenesOfPlatform map[string]map[int32]*Scene // platform:gamefreeid:房间
- platformOfScene map[int32]string // sceneid:platform
- //分组管理
- scenesOfGroup map[int32]map[int32]*Scene // groupid:gamefreeid:房间
- groupOfScene map[int32]int32 // sceneid:groupid
- playerIning map[int32]int32 // snid:sceneid
}
-func (this *HundredSceneMgr) GetPlatformNameBySceneId(sceneid int32) (string, bool) {
- if name, exist := this.platformOfScene[sceneid]; exist {
- return name, exist
- }
- if _, exist := this.groupOfScene[sceneid]; exist {
- s := SceneMgrSingleton.GetScene(int(sceneid))
- if s != nil && s.limitPlatform != nil {
- return s.limitPlatform.IdStr, true
- }
- }
- return DefaultPlatform, false
-}
-
-func (this *HundredSceneMgr) RebindPlayerSnId(oldSnId, newSnId int32) {
- if id, exist := this.playerIning[oldSnId]; exist {
- delete(this.playerIning, oldSnId)
- this.playerIning[newSnId] = id
- }
- for _, ss := range this.scenesOfPlatform {
- for _, s := range ss {
- s.RebindPlayerSnId(oldSnId, newSnId)
- }
- }
- for _, ss := range this.scenesOfGroup {
- for _, s := range ss {
- s.RebindPlayerSnId(oldSnId, newSnId)
- }
- }
-}
-
-func (this *HundredSceneMgr) PlayerEnter(p *Player, id int32) gamehall_proto.OpResultCode_Hundred {
- logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter snid:%v id:%v", p.SnId, id)
- if oid, exist := this.playerIning[p.SnId]; exist {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter:%v snid:%v find in id:%v PlayerEnter return false", id, p.SnId, oid)
- return gamehall_proto.OpResultCode_Hundred_OPRC_Error_Hundred
+// PlayerEnter 玩家进入场次
+// id 场次id
+func (this *HundredSceneMgr) PlayerEnter(p *Player, id int32) gamehallproto.OpResultCode_Hundred {
+ logger.Logger.Tracef("HundredSceneMgr PlayerEnter snid:%v gamefreeid:%v", p.SnId, id)
+ if p.isDelete {
+ return gamehallproto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred
}
- if p.scene != nil {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter:%v snid:%v find in id:%v PlayerEnter return false", id, p.SnId, p.scene.sceneId)
- return gamehall_proto.OpResultCode_Hundred_OPRC_Error_Hundred
- }
-
- if p.isDelete { //删档用户不让进游戏
- return gamehall_proto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred
+ if this.InHundredScene(p) {
+ logger.Logger.Warnf("HundredSceneMgr PlayerEnter snid:%v find in gamefreeid:%v roomId:%v", p.SnId, p.scene.dbGameFree.Id, p.scene.sceneId)
+ return gamehallproto.OpResultCode_Hundred_OPRC_Error_Hundred
}
//多平台支持
- var limitPlatform *Platform
- platformName := DefaultPlatform
- platform := PlatformMgrSingleton.GetPlatform(p.Platform)
- if platform != nil && platform.Isolated {
- platformName = platform.IdStr
- limitPlatform = platform
- } else {
- limitPlatform = PlatformMgrSingleton.GetPlatform(DefaultPlatform)
+ platform := p.GetPlatform()
+ if platform == nil {
+ return gamehallproto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred
}
- gps := PlatformMgrSingleton.GetGameFree(limitPlatform.IdStr, id)
+ gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, id)
if gps == nil {
- return gamehall_proto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred
+ return gamehallproto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred
}
- if gps.GroupId != 0 { //按分组进入场景游戏
- pgg := PlatformGameGroupMgrSington.GetGameGroup(gps.GroupId)
- if pgg != nil {
- if _, ok := this.scenesOfGroup[gps.GroupId]; !ok {
- this.scenesOfGroup[gps.GroupId] = make(map[int32]*Scene)
-
- }
- if ss, ok := this.scenesOfGroup[gps.GroupId]; ok {
- if s, ok := ss[id]; !ok {
- s = this.CreateNewScene(id, gps.GroupId, limitPlatform, pgg.DbGameFree)
- if s != nil {
- ss[id] = s
- this.groupOfScene[int32(s.sceneId)] = gps.GroupId
- logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(groupid=%v) Create %v scene success.", gps.GroupId, id)
- } else {
- logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(groupid=%v) Create %v scene failed.", gps.GroupId, id)
- }
- }
- //尝试进入
- if s, ok := ss[id]; ok && s != nil {
- if s.PlayerEnter(p, -1, true) {
- this.OnPlayerEnter(p, id)
- return gamehall_proto.OpResultCode_Hundred_OPRC_Sucess_Hundred
- } else {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(groupid=%v) enter %v scene failed.", gps.GroupId, id)
- }
- } else {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(groupid=%v) get %v scene failed.", gps.GroupId, id)
- }
- }
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(groupid=%v) snid:%v find in id:%v csp.PlayerEnter return false", gps.GroupId, p.SnId, id)
- return gamehall_proto.OpResultCode_Hundred_OPRC_Error_Hundred
- }
- }
//没有场景,尝试创建
- if _, ok := this.scenesOfPlatform[platformName]; !ok {
- this.scenesOfPlatform[platformName] = make(map[int32]*Scene)
+ if _, ok := this.scenesOfPlatform[platform.IdStr]; !ok {
+ this.scenesOfPlatform[platform.IdStr] = make(map[int32]*Scene)
}
- if ss, ok := this.scenesOfPlatform[platformName]; ok {
- if s, ok := ss[id]; !ok {
- s = this.CreateNewScene(id, gps.GroupId, limitPlatform, gps.DbGameFree)
- if s != nil {
- ss[id] = s
- this.platformOfScene[int32(s.sceneId)] = platformName
- logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(platform=%v) Create %v scene success.", platformName, id)
- } else {
- logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(platform=%v) Create %v scene failed.", platformName, id)
- }
- }
- //尝试进入
- if s, ok := ss[id]; ok && s != nil {
- if s.PlayerEnter(p, -1, true) {
- this.OnPlayerEnter(p, id)
- return gamehall_proto.OpResultCode_Hundred_OPRC_Sucess_Hundred
- } else {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(platform=%v) enter %v scene failed.", platformName, id)
- }
+ ss := this.scenesOfPlatform[platform.IdStr]
+ if s, ok := ss[id]; !ok || s == nil {
+ s = this.CreateNewScene(id, gps.GroupId, platform, gps.DbGameFree)
+ if s != nil {
+ ss[id] = s
+ s.hp = this
+ logger.Logger.Infof("HundredSceneMgr PlayerEnter(platform=%v snid=%v) Create %v scene success.", platform.IdStr, p.SnId, id)
} else {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(platform=%v) get %v scene failed.", platformName, id)
+ logger.Logger.Errorf("HundredSceneMgr PlayerEnter(platform=%v snid=%v) Create %v scene failed.", platform.IdStr, p.SnId, id)
}
}
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(platform=%v) snid:%v find in id:%v csp.PlayerEnter return false", platformName, p.SnId, id)
- return gamehall_proto.OpResultCode_Hundred_OPRC_SceneServerMaintain_Hundred
-}
-
-func (this *HundredSceneMgr) OnPlayerEnter(p *Player, id int32) {
- this.playerIning[p.SnId] = id
+ //尝试进入
+ if s, ok := ss[id]; ok && s != nil {
+ if s.PlayerEnter(p, -1, true) {
+ logger.Logger.Infof("HundredSceneMgr PlayerEnter(platform=%v snid=%v) enter %v scene success.", platform.IdStr, p.SnId, id)
+ return gamehallproto.OpResultCode_Hundred_OPRC_Sucess_Hundred
+ } else {
+ logger.Logger.Errorf("HundredSceneMgr PlayerEnter(platform=%v snid=%v) enter %v scene failed.", platform.IdStr, p.SnId, id)
+ }
+ } else {
+ logger.Logger.Errorf("HundredSceneMgr PlayerEnter(platform=%v) get %v scene failed.", platform.IdStr, id)
+ }
+
+ return gamehallproto.OpResultCode_Hundred_OPRC_SceneServerMaintain_Hundred
}
+// PlayerLeave 离开房间
+// 游戏服通知玩家离开房间
func (this *HundredSceneMgr) PlayerLeave(p *Player, reason int) bool {
- if p == nil {
+ if p == nil || p.scene == nil || p.scene.hp == nil {
return false
}
- if _, ok := this.playerIning[p.SnId]; ok {
- if p.scene != nil {
- p.scene.PlayerLeave(p, reason)
- } else {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerLeave(%v) found scene=nil", p.SnId)
- delete(this.playerIning, p.SnId)
- }
- return true
- } else {
- if p.scene != nil && p.scene.IsHundredScene() {
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerLeave(%v) exception scene=%v gameid=%v", p.SnId, p.scene.sceneId, p.scene.gameId)
- p.scene.PlayerLeave(p, reason)
- return true
- }
- }
- logger.Logger.Warnf("(this *HundredSceneMgr) PlayerLeave(%v) not found in hundred scene", p.SnId)
+
+ p.scene.PlayerLeave(p, reason)
+
return false
}
-func (this *HundredSceneMgr) PlayerTryLeave(p *Player) gamehall_proto.OpResultCode_Hundred {
- if p.scene == nil || p.scene.gameSess == nil {
- logger.Logger.Tracef("(csm *HundredSceneMgr) PlayerTryLeave p.scene == nil || p.scene.gameSess == nil snid:%v ", p.SnId)
- return 1
+// PlayerTryLeave 玩家尝试离开房间
+// 给游戏服发离开消息
+func (this *HundredSceneMgr) PlayerTryLeave(p *Player) gamehallproto.OpResultCode_Hundred {
+ if !this.InHundredScene(p) {
+ logger.Logger.Tracef("(this *HundredSceneMgr) PlayerTryLeave !csm.InCoinScene(p) snid:%v ", p.SnId)
+ return gamehallproto.OpResultCode_Hundred_OPRC_Sucess_Hundred
}
- //通知gamesrv托管
- if _, ok := this.playerIning[p.SnId]; ok {
- pack := &gamehall_proto.CSLeaveRoom{Mode: proto.Int(0)}
- proto.SetDefaults(pack)
- common.TransmitToServer(p.sid, int(gamehall_proto.GameHallPacketID_PACKET_CS_LEAVEROOM), pack, p.scene.gameSess.Session)
- }
- return 0
+
+ pack := &gamehallproto.CSLeaveRoom{Mode: proto.Int(0)}
+ common.TransmitToServer(p.sid, int(gamehallproto.GameHallPacketID_PACKET_CS_LEAVEROOM), pack, p.scene.gameSess.Session)
+ return gamehallproto.OpResultCode_Hundred_OPRC_Sucess_Hundred // ???
}
-func (this *HundredSceneMgr) OnPlayerLeave(p *Player) {
- delete(this.playerIning, p.SnId)
-}
+// OnDestroyScene 房间销毁
+func (this *HundredSceneMgr) OnDestroyScene(sceneId int) {
+ s := SceneMgrSingleton.GetScene(sceneId)
+ if s == nil {
+ return
+ }
+ plt := SceneMgrSingleton.GetPlatformBySceneId(sceneId)
+ if plt == "" {
+ return
+ }
+ if ss, ok := this.scenesOfPlatform[plt]; ok {
+ for id, scene := range ss {
+ if scene.sceneId == sceneId {
+ if scene != s {
+ logger.Logger.Errorf("bug")
+ }
-func (this *HundredSceneMgr) OnDestroyScene(sceneid int) {
- var s *Scene
- if platformName, ok := this.platformOfScene[int32(sceneid)]; ok {
- if ss, ok := this.scenesOfPlatform[platformName]; ok {
- for id, scene := range ss {
- if scene.sceneId == sceneid {
- s = scene
- //删除玩家
- for pid, hid := range this.playerIning {
- if hid == id {
- delete(this.playerIning, pid)
- //TODO 非正常删除房间时,尝试同步金币
- player := PlayerMgrSington.GetPlayerBySnId(pid)
- if player != nil {
- if !player.IsRob {
- ctx := scene.GetPlayerGameCtx(player.SnId)
- if ctx != nil {
- //发送一个探针,等待ack后同步金币
- player.TryRetrieveLostGameCoin(sceneid)
-
- logger.Logger.Warnf("(this *HundredSceneMgr) OnDestroyScene(sceneid:%v) snid:%v SyncGameCoin", sceneid, player.SnId)
- }
- }
+ //删除玩家
+ for _, v := range scene.players {
+ if v != nil {
+ if !v.IsRob {
+ ctx := scene.GetPlayerGameCtx(v.SnId)
+ if ctx != nil {
+ //发送一个探针,等待ack后同步金币
+ v.TryRetrieveLostGameCoin(sceneId)
+ logger.Logger.Warnf("(this *HundredSceneMgr) OnDestroyScene(sceneid:%v) snid:%v SyncGameCoin", sceneId, v.SnId)
}
}
}
- delete(ss, id)
- break
}
+
+ scene.hp = nil
+ delete(ss, id)
+ break
}
}
}
- if groupId, ok := this.groupOfScene[int32(sceneid)]; ok {
- if ss, ok := this.scenesOfGroup[groupId]; ok {
- for id, scene := range ss {
- if scene.sceneId == sceneid {
- s = scene
- //删除玩家
- for pid, hid := range this.playerIning {
- if hid == id {
- delete(this.playerIning, pid)
- //TODO 非正常删除房间时,尝试同步金币
- player := PlayerMgrSington.GetPlayerBySnId(pid)
- if player != nil {
- if !player.IsRob {
- ctx := scene.GetPlayerGameCtx(player.SnId)
- if ctx != nil {
- //发送一个探针,等待ack后同步金币
- player.TryRetrieveLostGameCoin(sceneid)
- logger.Logger.Warnf("(this *HundredSceneMgr) OnDestroyScene(sceneid:%v) snid:%v SyncGameCoin", sceneid, player.SnId)
- }
- }
- }
- }
- }
- delete(ss, id)
- break
- }
- }
- }
- }
-
- this.PreCreateGame(s.limitPlatform.IdStr, []int32{s.dbGameFree.Id})
+ this.tryCreateRoom(plt, s.dbGameFree.Id)
}
func (this *HundredSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int32 {
//多平台支持
- platformName := DefaultPlatform
- platform := PlatformMgrSingleton.GetPlatform(p.Platform)
- if platform != nil && platform.Isolated {
- platformName = platform.IdStr
- } else if p.Platform != DefaultPlatform {
- platform = PlatformMgrSingleton.GetPlatform(DefaultPlatform)
- }
-
- var nums [HundredSceneType_Max]int32
- wantNum := []int32{80, 50, 30, 20, 0}
- for i := 0; i < HundredSceneType_Max; i++ {
+ platform := p.GetPlatform()
+ var nums [10]int32
+ wantNum := [10]int32{80, 50, 30, 20, 10, 10, 10, 10, 10, 10}
+ for i := 0; i < 10; i++ {
if wantNum[i]/2 > 0 {
nums[i] = rand.Int31n(wantNum[i]/2) + wantNum[i]
}
}
-
if platform == nil {
return nums[:]
}
-
ids, _ := srvdata.GameFreeMgr.GetGameFreeIds(gameId, gameMode)
for _, id := range ids {
gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, id)
if gps != nil {
- if gps.GroupId != 0 {
- if ss, exist := this.scenesOfGroup[gps.GroupId]; exist {
- for _, s := range ss {
- if s.paramsEx[0] == id {
- dbGame := srvdata.PBDB_GameFreeMgr.GetData(s.paramsEx[0])
- sceneType := int(dbGame.GetSceneType()) - 1
- if sceneType == -2 {
- //体验场
- sceneType = HundredSceneType_Experience
- }
- truePlayerCount := int32(s.GetPlayerCnt())
-
- //获取fake用户数量
- var fakePlayerCount int32
- //if truePlayerCount >= 21 {
- // correctNum := dbGame.GetCorrectNum()
- // correctRate := dbGame.GetCorrectRate()
- // fakePlayerCount = correctNum + truePlayerCount*correctRate/100 + dbGame.GetDeviation()
- //}
- if sceneType >= 0 && sceneType < HundredSceneType_Max {
- nums[sceneType] += int32(truePlayerCount + fakePlayerCount)
- }
- break
- }
- }
- }
- } else {
- if ss, ok := this.scenesOfPlatform[platformName]; ok {
- for _, s := range ss {
- if s.paramsEx[0] == id {
- dbGame := srvdata.PBDB_GameFreeMgr.GetData(s.paramsEx[0])
- sceneType := int(dbGame.GetSceneType()) - 1
- if sceneType == -2 {
- //体验场
- sceneType = HundredSceneType_Experience
- }
- truePlayerCount := int32(s.GetPlayerCnt())
-
- //获取fake用户数量
- var fakePlayerCount int32
- //if truePlayerCount >= 21 {
- // correctNum := dbGame.GetCorrectNum()
- // correctRate := dbGame.GetCorrectRate()
- // fakePlayerCount = correctNum + truePlayerCount*correctRate/100 + dbGame.GetDeviation()
- //}
- if sceneType >= 0 && sceneType < HundredSceneType_Max {
- nums[sceneType] += int32(truePlayerCount + fakePlayerCount)
- }
- break
- }
+ if ss, ok := this.scenesOfPlatform[platform.IdStr]; ok {
+ if s, exist := ss[id]; exist && s.dbGameFree != nil {
+ sceneType := s.dbGameFree.GetSceneType() - 1
+ if sceneType >= 0 && int(sceneType) < len(nums) {
+ nums[sceneType] += int32(s.GetPlayerCnt())
}
}
}
}
}
+ if len(ids) <= 10 {
+ return nums[:len(ids)]
+ }
return nums[:]
}
func (this *HundredSceneMgr) InHundredScene(p *Player) bool {
if p == nil {
- logger.Logger.Tracef("(this *HundredSceneMgr) InHundredScene p == nil snid:%v ", p.SnId)
return false
}
- if _, ok := this.playerIning[p.SnId]; ok {
- return true
+ if p.scene == nil {
+ return false
}
- logger.Logger.Tracef("(csm *HundredSceneMgr) InHundredScene false snid:%v ", p.SnId)
- return false
+ if p.scene.hp == nil {
+ return false
+ }
+ return true
}
-func (this *HundredSceneMgr) CreateNewScene(id, groupId int32, limitPlatform *Platform, dbGameFree *server_proto.DB_GameFree) *Scene {
+func (this *HundredSceneMgr) CreateNewScene(id, groupId int32, limitPlatform *Platform, dbGameFree *serverproto.DB_GameFree) *Scene {
if dbGameFree != nil {
dbGameRule := srvdata.PBDB_GameRuleMgr.GetData(dbGameFree.GetGameRule())
if dbGameRule != nil {
@@ -396,16 +206,11 @@ func (this *HundredSceneMgr) CreateNewScene(id, groupId int32, limitPlatform *Pl
sceneId := SceneMgrSingleton.GenOneHundredSceneId()
gameMode := dbGameRule.GetGameMode()
params := common.CopySliceInt32ToInt64(dbGameRule.GetParams())
- //SceneType := dbGameFree.GetSceneType()
-
scene := SceneMgrSingleton.CreateScene(0, 0, sceneId, gameId, int(gameMode), common.SceneMode_Public, 1, -1, params, gs, limitPlatform, groupId, dbGameFree, id)
if scene != nil {
+ logger.Logger.Infof("Create hundred scene %v-%v success.", gameId, sceneId)
scene.hallId = id
- //移动到SceneMgr中集中处理
- //if !scene.IsMatchScene() {
- // //平台水池设置
- // gs.DetectCoinPoolSetting(limitPlatform.Name, scene.hallId, scene.groupId)
- //}
+ scene.hp = this
return scene
} else {
logger.Logger.Errorf("Create hundred scene %v-%v failed.", gameId, sceneId)
@@ -419,135 +224,144 @@ func (this *HundredSceneMgr) CreateNewScene(id, groupId int32, limitPlatform *Pl
} else {
logger.Logger.Errorf("Game free data %v no found.", id)
}
-
return nil
}
-func (this *HundredSceneMgr) TryCreateRoom() {
- if model.GameParamData.HundredScenePreCreate {
- arr := srvdata.PBDB_GameFreeMgr.Datas.GetArr()
- for _, dbGame := range arr {
- if dbGame.GetGameId() <= 0 {
- continue
- }
- if common.IsHundredType(dbGame.GetGameType()) { //百人场
- id := dbGame.GetId()
- for k, ss := range this.scenesOfPlatform {
- if _, exist := ss[id]; !exist {
- limitPlatform := PlatformMgrSingleton.GetPlatform(k)
- if limitPlatform == nil || !limitPlatform.Isolated {
- limitPlatform = PlatformMgrSingleton.GetPlatform(DefaultPlatform)
- k = DefaultPlatform
- continue
- }
- gps := PlatformMgrSingleton.GetGameFree(limitPlatform.IdStr, id)
- if gps != nil && gps.GroupId == 0 && gps.Status {
- scene := this.CreateNewScene(id, gps.GroupId, limitPlatform, gps.DbGameFree)
- logger.Logger.Trace("(this *HundredSceneMgr) TryCreateRoom(platform) ", id, k, scene)
- if scene != nil {
- this.platformOfScene[int32(scene.sceneId)] = k
- ss[id] = scene
- }
- }
- }
- }
- }
- }
- }
-}
-func (this *HundredSceneMgr) PreCreateGame(platform string, createIds []int32) {
- limitPlatform := PlatformMgrSingleton.GetPlatform(platform)
+func (this *HundredSceneMgr) tryCreateRoom(plt string, id ...int32) {
+ limitPlatform := PlatformMgrSingleton.GetPlatform(plt)
if limitPlatform == nil || !limitPlatform.Isolated {
limitPlatform = PlatformMgrSingleton.GetPlatform(DefaultPlatform)
}
- if this.scenesOfPlatform[platform] == nil {
- this.scenesOfPlatform[platform] = make(map[int32]*Scene)
+ if this.scenesOfPlatform[plt] == nil {
+ this.scenesOfPlatform[plt] = make(map[int32]*Scene)
}
- //var platformName string
- platformData := PlatformMgrSingleton.GetPlatform(platform)
- if platformData != nil && platformData.Isolated {
- //platformName = platformData.Name
- } else if platform != DefaultPlatform {
- platformData = PlatformMgrSingleton.GetPlatform(DefaultPlatform)
- }
- if platformData.IdStr == DefaultPlatform {
+ if limitPlatform.IdStr == DefaultPlatform {
return
}
- if model.GameParamData.HundredScenePreCreate {
- //不创建已经存在的场景
- for _, id := range createIds {
- dbGame := srvdata.PBDB_GameFreeMgr.GetData(id)
- if common.IsHundredType(dbGame.GetGameType()) {
- gps := PlatformMgrSingleton.GetGameFree(platformData.IdStr, id)
- if gps != nil && gps.Status {
- if gps.GroupId != 0 {
- if this.scenesOfGroup[gps.GroupId] != nil && this.scenesOfGroup[gps.GroupId][id] != nil {
- continue
- } else {
- scene := this.CreateNewScene(dbGame.GetId(), gps.GroupId, limitPlatform, gps.DbGameFree)
- if scene != nil {
- this.scenesOfGroup[gps.GroupId][id] = scene
- this.groupOfScene[int32(scene.sceneId)] = gps.GroupId
- }
- }
- } else {
- if this.scenesOfPlatform[platform] != nil && this.scenesOfPlatform[platform][dbGame.GetId()] != nil {
- continue
- } else {
- scene := this.CreateNewScene(dbGame.GetId(), gps.GroupId, limitPlatform, gps.DbGameFree)
- if scene != nil {
- this.platformOfScene[int32(scene.sceneId)] = platform
- this.scenesOfPlatform[platform][dbGame.GetId()] = scene
- }
- }
- }
- }
- }
+ f := func(i int32) {
+ if this.scenesOfPlatform[plt][i] != nil {
+ return
+ }
+ gps := PlatformMgrSingleton.GetGameFree(plt, i)
+ if !common.IsHundredType(gps.GetDbGameFree().GetGameType()) {
+ return
+ }
+ scene := this.CreateNewScene(i, gps.GroupId, limitPlatform, gps.DbGameFree)
+ if scene != nil {
+ this.scenesOfPlatform[plt][i] = scene
+ scene.hp = this
+ logger.Logger.Infof("HundredSceneMgr PreCreateRoom Platform:%v Id:%v", plt, i)
+ }
+ }
+
+ if len(id) == 0 {
+ // 所有百人场
+ for _, vv := range srvdata.PBDB_GameFreeMgr.Datas.GetArr() {
+ f(vv.GetId())
+ }
+ } else {
+ for _, v := range id {
+ f(v)
}
}
}
-func (this *HundredSceneMgr) OnPlatformCreate(p *Platform) {
- if p != nil && p.Isolated && p.IdStr != DefaultPlatform {
- if _, exist := this.scenesOfPlatform[p.IdStr]; !exist {
- this.scenesOfPlatform[p.IdStr] = make(map[int32]*Scene)
- if model.GameParamData.HundredScenePreCreate {
- arr := srvdata.PBDB_GameFreeMgr.Datas.GetArr()
- for _, dbGame := range arr {
- if common.IsHundredType(dbGame.GetGameType()) { //百人场
- id := dbGame.GetId()
- gps := PlatformMgrSingleton.GetGameFree(p.IdStr, id)
- if gps != nil {
- if gps.GroupId != 0 {
- if ss, ok := this.scenesOfGroup[gps.GroupId]; ok {
- if _, exist := ss[id]; !exist {
- pgg := PlatformGameGroupMgrSington.GetGameGroup(gps.GroupId)
- if pgg != nil {
- scene := this.CreateNewScene(id, gps.GroupId, p, pgg.DbGameFree)
- logger.Logger.Trace("(this *HundredSceneMgr) TryCreateRoom(group) ", id, gps.GroupId, scene)
- if scene != nil {
- ss[id] = scene
- }
- }
- }
- }
- } else {
- if ss, ok := this.scenesOfPlatform[p.IdStr]; ok {
- if _, exist := ss[id]; !exist {
- scene := this.CreateNewScene(id, gps.GroupId, p, gps.DbGameFree)
- logger.Logger.Trace("(this *HundredSceneMgr) TryCreateRoom(platform) ", id, p.Name, scene)
- if scene != nil {
- ss[id] = scene
- }
- }
- }
- }
- }
- }
+
+// TryCreateRoom 预创建房间
+func (this *HundredSceneMgr) TryCreateRoom() {
+ if !model.GameParamData.HundredScenePreCreate {
+ return
+ }
+
+ for _, v := range PlatformMgrSingleton.GetPlatforms() {
+ this.tryCreateRoom(v.IdStr)
+ }
+}
+
+func (this *HundredSceneMgr) OnPlatformChangeIsolated(p *Platform, isolated bool) {
+ if p == nil {
+ return
+ }
+ if isolated { //孤立
+ this.OnPlatformCreate(p) //预创建场景
+ } else {
+ this.OnPlatformDestroy(p)
+ }
+}
+
+func (this *HundredSceneMgr) GetPlatformSceneByGameFreeId(platform string, gameFreeIds []int32) []*Scene {
+ platformName := DefaultPlatform
+ platformData := PlatformMgrSingleton.GetPlatform(platform)
+ if platformData != nil && platformData.Isolated {
+ platformName = platformData.IdStr
+ } else if platform != DefaultPlatform {
+ platformData = PlatformMgrSingleton.GetPlatform(DefaultPlatform)
+ }
+
+ if platformData == nil {
+ return nil
+ }
+
+ var scenes []*Scene
+ for _, id := range gameFreeIds {
+ gps := PlatformMgrSingleton.GetGameFree(platformData.IdStr, id)
+ if gps != nil {
+ if ss, ok := this.scenesOfPlatform[platformName]; ok {
+ if s, exist := ss[id]; exist && s != nil {
+ scenes = append(scenes, s)
}
}
}
}
+
+ return scenes
+}
+
+func (this *HundredSceneMgr) GetPlatformScene(platform string, gameId int32) []*Scene {
+ gameFreeIds := gameStateMgr.gameIds[gameId]
+ gameScenes := this.GetPlatformSceneByGameFreeId(platform, gameFreeIds)
+ if len(gameScenes) != len(gameFreeIds) {
+ var createIds []int32
+ for _, gfi := range gameFreeIds {
+ bFind := false
+ for _, s := range gameScenes {
+ if s.dbGameFree.GetId() == gfi {
+ bFind = true
+ break
+ }
+ }
+ if !bFind {
+ createIds = append(createIds, gfi)
+ }
+ }
+ if len(createIds) > 0 {
+ this.tryCreateRoom(platform, createIds...)
+ gameScenes = this.GetPlatformSceneByGameFreeId(platform, gameFreeIds)
+ }
+ }
+ return gameScenes
+}
+
+func (this *HundredSceneMgr) ModuleName() string {
+ return "HundredSceneMgr"
+}
+
+func (this *HundredSceneMgr) Init() {
+ this.TryCreateRoom()
+}
+
+func (this *HundredSceneMgr) Update() {
+
+}
+
+func (this *HundredSceneMgr) Shutdown() {
+ module.UnregisteModule(this)
+}
+
+func (this *HundredSceneMgr) OnPlatformCreate(p *Platform) {
+ if model.GameParamData.HundredScenePreCreate {
+ this.tryCreateRoom(p.IdStr)
+ }
}
func (this *HundredSceneMgr) OnPlatformDestroy(p *Platform) {
@@ -563,34 +377,12 @@ func (this *HundredSceneMgr) OnPlatformDestroy(p *Platform) {
}
}
-func (this *HundredSceneMgr) OnPlatformChangeIsolated(p *Platform, isolated bool) {
- if p != nil {
- if isolated { //孤立
- this.OnPlatformCreate(p) //预创建场景
- } else {
- if ss, ok := this.scenesOfPlatform[p.IdStr]; ok {
- var ids []int
- for _, scene := range ss {
- ids = append(ids, scene.sceneId)
- }
- SceneMgrSingleton.DoDelete(ids, true)
- }
- }
- }
-}
-
func (this *HundredSceneMgr) OnPlatformChangeDisabled(p *Platform, disabled bool) {
if p == nil {
return
}
if disabled {
- if ss, ok := this.scenesOfPlatform[p.IdStr]; ok {
- var ids []int
- for _, scene := range ss {
- ids = append(ids, scene.sceneId)
- }
- SceneMgrSingleton.DoDelete(ids, true)
- }
+ this.OnPlatformDestroy(p)
}
}
@@ -598,14 +390,6 @@ func (this *HundredSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCf
if p == nil || newCfg == nil {
return
}
- if oldCfg.GroupId != newCfg.GroupId || oldCfg.GroupId != 0 {
- if scenes, exist := this.scenesOfGroup[oldCfg.GroupId]; exist {
- if s, ok := scenes[newCfg.DbGameFree.Id]; ok {
- s.DoDelete(false)
- }
- }
- return
- }
if scenes, exist := this.scenesOfPlatform[p.IdStr]; exist {
if s, ok := scenes[newCfg.DbGameFree.Id]; ok {
s.DoDelete(false)
@@ -614,99 +398,7 @@ func (this *HundredSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCf
}
func (this *HundredSceneMgr) OnGameGroupUpdate(oldCfg, newCfg *webapi.GameConfigGroup) {
- if newCfg == nil {
- return
- }
- if scenes, exist := this.scenesOfGroup[newCfg.Id]; exist {
- if s, ok := scenes[newCfg.DbGameFree.Id]; ok {
- needDestroy := false
- if s.dbGameFree.GetBot() != newCfg.DbGameFree.GetBot() ||
- s.dbGameFree.GetBaseScore() != newCfg.DbGameFree.GetBaseScore() ||
- s.dbGameFree.GetLimitCoin() != newCfg.DbGameFree.GetLimitCoin() ||
- s.dbGameFree.GetMaxCoinLimit() != newCfg.DbGameFree.GetMaxCoinLimit() ||
- !common.SliceInt64Equal(s.dbGameFree.GetRobotTakeCoin(), newCfg.DbGameFree.GetRobotTakeCoin()) ||
- !common.SliceInt64Equal(s.dbGameFree.GetRobotLimitCoin(), newCfg.DbGameFree.GetRobotLimitCoin()) {
- needDestroy = true
- }
- if needDestroy {
- SceneMgrSingleton.DoDelete([]int{s.sceneId}, true)
- }
- }
- }
-}
-func (this *HundredSceneMgr) GetPlatformSceneByGameFreeId(platform string, gameFreeIds []int32) []*Scene {
- platformName := DefaultPlatform
- platformData := PlatformMgrSingleton.GetPlatform(platform)
- if platformData != nil && platformData.Isolated {
- platformName = platformData.IdStr
- } else if platform != DefaultPlatform {
- platformData = PlatformMgrSingleton.GetPlatform(DefaultPlatform)
- }
- gameScenes := []*Scene{}
- for _, id := range gameFreeIds {
- gps := PlatformMgrSingleton.GetGameFree(platformData.IdStr, id)
- if gps != nil {
- if gps.GroupId != 0 {
- if ss, exist := this.scenesOfGroup[gps.GroupId]; exist {
- if s, exist := ss[id]; exist && s != nil {
- gameScenes = append(gameScenes, s)
- }
- }
- } else {
- if ss, ok := this.scenesOfPlatform[platformName]; ok {
- if s, exist := ss[id]; exist && s != nil {
- gameScenes = append(gameScenes, s)
- }
- }
- }
- }
- }
- return gameScenes
-}
-func (this *HundredSceneMgr) GetPlatformScene(platform string, gameid int32) []*Scene {
- gameFreeIds := gameStateMgr.gameIds[gameid]
- gameScenes := this.GetPlatformSceneByGameFreeId(platform, gameFreeIds)
- if len(gameScenes) != len(gameFreeIds) {
- createIds := []int32{}
- for _, gfi := range gameFreeIds {
- bFind := false
- for _, s := range gameScenes {
- if s.dbGameFree.GetId() == gfi {
- bFind = false
- break
- }
- }
- if !bFind {
- createIds = append(createIds, gfi)
- }
- }
- if len(createIds) > 0 {
- this.PreCreateGame(platform, createIds)
- gameScenes = this.GetPlatformSceneByGameFreeId(platform, gameFreeIds)
- }
- }
- return gameScenes
-}
-func (this *HundredSceneMgr) ModuleName() string {
- return "HundredSceneMgr"
-}
-
-func (this *HundredSceneMgr) Init() {
- for _, platform := range PlatformMgrSingleton.GetPlatforms() {
- if platform.Isolated || platform.IdStr == DefaultPlatform {
- this.scenesOfPlatform[platform.IdStr] = make(map[int32]*Scene)
- }
- }
-}
-
-// 撮合
-func (this *HundredSceneMgr) Update() {
-
-}
-
-func (this *HundredSceneMgr) Shutdown() {
- module.UnregisteModule(this)
}
func (this *HundredSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFreeId int32) {
@@ -723,8 +415,9 @@ func (this *HundredSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFree
SceneMgrSingleton.DoDelete(ids, true)
}
}
+
func init() {
- module.RegisteModule(HundredSceneMgrSington, time.Second*5, 0)
- PlatformMgrSingleton.RegisterObserver(HundredSceneMgrSington)
- PlatformGameGroupMgrSington.RegisteObserver(HundredSceneMgrSington)
+ module.RegisteModule(HundredSceneMgrSingleton, time.Second*5, 0)
+ PlatformMgrSingleton.RegisterObserver(HundredSceneMgrSingleton)
+ PlatformGameGroupMgrSington.RegisteObserver(HundredSceneMgrSingleton)
}
diff --git a/worldsrv/logchannel.go b/worldsrv/logchannel.go
index d40723b..44b69ce 100644
--- a/worldsrv/logchannel.go
+++ b/worldsrv/logchannel.go
@@ -69,4 +69,7 @@ func init() {
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitExchange, &model.BackendPermitExchange{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitJoin, &model.BackendPermitJoin{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitTask, &model.BackendPermitTask{})
+ LogChannelSingleton.RegisterLogCName(mq.BackClientLog, &model.ClientLogMysql{})
+ LogChannelSingleton.RegisterLogCName(mq.BackSystemJyb, &model.JybLog{})
+ LogChannelSingleton.RegisterLogCName(mq.DBVipGiftLog, &model.DbVip{})
}
diff --git a/worldsrv/matchcontext.go b/worldsrv/matchcontext.go
index b91e013..30cfcc0 100644
--- a/worldsrv/matchcontext.go
+++ b/worldsrv/matchcontext.go
@@ -15,6 +15,7 @@ type PlayerMatchContext struct {
copySnid int32
copyLv int32
copyRoleId int32
+ copySkinId int32
}
type MatchContextSlice []*PlayerMatchContext
@@ -39,22 +40,22 @@ func (p MatchContextSlice) Sort(isFinals bool) {
for i, mc := range p {
mc.rank = int32(i + 1)
}
- if isFinals {
- // 积分相同名次相同
- lastRank := int32(0)
- lastGrade := int32(0)
- for i := 0; i < len(p); i++ {
- mc := p[i]
- if i > 0 && mc.grade == lastGrade {
- mc.rank = lastRank
- }
- lastRank = mc.rank
- lastGrade = mc.grade
- }
- }
+ //if isFinals {
+ // // 积分相同名次相同
+ // lastRank := int32(0)
+ // lastGrade := int32(0)
+ // for i := 0; i < len(p); i++ {
+ // mc := p[i]
+ // if i > 0 && mc.grade == lastGrade {
+ // mc.rank = lastRank
+ // }
+ // lastRank = mc.rank
+ // lastGrade = mc.grade
+ // }
+ //}
}
-func NewMatchContext(p *Player, tm *TmMatch, grade, snid, lv, roleId int32, seq int) *PlayerMatchContext {
+func NewMatchContext(p *Player, tm *TmMatch, grade, snid, lv, roleId, skinId int32, seq int) *PlayerMatchContext {
if !p.IsRob {
snid = p.SnId
}
@@ -67,5 +68,6 @@ func NewMatchContext(p *Player, tm *TmMatch, grade, snid, lv, roleId int32, seq
copySnid: snid,
copyLv: lv,
copyRoleId: roleId,
+ copySkinId: skinId,
}
}
diff --git a/worldsrv/matchscenemgr.go b/worldsrv/matchscenemgr.go
index a5e3285..1675d58 100644
--- a/worldsrv/matchscenemgr.go
+++ b/worldsrv/matchscenemgr.go
@@ -97,7 +97,6 @@ func (ms *MatchSceneMgr) MatchStart(tm *TmMatch) {
}
// 填充机器人
if scene != nil && !scene.IsFull() {
- tm.RobotGradesDecline(1)
needRobotNum := scene.playerNum - len(scene.players)
logger.Logger.Trace("MatchStart 填充机器人", needRobotNum)
pack := &server.WGInviteMatchRob{
diff --git a/worldsrv/platform.go b/worldsrv/platform.go
index a173e6a..e7106ab 100644
--- a/worldsrv/platform.go
+++ b/worldsrv/platform.go
@@ -129,7 +129,7 @@ func (cfg *GameList) GetGameConfig(gameFreeId int32) *webapiproto.GameFree {
return nil
}
-func CompareGameFreeConfigChged(oldCfg, newCfg *webapiproto.GameFree) bool {
+func CompareGameFreeConfigChanged(oldCfg, newCfg *webapiproto.GameFree) bool {
if oldCfg.Status != newCfg.Status ||
oldCfg.GroupId != newCfg.GroupId ||
oldCfg.DbGameFree.GetBot() != newCfg.DbGameFree.GetBot() ||
diff --git a/worldsrv/platformmgr.go b/worldsrv/platformmgr.go
index be24b14..1fff5f4 100644
--- a/worldsrv/platformmgr.go
+++ b/worldsrv/platformmgr.go
@@ -243,7 +243,7 @@ func (pm *PlatformMgr) UpsertGameFree(platform string, data *webapiproto.GameFre
pgc.gameId[data.DbGameFree.Id] = append(pgc.gameId[data.DbGameFree.Id], data)
}
// 新增的场次不会通知
- if ok && old != nil && !CompareGameFreeConfigChged(old, data) {
+ if ok && old != nil && !CompareGameFreeConfigChanged(old, data) {
pm.OnPlatformGameFreeUpdate(p, old, data)
pm.SyncGameFree(p.IdStr, data)
}
diff --git a/worldsrv/player.go b/worldsrv/player.go
index 5a9f683..1e405c5 100644
--- a/worldsrv/player.go
+++ b/worldsrv/player.go
@@ -340,6 +340,13 @@ func (this *Player) OnLogined() {
this.RandRobotExData()
if !this.IsRob {
+ if isFirstLogin {
+ cfg := PlatformMgrSingleton.GetConfig(this.Platform).GuideConfig
+ if cfg == nil || cfg.GetOn() != common.On {
+ this.GuideStep = -1
+ }
+ }
+
this.SendJackPotInit()
this.GetPayGoodsInfo()
@@ -1594,7 +1601,7 @@ func (this *Player) DgGameLogout() {
}
func (this *Player) ThirdGameLogout() {
- _LeaveTransferThird2SystemTask(this)
+
}
func (this *Player) IsOnLine() bool {
@@ -3022,6 +3029,7 @@ func (this *Player) SendPlayerInfo() {
VipShopRefreshCount: proto.Int32(this.VipShopRefreshCount),
Signature: this.Signature,
Age: this.Age,
+ GuideStep: this.GuideStep,
},
}
if this.Roles != nil {
@@ -3088,8 +3096,13 @@ func (this *Player) SendPlayerInfo() {
if this.scene != nil && this.thrscene == 0 {
this.SendGameConfig(int32(this.scene.gameId), this.Platform, this.Channel)
}
- this.SCItems()
//this.SendJackpotInfo()
+ // 后台道具配置
+ this.SCItems()
+ // 引导配置
+ this.SCGuide()
+ // 小精灵配置
+ this.SCSpirit()
}
//func (this *Player) SendJackpotInfo() {
@@ -3680,8 +3693,6 @@ func (this *Player) TryRetrieveLostGameCoin(sceneid int) {
logProbe.SeqNo = this.GameCoinTs
logProbe.RoomId = int32(sceneid)
LogChannelSingleton.WriteLog(logProbe)
- //先把玩家身上的钱清掉
- //this.Coin = 0
this.SendDiffData()
}
@@ -3766,17 +3777,24 @@ func (this *Player) SCVIPInfo() {
LineId: cfg.RewardOutlineID,
ShopId2: cfg.ShopId2,
ShopId7: cfg.ShopId7,
- MatchFreeTimes: cfg.MatchFreeTimes + this.GetSkillAdd(common.SkillIdVipTimes),
+ MatchFreeTimes: cfg.MatchFreeTimes,
+ Privilege9: cfg.Privilege9,
}
- money := cfg.Privilege1[0]
- // 皮肤技能加成
- add := this.GetSkillAdd(common.SkillIdVipGift)
- if add > 0 {
- money += int32((float64(money) * float64(add)) / 100.00)
+ d := srvdata.PBDB_VIPMgr.GetData(cfg.VipId)
+ if d != nil {
+ data.PrivilegeShow = d.GetPrivilegeShow()
+ }
+ data.Privilege1 = make(map[int64]int64)
+ for k, v := range cfg.Privilege1 {
+ if k == common.ItemIDCoin {
+ // 皮肤技能加成
+ add := this.GetSkillAdd(common.SkillIdVipGift)
+ if add > 0 {
+ //v += int64((float64(v) * float64(add)) / 100.00)
+ }
+ }
+ data.Privilege1[k] = v
}
- data.Privilege1 = make([]int32, len(cfg.Privilege1))
- copy(data.Privilege1, cfg.Privilege1)
- data.Privilege1[0] = money
for itemId, itemNum := range cfg.Award {
data.Item = append(data.Item, &playerproto.ItemInfo{
ItemId: int32(itemId),
@@ -3789,10 +3807,11 @@ func (this *Player) SCVIPInfo() {
ItemNum: itemNum,
})
}
- data.BagStatus = make([]int32, 3)
+ data.BagStatus = make([]int32, 4)
data.BagStatus[0] = 0 //每日礼包 0可领取 1不可领取 只能领取当前VIP等级的
data.BagStatus[1] = 0 //每日金币礼包 0可领取 1不可领取 只能领取当前VIP等级的
data.BagStatus[2] = this.GetPlayerVipBagStatus(cfg.ShopId7, cfg.VipId) //固定VIP礼包 0可领取 1不可领取 可以领取所有VIP等级的奖励
+ data.BagStatus[3] = this.GetPlayerVipBagStatus(1, cfg.VipId) // 等级礼包 0可领取 1不可领取
if cfg.VipId != this.VIP {
data.BagStatus[0] = 1 //每日礼包 0可领取 1不可领取 只能领取当前VIP等级的
data.BagStatus[1] = 1 //每日金币礼包 0可领取 1不可领取 只能领取当前VIP等级的
@@ -3812,70 +3831,124 @@ func (this *Player) SCVIPInfo() {
this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SC_VIPINFO), pack)
logger.Logger.Tracef("send vipinfo to client:%v", pack)
}
+
func (this *Player) GetVIPExpByPay(payTotal int32) int32 {
vips := VipMgrSington.GetVIPcfg(this.Platform)
return int32(math.Floor(float64(payTotal) * vips.MoneyRatio / 100))
}
-func (this *Player) VIPDraw(id int32) {
- //WelfareMgrSington.MonitorWelfData(this)
+
+func (this *Player) VIPDraw(id, vip int32) {
pack := &playerproto.SCVIPDraw{
Id: id,
OpRetCode: playerproto.OpResultCode_OPRC_Error,
+ Award: make(map[int64]int64),
}
- if id != 0 {
+ send := func() {
+ pack.Vip = vip
this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SC_DRAWVIPGIFT), pack)
+ logger.Logger.Tracef("send vipdraw to client:%v", pack)
return
}
+
if this.WelfData.VIPBag == nil {
this.WelfData.VIPBag = make(map[int32]map[int32]int32)
}
- if innerMap, ok := this.WelfData.VIPBag[this.VIP]; ok {
- if _, ok := innerMap[0]; ok {
- logger.Logger.Trace("VIPDraw VIP is repeat id%v ", id)
- this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SC_DRAWVIPGIFT), pack)
- return
- }
- } else {
- this.WelfData.VIPBag[this.VIP] = make(map[int32]int32)
- }
- vips := VipMgrSington.GetVIPcfg(this.Platform)
- if vips != nil {
- for _, data := range vips.List {
- if data.VipId == this.VIP {
- pack.OpRetCode = playerproto.OpResultCode_OPRC_Sucess
- this.WelfData.VIPBag[this.VIP][0] = 1
- //金币数量
- money := data.Privilege1[0]
- // 皮肤技能加成
- add := this.GetSkillAdd(common.SkillIdVipGift)
- if add > 0 {
- money += int32((float64(money) * float64(add)) / 100.00)
- }
- //vip经验
- addVipExp := int64(float64(data.Privilege1[1]) / vips.MoneyRatio)
- this.AddCoin(int64(money), 0, common.GainWay_VIPGift, "sys", "VIP每日礼包")
- this.AddMoneyPayTotal(addVipExp)
- pack.Vip = this.VIP
- logger.Logger.Tracef("玩家领取VIP每日礼包成功!snid = %v,Vip = %v,金币数量 = %v,addVipEx = %v", this.SnId, this.VIP, money, addVipExp)
- //VIP礼包统计数据
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- var item []model.ItemInfo
- item = append(item, model.ItemInfo{ItemId: 1, ItemNum: int64(money)})
- log := model.NewDbVip(this.Platform, this.SnId, this.VIP, 0, 0, 0, item, 0, "Vip每日礼包")
- return model.InsertDbVipLog(log)
- }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
- if data != nil {
- logger.Logger.Errorf("err:", data.(error))
- }
- }), "VIPDraw").Start()
- break
+ switch id {
+ case 0: // 每日礼包只能领当前VIP等级的
+ vip = this.VIP
+ if innerMap, ok := this.WelfData.VIPBag[vip]; ok {
+ if _, ok := innerMap[id]; ok {
+ logger.Logger.Trace("VIPDraw VIP is repeat id%v ", id)
+ send()
+ return
}
}
+ case 1: // VIP等级礼包
+ if this.GetPlayerVipBagStatus(1, vip) == 1 {
+ send()
+ return
+ }
+ default:
+ send()
+ return
}
- this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SC_DRAWVIPGIFT), pack)
+ if this.WelfData.VIPBag[vip] == nil {
+ this.WelfData.VIPBag[vip] = make(map[int32]int32)
+ }
+ data := VipMgrSington.GetVipCfg(this.Platform, vip)
+ if data != nil {
+ pack.OpRetCode = playerproto.OpResultCode_OPRC_Sucess
+ this.WelfData.VIPBag[vip][id] = 1
+ switch id {
+ case 0:
+ var money, addVipExp int64
+ for k, v := range data.Privilege1 {
+ switch k {
+ case common.ItemIDCoin:
+ money = v
+ // 皮肤技能加成
+ add := this.GetSkillAdd(common.SkillIdVipGift)
+ if add > 0 {
+ money += int64((float64(money) * float64(add)) / 100.00)
+ }
+ this.AddCoin(money, 0, common.GainWay_VIPGift, "sys", "VIP每日礼包")
+ pack.Award[common.ItemIDCoin] = money
+ case common.ItemIDVipExp:
+ vips := VipMgrSington.GetVIPcfg(this.Platform)
+ addVipExp = int64(float64(v) / vips.MoneyRatio)
+ this.AddMoneyPayTotal(addVipExp)
+ pack.Award[common.ItemIDVipExp] = addVipExp
+ default:
+ BagMgrSingleton.AddItemsV2(&ItemParam{
+ P: this,
+ Change: []*Item{
+ {
+ ItemId: int32(k),
+ ItemNum: v,
+ },
+ },
+ GainWay: common.GainWay_VIPGift,
+ Operator: "system",
+ Remark: "VIP每日礼包",
+ })
+ pack.Award[k] += v
+ }
+ }
+ logger.Logger.Tracef("玩家领取VIP每日礼包成功!snid = %v,Vip = %v,金币数量 = %v,addVipEx = %v", this.SnId, this.VIP, money, addVipExp)
+ //VIP礼包统计数据
+ var item []model.ItemInfo
+ item = append(item, model.ItemInfo{ItemId: 1, ItemNum: money})
+ log := model.NewDbVip(this.Platform, this.SnId, this.VIP, 0, 0, 0, item, 0, "Vip每日礼包")
+ LogChannelSingleton.WriteLog(log)
+
+ case 1:
+ var items []*Item
+ var itemInfo []model.ItemInfo
+ for k, v := range data.Privilege9 {
+ items = append(items, &Item{
+ ItemId: int32(k),
+ ItemNum: v,
+ })
+ itemInfo = append(itemInfo, model.ItemInfo{ItemId: int32(k), ItemNum: v})
+ pack.Award[k] = v
+ }
+ BagMgrSingleton.AddItemsV2(&ItemParam{
+ P: this,
+ Change: items,
+ GainWay: common.GainWayVipGift9,
+ Operator: "system",
+ Remark: "VIP等级礼包",
+ })
+ logger.Logger.Tracef("玩家领取VIP等级礼包成功!snid = %v,Vip = %v,items %#v", this.SnId, this.VIP, items)
+ //VIP礼包统计数据
+ log := model.NewDbVip(this.Platform, this.SnId, this.VIP, 9, 0, 0, itemInfo, 0, "Vip等级礼包")
+ LogChannelSingleton.WriteLog(log)
+ }
+ }
+ send()
}
func (this *Player) GetCurrentVIPExp(vipcfg ...*webapiproto.VIPcfgDataList) (exp int64, money int64) {
@@ -4058,8 +4131,11 @@ func (this *Player) GetPayGoodsInfo() {
BagMgrSingleton.AddItems(this, items, 0, info.GainWay, info.Operator, info.Remark, 0, 0, false)
PayGoodsInfo := &playerproto.SCPayGoodsInfo{
- Gold: info.Amount,
- Item: itemInfo,
+ Gold: info.Amount,
+ Item: itemInfo,
+ ShopId: info.ShopId,
+ Money: int64(info.ConsumeTypeNum),
+ Name: info.Remark,
}
proto.SetDefaults(PayGoodsInfo)
this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SC_PAYGOODSINFO), PayGoodsInfo)
@@ -4303,16 +4379,11 @@ func (this *Player) UpdatePlayerVipBag(shopId int32) {
}
this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SC_DRAWVIPGIFT), pack)
//VIP金币礼包&VIP固定礼包统计数据
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- var item []model.ItemInfo
- item = append(item, model.ItemInfo{ItemId: shopInfo.Type, ItemNum: shopInfo.Amount})
- log := model.NewDbVip(this.Platform, this.SnId, shopInfo.VipLevel, shopInfo.Type, shopInfo.ConstType, int64(shopInfo.CostArea[0]), item, shopInfo.Id, shopInfo.Name)
- return model.InsertDbVipLog(log)
- }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
- if data != nil {
- logger.Logger.Errorf("err:", data.(error))
- }
- }), "UpdatePlayerVipBag").Start()
+ var item []model.ItemInfo
+ item = append(item, model.ItemInfo{ItemId: shopInfo.Type, ItemNum: shopInfo.Amount})
+ log := model.NewDbVip(this.Platform, this.SnId, shopInfo.VipLevel, shopInfo.Type, shopInfo.ConstType,
+ int64(shopInfo.CostArea[0]), item, shopInfo.Id, shopInfo.Name)
+ LogChannelSingleton.WriteLog(log)
}
//判断是否是礼包周卡
if shopInfo.Page == ShopPageGift {
@@ -4323,7 +4394,7 @@ func (this *Player) UpdatePlayerVipBag(shopId int32) {
// 判断vip特权某个礼包是否领取过 返回值:0可领取 1 不可领取
func (this *Player) GetPlayerVipBagStatus(shopId, vipLevel int32) int32 {
- if vipLevel > this.VIP {
+ if vipLevel > this.VIP || vipLevel < 0 {
return 1
}
if this.WelfData == nil || this.WelfData.VIPBag == nil {
@@ -4343,14 +4414,16 @@ func (this *Player) UpdateVipShopData() {
this.VipShopRefreshCount = 0
//每日礼包 和每日金币礼包需要初始化
if this.WelfData != nil && this.WelfData.VIPBag != nil {
- delKeyList := []int32{}
+ var delKeyList []int32
for _, data := range this.WelfData.VIPBag {
for shopId, shopType := range data {
- if shopId == 0 {
- //初始化每日礼包
+ switch shopId {
+ case 0: // 每日礼包
delKeyList = append(delKeyList, shopId)
logger.Logger.Trace("初始化VIP每日礼包!!!!!!!")
- } else {
+ case 1: // 等级礼包,不需要重置
+
+ default:
if shopType == 1 {
delKeyList = append(delKeyList, shopId)
logger.Logger.Trace("初始化VIP每日固定礼包!!!!!!!!!!")
@@ -4867,3 +4940,31 @@ func (this *Player) AutoSkinUnlock() {
func (this *Player) GetSkillAdd(id int32) int32 {
return this.GetSkillAdd2(id, PlatformMgrSingleton.ConfigMgr)
}
+
+func (this *Player) SCGuide() {
+ cfg := PlatformMgrSingleton.GetConfig(this.Platform).GuideConfig
+ pack := &playerproto.SCGuideConfig{
+ On: cfg.GetOn(),
+ Skip: cfg.GetSkip(),
+ }
+ this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCGuideConfig), pack)
+ logger.Logger.Tracef("SCGuideConfig: %v", pack)
+}
+
+func (this *Player) SCSpirit() {
+ cfg := PlatformMgrSingleton.GetConfig(this.Platform).SpiritConfig
+ if cfg == nil {
+ return
+ }
+ pack := &playerproto.SCDataConfig{
+ Cfg: []*playerproto.Config{
+ {
+ Tp: 1,
+ On: cfg.On == 1,
+ Value: cfg.Url,
+ },
+ },
+ }
+ this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCDataConfig), pack)
+ logger.Logger.Tracef("SCDataConfig: %v", pack)
+}
diff --git a/worldsrv/scene.go b/worldsrv/scene.go
index 4c3edee..d885720 100644
--- a/worldsrv/scene.go
+++ b/worldsrv/scene.go
@@ -105,7 +105,8 @@ type Scene struct {
BaseScore int32 //tienlen游戏底分
matchId int64 //比赛场id
- csp *CoinScenePool // 所在场景池
+ csp *CoinScenePool // 所在场景池
+ hp *HundredSceneMgr // 百人场房间池
}
// NewScene 创建房间
@@ -276,8 +277,7 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool {
case this.IsCoinScene():
case this.IsHundredScene():
- // todo 删除这个标记
- HundredSceneMgrSington.OnPlayerEnter(p, this.paramsEx[0])
+
case this.IsMatchScene():
}
@@ -293,7 +293,7 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool {
takeCoin := p.Coin
leaveCoin := int64(0)
gameTimes := rand.Int31n(100)
- matchParams := []int32{} //排名、段位、假snid、假角色
+ matchParams := []int32{} //排名、段位、假snid、假角色、假皮肤
if this.IsMatchScene() && p.matchCtx != nil {
takeCoin = int64(p.matchCtx.grade)
@@ -304,7 +304,8 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool {
matchParams = append(matchParams, 1) //段位默认值
}
matchParams = append(matchParams, p.matchCtx.copySnid) //假snid
- matchParams = append(matchParams, p.matchCtx.copyRoleId) //假snid
+ matchParams = append(matchParams, p.matchCtx.copyRoleId) //假RoleId
+ matchParams = append(matchParams, p.matchCtx.copySkinId) //假SkinId
} else {
if p.IsRob {
if len(this.paramsEx) > 0 { //机器人携带金币动态调整
@@ -629,7 +630,6 @@ func (this *Scene) DelPlayer(p *Player) bool {
switch {
case this.IsHundredScene():
- HundredSceneMgrSington.OnPlayerLeave(p)
//case this.IsHallScene():
// PlatformMgrSingleton.OnPlayerLeaveScene(this, p)
// for i := 0; i < this.playerNum; i++ {
@@ -663,9 +663,7 @@ func (this *Scene) AudienceEnter(p *Player, ischangeroom bool) bool {
p.scene = this
this.audiences[p.SnId] = p
this.gameSess.AddPlayer(p)
- if this.IsHundredScene() {
- HundredSceneMgrSington.OnPlayerEnter(p, this.paramsEx[0])
- }
+
//todo:send add msg to gamesrv
data, err := p.MarshalData(this.gameId)
if err == nil {
@@ -748,9 +746,6 @@ func (this *Scene) DelAudience(p *Player) bool {
}
p.scene = nil
SceneMgrSingleton.OnPlayerLeaveScene(this, p)
- if this.IsHundredScene() {
- HundredSceneMgrSington.OnPlayerLeave(p)
- }
//from gameserver, so don't need send msg
return true
}
@@ -1023,6 +1018,7 @@ func (this *Scene) GetSceneName() string {
}
return "[unknow scene name]"
}
+
func (this *Scene) RandRobotCnt() {
if len(this.paramsEx) > 0 {
gps := PlatformMgrSingleton.GetGameFree(this.limitPlatform.IdStr, this.paramsEx[0])
@@ -1262,3 +1258,17 @@ func (this *Scene) TryForceDelectMatchInfo() {
}
}
}
+
+// CanAudience 是否允许观战
+func (this *Scene) CanAudience() bool {
+ switch {
+ case this.matchId > 0: // 比赛场
+ tm := TournamentMgr.GetTm(this.matchId)
+ if tm != nil {
+ return tm.gmd.GetAudienceSwitch() == 1
+ }
+ return false
+ default:
+ return true
+ }
+}
diff --git a/worldsrv/scenemgr.go b/worldsrv/scenemgr.go
index bed66fe..9b6b36f 100644
--- a/worldsrv/scenemgr.go
+++ b/worldsrv/scenemgr.go
@@ -37,6 +37,14 @@ type SceneMgr struct {
hundredSceneAutoId int // 百人场房间号
}
+func (m *SceneMgr) GetPlatformBySceneId(sceneId int) string {
+ s := m.GetScene(sceneId)
+ if s != nil && s.limitPlatform != nil {
+ return s.limitPlatform.IdStr
+ }
+ return ""
+}
+
// AllocReplayCode 获取回访码
func (m *SceneMgr) AllocReplayCode() string {
code, _ := model.GetOneReplayId()
@@ -115,6 +123,19 @@ func (m *SceneMgr) GetScenesByGameFreeId(gameFreeId int32) []*Scene {
return scenes
}
+func (m *SceneMgr) GetMatchRoom(sortId int64) []*Scene {
+ var scenes []*Scene
+ for _, value := range m.scenes {
+ if value.matchId == sortId {
+ s := m.GetScene(value.sceneId)
+ if s != nil {
+ scenes = append(scenes, value)
+ }
+ }
+ }
+ return scenes
+}
+
// MarshalAllRoom 获取房间列表
func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode, clubId, sceneMode, sceneId int,
gameFreeId, snId int32, start, end, pageSize int32) ([]*webapi2.RoomInfo, int32, int32) {
@@ -303,7 +324,7 @@ func (m *SceneMgr) DestroyScene(sceneId int, isCompleted bool) {
CoinSceneMgrSingleton.OnDestroyScene(s.sceneId)
case s.IsHundredScene():
- HundredSceneMgrSington.OnDestroyScene(s.sceneId)
+ HundredSceneMgrSingleton.OnDestroyScene(s.sceneId)
case s.IsMatchScene():
MatchSceneMgrSingleton.OnDestroyScene(s.sceneId)
diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go
index 88142c4..5cce9b1 100644
--- a/worldsrv/shopmgr.go
+++ b/worldsrv/shopmgr.go
@@ -108,6 +108,7 @@ type ExchangeShopInfo struct {
TelCharge int32 //话费
ShopType int32 //商品类型
TelData []*shop.TelChargeData //运营商配置
+ Items []*shop.ItemInfo //道具
}
func (this *ShopMgr) ModuleName() string {
@@ -777,6 +778,13 @@ func (this *ShopMgr) GetExchangeData(platform string, id int32) *ExchangeShopInf
Url: info.Url,
})
}
+ var items []*shop.ItemInfo
+ for _, v := range data.GetItems() {
+ items = append(items, &shop.ItemInfo{
+ ItemId: v.GetItemId(),
+ ItemNum: v.GetItemNum(),
+ })
+ }
return &ExchangeShopInfo{
Id: data.Id,
Picture: data.Picture,
@@ -788,6 +796,7 @@ func (this *ShopMgr) GetExchangeData(platform string, id int32) *ExchangeShopInf
TelCharge: data.TelCharge,
ShopType: data.ShopType,
TelData: telData,
+ Items: items,
}
}
}
@@ -802,6 +811,7 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen
cdata := this.GetExchangeData(p.Platform, goodsId)
pack := &shop.SCShopExchange{
RetCode: shop.OpResultCode_OPRC_VCoinNotEnough,
+ GoodsId: goodsId,
}
if cdata == nil {
pack.RetCode = shop.OpResultCode_OPRC_ExchangeSoldOut
@@ -904,6 +914,7 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen
}), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
pack := &shop.SCShopExchange{
RetCode: shop.OpResultCode_OPRC_Error,
+ GoodsId: goodsId,
}
as := data.(*webapi_proto.SACreateExchangeOrder) // 必不为空
@@ -1036,6 +1047,13 @@ func (this *ShopMgr) ExchangeList(p *Player) (ret bool) {
Url: info.Url,
})
}
+ var items []*shop.ItemInfo
+ for _, v := range v.GetItems() {
+ items = append(items, &shop.ItemInfo{
+ ItemId: v.GetItemId(),
+ ItemNum: v.GetItemNum(),
+ })
+ }
pack.Infos = append(pack.Infos, &shop.ShopExchangeInfo{
Type: v.Type,
Picture: v.Picture,
@@ -1052,6 +1070,7 @@ func (this *ShopMgr) ExchangeList(p *Player) (ret bool) {
NotVipShopLimit: v.NotVipShopLimit,
ShopType: v.ShopType,
TelData: telData,
+ Items: items,
})
}
}
diff --git a/worldsrv/tmmatch.go b/worldsrv/tmmatch.go
index 5442439..05398c0 100644
--- a/worldsrv/tmmatch.go
+++ b/worldsrv/tmmatch.go
@@ -29,6 +29,7 @@ type TmGradeInfo struct {
copySnid int32
copyLv int32
copyRoleId int32
+ CopySkinId int32
}
type TmMatch struct {
@@ -73,6 +74,8 @@ func (tm *TmMatch) Start() {
tm.BroadcastMessage(int(tournament.TOURNAMENTID_PACKET_TM_SCTMStart), pack)
logger.Logger.Trace("SCTMStart ", pack)
+ tm.RobotGradesDecline(1)
+
//创建房间
timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool {
MatchSceneMgrSingleton.MatchStart(tm)
@@ -86,6 +89,10 @@ func (tm *TmMatch) Stop() {
logger.Logger.Trace("(this *TmMatch) Stop()")
}
+func (tm *TmMatch) GetTotalRound() int32 {
+ return int32(len(tm.gmd.GetMatchPromotion()) - 1)
+}
+
func (tm *TmMatch) BroadcastMessage(packetId int, rawPack interface{}) {
mgs := make(map[*netlib.Session][]*srvproto.MCSessionUnion)
for _, tmp := range tm.TmPlayer {
@@ -135,7 +142,7 @@ func (tm *TmMatch) CreateRobotGrades(round int) {
tm.robotGrades[round-1] = []*TmGradeInfo{}
var snids []int32
var lvs []int32
- var roleIds []int32
+ var roleIds, skinIds []int32
for _, player := range PlayerMgrSington.snidMap {
if len(snids) > int(lastPromotionNum) {
break
@@ -148,6 +155,9 @@ func (tm *TmMatch) CreateRobotGrades(round int) {
roleId = player.Roles.ModId
}
roleIds = append(roleIds, roleId)
+ if player.Skin != nil && player.Skin.ModId != 0 {
+ skinIds = append(skinIds, player.Skin.ModId)
+ }
}
}
if len(snids) <= int(lastPromotionNum) {
@@ -164,6 +174,7 @@ func (tm *TmMatch) CreateRobotGrades(round int) {
snids = append(snids, tmpSnid)
lvs = append(lvs, 1)
roleIds = append(roleIds, int32(2000001))
+ skinIds = append(skinIds, 300001)
}
}
for i := 0; i < int(lastPromotionNum); i++ {
@@ -172,12 +183,22 @@ func (tm *TmMatch) CreateRobotGrades(round int) {
copySnid: snids[i],
copyLv: lvs[i],
copyRoleId: roleIds[i],
+ CopySkinId: skinIds[i],
}
tm.robotGrades[round-1] = append(tm.robotGrades[round-1], gradeInfo)
}
}
sort.Slice(tm.robotGrades[round-1], func(i, j int) bool {
- return tm.robotGrades[round-1][i].grade > tm.robotGrades[round-1][j].grade
+ if tm.robotGrades[round-1][i].copySnid > 0 && tm.robotGrades[round-1][j].copySnid == 0 {
+ return true
+ }
+ if tm.robotGrades[round-1][i].copySnid > 0 && tm.robotGrades[round-1][j].copySnid > 0 {
+ return tm.robotGrades[round-1][i].grade > tm.robotGrades[round-1][j].grade
+ }
+ if tm.robotGrades[round-1][i].copySnid == 0 && tm.robotGrades[round-1][j].copySnid > 0 {
+ return false
+ }
+ return false
})
// 当前轮数据
@@ -209,6 +230,7 @@ func (tm *TmMatch) CreateRobotGrades(round int) {
copySnid: tm.robotGrades[round-1][index].copySnid,
copyLv: tm.robotGrades[round-1][index].copyLv,
copyRoleId: tm.robotGrades[round-1][index].copyRoleId,
+ CopySkinId: tm.robotGrades[round-1][index].CopySkinId,
}
tm.robotGrades[round] = append(tm.robotGrades[round], gradeInfo)
}
@@ -235,6 +257,7 @@ func (tm *TmMatch) CreateRobotGrades(round int) {
copySnid: tm.robotGrades[round-1][index].copySnid,
copyLv: tm.robotGrades[round-1][index].copyLv,
copyRoleId: tm.robotGrades[round-1][index].copyRoleId,
+ CopySkinId: tm.robotGrades[round-1][index].CopySkinId,
}
tm.robotGrades[round] = append(tm.robotGrades[round], gradeInfo)
}
@@ -283,6 +306,7 @@ func (tm *TmMatch) RobotGradesDecline(round int) {
copySnid: info.copySnid,
copyLv: info.copyLv,
copyRoleId: info.copyRoleId,
+ CopySkinId: info.CopySkinId,
}
tm.robotGrades[lastRound][i] = gradeInfo
if info.copySnid != 0 {
@@ -291,11 +315,11 @@ func (tm *TmMatch) RobotGradesDecline(round int) {
}
}
}
- logger.Logger.Tracef("======积分衰减======当前第 %v 轮============", round)
- for i, infos := range tm.robotGrades {
- logger.Logger.Tracef(">>>积分历史>>> 第 %v 轮", i)
- for _, info := range infos {
- logger.Logger.Trace("Snid: ", info.copySnid, " grade: ", info.grade, " copyLv: ", info.copyLv, " copyRoleId: ", info.copyRoleId)
- }
- }
+ //logger.Logger.Tracef("======积分衰减======当前第 %v 轮============", round)
+ //for i, infos := range tm.robotGrades {
+ // logger.Logger.Tracef(">>>积分历史>>> 第 %v 轮", i)
+ // for _, info := range infos {
+ // logger.Logger.Trace("Snid: ", info.copySnid, " grade: ", info.grade, " copyLv: ", info.copyLv, " copyRoleId: ", info.copyRoleId)
+ // }
+ //}
}
diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go
index c668c14..cbb198c 100644
--- a/worldsrv/tournament.go
+++ b/worldsrv/tournament.go
@@ -24,13 +24,8 @@ import (
"mongo.games.com/game/webapi"
)
-func init() {
- module.RegisteModule(TournamentMgr, time.Second, 0)
- ClockMgrSington.RegisteSinker(TournamentMgr)
-}
-
+// 如果这里比赛类型没有,默认是锦标赛
const (
- // 如果这里比赛类型没有,默认是锦标赛
MatchTypeNormal = iota + 1 // 锦标赛
MatchTypeChampion // 冠军赛/实物赛
MatchTypeVIP // vip比赛
@@ -54,6 +49,11 @@ const (
DaiDing = 2 // 待定
)
+func init() {
+ module.RegisteModule(TournamentMgr, time.Second, 0)
+ ClockMgrSington.RegisteSinker(TournamentMgr)
+}
+
var TournamentMgr = NewTournament()
type PerRankInfo struct {
@@ -78,8 +78,8 @@ type SignupInfo struct {
type PlayerRoundInfo struct {
players []*PlayerMatchContext // 本轮结算信息
- ranks []*PlayerMatchContext // 本来排名
- num int // 本来完成人数
+ ranks []*PlayerMatchContext // 本轮排名
+ num int // 本轮完成人数
}
type Tournament struct {
@@ -91,7 +91,7 @@ type Tournament struct {
playerWaitStart map[int32]int64 // 等待时间 玩家Id:等待时长秒
matches map[int32]map[int64]*TmMatch // 开始比赛的数据,比赛配置Id:比赛顺序序号:一场开始的比赛数据
players map[int64]map[int32]*PlayerMatchContext // 比赛中玩家 比赛顺序序号:玩家id:玩家信息
- roundPlayers map[int64]map[int32]*PlayerRoundInfo // 每轮比赛数据 比赛顺序序号:第几轮
+ roundPlayers map[int64]map[int32]*PlayerRoundInfo // 每轮比赛数据备份 比赛顺序序号:第几轮
finalPerRank map[int64][]*PerRankInfo // 本场比赛排名,每淘汰一位记录一位,最后记录决赛玩家 比赛顺序序号
MatchAwardNum map[string]map[int32]int32 // 比赛配置Id:比赛奖励次數
}
@@ -137,15 +137,16 @@ func (this *Tournament) checkData(cfg *webapiproto.GameMatchDate) bool {
if num%4 != 0 { //必须是4的整倍数
return false
}
- if num <= cfg.MatchPromotion[i+1] { //必须递减
- return false
- }
+ //if num <= cfg.MatchPromotion[i+1] { //必须递减
+ // return false
+ //}
}
}
return true
}
+// 记录淘汰人员
func (this *Tournament) addFinalPlayer(sortId int64, p *PerRankInfo) {
if this.finalPerRank[sortId] == nil {
this.finalPerRank[sortId] = []*PerRankInfo{}
@@ -153,6 +154,7 @@ func (this *Tournament) addFinalPlayer(sortId int64, p *PerRankInfo) {
this.finalPerRank[sortId] = append(this.finalPerRank[sortId], p)
}
+// 查询一场比赛某轮的历史数据
func (this *Tournament) getRoundPlayer(sortId int64, round int32) *PlayerRoundInfo {
_, ok := this.roundPlayers[sortId]
if !ok {
@@ -168,6 +170,96 @@ func (this *Tournament) getRoundPlayer(sortId int64, round int32) *PlayerRoundIn
return v
}
+// GetRemainNum 剩余比赛人数
+func (this *Tournament) GetRemainNum(sortId int64) int32 {
+ tm := this.GetTm(sortId)
+ if tm == nil {
+ return 0
+ }
+
+ round := this.GetRound(sortId)
+ l := tm.gmd.GetMatchPromotion()
+ if round <= int32(len(l)) {
+ return l[round-1]
+ }
+ return 0
+}
+
+type MatchPlayerInfo struct {
+ SnId int32
+ RoleId int32
+ SkinId int32
+ Rank int32
+ Grade int32
+}
+
+// GetRemainPlayer 未淘汰的人
+func (this *Tournament) GetRemainPlayer(sortId int64) []*MatchPlayerInfo {
+ tm := this.GetTm(sortId)
+ if tm == nil {
+ return nil
+ }
+ round := this.GetRound(sortId)
+ useRobot := this.IsRobotOn(tm.gmd)
+
+ var ret []*MatchPlayerInfo
+
+ realPlayer := func() {
+ for _, v := range tm.TmPlayer {
+ p := PlayerMgrSington.GetPlayerBySnId(v.SnId)
+ if p != nil {
+ ret = append(ret, &MatchPlayerInfo{
+ SnId: v.SnId,
+ RoleId: p.GetRoleId(),
+ SkinId: p.Skin.ModId,
+ Grade: 1000,
+ })
+ }
+ }
+ }
+
+ robotPlayer := func(n int) {
+ for _, v := range tm.robotGrades[n] {
+ ret = append(ret, &MatchPlayerInfo{
+ SnId: v.copySnid,
+ RoleId: v.copyRoleId,
+ SkinId: v.CopySkinId,
+ Grade: v.grade,
+ })
+ }
+ }
+
+ if round <= 1 {
+ if useRobot {
+ robotPlayer(0)
+ realPlayer()
+ } else {
+ realPlayer()
+ }
+ } else {
+ if useRobot {
+ robotPlayer(int(round - 1))
+ } else {
+ if this.roundPlayers[sortId] != nil {
+ d := this.roundPlayers[sortId][round-1]
+ if d != nil {
+ for _, v := range d.ranks {
+ ret = append(ret, &MatchPlayerInfo{
+ SnId: v.copySnid,
+ RoleId: v.copyRoleId,
+ SkinId: v.copySkinId,
+ Grade: v.grade,
+ })
+ }
+ }
+ }
+ }
+ }
+ return ret
+}
+
+// GetSignUpPlayers 获取报名人员
+// id 比赛配置id
func (this *Tournament) GetSignUpPlayers(platform string, id int32) map[int32]*TmPlayer {
v, ok := this.signupPlayers[platform]
if !ok {
@@ -194,7 +286,7 @@ func (this *Tournament) UpdateData(init bool, data *webapiproto.GameMatchDateLis
this.FixMatchTimeStamp(v)
configs[v.Id] = v
} else {
- logger.Logger.Error("GameMatchDate error: ", v)
+ logger.Logger.Errorf("GameMatchDate check error: %v", v)
}
}
@@ -239,14 +331,6 @@ func (this *Tournament) UpdateData(init bool, data *webapiproto.GameMatchDateLis
}
}
this.GameMatchDateList[data.Platform] = configs
- //拉取数据
- if this.MatchAwardNum == nil {
- ret, err := model.GetMatchAwardLog(data.Platform)
- logger.Logger.Tracef("ret = %v,err = %v", ret, err)
- if err == nil {
- this.MatchAwardNum = ret.AwardNum
- }
- }
// 通知平台玩家数据更新
if !init {
//todo 优化
@@ -784,7 +868,7 @@ func (this *Tournament) CreatePlayerMatchContext(p *Player, m *TmMatch, seq int)
roleId = p.Roles.ModId
}
- mc := NewMatchContext(p, m, 1000, p.SnId, 1, roleId, seq)
+ mc := NewMatchContext(p, m, 1000, p.SnId, 1, roleId, p.Skin.ModId, seq)
if mc != nil {
if this.players[m.SortId] == nil {
this.players[m.SortId] = make(map[int32]*PlayerMatchContext)
@@ -796,6 +880,7 @@ func (this *Tournament) CreatePlayerMatchContext(p *Player, m *TmMatch, seq int)
return nil
}
+// 是否淘汰
func (this *Tournament) isOut(sortId int64, snid int32) bool {
if this.finalPerRank[sortId] != nil {
for _, info := range this.finalPerRank[sortId] {
@@ -959,7 +1044,9 @@ func (this *Tournament) NextRoundStartSingle(sortId int64, playerCtx *PlayerMatc
}
if promotionNum != 1 {
- arr = append(arr[:promotionNum])
+ if int(promotionNum) < len(arr) {
+ arr = arr[:promotionNum]
+ }
playerCtx.tm.robotGrades[int(round)] = arr
}
@@ -1514,6 +1601,72 @@ func (this *Tournament) GetSCTMInfosPack(platform, channelName string) *tourname
return pack
}
+// GetTmMatch 查询比赛中的比赛
+func (this *Tournament) GetTmMatch(plt string, matchId int32, channelName string, audience bool, sortId int64) []*TmMatch {
+ matches := this.GetAllMatchInfo(plt)
+ if matches == nil {
+ return nil
+ }
+
+ var ids []int32
+ for id, info := range matches {
+ if info == nil || info.MatchSwitch != 1 {
+ continue
+ }
+ if matchId > 0 && id != matchId {
+ continue
+ }
+ if channelName != "" && !common.InMatchChannel(info.OnChannelName, channelName) {
+ continue
+ }
+ if info.GetAudienceSwitch() == 1 != audience {
+ continue
+ }
+ ids = append(ids, id)
+ }
+
+ var ret []*TmMatch
+ if sortId > 0 {
+ for _, v := range ids {
+ d := this.matches[v]
+ if d != nil {
+ r, ok := d[sortId]
+ if ok && r != nil {
+ return []*TmMatch{r}
+ }
+ }
+ }
+ return ret
+ }
+
+ for _, v := range ids {
+ for _, vv := range this.matches[v] {
+ ret = append(ret, vv)
+ }
+ }
+
+ return ret
+}
+
+func (this *Tournament) GetTmRoom(plt string, matchId int32, channelName string, audience bool, sortId int64) []*Scene {
+ tm := this.GetTmMatch(plt, matchId, channelName, audience, sortId)
+
+ sort.Slice(tm, func(i, j int) bool {
+ return tm[i].SortId < tm[j].SortId
+ })
+
+ var ret []*Scene
+ for _, v := range tm {
+ d := SceneMgrSingleton.GetMatchRoom(v.SortId)
+ sort.Slice(d, func(i, j int) bool {
+ return d[i].createTime.Before(d[j].createTime)
+ })
+ ret = append(ret, d...)
+ }
+
+ return ret
+}
+
func (this *Tournament) MakeMatchLog(platform string, tmId int32, sortId int64) *model.MatchLog {
gameMatchDate := this.GetMatchInfo(platform, tmId, sortId)
if gameMatchDate == nil {
@@ -1606,6 +1759,20 @@ func (this *Tournament) ModuleName() string {
func (this *Tournament) Init() {
logger.Logger.Trace("Tournament Init")
+ for _, v := range PlatformMgrSingleton.GetPlatforms() {
+ if v == nil || v.IdStr == "0" {
+ continue
+ }
+ ret, err := model.GetMatchAward(v.IdStr)
+ if err != nil {
+ logger.Logger.Warnf("GetMatchAward error %v", err)
+ continue
+ }
+ if this.MatchAwardNum == nil {
+ this.MatchAwardNum = make(map[string]map[int32]int32)
+ }
+ this.MatchAwardNum[v.IdStr] = ret.Award
+ }
}
func (this *Tournament) Update() {
@@ -1648,35 +1815,42 @@ func (this *Tournament) Update() {
}
}
}
+
func (this *Tournament) OnDayTimer() {
- this.MatchAwardNum = make(map[string]map[int32]int32)
- this.Save()
- logger.Logger.Trace("比赛场每日库存清理!!!")
+ for k := range this.MatchAwardNum {
+ this.MatchAwardNum[k] = make(map[int32]int32)
+ }
+ task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
+ this.SaveMatchAward()
+ return nil
+ }), nil, "save_match_award_times").Start()
}
+
func (this *Tournament) Shutdown() {
- // 保存数据
- this.Save()
+ this.SaveMatchAward()
+ module.UnregisteModule(this)
}
-func (this *Tournament) Save() {
- logger.Logger.Info("保存比赛场每日奖励数据!!!!", this.MatchAwardNum)
+
+func (this *Tournament) SaveMatchAward() {
if this.MatchAwardNum == nil {
return
}
- for platform, _ := range this.MatchAwardNum {
- matchAwardLog := model.NewMatchAwardLog()
- matchAwardLog.AwardNum = this.MatchAwardNum
- matchAwardLog.Platform = platform
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- err := model.InsertOrUpdateMatchAwardLog(matchAwardLog)
- if err != nil {
- logger.Logger.Error("saveMatchAwardLog error %v", err)
- return err
- }
- return nil
- }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) {
- })).StartByFixExecutor("saveMatchAwardLogTask")
+ logger.Logger.Tracef("保存比赛场奖励领取次数")
+ for platform, v := range this.MatchAwardNum {
+ d := &model.MatchAward{
+ Platform: platform,
+ Award: make(map[int32]int32),
+ }
+ for k, vv := range v {
+ d.Award[k] = vv
+ }
+ err := model.UpsertMatchAward(d)
+ if err != nil {
+ logger.Logger.Errorf("SaveMatchAward error %v", err)
+ }
}
}
+
func (this *Tournament) getWeekDay() int {
getWeekNum := func(t time.Time) int {
strWeek := []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
@@ -1709,7 +1883,7 @@ func (this *Tournament) FixMatchTimeStamp(d *webapiproto.GameMatchDate) {
week := this.getWeekDay()
st := time.Unix(d.MatchTimeStamp[0], 0).In(l)
et := time.Unix(d.MatchTimeStamp[1], 0).In(l)
- logger.Logger.Tracef("FixMatchTimeStamp 1 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et)
+ //logger.Logger.Tracef("FixMatchTimeStamp 1 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et)
// 重复时间段比赛时间
for _, v := range d.MatchTimeWeek {
if v == int32(week) {
@@ -1721,8 +1895,7 @@ func (this *Tournament) FixMatchTimeStamp(d *webapiproto.GameMatchDate) {
st = time.Unix(d.MatchTimeStamp[0], 0).In(l)
et = time.Unix(d.MatchTimeStamp[1], 0).In(l)
- logger.Logger.Tracef("FixMatchTimeStamp 2 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et)
-
+ //logger.Logger.Tracef("FixMatchTimeStamp 2 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et)
break
}
}
@@ -1736,6 +1909,8 @@ func (this *Tournament) OnHourTimer() {
}
}
+// GetMatchAwardNum 剩余奖励数量
+// id 比赛配置id
func (this *Tournament) GetMatchAwardNum(platform string, id int32) int32 {
var num int32
if this.MatchAwardNum != nil && this.MatchAwardNum[platform] != nil {
@@ -1759,3 +1934,11 @@ func (this *Tournament) GetMatchAwardNum(platform string, id int32) int32 {
}
return num
}
+
+func (this *Tournament) GetRound(sortId int64) int32 {
+ d, ok := this.roundPlayers[sortId]
+ if !ok || d == nil {
+ return 1
+ }
+ return int32(len(d))
+}
diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go
index a882271..1620b44 100644
--- a/worldsrv/trascate_webapi.go
+++ b/worldsrv/trascate_webapi.go
@@ -1964,6 +1964,65 @@ func init() {
pack.Msg = "no any data"
return common.ResponseTag_Ok, pack
}
+
+ f := func(plt string, snid int32) {
+ var alipayAcc, alipayAccName, bankAccount, bankAccName, channelId string
+ if val, ok := playerMap["AlipayAccount"]; ok {
+ if str, ok := val.(string); ok {
+ alipayAcc = str
+ }
+ }
+ if val, ok := playerMap["AlipayAccName"]; ok {
+ if str, ok := val.(string); ok {
+ alipayAccName = str
+ }
+ }
+ if val, ok := playerMap["BankAccount"]; ok {
+ if str, ok := val.(string); ok {
+ bankAccount = str
+ }
+ }
+ if val, ok := playerMap["BankAccName"]; ok {
+ if str, ok := val.(string); ok {
+ bankAccName = str
+ }
+ }
+ if val, ok := playerMap["ChannelId"]; ok {
+ if str, ok := val.(string); ok {
+ channelId = str
+ }
+ }
+
+ if alipayAcc != "" || alipayAccName != "" {
+ task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
+ model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Ali,
+ alipayAccName, alipayAcc, 2)
+ return nil
+ }), nil, "NewBankBindLog").Start()
+ }
+ if bankAccount != "" || bankAccName != "" {
+ task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
+ model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Bank,
+ bankAccName, bankAccount, 2)
+ return nil
+ }), nil, "NewBankBindLog").Start()
+ }
+ if channelId != "" {
+ task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
+ a, err := model.GetAccountBySnid(plt, snid)
+ if err != nil {
+ logger.Logger.Errorf("GetAccountBySnid error: %v", err)
+ return nil
+ }
+ a.ChannelId = channelId
+ if err = model.UpdateAccount(a); err != nil {
+ logger.Logger.Errorf("UpdateAccount error: %v", err)
+ }
+ return nil
+ }), nil).StartByExecutor("UpdateChannelId")
+ }
+ }
+
pack.Tag = webapiproto.TagCode_SUCCESS
player := PlayerMgrSington.GetPlayerBySnId(msg.SnId)
if player != nil {
@@ -1985,7 +2044,7 @@ func init() {
if v.FieldByName(k).CanInterface() {
switch f.Type.Kind() {
case reflect.Int64, reflect.Int32:
- a, _ := strconv.ParseInt((fmt.Sprintf("%v", n)), 10, 64)
+ a, _ := strconv.ParseInt(fmt.Sprintf("%v", n), 10, 64)
s.FieldByName(k).SetInt(a)
case reflect.Bool:
s.FieldByName(k).SetBool(n.(bool))
@@ -2002,42 +2061,8 @@ func init() {
pd = SetInfo(pd, *pd, playerMap)
player.dirty = true
player.SendDiffData()
- var alipayAcc, alipayAccName, bankAccount, bankAccName string
- if val, ok := playerMap["AlipayAccount"]; ok {
- if str, ok := val.(string); ok {
- alipayAcc = str
- }
- }
- if val, ok := playerMap["AlipayAccName"]; ok {
- if str, ok := val.(string); ok {
- alipayAccName = str
- }
- }
- if val, ok := playerMap["BankAccount"]; ok {
- if str, ok := val.(string); ok {
- bankAccount = str
- }
- }
- if val, ok := playerMap["BankAccName"]; ok {
- if str, ok := val.(string); ok {
- bankAccName = str
- }
- }
- if alipayAcc != "" || alipayAccName != "" {
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Ali,
- alipayAccName, alipayAcc, 2)
- return nil
- }), nil, "NewBankBindLog").Start()
- }
- if bankAccount != "" || bankAccName != "" {
- task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
- model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Bank,
- bankAccName, bankAccount, 2)
- return nil
- }), nil, "NewBankBindLog").Start()
- }
pack.Msg = "success"
+ f(pd.Platform, pd.SnId)
return common.ResponseTag_Ok, pack
}
} else {
@@ -2053,35 +2078,7 @@ func init() {
//直接操作数据库
err := model.UpdatePlayerElement(msg.Platform, msg.SnId, playerMap)
if err == nil {
- var alipayAcc, alipayAccName, bankAccount, bankAccName string
- if val, ok := playerMap["AlipayAccount"]; ok {
- if str, ok := val.(string); ok {
- alipayAcc = str
- }
- }
- if val, ok := playerMap["AlipayAccName"]; ok {
- if str, ok := val.(string); ok {
- alipayAccName = str
- }
- }
- if val, ok := playerMap["BankAccount"]; ok {
- if str, ok := val.(string); ok {
- bankAccount = str
- }
- }
- if val, ok := playerMap["BankAccName"]; ok {
- if str, ok := val.(string); ok {
- bankAccName = str
- }
- }
- if alipayAcc != "" || alipayAccName != "" {
- model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Ali,
- alipayAccName, alipayAcc, 2)
- }
- if bankAccount != "" || bankAccName != "" {
- model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Bank,
- bankAccName, bankAccount, 2)
- }
+ f(msg.Platform, msg.SnId)
} else if err != nil {
logger.Logger.Error("UpdatePlayerElement task marshal data error:", err)
}
@@ -3730,6 +3727,7 @@ func init() {
})).StartByExecutor(fmt.Sprint(msg.GetSnid()))
return common.ResponseTag_TransactYield, pack
}))
+
WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/player/AddItem", WebAPIHandlerWrapper(
func(tNode *transact.TransNode, params []byte) (int, proto.Message) {
pack := &webapiproto.SAAddItemById{}
diff --git a/xlsx/DB_GameFree.xlsx b/xlsx/DB_GameFree.xlsx
index 0e61304..27a3274 100644
Binary files a/xlsx/DB_GameFree.xlsx and b/xlsx/DB_GameFree.xlsx differ
diff --git a/xlsx/DB_GameRule.xlsx b/xlsx/DB_GameRule.xlsx
index 31ead19..eddc77e 100644
Binary files a/xlsx/DB_GameRule.xlsx and b/xlsx/DB_GameRule.xlsx differ
diff --git a/xlsx/DB_VIP.xlsx b/xlsx/DB_VIP.xlsx
index 5452940..0060af6 100644
Binary files a/xlsx/DB_VIP.xlsx and b/xlsx/DB_VIP.xlsx differ
diff --git a/xlsx/DB_VIPShow.xlsx b/xlsx/DB_VIPShow.xlsx
new file mode 100644
index 0000000..96e9c67
Binary files /dev/null and b/xlsx/DB_VIPShow.xlsx differ