From 6adba98ddb06cb0520f01138bdfccbb3e4ec0d17 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 6 Dec 2024 16:00:43 +0800 Subject: [PATCH 01/30] =?UTF-8?q?=E7=9B=91=E6=8E=A7=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/svc/m_monitor.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dbproxy/svc/m_monitor.go b/dbproxy/svc/m_monitor.go index 9fe96be..f3ffef5 100644 --- a/dbproxy/svc/m_monitor.go +++ b/dbproxy/svc/m_monitor.go @@ -13,6 +13,7 @@ import ( "mongo.games.com/game/dbproxy/mongo" "mongo.games.com/game/mgrsrv/api" "mongo.games.com/game/model" + "mongo.games.com/game/webapi" "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" @@ -119,6 +120,8 @@ func init() { gob.Register(map[string]*model.APITransactStats{}) gob.Register(api.ApiStats{}) // 这里依赖了mgrsrv的结构体,会导致mgrsrv初始化,最好是把结构体放到一个公共包里,不要两个不相关的程序有直接依赖 gob.Register(map[string]api.ApiStats{}) + gob.Register(webapi.ApiStats{}) + gob.Register(map[string]webapi.ApiStats{}) gob.Register(mgo.Stats{}) gob.Register(profile.TimeElement{}) gob.Register(map[string]profile.TimeElement{}) From b56a874b36911f883c543c01c7ddcfba0e8a5d63 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 7 Dec 2024 10:20:06 +0800 Subject: [PATCH 02/30] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=81=E4=B8=89?= =?UTF-8?q?=E5=BC=A0=E5=85=A8=E5=9E=92=E6=89=93=E5=88=86=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/thirteen/scene.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gamesrv/thirteen/scene.go b/gamesrv/thirteen/scene.go index bd04c0f..2659e20 100644 --- a/gamesrv/thirteen/scene.go +++ b/gamesrv/thirteen/scene.go @@ -1100,10 +1100,10 @@ func (this *SceneEx) CountScore() { playerEx.winAllPlayers[k] += v // 全垒打分数 if playerEx.Pos == this.isCanAllHitPos { - this.seats[k].score[5] -= v - this.seats[k].winAllPlayers[playerEx.Pos] -= v - playerEx.score[5] += v - playerEx.winAllPlayers[k] += v + this.seats[k].score[5] -= v * 2 + this.seats[k].winAllPlayers[playerEx.Pos] -= v * 2 + playerEx.score[5] += v * 2 + playerEx.winAllPlayers[k] += v * 2 } } } From 3e97f97d385daee03c0f87a2e8c63ee56e153070 Mon Sep 17 00:00:00 2001 From: "DESKTOP-45ANQ2C\\unis" <121212121@qq.com> Date: Sat, 7 Dec 2024 17:18:25 +0800 Subject: [PATCH 03/30] =?UTF-8?q?=E5=8D=81=E4=B8=89=E6=B0=B4=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=89=8C=E5=9E=8B=E6=AF=94=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamerule/thirteen/logic_test.go | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gamerule/thirteen/logic_test.go b/gamerule/thirteen/logic_test.go index 2679cdf..08cf3bb 100644 --- a/gamerule/thirteen/logic_test.go +++ b/gamerule/thirteen/logic_test.go @@ -279,3 +279,69 @@ func TestLogic_CompareFive(t *testing.T) { func TestLogic_IsDP(t *testing.T) { } + +func TestStatisticsPokerType(t *testing.T) { + poker := NewPokers(1, false) + if poker == nil { + return + } + + logic := new(Logic) + + loop := 2000000 + allTypeData := make([]int, PokersTypeMax) + specialAllTypeData := make([]int, SpecialTypeMax) + + totalCnt := 0 + stotalCnt := 0 + + for i := 0; i < loop; i++ { + poker.Init() + cardsArr := make([][13]int, poker.N*4) + //cardsGroup := make([]map[int]*Group, poker.N*4) + + for k := range cardsArr { + + cardsArr[k] = poker.Get13Crads() + specialType := logic.GetSpecialType(cardsArr[k]) + specialAllTypeData[specialType]++ + stotalCnt++ + + //cardsGroup[k] = logic.Suggest(cardsArr[k]) + // + //cardsO := GetMaxCard(cardsGroup[k]) + // + //headType := logic.GetType(cardsO.Head[:]) + //midType := logic.GetType(cardsO.Mid[:]) + //endType := logic.GetType(cardsO.End[:]) + // + //allTypeData[headType]++ + //totalCnt++ + //allTypeData[midType]++ + //totalCnt++ + //allTypeData[endType]++ + //totalCnt++ + //t.Logf("头牌类型:%v 中牌类型: %v 尾牌类型: %v \n", PokersTypeName[headType], PokersTypeName[midType], PokersTypeName[endType]) + } + + } + + t.Logf("共%v次循环", loop) + //ccc := 0.0 + for pType, count := range allTypeData { + percent := (float64(count) / float64(totalCnt)) * 100 + // t.Logf("牌类型:%v 占百分比: %.2f \n", PokersTypeName[pType], percent) + t.Logf("%v %.2f\n", PokersTypeName[pType], percent) + //ccc += percent + } + + t.Logf("特殊牌型共%v次循环", loop) + //ccc := 0.0 + for pType, count := range specialAllTypeData { + percent := (float64(count) / float64(stotalCnt)) * 100 + // t.Logf("牌类型:%v 占百分比: %.2f \n", PokersTypeName[pType], percent) + t.Logf("%v %.10f\n", SpecialTypeName[pType], percent) + //ccc += percent + } + +} From 343d2466ef3cc6af14582ddedaeac9c43ecd62d6 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 7 Dec 2024 18:05:37 +0800 Subject: [PATCH 04/30] =?UTF-8?q?=E5=8D=81=E4=B8=89=E5=BC=A0=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E5=8F=91=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/thirteen/scenepolicy.go | 1 + 1 file changed, 1 insertion(+) diff --git a/gamesrv/thirteen/scenepolicy.go b/gamesrv/thirteen/scenepolicy.go index 2bb9a47..23e8cd4 100644 --- a/gamesrv/thirteen/scenepolicy.go +++ b/gamesrv/thirteen/scenepolicy.go @@ -726,6 +726,7 @@ func (this *StateSendCard) OnEnter(s *base.Scene) { } else { sceneEx.testPokers = nil v.cards = sceneEx.poker.Get13Crads() + v.allGroup = sceneEx.logic.Suggest(v.cards) } } } else { From 3e853c2434c93fae83be29b4d8e68cd461bb9f5e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 9 Dec 2024 11:56:46 +0800 Subject: [PATCH 05/30] =?UTF-8?q?=E5=8D=81=E4=B8=89=E5=BC=A0=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E6=91=86=E7=89=8C=E4=B8=8D=E7=AE=97=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E7=89=8C=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/thirteen/scenepolicy.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/gamesrv/thirteen/scenepolicy.go b/gamesrv/thirteen/scenepolicy.go index 23e8cd4..a1eeda5 100644 --- a/gamesrv/thirteen/scenepolicy.go +++ b/gamesrv/thirteen/scenepolicy.go @@ -867,10 +867,6 @@ func (this *StateOp) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, param copy(playerEx.cardsO.Mid[:], common.Int64Toint(params[3:8])) copy(playerEx.cardsO.End[:], common.Int64Toint(params[8:])) playerEx.cardsO.PokerType = 0 - tp := sceneEx.logic.GetSpecialType(playerEx.cards) - if tp > 0 { - playerEx.cardsO.PokerType = tp - } sceneEx.SendSelectCards(playerEx, 0, int64(opcode)) } else { sceneEx.SendSelectCards(playerEx, int(params[0]), int64(opcode)) @@ -917,10 +913,6 @@ func (this *StateOp) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, param copy(playerEx.preCardsO.Mid[:], common.Int64Toint(params[3:8])) copy(playerEx.preCardsO.End[:], common.Int64Toint(params[8:])) playerEx.preCardsO.PokerType = 0 - tp := sceneEx.logic.GetSpecialType(playerEx.cards) - if tp > 0 { - playerEx.preCardsO.PokerType = tp - } } playerEx.SendToClient(int(thirteen.TWMmoPacketID_PACKET_SCThirteenPlayerOp), pack) From ee94c94fb747359eb6b75455ea4b4448f1e2a889 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 7 Dec 2024 17:09:19 +0800 Subject: [PATCH 06/30] =?UTF-8?q?=E5=8D=81=E4=B8=89=E5=BC=A0=E6=AF=94?= =?UTF-8?q?=E7=89=8C=E5=8C=85=E5=90=AB=E8=8A=B1=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamerule/thirteen/logic.go | 206 ++++++++++++++++++------------------- 1 file changed, 102 insertions(+), 104 deletions(-) diff --git a/gamerule/thirteen/logic.go b/gamerule/thirteen/logic.go index d6f922f..e3933b9 100644 --- a/gamerule/thirteen/logic.go +++ b/gamerule/thirteen/logic.go @@ -245,36 +245,35 @@ func (l *Logic) SortMidAndEnd(cards *Group) *Group { // 不可能 } else if n == 0 { // 逻辑点数相同 // 比花色,比三条就行了 - //n, index1, index2 := IndexCompareColorByLogic(c1, c2) - n = 0 + n, index1, index2 := IndexCompareColorByLogic(c1, c2) if n == 1 { // 花色交换,结束 - //if index1 >= 0 && index2 >= 0 { - // for k, v := range cards.Head { - // if v == r1[index1] { - // cards.Head[k] = -1 - // break - // } - // } - // for k, v := range cards.Mid { - // if v == r2[index2] { - // cards.Mid[k] = -1 - // break - // } - // } - // for k, v := range cards.Head { - // if v == -1 && r2[index2] >= 0 { - // cards.Head[k] = r2[index2] - // break - // } - // } - // for k, v := range cards.Mid { - // if v == -1 && r1[index1] >= 0 { - // cards.Mid[k] = r1[index1] - // break - // } - // } - //} + if index1 >= 0 && index2 >= 0 { + for k, v := range cards.Head { + if v == r1[index1] { + cards.Head[k] = -1 + break + } + } + for k, v := range cards.Mid { + if v == r2[index2] { + cards.Mid[k] = -1 + break + } + } + for k, v := range cards.Head { + if v == -1 && r2[index2] >= 0 { + cards.Head[k] = r2[index2] + break + } + } + for k, v := range cards.Mid { + if v == -1 && r1[index1] >= 0 { + cards.Mid[k] = r1[index1] + break + } + } + } } else if n == 0 { // 比癞子数 if l.LaiZiCount(r1) < l.LaiZiCount(r2) { @@ -381,13 +380,12 @@ func (l *Logic) SortMidAndEnd(cards *Group) *Group { } } else if n == 0 { // 点数相同 // 比花色 - //n, index1, index2 := IndexCompareColorByLogic(nHead[:], nMid[:]) - n = 0 + n, index1, index2 := IndexCompareColorByLogic(nHead[:], nMid[:]) if n == 1 { // 交换花色,结束 - //if index1 >= 0 && index2 >= 0 { - // cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1] - //} + if index1 >= 0 && index2 >= 0 { + cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1] + } } else if n == 0 { // 比癞子多少 if l.LaiZiCount(r1) < l.LaiZiCount(r2) { @@ -426,13 +424,13 @@ func (l *Logic) SortMidAndEnd(cards *Group) *Group { } } else if n == 0 { // 点数相同比花色 - //n, index1, index2 := IndexCompareColorByLogic(cards.Head[:], cards.Mid[:]) - //if n == 1 { - // // 交换最大花色的牌 - // if index1 >= 0 && index2 >= 0 { - // cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1] - // } - //} + n, index1, index2 := IndexCompareColorByLogic(cards.Head[:], cards.Mid[:]) + if n == 1 { + // 交换最大花色的牌 + if index1 >= 0 && index2 >= 0 { + cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1] + } + } } } } @@ -834,10 +832,10 @@ func (l *Logic) CompareHead(c, cs [3]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } // 比癞子数 z1, z2 := l.LaiZiCount(c[:]), l.LaiZiCount(cs[:]) if z1 < z2 { @@ -869,10 +867,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } case PokersTypeStraightFlush: _, c1 := FindMaxSameColorFlush(c[:], l.LaiZi) @@ -888,20 +886,20 @@ func (l *Logic) CompareFive(c, cs [5]int) int { } if ch1 && ch2 { // 比花色 - //n := CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n := CompareColorByLogic(c1, c2) + if n != 0 { + return n + } } else if !ch1 && !ch2 { n := CompareLogic(c1, c2) if n != 0 { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } } else { if ch1 { return -1 @@ -928,10 +926,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } case PokersTypeFullHouse: _, c1 := FindMaxGourdCards(c[:], l.LaiZi) @@ -946,10 +944,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } case PokersTypeFlush: _, c1 := FindMaxSameColors(c[:], l.LaiZi) @@ -960,10 +958,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } case PokersTypeStraight: _, c1 := FindMaxFlush(c[:], l.LaiZi) @@ -979,20 +977,20 @@ func (l *Logic) CompareFive(c, cs [5]int) int { } if ch1 && ch2 { // 比花色 - //n := CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n := CompareColorByLogic(c1, c2) + if n != 0 { + return n + } } else if !ch1 && !ch2 { n := CompareLogic(c1, c2) if n != 0 { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } } else { if ch1 { return -1 @@ -1019,10 +1017,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } case PokersTypeTwoPairs: r1, c1 := FindMaxPairs(c[:], l.LaiZi) @@ -1053,10 +1051,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } case PokersTypePair: r1, c1 := FindMaxPairs(c[:], l.LaiZi) @@ -1077,10 +1075,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c1, c2) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c1, c2) + if n != 0 { + return n + } case PokersTypeOne: // 乌龙不会有癞子 @@ -1090,10 +1088,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int { return n } // 比花色 - //n = CompareColorByLogic(c[:], cs[:]) - //if n != 0 { - // return n - //} + n = CompareColorByLogic(c[:], cs[:]) + if n != 0 { + return n + } return 0 } @@ -1136,10 +1134,10 @@ func (l *Logic) IsDP(head [3]int, mid, end [5]int) bool { return n == 1 } // 比花色 - //n = CompareColorByLogic(c1, changeMid) - //if n != 0 { - // return n == 1 - //} + n = CompareColorByLogic(c1, changeMid) + if n != 0 { + return n == 1 + } // 比癞子数 z1, z2 := l.LaiZiCount(r1), l.LaiZiCount(r2) if z1 < z2 { @@ -1164,10 +1162,10 @@ func (l *Logic) IsDP(head [3]int, mid, end [5]int) bool { return n == 1 } // 比花色 - //n = CompareColorByLogic(c1, changeMid) - //if n != 0 { - // return n == 1 - //} + n = CompareColorByLogic(c1, changeMid) + if n != 0 { + return n == 1 + } // 比癞子数 z1, z2 := l.LaiZiCount(r1), l.LaiZiCount(r2) if z1 < z2 { @@ -1184,10 +1182,10 @@ func (l *Logic) IsDP(head [3]int, mid, end [5]int) bool { return n == 1 } // 比花色 - //n = CompareColorByLogic(head[:], mid[:]) - //if n != 0 { - // return n == 1 - //} + n = CompareColorByLogic(head[:], mid[:]) + if n != 0 { + return n == 1 + } } } From 7198f8c99f19efeafca960e163a83e784ad477ac Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 9 Dec 2024 09:55:15 +0800 Subject: [PATCH 07/30] =?UTF-8?q?=E5=8D=81=E4=B8=89=E5=BC=A0=E8=8A=B1?= =?UTF-8?q?=E8=89=B2=E6=AF=94=E7=89=8C=E6=B7=BB=E5=8A=A0=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamerule/thirteen/logic_test.go | 91 +++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 32 deletions(-) diff --git a/gamerule/thirteen/logic_test.go b/gamerule/thirteen/logic_test.go index 08cf3bb..3877501 100644 --- a/gamerule/thirteen/logic_test.go +++ b/gamerule/thirteen/logic_test.go @@ -165,29 +165,6 @@ func TestLogic_CompareHead(t *testing.T) { l.LaiZi = []int{52, 53} data := [][]int{ // 比花色的 - //{1, 27, 49, 50, 43, 42, 1}, - //{47, 20, 23, 29, 36, 42, -1}, - //{0, 2, 18, 31, 21, 29, -1}, - //{45, 7, 18, 13, 15, 29, 1}, - //{14, 4, 46, 9, 1, 11, -1}, - //{7, 3, 24, 43, 50, 44, 1}, - //{5, 4, 31, 15, 33, 14, 1}, - //{21, 21, 32, 31, 38, 28, 1}, - //{47, 38, 49, 30, 34, 23, 1}, - //{14, 10, 16, 29, 30, 35, 1}, - //// - //{0, 52, 8, 7, 8, 9, 1}, - //{0, 52, 52, 7, 8, 9, 1}, - //{0, 52, 52, 7, 51, 53, 1}, - //{0, 52, 51, 7, 51, 53, -1}, - //{8, 52, 51, 7, 51, 53, 1}, - //{7, 52, 51, 7, 51, 53, 0}, - //{7, 9, 22, 22, 7, 53, -1}, - //{7, 48, 22, 22, 7, 53, 1}, - //{7, 48, 22, 22, 6, 53, 1}, - //{7, 48, 22, 22, 20, 53, -1}, - - // 不比花色 {1, 27, 49, 50, 43, 42, 1}, {47, 20, 23, 29, 36, 42, -1}, {0, 2, 18, 31, 21, 29, -1}, @@ -205,10 +182,33 @@ func TestLogic_CompareHead(t *testing.T) { {0, 52, 51, 7, 51, 53, -1}, {8, 52, 51, 7, 51, 53, 1}, {7, 52, 51, 7, 51, 53, 0}, - {7, 9, 22, 22, 7, 53, 1}, + {7, 9, 22, 22, 7, 53, -1}, {7, 48, 22, 22, 7, 53, 1}, {7, 48, 22, 22, 6, 53, 1}, - {7, 48, 22, 22, 20, 53, 1}, + {7, 48, 22, 22, 20, 53, -1}, + + // 不比花色 + //{1, 27, 49, 50, 43, 42, 1}, + //{47, 20, 23, 29, 36, 42, -1}, + //{0, 2, 18, 31, 21, 29, -1}, + //{45, 7, 18, 13, 15, 29, 1}, + //{14, 4, 46, 9, 1, 11, -1}, + //{7, 3, 24, 43, 50, 44, 1}, + //{5, 4, 31, 15, 33, 14, 1}, + //{21, 21, 32, 31, 38, 28, 1}, + //{47, 38, 49, 30, 34, 23, 1}, + //{14, 10, 16, 29, 30, 35, 1}, + //// + //{0, 52, 8, 7, 8, 9, 1}, + //{0, 52, 52, 7, 8, 9, 1}, + //{0, 52, 52, 7, 51, 53, 1}, + //{0, 52, 51, 7, 51, 53, -1}, + //{8, 52, 51, 7, 51, 53, 1}, + //{7, 52, 51, 7, 51, 53, 0}, + //{7, 9, 22, 22, 7, 53, 1}, + //{7, 48, 22, 22, 7, 53, 1}, + //{7, 48, 22, 22, 6, 53, 1}, + //{7, 48, 22, 22, 20, 53, 1}, } for _, v := range data { @@ -233,6 +233,33 @@ func TestLogic_CompareFive(t *testing.T) { l := new(Logic) l.LaiZi = []int{52, 53} data := [][]int{ + // 不比花色 + //{5, 23, 10, 6, 1, 45, 41, 20, 1, 13, 1}, + //{29, 31, 26, 1, 39, 31, 44, 17, 9, 34, -1}, + //{24, 26, 9, 10, 0, 16, 30, 7, 37, 3, -1}, + //{31, 30, 11, 33, 7, 18, 1, 36, 9, 3, 1}, + //// 牌型不同 + //{2, 15, 28, 0, 6, 12, 0, 1, 2, 3, -1}, + //// 点数不同 + //{2, 15, 28, 0, 6, 2, 15, 28, 0, 6, 0}, + //{2, 15, 28, 0, 6, 2, 15, 28, 0, 7, -1}, + //{0, 13, 4, 17, 6, 0, 13, 4, 17, 5, 1}, + //{0, 13, 5, 18, 6, 0, 13, 4, 17, 6, 1}, + //{1, 14, 4, 17, 6, 0, 13, 4, 17, 5, 1}, + //// 花色不同 + //{2, 15, 28, 0, 6, 2, 15, 28, 0, 19, 0}, + //{41, 15, 28, 0, 6, 2, 15, 28, 0, 6, 0}, + //{2, 15, 28, 0, 6, 2, 15, 28, 13, 6, 0}, + //{3, 4, 5, 6, 52, 3, 52, 5, 6, 53, 1}, + //{3, 17, 5, 6, 52, 3, 52, 5, 6, 53, -1}, + //{3, 4, 5, 6, 7, 16, 52, 18, 19, 53, 1}, + //{3, 52, 5, 6, 20, 3, 17, 18, 19, 53, 0}, + //{3, 52, 5, 6, 46, 3, 17, 18, 19, 53, 0}, + //// 癞子数不同 + //{52, 52, 7, 20, 12, 52, 7, 20, 33, 25, -1}, + //{52, 33, 7, 20, 12, 52, 7, 20, 33, 25, 0}, + + // 比花色 {5, 23, 10, 6, 1, 45, 41, 20, 1, 13, 1}, {29, 31, 26, 1, 39, 31, 44, 17, 9, 34, -1}, {24, 26, 9, 10, 0, 16, 30, 7, 37, 3, -1}, @@ -246,17 +273,17 @@ func TestLogic_CompareFive(t *testing.T) { {0, 13, 5, 18, 6, 0, 13, 4, 17, 6, 1}, {1, 14, 4, 17, 6, 0, 13, 4, 17, 5, 1}, // 花色不同 - {2, 15, 28, 0, 6, 2, 15, 28, 0, 19, 0}, - {41, 15, 28, 0, 6, 2, 15, 28, 0, 6, 0}, - {2, 15, 28, 0, 6, 2, 15, 28, 13, 6, 0}, + {2, 15, 28, 0, 6, 2, 15, 28, 0, 19, -1}, + {41, 15, 28, 0, 6, 2, 15, 28, 0, 6, 1}, + {2, 15, 28, 0, 6, 2, 15, 28, 13, 6, -1}, {3, 4, 5, 6, 52, 3, 52, 5, 6, 53, 1}, {3, 17, 5, 6, 52, 3, 52, 5, 6, 53, -1}, - {3, 4, 5, 6, 7, 16, 52, 18, 19, 53, 1}, - {3, 52, 5, 6, 20, 3, 17, 18, 19, 53, 0}, - {3, 52, 5, 6, 46, 3, 17, 18, 19, 53, 0}, + {3, 4, 5, 6, 7, 16, 52, 18, 19, 53, -1}, + {3, 52, 5, 6, 20, 3, 17, 18, 19, 53, -1}, + {3, 52, 5, 6, 46, 3, 17, 18, 19, 53, -1}, // 癞子数不同 {52, 52, 7, 20, 12, 52, 7, 20, 33, 25, -1}, - {52, 33, 7, 20, 12, 52, 7, 20, 33, 25, 0}, + {52, 33, 7, 20, 12, 52, 7, 20, 33, 25, -1}, } for _, v := range data { From 53ebe7bbdcc147b29130978305f060d3e7e5ab67 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 6 Dec 2024 09:59:10 +0800 Subject: [PATCH 08/30] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=A0=B4=E4=BA=A7=E8=A1=A5=E5=8A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/welfmgr.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index c14348e..772d847 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -113,6 +113,10 @@ func (this *WelfareMgr) GetReliefFund(p *Player, isVideo bool) { mq.Write(log) logger.Logger.Tracef("NewReliefFundLogEx WriteLog snid: %v Coin:%v", p.SnId, pack.Coin) } + if !p.IsRob { + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, + model.SystemFreeGive_GiveType_ReliefFund, model.SystemFreeGive_CoinType_Coin, coin)) + } } } logger.Logger.Tracef("GetReliefFund snid: %v pack: %v", p.SnId, pack) @@ -1114,7 +1118,7 @@ func (this *WelfareMgr) BlindBoxInfo(p *Player, bid int32) { if cyc == 1 || blindBox.Cycle == model.WelfareOpen { p.WelfData.BlindBoxId = 0 } - } // == 1代表当日循环 + } // == 1代表当日循环 if p.WelfData.BlindBoxId == 0 { // 未领取过发随机Date idx := bid From 34062ef47ebaae36d0b694dd98b146dda189a1ef Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Mon, 9 Dec 2024 10:30:37 +0800 Subject: [PATCH 09/30] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- machine/machinedoll/command.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/machine/machinedoll/command.go b/machine/machinedoll/command.go index bbe2a0f..0e4bd33 100644 --- a/machine/machinedoll/command.go +++ b/machine/machinedoll/command.go @@ -394,14 +394,14 @@ var data = []byte{ 0x01, //11 强抓力电压占用位 0x80, //12 中抓力电压 0x01, //13 中抓力电压占用位 - 0x78, //14 弱抓力电压 + 0x64, //14 弱抓力电压 0x00, //15 弱抓力电压占用位 0xE0, //16 中奖电压 0x01, //17 中奖电压占用位 0xC8, //18 强抓力时间 0x00, //19 强抓力时间占用位 - 0x14, //20 放抓时间 + 0x0A, //20 放抓时间 0x32, //21 前后速度 0x32, //22 左右速度 0x50, //23 上下速度 From e9e0aac833dd97e532a9a2aead9948d2c0d2b8ba Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 10 Dec 2024 15:19:44 +0800 Subject: [PATCH 10/30] update data --- data/DB_GameFree.dat | Bin 24371 -> 26128 bytes data/DB_GameFree.json | 1845 ++++++++++++++++++---------------- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 5519 -> 5519 bytes protocol/server/pbdata.pb.go | 1560 ++++++++++++++-------------- protocol/server/pbdata.proto | 2 + xlsx/DB_GameFree.xlsx | Bin 66196 -> 66855 bytes 7 files changed, 1789 insertions(+), 1618 deletions(-) diff --git a/data/DB_GameFree.dat b/data/DB_GameFree.dat index 4b9a383b3c0829d72ba0ef81300e8ce6a332276f..752e96ad0e9db10049c6a4668827cae16eae72db 100644 GIT binary patch delta 5165 zcmb_g2~bo=8m{Ji^SB3LfRRDuHnJQWE!~KYCs9FAi6+4dcS)8ka(L7(Tf1QpVq_IL zendoKKnc1Ubr2L37x2WG#EVsPprVlhk}A~QWGkE09)I@$_T$a4QrW7hsW<=eb@$(2 zfBnCyZy`mW5Nq)hB0Md=G7jDvD;9^9+26FXO-M;jOHED_uNSws^S^IH5&4uiT!qyZ z7hSoG4kB#+;ccZCxCrjxWMu>MEf4ViJ4DFk{B^wV77>asXDj`Rue!s1t7H5)pF@%L zbw2h!5nwPj+vb!LH-+0osD}H(1PJpLA=9>u_kBTxeaz?MB!X6`;K%5KPT>x3I0q*b zTFb6WiLl)^7{-Z9vFh))S#ijOU%#AkuDzx}4~~xS%*lbS2*sJ$V9( zCZg}LI7e(ECV{hGDxYu}zO|d?eX`RUb9zexF$bUZM0dhtFy}?kdIc!as@rjOY=woO ztE`-=Yie2##4e0Sx(Idl(-aN)u84u(Fx7rM_^6%T1^P>ucWiZqg{a$luZ8G}&iu<_ zcy>EvI!uGT{&vvf;|ovJ&T!Xd9$&yuiEtMF?dZ#j`%6c)3d?hlv{l#-UtpT=ulQ+o zz>kh|ymeoP;{vg0IJvLG^`z~Z|KR#2heNt|3P056L^#ie+F>KYcTOtJo_>p=lHxO_ z_pcjBw~d$rPJZk7^uH3}0!vQ~72&M2%4t}2;f#+T{3SGjpXCimbeXGo@Qn)Rhu_fT z;E%;y#>3tu!X*Y96ClD;r3#DX4kukySghrI+&LsO)VX?qqicXLSR}YV)eFL3Sk906 z5gc_j63IU354__VWQ;LMqVmVjNW>3$nFyt9$XGXDGh8yJK0lWpyG?T(;u01-FAAzc zy+=i;W9~*mrG=Oz6xQE1oyNTKiy(gQdg>NB|Oxj;s=)DTKErJ2La?;tAR zEmn+d7ZEzWR8B)wL@huqf%q`ZK=IL|>#q1MJ81H48)y9R(W%4T`e8sYBg@Q) zCKmcBXhSD5(d?h#Gn{EdB|y>S$9PDDzp*^Zv~w?*VVW^}ME&GJdx`LO21*H7Inf*e z8S3*(=|hMLO_1^O`K1&a#P8UwsFcS1O#Kt3w2KJ;K)6sQrT$@bcT7qtf3z~7J?sss zAuL>C$bwzr>3l>M2oVxPC1gbaAMs~!jI81fef9dtMB;MO%HHtdzDK8u3duJ$ z^$sttk(87W2`rw1{r%J; zI%!yN!2rH$=$sXV z(TeVZoJURh27QCrM1}x^JbifyRJkf(hStVWvW8Zuni=VXV_^2VJ7L%g<1_YtIDx_RpNC`m zST{D2{pX`;6LM)wA<=Cw*lR&&B?WAT_*sz(<7*9m!vkkusM6Z06!cYxy^Bx)`Z}Vk z`u+!N`LgQiOGnZichJoCFt-oVA)7!yd$Mc;q%qB~YEI<;vGNz#6#eFort;G5YbC-( z26BC_=TF-JDK1j&62sNa^BmniNGo;$#zvo#Lbns)Ciq1Az(1oaq@It7(7`;7FYi@K z2zCK`q^mG4S_PpCY$0p@E~y(K9}c>!r4#rVt}kelno6N$VJ@C$CqrJ1L08gKk=I>w zpu4bCEC*Fg0p3%JZhc`-&f%V;N5p&rwK0FBw%&$)y{$z(AM6#k5eSIQmf31!v*|d` z;i z!NS_(7>0)C-al>bKE6jRhSD*fq`aBDUd$m-|9U3= zMddJHp0hsb&Ga;C4@}I&@Im{Mq_t~PHi}uWJ8>Q5(?EFK@5F2nR%Fm6513-pH*HA9 zz~8T+e{3jbCvEt3Y*JcEl9)@NZ^e4tf5+&gjmaD0-iS-hT9>hDgQz30a^*&ZP;?*6 r#gC!#G}?sCuzF=6{J1hk=E;S#s{$c&RSY{QTn@CZ+K64oGo1ed2=Hg6 delta 2777 zcmbVOdr*{B6rX$HTRzS%h&&c>VV6Z&d5J>VV?>Zt6aZC zzUmIvdVm?|Fw=i}9pyX#?=lm*!fE5!O`MKxJbTN1uc;#jrKFWO67Rm z$Bv2NMwG=HP~>YtXPh7Ag`{iL#`M)HBE{EkeER$W*1(+7px!YGb@6`K8ZeF1d+74b z(8bXj*r8ezW@Lw9<(N6LQTvBYL3g0REDk7ql@nW7-C^rq*76-c%naj^lMsXXF=-l| zVETLL@wG!%-sTsK@0rm@BH3-2s!_#hv6Mu_Ah=0-y#F z!67&u=mOyPz^7#Mok6nsK730zt}?qkvPS!u{+x;}G}{#vZ^jLPg42G42PgMpV0Rx` z^na6lu_k0-`yUPK*Z$*Z4w)&trP?oAyupA|+~zu_VCe_2hB@GuKzJwAEaC7O00*j5 z%($SNTzF}Tf#C$4QAXLVs_Ucb1tVd3SRq#H>&3VC+ZEDrWNH}JV7|8n*D7Iy|d4B}i z5$QwoUeIK_$}`y>H8k%9Rd$F78_bcT{*Cua$QP027_EeSHPSW+gKn>03_f7`B^4(x zgmWWD;7jXZ3=$2Ivi};1*soNqRKnY%ED{RUfni=zE;5~B`qwI=CMrsz;Um%L6G|d> zIRXd5at0ZWS-on|@R)BuXg*^4w4<3DEYa6s2)}p#38h$-RX5 z^Z`iqlZZxV#a)jTiSY`l31bE$)vFdxpWxz{*+an7Pa+z9B8G!XCL#JOK|yrAT0X?C zv3dWh7Bv&Ds4PqT38%+d1`CJNXLvF(@5XB3^dRz+9+ak2nx#m+X{j{(q^ZI9o1xPy zVvs!F<$;I*D}KLOTvVU8I>+ZTP8V8#xMhK`ms{uEwnW&T)=zIQ7Ir)4PT0Yz0mGAD zgil+rAGB~lu6&3Nvk>Sgf*=} zqn%QB_OucBHEo?tU42KQcXj=+Ev&A63q$LS@p^URTGvC{aX+X zbq(INoSa{8KI89vzqu~TmA3)c(r;MgVX$dJmD7eUa_RJciqxo)=|@y_dPeB~t5u^W zIVI(eT4v}COMWx+zm=@MSLN6p1kVA;WF zn(2kE?9B!lcByZv-XK42zUq6_Q8w!(POA``Q^9FH+Hy8;IUwev$OG-gWgpBun7hFC1J#4=Q{n`>qhakM7Oq$h7O+FGIvA({X5k&E!(axY XI~?p_n1htqITisu`h}T`fwm9;WwJaq literal 384 zcmd-w<6snElw#w!*2WB`uS4m}Q2Gj#z6zq1I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevn+vlK-5jufpu52KBDoK2z7i+c9Sv(Av2ew5uz(!`GnkNpC>}yL7|6c^ Sb~ro7BA`dVFmo}`76Jfc!aOwq diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 9cf86c3fde347d3056fb66999f56872894c245a2..6eaa0b5f844e7641e1a047b641a83c258f5e0132 100644 GIT binary patch delta 148 zcmeCz?$_SH$tcLiv80zxfXj=6VW}W zo1DfgviS(NEsG>X8530Zfmu9U)*O$oFbfDxUcfIl*+9TY5Mu6vLvmgawXBnS1@fTA Qi$L`?bXINV5o~4w0P%?_A^-pY delta 135 zcmeCz?$_SH$tcLdv9Om-;6fX-7aPYCAd73W6r(HWghlQ{)BxU4xIUttyyn!JEtY_frX52o75y#jfYoB0Jd J^9VMx000{DCNuy5 diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index ad646df..ae88b26 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -4303,6 +4303,7 @@ type DB_GameFree struct { RatioMax int32 `protobuf:"varint,71,opt,name=RatioMax,proto3" json:"RatioMax,omitempty"` IsDrop int32 `protobuf:"varint,72,opt,name=IsDrop,proto3" json:"IsDrop,omitempty"` IsCustom int32 `protobuf:"varint,73,opt,name=IsCustom,proto3" json:"IsCustom,omitempty"` + GameName string `protobuf:"bytes,74,opt,name=GameName,proto3" json:"GameName,omitempty"` } func (x *DB_GameFree) Reset() { @@ -4848,6 +4849,13 @@ func (x *DB_GameFree) GetIsCustom() int32 { return 0 } +func (x *DB_GameFree) GetGameName() string { + if x != nil { + return x.GameName + } + return "" +} + type DB_GameFreeArray struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -11413,7 +11421,7 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd9, 0x11, 0x0a, + 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf5, 0x11, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 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, @@ -11555,790 +11563,792 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 0x6f, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x48, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x49, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xc1, 0x05, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x74, 0x65, 0x6d, 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, 0x22, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x53, - 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x03, 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, 0x18, 0x0a, 0x07, 0x45, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x45, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x30, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, - 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x09, 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, 0x0a, 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, 0x0b, 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, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0d, 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, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, - 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, - 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x49, - 0x63, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, - 0x31, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, - 0x65, 0x6d, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, - 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x14, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, - 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, - 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 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, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x75, 0x6e, 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, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, - 0x72, 0x72, 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, 0x03, 0x41, - 0x72, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 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, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x62, 0x6f, - 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, - 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x55, - 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x70, 0x47, - 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, - 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, - 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, - 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x44, - 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x16, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, - 0x75, 0x6c, 0x65, 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, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, - 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x64, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, - 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, - 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, - 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, - 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x0c, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x42, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, - 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, - 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xc1, 0x05, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 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, 0x22, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x03, 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, 0x18, 0x0a, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x30, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x30, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, + 0x64, 0x18, 0x09, 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, 0x0a, 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, 0x0b, 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, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 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, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x47, + 0x61, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x47, + 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x3d, + 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x37, 0x0a, + 0x09, 0x47, 0x61, 0x69, 0x6e, 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, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, + 0x6e, 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, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 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, 0x03, 0x41, 0x72, 0x72, 0x22, 0x87, + 0x02, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 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, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, + 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x62, 0x6f, + 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, + 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, + 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, + 0x64, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, + 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xb3, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 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, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, + 0x6d, 0x65, 0x44, 0x69, 0x66, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x52, 0x75, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x64, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, + 0x64, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x10, + 0x0a, 0x03, 0x47, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, + 0x64, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x74, + 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, + 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x31, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, + 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, + 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, + 0x61, 0x78, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xf9, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x50, 0x65, 0x74, 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, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, + 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 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, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, + 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, 0x0a, + 0x0b, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 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, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, + 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 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, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0xf1, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, + 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, + 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x44, 0x61, 0x79, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, + 0x72, 0x64, 0x2e, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 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, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 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, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, + 0x43, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x76, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 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, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x49, + 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x49, + 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, + 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 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, 0x1c, 0x0a, 0x09, + 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, + 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, + 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, + 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, + 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, + 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, + 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4c, + 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, + 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, + 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, + 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, + 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, + 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, + 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4e, 0x0a, 0x10, 0x44, + 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 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, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x44, + 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, + 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, + 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, + 0x22, 0x55, 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, + 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, + 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, + 0x74, 0x61, 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x2d, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 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, 0x22, + 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 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, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, + 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, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, + 0x6f, 0x79, 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, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x31, 0x0a, + 0x0b, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 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, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xf9, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, - 0x50, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 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, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, - 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, - 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x5f, 0x50, 0x65, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, - 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, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x47, 0x69, - 0x66, 0x74, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x44, 0x1a, 0x39, 0x0a, 0x0b, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 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, 0x37, 0x0a, 0x0f, - 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 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, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf1, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, - 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, - 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, - 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, - 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x1a, 0x3a, - 0x0a, 0x0c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 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, 0x44, 0x61, - 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, + 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x28, 0x0a, 0x0f, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, + 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, + 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x0b, 0x44, + 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, + 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, + 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, + 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xe9, 0x02, + 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, + 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x74, + 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 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, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, - 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, + 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, - 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, - 0x54, 0x79, 0x70, 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, 0x22, 0x4b, 0x0a, 0x19, - 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x42, - 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 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, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, - 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, - 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, - 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x12, - 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, - 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, - 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, - 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, - 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 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, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, - 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, - 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, - 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, - 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, 0x44, - 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, - 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x52, - 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 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, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 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, + 0x10, 0x0a, 0x03, 0x4f, 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, + 0x04, 0x4f, 0x64, 0x64, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, + 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, + 0x04, 0x4f, 0x64, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, + 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xce, 0x02, 0x0a, + 0x12, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, + 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, + 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x47, + 0x6f, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, + 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, + 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x47, 0x0a, + 0x17, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, + 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, + 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, + 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, + 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, + 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x05, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 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, 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, 0x24, 0x0a, 0x0d, 0x50, + 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, + 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, + 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, + 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, + 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, + 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, + 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, + 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, + 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, + 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, + 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 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, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, + 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, + 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, + 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, + 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, + 0x73, 0x74, 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, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 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, 0x41, 0x0a, 0x14, + 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, + 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, + 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 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, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 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, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, - 0x65, 0x42, 0x6f, 0x79, 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, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x4e, - 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 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, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, - 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, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, - 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, - 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, - 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, - 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, - 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x75, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, - 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, - 0x73, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, - 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xe9, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, - 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x4b, 0x69, - 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, - 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x49, 0x74, 0x65, - 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x1a, 0x3d, - 0x0a, 0x0f, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 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, 0x39, 0x0a, - 0x10, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 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, 0x05, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 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, 0x10, 0x0a, 0x03, 0x4f, 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, - 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, - 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0xce, 0x02, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, - 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x43, - 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, 0x0a, 0x0f, 0x44, 0x42, - 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, - 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x72, - 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x69, - 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, - 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0c, 0x44, 0x42, - 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a, 0x11, - 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x45, 0x78, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x05, 0x0a, 0x0d, 0x44, 0x42, - 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 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, - 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, - 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, - 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, - 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, - 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, - 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, - 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, - 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, - 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, - 0x52, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x75, 0x63, 0x6b, - 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, - 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x45, - 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, - 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x18, - 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, - 0x72, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0x5d, 0x0a, 0x09, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 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, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, - 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x22, - 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, - 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, - 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x47, - 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x1a, 0x37, - 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 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, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 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, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, - 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 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, - 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, - 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, - 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, - 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, - 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x83, 0x04, 0x0a, 0x07, 0x44, - 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, - 0x69, 0x6e, 0x50, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6b, 0x69, - 0x6e, 0x50, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, - 0x6e, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, - 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, - 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, - 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, - 0x65, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, - 0x79, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 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, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 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, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 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, 0x20, 0x0a, 0x0b, - 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x26, - 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, - 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, + 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, + 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x14, 0x0a, 0x05, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, + 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, + 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, + 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, + 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, + 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, + 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x83, 0x04, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x53, 0x6b, + 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, + 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, + 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x2e, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x55, + 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, + 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, + 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, + 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x54, + 0x75, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x0e, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x1a, 0x3d, 0x0a, + 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 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, 0x31, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 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, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xd7, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, + 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 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, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6e, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, + 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, + 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, + 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 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, 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, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, + 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, + 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 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, 0x10, 0x0a, 0x03, + 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, + 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, + 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, + 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, + 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, + 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, + 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, + 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, + 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, + 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfd, 0x02, + 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 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, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x3b, 0x0a, - 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, + 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 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, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 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, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, - 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, - 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, - 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, - 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, - 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, - 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 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, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, - 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 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, 0x61, 0x73, 0x6b, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, - 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, - 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, - 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, - 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, - 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 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, - 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 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, 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, 0x18, 0x0a, 0x07, - 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x68, 0x6f, 0x70, 0x49, 0x64, 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, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, - 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, - 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 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, 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, - 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, 0x7c, 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, - 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x03, 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, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, - 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, 0x73, 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, + 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, + 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, + 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, + 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 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, 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 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, 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, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, + 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, + 0x64, 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, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x18, 0x0a, 0x07, + 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, + 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, + 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, + 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, + 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 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, 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, 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, 0x7c, 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, 0x12, 0x0a, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x03, 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, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, 0x73, 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 ( diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index 3995b67..cfe6626 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -839,6 +839,8 @@ message DB_GameFree { int32 IsCustom = 73; + string GameName = 74; + } message DB_GameFreeArray { diff --git a/xlsx/DB_GameFree.xlsx b/xlsx/DB_GameFree.xlsx index b7c8e83090b6941e1162715f063975d11010f92f..965eeb4018a9573044a5b9040cce2ae45a911740 100644 GIT binary patch delta 59975 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�}Sk28O9x` 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 delta 59401 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 Date: Tue, 10 Dec 2024 20:40:50 +0800 Subject: [PATCH 11/30] fix index --- .../fortunetiger/scenepolicy_fortunetiger.go | 6 ++++ gamesrv/slotspkg/assemble/struct_.go | 1 + .../excel/Base/Slots/FortuneMouse/Bet.xlsx | Bin 12969 -> 13009 bytes .../exported/excel2go/base/fortune_mouse.go | 34 +++++++++--------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/gamesrv/fortunetiger/scenepolicy_fortunetiger.go b/gamesrv/fortunetiger/scenepolicy_fortunetiger.go index 9557faf..5202fcc 100644 --- a/gamesrv/fortunetiger/scenepolicy_fortunetiger.go +++ b/gamesrv/fortunetiger/scenepolicy_fortunetiger.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneTiger) OnPlayerOp(s *base.Scene, p *base.Playe if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + var respinStatus int if data.Results[0].ArrSpins[0].Special != nil { sp, _ := json.Marshal(data.Results[0].ArrSpins[0].Special) diff --git a/gamesrv/slotspkg/assemble/struct_.go b/gamesrv/slotspkg/assemble/struct_.go index eab6537..71b7f19 100644 --- a/gamesrv/slotspkg/assemble/struct_.go +++ b/gamesrv/slotspkg/assemble/struct_.go @@ -34,6 +34,7 @@ type GameEnd struct { BetSizeIndex int64 `json:"bet_size_index"` //选中的单注下标 BetLevelIndex int64 `json:"bet_level_index"` //选中的等级下标 LinesIndex int64 `json:"lines_index"` //选中的线数下标 + BaseBetIndex int64 `json:"base_bet_index"` //选中的下注基数下标 TotalBet float64 `json:"total_bet"` //下注 BetBeforeCoin float64 `json:"bet_before_coin"` //下注前 BetAfterCoin float64 `json:"bet_after_coin"` //下注后 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneMouse/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneMouse/Bet.xlsx index 4d00e3f6c4ea6cec57dec47d95d8ef9dc795bec1..4502c038c8febb92ca40c96e4cd1ccaa9382e275 100644 GIT binary patch delta 8200 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 delta 8142 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 K@nHYs!T$kqrYO1q diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go index e03d898..db3b7e3 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go @@ -10,79 +10,79 @@ func init() { FortuneMouseBetBetChangeList = map[int64]*structs.FortuneMouseBetBetChangeList{ 0: { Index: 0, - BetChangeList: 0.15, + BetChangeList: 150000, BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { Index: 1, - BetChangeList: 0.3, + BetChangeList: 300000, BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { Index: 2, - BetChangeList: 0.45, + BetChangeList: 450000, BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { Index: 3, - BetChangeList: 0.5, + BetChangeList: 500000, BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { Index: 4, - BetChangeList: 0.75, + BetChangeList: 750000, BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { Index: 5, - BetChangeList: 1.5, + BetChangeList: 1500000, BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { Index: 6, - BetChangeList: 2.5, + BetChangeList: 2500000, BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { Index: 7, - BetChangeList: 4.5, + BetChangeList: 4500000, BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { Index: 8, - BetChangeList: 5, + BetChangeList: 5000000, BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { Index: 9, - BetChangeList: 7.5, + BetChangeList: 7500000, BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { Index: 10, - BetChangeList: 15, + BetChangeList: 15000000, BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { Index: 11, - BetChangeList: 22.5, + BetChangeList: 22500000, BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { Index: 12, - BetChangeList: 45, + BetChangeList: 45000000, BetSizeIndex: 3, BetLevelIndex: 9, }, @@ -142,19 +142,19 @@ func init() { FortuneMouseBetBetSize = map[int64]*structs.FortuneMouseBetBetSize{ 0: { Index: 0, - BetSize: 300, + BetSize: 300000000, }, 1: { Index: 1, - BetSize: 1000, + BetSize: 1000000000, }, 2: { Index: 2, - BetSize: 3000, + BetSize: 3000000000, }, 3: { Index: 3, - BetSize: 9000, + BetSize: 9000000000, }, } From 684d05642e4e3994bf525ea49884df9cb9c194e9 Mon Sep 17 00:00:00 2001 From: tomas Date: Tue, 10 Dec 2024 20:42:55 +0800 Subject: [PATCH 12/30] fix idx --- gamesrv/fortunedragon/scenepolicy_fortunedragon.go | 6 ++++++ gamesrv/fortunemouse/scenepolicy_fortunemouse.go | 6 ++++++ gamesrv/fortuneox/scenepolicy_fortuneox.go | 6 ++++++ gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go | 6 ++++++ 4 files changed, 24 insertions(+) diff --git a/gamesrv/fortunedragon/scenepolicy_fortunedragon.go b/gamesrv/fortunedragon/scenepolicy_fortunedragon.go index c2041a1..dd8da12 100644 --- a/gamesrv/fortunedragon/scenepolicy_fortunedragon.go +++ b/gamesrv/fortunedragon/scenepolicy_fortunedragon.go @@ -409,6 +409,12 @@ func (this *SceneStateStartFortuneDragon) OnPlayerOp(s *base.Scene, p *base.Play if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + data.Results[0].BetMode = playerEx.BetMode if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 { //logger.Logger.Trace("=====================AddCoin=====TotalBet===", -data.TotalBet) diff --git a/gamesrv/fortunemouse/scenepolicy_fortunemouse.go b/gamesrv/fortunemouse/scenepolicy_fortunemouse.go index 65356b3..861f9fd 100644 --- a/gamesrv/fortunemouse/scenepolicy_fortunemouse.go +++ b/gamesrv/fortunemouse/scenepolicy_fortunemouse.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneMouse) OnPlayerOp(s *base.Scene, p *base.Playe if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + var respinStatus int if data.Results[0].ArrSpins[0].Special != nil { sp, _ := json.Marshal(data.Results[0].ArrSpins[0].Special) diff --git a/gamesrv/fortuneox/scenepolicy_fortuneox.go b/gamesrv/fortuneox/scenepolicy_fortuneox.go index d6a4b33..184290b 100644 --- a/gamesrv/fortuneox/scenepolicy_fortuneox.go +++ b/gamesrv/fortuneox/scenepolicy_fortuneox.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneOx) OnPlayerOp(s *base.Scene, p *base.Player, if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + var respinStatus int if data.Results[0].ArrSpins[0].Special != nil { sp, _ := json.Marshal(data.Results[0].ArrSpins[0].Special) diff --git a/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go b/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go index a292add..91991fd 100644 --- a/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go +++ b/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneRabbit) OnPlayerOp(s *base.Scene, p *base.Play if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 { //第一次触发或者正常模式 //logger.Logger.Trace("=============addcoin1111 ", -data.TotalBet) From 0c3b7ebed3ec4113e2765501e7edce13ff82677a Mon Sep 17 00:00:00 2001 From: tomas Date: Tue, 10 Dec 2024 20:40:50 +0800 Subject: [PATCH 13/30] fix index --- .../fortunetiger/scenepolicy_fortunetiger.go | 6 ++++ gamesrv/slotspkg/assemble/struct_.go | 1 + .../excel/Base/Slots/FortuneMouse/Bet.xlsx | Bin 12969 -> 13009 bytes .../exported/excel2go/base/fortune_mouse.go | 34 +++++++++--------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/gamesrv/fortunetiger/scenepolicy_fortunetiger.go b/gamesrv/fortunetiger/scenepolicy_fortunetiger.go index 9557faf..5202fcc 100644 --- a/gamesrv/fortunetiger/scenepolicy_fortunetiger.go +++ b/gamesrv/fortunetiger/scenepolicy_fortunetiger.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneTiger) OnPlayerOp(s *base.Scene, p *base.Playe if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + var respinStatus int if data.Results[0].ArrSpins[0].Special != nil { sp, _ := json.Marshal(data.Results[0].ArrSpins[0].Special) diff --git a/gamesrv/slotspkg/assemble/struct_.go b/gamesrv/slotspkg/assemble/struct_.go index eab6537..71b7f19 100644 --- a/gamesrv/slotspkg/assemble/struct_.go +++ b/gamesrv/slotspkg/assemble/struct_.go @@ -34,6 +34,7 @@ type GameEnd struct { BetSizeIndex int64 `json:"bet_size_index"` //选中的单注下标 BetLevelIndex int64 `json:"bet_level_index"` //选中的等级下标 LinesIndex int64 `json:"lines_index"` //选中的线数下标 + BaseBetIndex int64 `json:"base_bet_index"` //选中的下注基数下标 TotalBet float64 `json:"total_bet"` //下注 BetBeforeCoin float64 `json:"bet_before_coin"` //下注前 BetAfterCoin float64 `json:"bet_after_coin"` //下注后 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneMouse/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneMouse/Bet.xlsx index 4d00e3f6c4ea6cec57dec47d95d8ef9dc795bec1..4502c038c8febb92ca40c96e4cd1ccaa9382e275 100644 GIT binary patch delta 8200 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 delta 8142 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 K@nHYs!T$kqrYO1q diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go index e03d898..db3b7e3 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go @@ -10,79 +10,79 @@ func init() { FortuneMouseBetBetChangeList = map[int64]*structs.FortuneMouseBetBetChangeList{ 0: { Index: 0, - BetChangeList: 0.15, + BetChangeList: 150000, BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { Index: 1, - BetChangeList: 0.3, + BetChangeList: 300000, BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { Index: 2, - BetChangeList: 0.45, + BetChangeList: 450000, BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { Index: 3, - BetChangeList: 0.5, + BetChangeList: 500000, BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { Index: 4, - BetChangeList: 0.75, + BetChangeList: 750000, BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { Index: 5, - BetChangeList: 1.5, + BetChangeList: 1500000, BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { Index: 6, - BetChangeList: 2.5, + BetChangeList: 2500000, BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { Index: 7, - BetChangeList: 4.5, + BetChangeList: 4500000, BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { Index: 8, - BetChangeList: 5, + BetChangeList: 5000000, BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { Index: 9, - BetChangeList: 7.5, + BetChangeList: 7500000, BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { Index: 10, - BetChangeList: 15, + BetChangeList: 15000000, BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { Index: 11, - BetChangeList: 22.5, + BetChangeList: 22500000, BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { Index: 12, - BetChangeList: 45, + BetChangeList: 45000000, BetSizeIndex: 3, BetLevelIndex: 9, }, @@ -142,19 +142,19 @@ func init() { FortuneMouseBetBetSize = map[int64]*structs.FortuneMouseBetBetSize{ 0: { Index: 0, - BetSize: 300, + BetSize: 300000000, }, 1: { Index: 1, - BetSize: 1000, + BetSize: 1000000000, }, 2: { Index: 2, - BetSize: 3000, + BetSize: 3000000000, }, 3: { Index: 3, - BetSize: 9000, + BetSize: 9000000000, }, } From 1ca02133014e890fc7a8db5945534c5788a48bdb Mon Sep 17 00:00:00 2001 From: tomas Date: Tue, 10 Dec 2024 20:42:55 +0800 Subject: [PATCH 14/30] fix idx --- gamesrv/fortunedragon/scenepolicy_fortunedragon.go | 6 ++++++ gamesrv/fortunemouse/scenepolicy_fortunemouse.go | 6 ++++++ gamesrv/fortuneox/scenepolicy_fortuneox.go | 6 ++++++ gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go | 6 ++++++ 4 files changed, 24 insertions(+) diff --git a/gamesrv/fortunedragon/scenepolicy_fortunedragon.go b/gamesrv/fortunedragon/scenepolicy_fortunedragon.go index c2041a1..dd8da12 100644 --- a/gamesrv/fortunedragon/scenepolicy_fortunedragon.go +++ b/gamesrv/fortunedragon/scenepolicy_fortunedragon.go @@ -409,6 +409,12 @@ func (this *SceneStateStartFortuneDragon) OnPlayerOp(s *base.Scene, p *base.Play if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + data.Results[0].BetMode = playerEx.BetMode if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 { //logger.Logger.Trace("=====================AddCoin=====TotalBet===", -data.TotalBet) diff --git a/gamesrv/fortunemouse/scenepolicy_fortunemouse.go b/gamesrv/fortunemouse/scenepolicy_fortunemouse.go index 65356b3..861f9fd 100644 --- a/gamesrv/fortunemouse/scenepolicy_fortunemouse.go +++ b/gamesrv/fortunemouse/scenepolicy_fortunemouse.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneMouse) OnPlayerOp(s *base.Scene, p *base.Playe if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + var respinStatus int if data.Results[0].ArrSpins[0].Special != nil { sp, _ := json.Marshal(data.Results[0].ArrSpins[0].Special) diff --git a/gamesrv/fortuneox/scenepolicy_fortuneox.go b/gamesrv/fortuneox/scenepolicy_fortuneox.go index d6a4b33..184290b 100644 --- a/gamesrv/fortuneox/scenepolicy_fortuneox.go +++ b/gamesrv/fortuneox/scenepolicy_fortuneox.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneOx) OnPlayerOp(s *base.Scene, p *base.Player, if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + var respinStatus int if data.Results[0].ArrSpins[0].Special != nil { sp, _ := json.Marshal(data.Results[0].ArrSpins[0].Special) diff --git a/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go b/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go index a292add..91991fd 100644 --- a/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go +++ b/gamesrv/fortunerabbit/scenepolicy_fortunerabbit.go @@ -407,6 +407,12 @@ func (this *SceneStateStartFortuneRabbit) OnPlayerOp(s *base.Scene, p *base.Play if err == nil { s.SetGameNowTime(time.Now()) data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 { //第一次触发或者正常模式 //logger.Logger.Trace("=============addcoin1111 ", -data.TotalBet) From d672b911745f9f1ed95e584d6bd64ed1bfe540f9 Mon Sep 17 00:00:00 2001 From: tomas Date: Wed, 11 Dec 2024 11:15:03 +0800 Subject: [PATCH 15/30] fix totalbet mouse tiger --- gamesrv/fortunemouse/scenepolicy_fortunemouse.go | 2 +- gamesrv/fortuneox/scenepolicy_fortuneox.go | 1 - gamesrv/fortunetiger/scenepolicy_fortunetiger.go | 9 ++++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gamesrv/fortunemouse/scenepolicy_fortunemouse.go b/gamesrv/fortunemouse/scenepolicy_fortunemouse.go index 861f9fd..bdba675 100644 --- a/gamesrv/fortunemouse/scenepolicy_fortunemouse.go +++ b/gamesrv/fortunemouse/scenepolicy_fortunemouse.go @@ -524,7 +524,7 @@ func FortuneMouseAndSaveLog(sceneEx *FortuneMouseSceneData, playerEx *FortuneMou json.Unmarshal(sp, &spinLock) respinStatus = spinLock.ReSpinStatus } - if respinStatus == 0 || respinStatus == 1 { + if respinStatus != 0 && respinStatus != 1 { data.TotalBet = 0 } info, err := model.MarshalGameNoteByROLL(data) diff --git a/gamesrv/fortuneox/scenepolicy_fortuneox.go b/gamesrv/fortuneox/scenepolicy_fortuneox.go index 184290b..39b4717 100644 --- a/gamesrv/fortuneox/scenepolicy_fortuneox.go +++ b/gamesrv/fortuneox/scenepolicy_fortuneox.go @@ -527,7 +527,6 @@ func FortuneOxAndSaveLog(sceneEx *FortuneOxSceneData, playerEx *FortuneOxPlayerD if respinStatus != 0 && respinStatus != 1 { data.TotalBet = 0 } - info, err := model.MarshalGameNoteByROLL(data) if err == nil { logid, _ := model.AutoIncGameLogId() diff --git a/gamesrv/fortunetiger/scenepolicy_fortunetiger.go b/gamesrv/fortunetiger/scenepolicy_fortunetiger.go index 5202fcc..2eead3e 100644 --- a/gamesrv/fortunetiger/scenepolicy_fortunetiger.go +++ b/gamesrv/fortunetiger/scenepolicy_fortunetiger.go @@ -517,7 +517,14 @@ func (this *ScenePolicyFortuneTiger) GetSceneState(s *base.Scene, stateid int) b func FortuneTigerAndSaveLog(sceneEx *FortuneTigerSceneData, playerEx *FortuneTigerPlayerData, data assemble.GameEnd) { if !playerEx.IsRob { data.SnId = playerEx.SnId - if data.Results[0].FreeStatus != 1 && data.Results[0].FreeNumMax != 0 { + var respinStatus int + if data.Results[0].ArrSpins[0].Special != nil { + sp, _ := json.Marshal(data.Results[0].ArrSpins[0].Special) + var spinLock SpinLock + json.Unmarshal(sp, &spinLock) + respinStatus = spinLock.ReSpinStatus + } + if respinStatus != 0 && respinStatus != 1 { data.TotalBet = 0 } info, err := model.MarshalGameNoteByROLL(data) From 13e03f7428521b76005f3383e9275c6decf1a754 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Dec 2024 16:10:39 +0800 Subject: [PATCH 16/30] =?UTF-8?q?fix:=E9=87=91=E5=B8=81=E5=AD=98=E9=92=B1?= =?UTF-8?q?=E7=BD=90=E8=B7=A8=E5=A4=A9=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/player.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/worldsrv/player.go b/worldsrv/player.go index db18a4a..2326fb5 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -1310,8 +1310,6 @@ func (this *Player) UnmarshalData(data []byte, scene *Scene) { this.PlayerData.TotalFlow = pd.TotalFlow if this.WelfData != nil && this.WelfData.PigBank != nil && pd.WelfData != nil && pd.WelfData.PigBank != nil { this.WelfData.PigBank.BankCoin = pd.WelfData.PigBank.BankCoin - this.WelfData.PigBank.TakeTimes = pd.WelfData.PigBank.TakeTimes - this.WelfData.PigBank.DayBuyTimes = pd.WelfData.PigBank.DayBuyTimes } this.ItemRecExpireTime = pd.ItemRecExpireTime this.IsTakeExpireItem = pd.IsTakeExpireItem From acd3f4f676482cb95438db1bd7e38686ee36dde4 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Dec 2024 17:17:23 +0800 Subject: [PATCH 17/30] =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=8A=B6=E6=80=81=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- robot/base/clientmgr.go | 29 +++++++++++++ robot/base/clock.go | 90 ----------------------------------------- robot/base/playermgr.go | 12 ++++++ robot/base/scenemgr.go | 21 ++++++++-- worldsrv/welfmgr.go | 2 +- 5 files changed, 59 insertions(+), 95 deletions(-) delete mode 100644 robot/base/clock.go diff --git a/robot/base/clientmgr.go b/robot/base/clientmgr.go index ae3cab7..793556b 100644 --- a/robot/base/clientmgr.go +++ b/robot/base/clientmgr.go @@ -27,6 +27,19 @@ import ( 登录及机器人账号更新 */ +func init() { + common.RegisterClockFunc(&common.ClockFunc{ + OnHourTimerFunc: func() { + ClientMgrSingleton.HourChange() + + logger.Logger.Infof("client state: %+v", ClientMgrSingleton.GetState()) + }, + OnDayTimerFunc: func() { + ClientMgrSingleton.DayChange() + }, + }) +} + var ClientMgrSingleton = &ClientMgr{ sessionPool: make(map[string]*netlib.Session), Running: true, @@ -182,3 +195,19 @@ func (this *ClientMgr) DayChange() { this.CycleTimeEvent[timePoint] = eventArr } } + +type ClientState struct { + SessionNum int + Event map[int]int +} + +func (this *ClientMgr) GetState() *ClientState { + ret := &ClientState{ + SessionNum: len(this.sessionPool), + Event: make(map[int]int), + } + for k, v := range this.CycleTimeEvent { + ret.Event[k] = len(v) + } + return ret +} diff --git a/robot/base/clock.go b/robot/base/clock.go deleted file mode 100644 index a4cc3a5..0000000 --- a/robot/base/clock.go +++ /dev/null @@ -1,90 +0,0 @@ -package base - -import ( - "time" - - "mongo.games.com/goserver/core/module" -) - -/* - 计时器 -*/ - -var ClockMgrSingleton = &ClockMgr{ - LastHour: -1, - LastDay: -1, -} - -type ClockMgr struct { - LastTime time.Time - LastMonth time.Month - LastWeek int - LastDay int - LastHour int - LastMini int - LastSec int -} - -func (this *ClockMgr) ModuleName() string { - return "ClockMgr" -} - -func (this *ClockMgr) Init() { - tNow := time.Now().Local() - this.LastTime = tNow - _, this.LastMonth, this.LastDay = tNow.Date() - this.LastHour, this.LastMini, this.LastSec = tNow.Hour(), tNow.Minute(), tNow.Second() - _, this.LastWeek = tNow.ISOWeek() -} - -func (this *ClockMgr) Update() { - tNow := time.Now().Local() - sec := tNow.Second() - if sec != this.LastSec { - this.LastSec = sec - // 秒 - PlayerMgrSingleton.OnSecondTimer() - - min := tNow.Minute() - if min != this.LastMini { - this.LastMini = min - // 分 - PlayerMgrSingleton.OnMiniTimer() - - hour := tNow.Hour() - if hour != this.LastHour { - // 时 - ClientMgrSingleton.HourChange() - - this.LastHour = hour - day := tNow.Day() - if day != this.LastDay { - // 天 - ClientMgrSingleton.DayChange() - - this.LastDay = day - _, week := tNow.ISOWeek() - if week != this.LastWeek { - // 周 - - this.LastWeek = week - } - month := tNow.Month() - if month != this.LastMonth { - // 月 - - this.LastMonth = month - } - } - } - } - } -} - -func (this *ClockMgr) Shutdown() { - module.UnregisteModule(this) -} - -func init() { - module.RegisteModule(ClockMgrSingleton, time.Millisecond*500, 0) -} diff --git a/robot/base/playermgr.go b/robot/base/playermgr.go index a5f8cfa..cfc1c53 100644 --- a/robot/base/playermgr.go +++ b/robot/base/playermgr.go @@ -2,6 +2,7 @@ package base import ( "math/rand" + "mongo.games.com/game/common" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" @@ -11,6 +12,17 @@ import ( player_proto "mongo.games.com/game/protocol/player" ) +func init() { + common.RegisterClockFunc(&common.ClockFunc{ + OnSecTimerFunc: func() { + PlayerMgrSingleton.OnSecondTimer() + }, + OnMiniTimerFunc: func() { + PlayerMgrSingleton.OnMiniTimer() + }, + }) +} + var PlayerMgrSingleton = &PlayerMgr{ playersMapSnId: make(map[int32]*player_proto.SCPlayerData), playersSession: make(map[int32]*netlib.Session), diff --git a/robot/base/scenemgr.go b/robot/base/scenemgr.go index b8a1164..a354d92 100644 --- a/robot/base/scenemgr.go +++ b/robot/base/scenemgr.go @@ -3,12 +3,28 @@ package base import ( "time" + "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/module" + "mongo.games.com/game/common" server_proto "mongo.games.com/game/protocol/server" "mongo.games.com/game/srvdata" ) +func init() { + module.RegisteModule(SceneMgrSingleton, time.Millisecond*100, 0) + + common.RegisterClockFunc(&common.ClockFunc{ + OnHourTimerFunc: func() { + sceneState := map[int32]int{} + for _, v := range SceneMgrSingleton.Scenes { + sceneState[v.GetGameId()]++ + } + logger.Logger.Infof("sceneState: %v", sceneState) + }, + }) +} + var SceneMgrSingleton = &SceneMgr{ Scenes: make(map[int32]IScene), sceneDBGameFree: make(map[int32]*server_proto.DB_GameFree), @@ -47,6 +63,7 @@ func (sm *SceneMgr) GetSceneDBGameFree(sceneId, gamefreeId int32) *server_proto. return srvdata.PBDB_GameFreeMgr.GetData(gamefreeId) } +// IsFreeMode 是否是自由桌 func (sm *SceneMgr) IsFreeMode(sceneId int32) bool { if data, exist := sm.sceneDBGameFree[sceneId]; exist { return data.GetFreeMode() == 1 @@ -74,7 +91,3 @@ func (sm *SceneMgr) ModuleName() string { func (sm *SceneMgr) Shutdown() { module.UnregisteModule(sm) } - -func init() { - module.RegisteModule(SceneMgrSingleton, time.Millisecond*100, 0) -} diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 772d847..a0d0a49 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -1118,7 +1118,7 @@ func (this *WelfareMgr) BlindBoxInfo(p *Player, bid int32) { if cyc == 1 || blindBox.Cycle == model.WelfareOpen { p.WelfData.BlindBoxId = 0 } - } // == 1代表当日循环 + } // == 1代表当日循环 if p.WelfData.BlindBoxId == 0 { // 未领取过发随机Date idx := bid From 95650519e800132cf4ca391101765fe46bd4c940 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 12 Dec 2024 08:43:43 +0800 Subject: [PATCH 18/30] =?UTF-8?q?fix:etcd=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- etcd/keyconf.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etcd/keyconf.go b/etcd/keyconf.go index a26e51a..f3dc6a5 100644 --- a/etcd/keyconf.go +++ b/etcd/keyconf.go @@ -42,8 +42,8 @@ const ( ETCDKEY_MACHINE = "/game/machine_config" //娃娃机配置 ETCDKEY_MatchAudience = "/game/match_audience" //比赛观众 ETCDKEY_Spirit = "/game/spirit" // 小精灵配置 - ETCDKEY_RoomType = "/game/room_type" // 房间类型配置 - ETCDKEY_RoomConfig = "/game/room_config" // 房间配置 + ETCDKEY_RoomType = "/game/room_type/" // 房间类型配置 + ETCDKEY_RoomConfig = "/game/room_config/" // 房间配置 ETCDKEY_RoomConfigSystem = "/game/room_system" // 系统房间配置 ETCDKEY_ClientUpgrade = "/game/client_upgrade" // 客户端升级奖励配置 ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置 From bf636de73a12b5f9357d955e877855412d342923 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 12 Dec 2024 09:34:13 +0800 Subject: [PATCH 19/30] =?UTF-8?q?fix:=E6=9C=BA=E5=99=A8=E4=BA=BA=E7=A6=BB?= =?UTF-8?q?=E5=9C=BA=E9=87=91=E5=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/scene.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/scene.go b/worldsrv/scene.go index d28a99b..a23bafa 100644 --- a/worldsrv/scene.go +++ b/worldsrv/scene.go @@ -341,7 +341,7 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { //离场金币 leaverng := this.dbGameFree.GetRobotLimitCoin() if len(leaverng) >= 2 { - leaveCoin = leaverng[0] + rand.Int63n(leaverng[1]-leaverng[0]) + leaveCoin = int64(common.RandInt(int(leaverng[0]), int(leaverng[1]))) } } From 500fed59dd03337f2f308e5da5028a52da351364 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 12 Dec 2024 14:06:11 +0800 Subject: [PATCH 20/30] =?UTF-8?q?modify:=E6=B8=B8=E6=88=8F=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=B8=8A=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/base/player.go | 30 +++++++++++----------- model/dataevent.go | 57 +++++++++++++++++++++--------------------- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index 1bcdf6e..41cd834 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -641,15 +641,15 @@ func (this *Player) ReportGameEvent(param *ReportGameEventParam) *ReportGameEven var gameTimes, gameFreeTimes int64 data, ok := this.GDatas[this.scene.KeyGamefreeId] if ok { - gameFirstTime = data.FirstTime - gameTimes = data.Statics.GameTimes + gameFreeFirstTime = data.FirstTime + gameFreeTimes = data.Statics.GameTimes } // 记录玩家 首次参与该游戏时间 游戏次数(不区分场次) dataGame, ok := this.GDatas[this.scene.KeyGameId] if ok { - gameFreeFirstTime = dataGame.FirstTime - gameFreeTimes = dataGame.Statics.GameTimes + gameFirstTime = dataGame.FirstTime + gameTimes = dataGame.Statics.GameTimes } isNew := int32(0) @@ -668,12 +668,12 @@ func (this *Player) ReportGameEvent(param *ReportGameEventParam) *ReportGameEven var ret ReportGameEventOnly ret.Param = param log := &model.PlayerGameRecEvent{ - Platform: this.Platform, - RecordId: this.scene.GetRecordId(), - SnId: this.GetSnId(), - Channel: this.Channel, - ChannelId: this.ChannelId, - City: this.City, + Platform: this.Platform, + RecordId: this.scene.GetRecordId(), + SnId: this.GetSnId(), + Channel: this.Channel, + ChannelId: this.ChannelId, + //City: this.City, OS: this.DeviceOS, GameId: this.scene.GameId, ModeId: this.scene.GameMode, @@ -686,12 +686,12 @@ func (this *Player) ReportGameEvent(param *ReportGameEventParam) *ReportGameEven IsNew: isNew, GameFreeID: this.scene.GetGameFreeId(), GamingTime: int32(param.GameTime), - FirstTime: gameFirstTime.Unix(), - PlayTimes: gameTimes, - FirstGameTime: gameFreeFirstTime.Unix(), - PlayGameTimes: gameFreeTimes, + FirstTime: gameFreeFirstTime.Unix(), + PlayTimes: gameFreeTimes, + FirstGameTime: gameFirstTime.Unix(), + PlayGameTimes: gameTimes, LastLoginTime: this.LastLoginTime.Unix(), - DeviceId: this.DeviceId, + //DeviceId: this.DeviceId, } if param.OnlyLog { ret.Log = append(ret.Log, log) diff --git a/model/dataevent.go b/model/dataevent.go index b3d138f..2469845 100644 --- a/model/dataevent.go +++ b/model/dataevent.go @@ -245,34 +245,35 @@ func CreatePlayerLoginEvent(snid int32, channel, promoter, platform, city, os, i // 玩家游戏记录 type PlayerGameRecEvent struct { - RecordId string //游戏记录ID - SnId int32 //用户ID - Channel string //包类型 - Promoter string //推广 - Platform string //平台 - City string //城市 - OS string //操作系统 - TelephonePromoter int32 //电销标记 - GameId int32 //游戏id - ModeId int32 //游戏模式 - Tax int64 //税收 - Amount int64 //金币变化(正值为赢;负值为输) - CreateTime int64 //创建时间 - CreateDayTime int64 //账号创建时间0点 - ValidBet int64 //有效下注数量 - ValidFlow int64 //有效流水数量 - Out int64 //产出 - In int64 //投入 - IsNew int32 //是否是新人 - GameFreeID int32 //游戏freeid - GamingTime int32 //游戏开始到玩家结算的时长 单位:秒 - FirstTime int64 //首次玩该场次游戏时间 - PlayTimes int64 //该场次游戏次数 - FirstGameTime int64 //首次玩游戏时间 - PlayGameTimes int64 //该游戏总次数 - LastLoginTime int64 //最后登录时间 - DeviceId string //设备id - ChannelId string //推广渠道id + RecordId string //游戏记录ID + SnId int32 //用户ID + Channel string //包类型 + Platform string //平台 + OS string //操作系统 + GameId int32 //游戏id + ModeId int32 //游戏模式 + Tax int64 //税收 + Amount int64 //金币变化,税后(正值为赢;负值为输) + CreateTime int64 //创建时间 + CreateDayTime int64 //账号创建时间0点 + Out int64 //产出 + In int64 //投入 + IsNew int32 //是否是新人 + GameFreeID int32 //游戏freeid + GamingTime int32 //游戏开始到玩家结算的时长 单位:秒 + + GameDif int32 // 游戏分组 + FirstGameDifTime int64 // 首次游戏分组时间 + GameDifTimes int64 // 游戏分组游戏次数 + + FirstTime int64 //首次玩该场次游戏时间 + PlayTimes int64 //该场次游戏次数 + + FirstGameTime int64 //首次玩游戏时间 + PlayGameTimes int64 //该游戏总次数 + + LastLoginTime int64 //最后登录时间 + ChannelId string //推广渠道id } // 玩家游戏记录 From cab63a8bf9db9cecb157e36a39b83d29ea6f02de Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 12 Dec 2024 16:08:22 +0800 Subject: [PATCH 21/30] =?UTF-8?q?add:=E6=B8=B8=E6=88=8F=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=95=B0=E6=8D=AE=E6=B7=BB=E5=8A=A0=E5=94=AF?= =?UTF-8?q?=E4=B8=80id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/base/player.go | 2 ++ model/dataevent.go | 1 + 2 files changed, 3 insertions(+) diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index 41cd834..3a9102d 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -7,6 +7,7 @@ import ( "math/rand" "time" + "go.mongodb.org/mongo-driver/bson/primitive" rawproto "google.golang.org/protobuf/proto" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" @@ -668,6 +669,7 @@ func (this *Player) ReportGameEvent(param *ReportGameEventParam) *ReportGameEven var ret ReportGameEventOnly ret.Param = param log := &model.PlayerGameRecEvent{ + Id: primitive.NewObjectID().Hex(), Platform: this.Platform, RecordId: this.scene.GetRecordId(), SnId: this.GetSnId(), diff --git a/model/dataevent.go b/model/dataevent.go index 2469845..987722c 100644 --- a/model/dataevent.go +++ b/model/dataevent.go @@ -245,6 +245,7 @@ func CreatePlayerLoginEvent(snid int32, channel, promoter, platform, city, os, i // 玩家游戏记录 type PlayerGameRecEvent struct { + Id string //id RecordId string //游戏记录ID SnId int32 //用户ID Channel string //包类型 From 9c3f3ea191e8a7bd7e46730039a37fb0c8043cb9 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 13 Dec 2024 11:15:43 +0800 Subject: [PATCH 22/30] =?UTF-8?q?fix:=E6=9C=BA=E5=99=A8=E4=BA=BA=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=88=BF=E9=97=B4=E7=AE=A1=E7=90=86=E5=99=A8=E6=88=BF?= =?UTF-8?q?=E9=97=B4=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- robot/base/{sclogin.go => action_login.go} | 0 .../{scplayerinfo.go => action_playerinfo.go} | 1 + robot/base/{scroom.go => action_room.go} | 1 + robot/base/{scserver.go => action_server.go} | 0 robot/base/clientmgr.go | 24 ++++++++++++------ robot/base/connect.go | 19 ++++++++------ robot/base/gatesessionhandler.go | 5 +--- robot/base/init.go | 4 +-- robot/base/playermgr.go | 25 ++++++++++++++++++- robot/base/scenemgr.go | 23 +++++++++++++---- worldsrv/scenemgr.go | 15 +++++------ 11 files changed, 84 insertions(+), 33 deletions(-) rename robot/base/{sclogin.go => action_login.go} (100%) rename robot/base/{scplayerinfo.go => action_playerinfo.go} (98%) rename robot/base/{scroom.go => action_room.go} (98%) rename robot/base/{scserver.go => action_server.go} (100%) diff --git a/robot/base/sclogin.go b/robot/base/action_login.go similarity index 100% rename from robot/base/sclogin.go rename to robot/base/action_login.go diff --git a/robot/base/scplayerinfo.go b/robot/base/action_playerinfo.go similarity index 98% rename from robot/base/scplayerinfo.go rename to robot/base/action_playerinfo.go index 1d9df25..7d095c4 100644 --- a/robot/base/scplayerinfo.go +++ b/robot/base/action_playerinfo.go @@ -99,6 +99,7 @@ func SCPlayerFlag(s *netlib.Session, packetid int, data interface{}) error { return nil } + // 更新房间里玩家的状态 if scene, ok := GetScene(s).(IScene); ok && scene != nil { p := scene.GetPlayerBySnid(msg.GetPlayerId()) if p != nil { diff --git a/robot/base/scroom.go b/robot/base/action_room.go similarity index 98% rename from robot/base/scroom.go rename to robot/base/action_room.go index 1d0bbf8..eae3592 100644 --- a/robot/base/scroom.go +++ b/robot/base/action_room.go @@ -52,6 +52,7 @@ func SCDestroyRoom(s *netlib.Session, packid int, pack interface{}) error { if msg.GetOpRetCode() == gamehallproto.OpResultCode_Game_OPRC_Sucess_Game { cleanRoomState(s) + SceneMgrSingleton.DelScene(msg.GetRoomId()) return nil } diff --git a/robot/base/scserver.go b/robot/base/action_server.go similarity index 100% rename from robot/base/scserver.go rename to robot/base/action_server.go diff --git a/robot/base/clientmgr.go b/robot/base/clientmgr.go index 793556b..7c286ff 100644 --- a/robot/base/clientmgr.go +++ b/robot/base/clientmgr.go @@ -30,12 +30,12 @@ import ( func init() { common.RegisterClockFunc(&common.ClockFunc{ OnHourTimerFunc: func() { - ClientMgrSingleton.HourChange() + ClientMgrSingleton.AccountReplace() - logger.Logger.Infof("client state: %+v", ClientMgrSingleton.GetState()) + logger.Logger.Info(ClientMgrSingleton.GetState()) }, OnDayTimerFunc: func() { - ClientMgrSingleton.DayChange() + ClientMgrSingleton.AccountDeletePolicy() }, }) } @@ -110,13 +110,17 @@ func (this *ClientMgr) UnRegisterSession(acc string) { delete(this.sessionPool, acc) } -func (this *ClientMgr) HourChange() { +// AccountReplace 账号替换 +func (this *ClientMgr) AccountReplace() { fileModify := false eventArr := this.CycleTimeEvent[time.Now().Hour()] for _, event := range eventArr { accChan[event.newAcc] = true //使用新的账号 - cfg := NewSessionConfig() - netlib.Connect(cfg) //创建新的连接 + + //创建新的连接 + NewSession() + + // 关闭旧的连接 if session, ok := this.sessionPool[event.oldAcc]; ok && session != nil { //删除旧有账号数据 pack := &serverproto.RWAccountInvalid{ @@ -128,6 +132,7 @@ func (this *ClientMgr) HourChange() { //关闭连接 session.Close() } + //更新本地账号数据信息 for key, value := range accPool { if value.Acc == event.oldAcc { @@ -156,7 +161,8 @@ func (this *ClientMgr) HourChange() { } } -func (this *ClientMgr) DayChange() { +// AccountDeletePolicy 账号删除策略 +func (this *ClientMgr) AccountDeletePolicy() { invalidCount := 0 //过期账号数量 updateLimit := len(accPool) * model.GameParamData.InvalidRobotAccRate / 100 //可更新的账号数量 invalidAccs := []InvalidAcc{} @@ -201,6 +207,10 @@ type ClientState struct { Event map[int]int } +func (c *ClientState) String() string { + return fmt.Sprintf("ClientMgrState 连接总数:%v, 每小时账号替换数量:%v", c.SessionNum, c.Event) +} + func (this *ClientMgr) GetState() *ClientState { ret := &ClientState{ SessionNum: len(this.sessionPool), diff --git a/robot/base/connect.go b/robot/base/connect.go index 9804c34..1b0c9fe 100644 --- a/robot/base/connect.go +++ b/robot/base/connect.go @@ -18,12 +18,19 @@ var ( WaitConnectSessions []*netlib.SessionConfig ) -func NewSessionConfig() *netlib.SessionConfig { - BenchMarkModule.idx++ +// NewSession 新建session +// id 连接id, 默认自动分配 +func NewSession(id ...int) { cfg := Config.Connects - cfg.Id = BenchMarkModule.idx + if len(id) > 0 && id[0] > 0 { + cfg.Id = id[0] + } else { + BenchMarkModule.idx++ + cfg.Id = BenchMarkModule.idx + } cfg.Init() - return &cfg + logger.Logger.Info("waite connect session id=", cfg.Id) + WaitConnectSessions = append(WaitConnectSessions, &cfg) } type BenchMark struct { @@ -37,9 +44,7 @@ func (m *BenchMark) ModuleName() string { func (m *BenchMark) Init() { m.idx = RobotSessionStartId for i := 0; i < Config.Count; i++ { - cfg := NewSessionConfig() - logger.Logger.Info("waite connect session id=", cfg.Id) - WaitConnectSessions = append(WaitConnectSessions, cfg) + NewSession() } } diff --git a/robot/base/gatesessionhandler.go b/robot/base/gatesessionhandler.go index 9d88c07..bb6e5c0 100644 --- a/robot/base/gatesessionhandler.go +++ b/robot/base/gatesessionhandler.go @@ -62,10 +62,7 @@ func (g *GateSessionHandler) OnSessionClosed(s *netlib.Session) { StopSessionPingTimer(s) if reconnect { logger.Logger.Infof("账号重连 sessionID:%v account:%v", s.Id, accIdParam) - cfg := Config.Connects - cfg.Id = s.GetSessionConfig().Id - cfg.Init() - WaitConnectSessions = append(WaitConnectSessions, &cfg) + NewSession(s.GetSessionConfig().Id) } } diff --git a/robot/base/init.go b/robot/base/init.go index 32fbd90..d8b5455 100644 --- a/robot/base/init.go +++ b/robot/base/init.go @@ -16,9 +16,9 @@ type AccountData struct { } var ( - // 待使用的账号,将要建立连接 + // 待登录的账号,将要建立连接 accChan = make(map[string]bool) - // 账号池,当前正在使用的机器人 + // 账号池,当前正在使用的机器人账号 accPool []*AccountData ) var accountFileName = "robotaccount.json" diff --git a/robot/base/playermgr.go b/robot/base/playermgr.go index cfc1c53..bfda419 100644 --- a/robot/base/playermgr.go +++ b/robot/base/playermgr.go @@ -1,12 +1,13 @@ package base import ( + "fmt" "math/rand" - "mongo.games.com/game/common" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" + "mongo.games.com/game/common" "mongo.games.com/game/proto" hall_proto "mongo.games.com/game/protocol/gamehall" player_proto "mongo.games.com/game/protocol/player" @@ -20,6 +21,9 @@ func init() { OnMiniTimerFunc: func() { PlayerMgrSingleton.OnMiniTimer() }, + OnHourTimerFunc: func() { + logger.Logger.Info(PlayerMgrSingleton.GetState()) + }, }) } @@ -173,3 +177,22 @@ func (pm *PlayerMgr) OnSecondTimer() { func (pm *PlayerMgr) OnMiniTimer() { pm.ProcessCheckRobotNum() } + +type PlayerMgrState struct { + PlayerNum int + NormalSessionNum int + MatchSessionNum int +} + +func (p *PlayerMgrState) String() string { + return fmt.Sprintf("PlayerMgrState 玩家总数:%v, 普通场连接数:%v, 比赛场连接数:%v", p.PlayerNum, p.NormalSessionNum, p.MatchSessionNum) +} + +func (pm *PlayerMgr) GetState() *PlayerMgrState { + ret := &PlayerMgrState{ + PlayerNum: len(pm.playersMapSnId), + NormalSessionNum: len(pm.playersSession), + MatchSessionNum: len(pm.playersMatchSession), + } + return ret +} diff --git a/robot/base/scenemgr.go b/robot/base/scenemgr.go index a354d92..9ee47d1 100644 --- a/robot/base/scenemgr.go +++ b/robot/base/scenemgr.go @@ -1,6 +1,7 @@ package base import ( + "fmt" "time" "mongo.games.com/goserver/core/logger" @@ -16,11 +17,7 @@ func init() { common.RegisterClockFunc(&common.ClockFunc{ OnHourTimerFunc: func() { - sceneState := map[int32]int{} - for _, v := range SceneMgrSingleton.Scenes { - sceneState[v.GetGameId()]++ - } - logger.Logger.Infof("sceneState: %v", sceneState) + logger.Logger.Info(SceneMgrSingleton.GetState()) }, }) } @@ -71,6 +68,22 @@ func (sm *SceneMgr) IsFreeMode(sceneId int32) bool { return false } +type SceneMgrState struct { + Num map[int32]int +} + +func (s *SceneMgrState) String() string { + return fmt.Sprintf("SceneMgrState 每个游戏的房间数量 [游戏id:房间数量]: %v", s.Num) +} + +func (sm *SceneMgr) GetState() *SceneMgrState { + m := make(map[int32]int) + for _, v := range sm.Scenes { + m[v.GetGameId()]++ + } + return &SceneMgrState{Num: m} +} + // ////////////////////////////////////////////////////////////////// // / Module Implement [beg] // ////////////////////////////////////////////////////////////////// diff --git a/worldsrv/scenemgr.go b/worldsrv/scenemgr.go index 69b90ea..4b5b962 100644 --- a/worldsrv/scenemgr.go +++ b/worldsrv/scenemgr.go @@ -34,13 +34,14 @@ type SceneMgr struct { common.BaseClockSinker // 驱动时间事件 scenes map[int]*Scene // 房间id: Scene - privateAutoId int // 私人房房间号 - matchAutoId int // 比赛场房间号 - coinSceneAutoId int // 金币场房间号 - hundredSceneAutoId int // 百人场房间号 - password map[string]struct{} // 密码 - pushList map[int]struct{} // 已经推荐过的房间列表 - lastPushSceneId int // 最后推荐的房间id + privateAutoId int // 私人房房间号 + matchAutoId int // 比赛场房间号 + coinSceneAutoId int // 金币场房间号 + hundredSceneAutoId int // 百人场房间号 + + password map[string]struct{} // 密码 + pushList map[int]struct{} // 已经推荐过的房间列表 + lastPushSceneId int // 最后推荐的房间id } // AllocReplayCode 获取回访码 From 5c64d9772859ee6f9b3c03cc5189b90217556b8a Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Dec 2024 17:42:45 +0800 Subject: [PATCH 23/30] =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/scene.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/worldsrv/scene.go b/worldsrv/scene.go index d28a99b..f6cef59 100644 --- a/worldsrv/scene.go +++ b/worldsrv/scene.go @@ -341,7 +341,10 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { //离场金币 leaverng := this.dbGameFree.GetRobotLimitCoin() if len(leaverng) >= 2 { - leaveCoin = leaverng[0] + rand.Int63n(leaverng[1]-leaverng[0]) + rangeValue := leaverng[1] - leaverng[0] + if rangeValue > 0 { + leaveCoin = leaverng[0] + rand.Int63n(rangeValue) + } } } From 7d6ee4c3bdfbc8660b855065e593a83ca50026e6 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Dec 2024 17:51:59 +0800 Subject: [PATCH 24/30] =?UTF-8?q?=E5=85=85=E5=80=BC=E5=A2=9E=E5=8A=A0log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 9a6fb83..d231bd4 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2212,10 +2212,10 @@ func init() { WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/pay/CallbackPayment", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - logger.Logger.Tracef("api /api/pay/CallbackPayment") msg := &webapiproto.ASCallbackPayment{} pack := &webapiproto.SACallbackPayment{} err := proto.Unmarshal(params, msg) + logger.Logger.Trace("api /api/pay/CallbackPayment msg = ", msg) if err != nil { pack.Tag = webapiproto.TagCode_FAILED pack.Msg = "数据序列化失败" + err.Error() From db24cf06207a16e3cdf8d696b04033d97004f116 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Dec 2024 17:53:13 +0800 Subject: [PATCH 25/30] =?UTF-8?q?=E5=85=85=E5=80=BC=E5=A2=9E=E5=8A=A0log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index d231bd4..85d76d1 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2215,7 +2215,7 @@ func init() { msg := &webapiproto.ASCallbackPayment{} pack := &webapiproto.SACallbackPayment{} err := proto.Unmarshal(params, msg) - logger.Logger.Trace("api /api/pay/CallbackPayment msg = ", msg) + logger.Logger.Info("api /api/pay/CallbackPayment msg = ", msg) if err != nil { pack.Tag = webapiproto.TagCode_FAILED pack.Msg = "数据序列化失败" + err.Error() @@ -2262,6 +2262,7 @@ func init() { state = 3 } } + logger.Logger.Info("api /api/pay/CallbackPayment state = ", state) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { err := model.UpdateDbShopState(msg.Platform, msg.OrderId, state) if err != nil { From a4ebed8fc937ebb60f01d2ee2e3caf33fddc4f2a Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Dec 2024 17:54:41 +0800 Subject: [PATCH 26/30] =?UTF-8?q?=E5=85=85=E5=80=BC=E5=A2=9E=E5=8A=A0log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/svc/l_dbshoplog.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbproxy/svc/l_dbshoplog.go b/dbproxy/svc/l_dbshoplog.go index 6b25c0a..6a0e3e3 100644 --- a/dbproxy/svc/l_dbshoplog.go +++ b/dbproxy/svc/l_dbshoplog.go @@ -64,7 +64,7 @@ func (svc *DbShopLogSvc) UpdateDbShopState(args *model.DbShopLogArgs, ret *bool) logger.Logger.Error("UpdateDbShopState == nil") return nil } - logger.Logger.Trace("DbShopLogSvc.UpdateDbShopState") + logger.Logger.Info("DbShopLogSvc.UpdateDbShopState", args.Log.LogId) err = clog.UpdateId(args.Log.LogId, bson.M{"$set": bson.M{"state": args.Log.State}}) if err != nil { logger.Logger.Error("DbShopLogSvc.UpdateDbShopState error:", err) From d6bfa73d709fc23a4baa3782839010dbbd31406f Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Dec 2024 17:55:37 +0800 Subject: [PATCH 27/30] =?UTF-8?q?=E5=85=85=E5=80=BC=E5=A2=9E=E5=8A=A0log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/svc/l_dbshoplog.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbproxy/svc/l_dbshoplog.go b/dbproxy/svc/l_dbshoplog.go index 6a0e3e3..f83343a 100644 --- a/dbproxy/svc/l_dbshoplog.go +++ b/dbproxy/svc/l_dbshoplog.go @@ -67,7 +67,7 @@ func (svc *DbShopLogSvc) UpdateDbShopState(args *model.DbShopLogArgs, ret *bool) logger.Logger.Info("DbShopLogSvc.UpdateDbShopState", args.Log.LogId) err = clog.UpdateId(args.Log.LogId, bson.M{"$set": bson.M{"state": args.Log.State}}) if err != nil { - logger.Logger.Error("DbShopLogSvc.UpdateDbShopState error:", err) + logger.Logger.Error("DbShopLogSvc.UpdateDbShopState error:", err, "LogId = ", args.Log.LogId) return nil } *ret = true From d791c4d02c4072093df79d01731881f4354c1b8d Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Mon, 16 Dec 2024 10:03:36 +0800 Subject: [PATCH 28/30] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E8=A1=A5=E5=8D=95BUG?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 85d76d1..de6d144 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2257,7 +2257,8 @@ func init() { state = msg.GetState() player := PlayerMgrSington.GetPlayerBySnId(info.SnId) - if player == nil { + logger.Logger.Info("api /api/pay/CallbackPayment player = ", player) + if player == nil && !player.IsOnLine() { if info.State == 1 { state = 3 } From 8b40eb3c492ff86cdd645b7b868bc929ca7f92f0 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Mon, 16 Dec 2024 10:10:45 +0800 Subject: [PATCH 29/30] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E8=A1=A5=E5=8D=95BUG?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index de6d144..2cc5e3d 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2258,7 +2258,7 @@ func init() { state = msg.GetState() player := PlayerMgrSington.GetPlayerBySnId(info.SnId) logger.Logger.Info("api /api/pay/CallbackPayment player = ", player) - if player == nil && !player.IsOnLine() { + if player == nil || (player != nil && !player.IsOnLine()) { if info.State == 1 { state = 3 } From 4d65851083ada20e2fbf3f2f2d998c4cf71835da Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Mon, 16 Dec 2024 10:16:55 +0800 Subject: [PATCH 30/30] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E8=A1=A5=E5=8D=95BUG?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 2cc5e3d..53cdd40 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2257,13 +2257,11 @@ func init() { state = msg.GetState() player := PlayerMgrSington.GetPlayerBySnId(info.SnId) - logger.Logger.Info("api /api/pay/CallbackPayment player = ", player) - if player == nil || (player != nil && !player.IsOnLine()) { - if info.State == 1 { + if player == nil { + if msg.State == 1 { state = 3 } } - logger.Logger.Info("api /api/pay/CallbackPayment state = ", state) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { err := model.UpdateDbShopState(msg.Platform, msg.OrderId, state) if err != nil {