fruit配置

This commit is contained in:
fatiao 2025-06-10 21:56:29 +08:00
parent 9c39586fbb
commit 67917f5abe
28 changed files with 5700 additions and 4149 deletions

View File

@ -5,27 +5,32 @@
</component>
<component name="ChangeListManager">
<list default="true" id="d78b3961-331c-4a35-ae41-f23409fbe1fd" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/roserver/fruit/msg/fruit_msg.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../doc/etcd-v3.5.17-windows-amd64/default.etcd/member/snap/db" beforeDir="false" afterPath="$PROJECT_DIR$/../doc/etcd-v3.5.17-windows-amd64/default.etcd/member/snap/db" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../doc/etcd-v3.5.17-windows-amd64/default.etcd/member/wal/0.tmp" beforeDir="false" afterPath="$PROJECT_DIR$/../doc/etcd-v3.5.17-windows-amd64/default.etcd/member/wal/0.tmp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../doc/etcd-v3.5.17-windows-amd64/default.etcd/member/wal/0000000000000000-0000000000000000.wal" beforeDir="false" afterPath="$PROJECT_DIR$/../doc/etcd-v3.5.17-windows-amd64/default.etcd/member/wal/0000000000000000-0000000000000000.wal" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/baseserver/model/service_con.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/baseserver/model/service_con.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/baseserver/model/base_config.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/baseserver/model/base_config.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/baseserver/router/route_table.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/baseserver/router/route_table.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/fruit_manager.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/model/fruit_manager.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/fruit_model.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/model/fruit_model.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/fruit_orm_helper.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/model/fruit_orm_helper.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/fruit_player.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/model/fruit_room.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/fruit_player_state.go" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/fruit_player.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/model/fruit_player.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/fruit_room.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/model/fruit_room.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/model/msg_send.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/model/msg_send.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/msg/battle_msg.go" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/fruit/msg/fruit_msg.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/fruit/msg/fruit_msg.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/game/model/role.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/game/model/role.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/game/model/role_send.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/game/model/role_send.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/pprof/guildmem.pprof/mem.pprof" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/pprof/guildmem.pprof/mem.pprof" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/config_csv.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/config_csv.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/logic.proto" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/logic.proto" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/error_code.pb.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/error_code.pb.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/error_code.proto" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/error_code.proto" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/login.pb.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/login.pb.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/login.proto" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/login.proto" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/messagedef.pb.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/messagedef.pb.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/messagedef.proto" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/messagedef.proto" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/messagedefclient.proto" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/messagedefclient.proto" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/pbbind_gen.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/pbbind_gen.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/proto_cmd.py" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/proto_cmd.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/user.pb.go" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/user.pb.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/roserver/serverproto/user.proto" beforeDir="false" afterPath="$PROJECT_DIR$/roserver/serverproto/user.proto" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -91,7 +96,7 @@
"git-widget-placeholder": "main",
"go.import.settings.migrated": "true",
"go.sdk.automatically.set": "true",
"last_opened_file_path": "C:/Users/letme/Desktop/Work/LeGang/ro-webgl-server/server/roserver",
"last_opened_file_path": "C:/Users/letme/Desktop/Work/LeGang/ro-webgl-server/server/roserver/fruit",
"node.js.detected.package.eslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"nodejs_package_manager_path": "npm",

View File

@ -8230,7 +8230,7 @@ func convertConvertSummonLevelUpCfg() {
DropId: cfg.DropId,
}
convertCfg.CostItemId, convertCfg.CostItemCount = Str2Res(cfg.Cost)
convertCfg.CostItemId, convertCfg.CostItemCount = Str2Res(cfg.Cost[0])
//key, value := Str2Res(cfg.ExtraReward)
//rewardTimeStrList := strings.Split(cfg.CloseTime, ";")
//if len(rewardTimeStrList) > 0 {

View File

@ -333,6 +333,12 @@ func init(){
addRule("CSGetPetRankAwardReq","game,rank","game",1749)
addRule("SCGetPetRankAwardAck","game,rank","game",1750)
addRule("CSLevelupSummonReq","game","game",1751)
addRule("CSFruitJoinReq","game,fruit","game",1754)
addRule("SCFruitJoinAck","game,fruit","game",1755)
addRule("CSFruitLeaveReq","game,fruit","game",1756)
addRule("SCFruitLeaveAck","game,fruit","game",1757)
addRule("CSFruitBetReq","game,fruit","game",1758)
addRule("SCFruitBetAck","game,fruit","game",1759)
addRule("SSCrossYuanHangTrialViewListReq","crossserver","crossserver",6002)
addRule("SSCrossYuanHangTrialReq","crossserver","crossserver",6004)
addRule("SSCrossYuanHangTrialChallengeReq","crossserver","crossserver",6006)
@ -641,4 +647,7 @@ func init(){
ReqAckKVList[1747] = ReqAckKVInfo{1747, 1748, "CSGetCommonActivityRankReq|SCGetCommonActivityRankAck"}
ReqAckKVList[1749] = ReqAckKVInfo{1749, 1750, "CSGetPetRankAwardReq|SCGetPetRankAwardAck"}
ReqAckKVList[1751] = ReqAckKVInfo{1751, 1752, "CSLevelupSummonReq|SCLevelupSummonAck"}
ReqAckKVList[1754] = ReqAckKVInfo{1754, 1755, "CSFruitJoinReq|SCFruitJoinAck"}
ReqAckKVList[1756] = ReqAckKVInfo{1756, 1757, "CSFruitLeaveReq|SCFruitLeaveAck"}
ReqAckKVList[1758] = ReqAckKVInfo{1758, 1759, "CSFruitBetReq|SCFruitBetAck"}
}

View File

@ -0,0 +1,11 @@
slot类型,开销
Id,Cost
int,int
1,1000
2,1000
3,1000
4,1000
5,1000
6,1000
7,1000
8,1000
1 slot类型 开销
2 Id Cost
3 int int
4 1 1000
5 2 1000
6 3 1000
7 4 1000
8 5 1000
9 6 1000
10 7 1000
11 8 1000

View File

@ -0,0 +1,19 @@
Slot类型,Slot类型,基础权重,坐庄权重,动态权重,提示
Id,SlotType,Rate,Z_Rate,D_Rate,Tips
int,int,int,int,int,string
1,1,2400,500,30,small apple
2,2,2400,500,30,small orange
3,3,2400,500,30,small papaya
4,4,2400,500,30,small bell
5,5,2400,500,30,small watermelon
6,6,2400,500,30,small star
7,7,2400,500,30,small 77
8,8,200,45,8,small BAR
9,9,2000,350,30,big apple
10,10,1000,200,15,big orange
11,11,700,150,10,big papaya
12,12,500,110,10,big bell
13,13,500,110,10,big watermelon
14,14,330,80,6,big star
15,15,270,60,5,big 77
16,16,100,25,5,big BAR
1 Slot类型 Slot类型 基础权重 坐庄权重 动态权重 提示
2 Id SlotType Rate Z_Rate D_Rate Tips
3 int int int int int string
4 1 1 2400 500 30 small apple
5 2 2 2400 500 30 small orange
6 3 3 2400 500 30 small papaya
7 4 4 2400 500 30 small bell
8 5 5 2400 500 30 small watermelon
9 6 6 2400 500 30 small star
10 7 7 2400 500 30 small 77
11 8 8 200 45 8 small BAR
12 9 9 2000 350 30 big apple
13 10 10 1000 200 15 big orange
14 11 11 700 150 10 big papaya
15 12 12 500 110 10 big bell
16 13 13 500 110 10 big watermelon
17 14 14 330 80 6 big star
18 15 15 270 60 5 big 77
19 16 16 100 25 5 big BAR

View File

@ -0,0 +1,19 @@
Slot类型,Slot集合,倍数,押注类型,提示
Id,Slots,Times,BetType,Tips
int,list,int,int,string
1,20,2,1,small apple
2,14,2,2,small orange
3,8,2,3,small papaya
4,2,2,4,small bell
5,17,2,5,small watermelon
6,5,2,6,small star
7,11,2,7,small 77
8,23,60,8,small BAR
9,3;9;15;21,5,1,big apple
10,1;13,10,2,big orange
11,7;19,15,3,big papaya
12,12;24,20,4,big bell
13,18,20,5,big watermelon
14,6,30,6,big star
15,10,40,7,big 77
16,22,120,8,big BAR
1 Slot类型 Slot集合 倍数 押注类型 提示
2 Id Slots Times BetType Tips
3 int list int int string
4 1 20 2 1 small apple
5 2 14 2 2 small orange
6 3 8 2 3 small papaya
7 4 2 2 4 small bell
8 5 17 2 5 small watermelon
9 6 5 2 6 small star
10 7 11 2 7 small 77
11 8 23 60 8 small BAR
12 9 3;9;15;21 5 1 big apple
13 10 1;13 10 2 big orange
14 11 7;19 15 3 big papaya
15 12 12;24 20 4 big bell
16 13 18 20 5 big watermelon
17 14 6 30 6 big star
18 15 10 40 7 big 77
19 16 22 120 8 big BAR

View File

@ -0,0 +1,8 @@
大奖类型,slot集合,基础权重,坐庄权重,动态权重,提示
Id,SlotType,Rate,Z_Rate,D_Rate,Tips
int,list,int,int,int,string
1,1;2;3;4;5;6;7,6000,6000,100,small ManGuan
2,9;9;9;9,1300,1300,30,big SiXi
3,10;11;12,1000,1600,30,small SanYuan
4,13;14;15,600,800,20,big SanYuan
5,9;10;11;12;13;14;15,400,500,20,big ManGuan
1 大奖类型 slot集合 基础权重 坐庄权重 动态权重 提示
2 Id SlotType Rate Z_Rate D_Rate Tips
3 int list int int int string
4 1 1;2;3;4;5;6;7 6000 6000 100 small ManGuan
5 2 9;9;9;9 1300 1300 30 big SiXi
6 3 10;11;12 1000 1600 30 small SanYuan
7 4 13;14;15 600 800 20 big SanYuan
8 5 9;10;11;12;13;14;15 400 500 20 big ManGuan

View File

@ -8,23 +8,39 @@ type FruitManager struct {
mapRouterNode string
socialNode string
updateTimer util.ServerTimer
room *FruitRoom
Room *FruitRoom
players map[uint64]*FruitPlayer
}
func newFruitManager() *FruitManager {
fruitManager := &FruitManager{
room: newFruitRoom(100000),
Room: newFruitRoom(100000),
updateTimer: util.NewDurationTimer(util.GetTimeMilliseconds(), 1000),
players: make(map[uint64]*FruitPlayer),
}
return fruitManager
}
func (self *FruitManager) PlayerOffline(uid uint64) {
func (self *FruitManager) AddPlayer(uid uint64, name string) {
_, exist := self.players[uid]
if exist == false {
self.players[uid] = newFruitPlayer(uid, name)
}
self.players[uid].Online = true
}
func (self *FruitManager) RemovePlayer(uid uint64) {
//delete(self.players, uid)
self.players[uid].Online = false
}
func (self *FruitManager) GetPlayer(uid uint64) *FruitPlayer {
return self.players[uid]
}
func (self *FruitManager) Update(ms uint64) {
if !self.updateTimer.IsStart() || !self.updateTimer.IsExpired(ms) {
return
}
self.room.Update()
self.Room.Update()
}

View File

@ -7,7 +7,7 @@ import (
var (
updateList []interface{}
fruitManager *FruitManager = nil
FruitMgr *FruitManager = nil
)
type FruitUpdate struct {
@ -16,8 +16,8 @@ type FruitUpdate struct {
// 定义初始化模块比方说角色管理模块任务模块等然后通过update来处理定时器相关的处理
func (self *FruitUpdate) Init() {
fruitManager = newFruitManager()
updateList = append(updateList, fruitManager)
FruitMgr = newFruitManager()
updateList = append(updateList, FruitMgr)
}
func (self *FruitUpdate) Update(ms uint64) {

View File

@ -1,4 +1,27 @@
package model
type FruitPlayer struct {
Uid uint64
Name string
Online bool
ChipNum int32
CurrBetInfo map[int32]int32
}
func newFruitPlayer(uid uint64, name string) *FruitPlayer {
player := &FruitPlayer{
Uid: uid,
Name: name,
CurrBetInfo: make(map[int32]int32),
}
player.ResetBetInfo()
return player
}
func (self *FruitPlayer) ResetBetInfo() {
var i int32
for i = 1; i <= 8; i++ {
self.CurrBetInfo[i] = 0
}
}

View File

@ -1,68 +1,186 @@
package model
import "log"
import (
"log"
"math/rand"
"rocommon/util"
"roserver/serverproto"
)
const (
ROOM_STAGE_BET = 1 //押注阶段
ROOM_STAGE_SETTLE = 2 //开奖阶段
DURATION_BET_SEC = 10
DURATION_SETTLE_SEC = 5
DURATION_BET_SEC = 2
DURATION_SETTLE_SEC = 1
MAX_POOL_CHIP = 10000
AWARD_TYPE_NORMAL = 1
AWARD_TYPE_SPECIAL = 2
)
type FruitRoom struct {
roomId int32
players map[uint64]*FruitPlayer
stage int32
sec int32
roomId int32
stage int32
sec int32
uidList []uint64
PoolChipNum uint32
TotalBetInfo map[int32]int32
}
type FruitRateInfo struct {
AwardType int32
Rate int32
D_Rate int32
Z_Rate int32
FinalRate int32
}
func newFruitRoom(roomId int32) *FruitRoom {
return &FruitRoom{
roomId: roomId,
stage: ROOM_STAGE_BET,
sec: 0,
players: make(map[uint64]*FruitPlayer),
room := &FruitRoom{
roomId: roomId,
stage: ROOM_STAGE_BET,
sec: 0,
uidList: make([]uint64, 0),
PoolChipNum: 0,
TotalBetInfo: make(map[int32]int32),
}
room.ResetTotalBetInfo()
return room
}
func (self *FruitRoom) ResetTotalBetInfo() {
var i int32
for i = 1; i <= 8; i++ {
self.TotalBetInfo[i] = 0
}
}
func (self *FruitRoom) EnterStage(stage int32) {
func (self *FruitRoom) Join(uid uint64) {
isExist := false
for _, v := range self.uidList {
if v == uid {
isExist = true
}
}
if isExist == false {
self.uidList = append(self.uidList, uid)
}
}
func sliceRemoveValueFast(slice []uint64, value uint64) []uint64 {
for i := 0; i < len(slice); {
if slice[i] == value {
slice[i] = slice[len(slice)-1]
slice = slice[:len(slice)-1]
} else {
i++
}
}
return slice
}
func (self *FruitRoom) Leave(uid uint64) {
self.uidList = sliceRemoveValueFast(self.uidList, uid)
}
func (self *FruitRoom) Bet(uid uint64, betInfo []*serverproto.FruitSlotBetInfo) serverproto.ErrorCode {
if self.stage != ROOM_STAGE_BET {
return serverproto.ErrorCode_ERROR_FRUIT_CURR_STAGE_CANNOT_BET
}
player := FruitMgr.GetPlayer(uid)
for _, v := range betInfo {
slot := v.Slot
betNum := v.BetNum
if player.ChipNum >= betNum {
player.ChipNum -= betNum
player.CurrBetInfo[slot] += betNum
self.TotalBetInfo[slot] += betNum
self.PoolChipNum += uint32(betNum)
} else {
return serverproto.ErrorCode_ERROR_FRUIT_CHIP_INSUFFICIENT
}
}
return serverproto.ErrorCode_ERROR_OK
}
func (self *FruitRoom) JumpStage(stage int32) {
self.stage = stage
self.sec = 0
switch stage {
case ROOM_STAGE_BET:
case ROOM_STAGE_SETTLE:
self.Settle()
}
}
func (self *FruitRoom) AddPlayer(uid uint64) {
_, exist := self.players[uid]
if exist == false {
self.players[uid] = &FruitPlayer{}
// 开奖
func (self *FruitRoom) Roll(rateItems []*FruitRateInfo) *FruitRateInfo {
var sumRate int32 = 0
for i := 0; i < len(rateItems); i++ {
rateItems[i].FinalRate = rateItems[i].Rate + rateItems[i].D_Rate*int32(self.PoolChipNum)/MAX_POOL_CHIP
sumRate += rateItems[i].FinalRate
}
randomVal := rand.Int31n(sumRate)
var tmpSumRate int32 = 1
for i := 0; i < len(rateItems); i++ {
tmpSumRate += rateItems[i].FinalRate
if randomVal <= tmpSumRate {
return rateItems[i]
}
}
util.InfoF("ERR: Roll Fail, Use the First Element")
return rateItems[0]
}
func (self *FruitRoom) RemovePlayer(uid uint64) {
delete(self.players, uid)
func (self *FruitRoom) Settle() {
// 1. first roll: normal award or special award
rollResult := self.Roll([]*FruitRateInfo{
&FruitRateInfo{AwardType: AWARD_TYPE_NORMAL, Rate: 9300, D_Rate: 150},
&FruitRateInfo{AwardType: AWARD_TYPE_SPECIAL, Rate: 700, D_Rate: 200},
})
log.Println("AwardType: ", rollResult.AwardType)
//cfg := serverproto.FruitSlotTypeCfgLoader[1]
//for i := 0; i < len(self.uidList); i++ {
// uid := self.uidList[i]
// player := FruitMgr.GetPlayer(uid)
//}
}
func (self *FruitRoom) SecTick() {
totalBetInfo := make([]*serverproto.FruitSlotBetInfo, 0)
var i int32
for i = 1; i <= 8; i++ {
slotTotalBetNum := self.TotalBetInfo[i]
totalBetInfo = append(totalBetInfo, &serverproto.FruitSlotBetInfo{
Slot: i,
BetNum: slotTotalBetNum,
})
}
ntfMsg := &serverproto.SCFruitSecTickNtf{
Sec: self.sec,
PoolChipNum: self.PoolChipNum,
TotalBetInfo: totalBetInfo,
}
SendToAllGameWithUidList(ntfMsg, self.uidList)
}
func (self *FruitRoom) Update() {
if len(self.players) == 0 {
if len(self.uidList) == 0 {
//return
}
self.sec++
log.Println(self.stage, self.sec)
//log.Println(self.stage, self.sec)
switch self.stage {
case ROOM_STAGE_BET:
if self.sec > DURATION_BET_SEC {
self.EnterStage(ROOM_STAGE_SETTLE)
self.JumpStage(ROOM_STAGE_SETTLE)
break
}
self.SecTick()
case ROOM_STAGE_SETTLE:
if self.sec > DURATION_SETTLE_SEC {
self.EnterStage(ROOM_STAGE_BET)
self.JumpStage(ROOM_STAGE_BET)
break
}
}

View File

@ -15,7 +15,7 @@ func (self *FruitManager) SendMapRouter(msg interface{}, uid uint64) bool {
}
if self.mapRouterNode == "" {
fruitManager.mapRouterNode = model.SelectServiceNode(model.SERVICE_NODE_TYPE_MAP_ROUTER_STR, 0)
FruitMgr.mapRouterNode = model.SelectServiceNode(model.SERVICE_NODE_TYPE_MAP_ROUTER_STR, 0)
}
if self.mapRouterNode == "" {
util.InfoF("[SendMapRouter] map router node not exist msg:%v", msg)
@ -143,3 +143,26 @@ func SendToAllGame(msg interface{}) {
}
}
}
func SendToAllGameWithUidList(msg interface{}, uidList []uint64) {
data, info, err := rpc.EncodeMessage(msg)
if err != nil {
util.InfoF("[SendGame]EncodeMessage err:%v %v", err, msg)
return
}
sendMsg := &serverproto.ServiceTransmitAck{
MsgId: uint32(info.ID),
MsgData: data,
ClientIdList: uidList,
}
serviceList := model.GetAllServiceNodeByName(model.SERVICE_NODE_TYPE_GAME_STR)
if len(serviceList) > 0 {
for _, node := range serviceList {
gameSess := model.GetServiceNode(node)
if gameSess != nil {
gameSess.Send(sendMsg)
}
}
}
}

View File

@ -1,5 +1,77 @@
package msg
func init() {
import (
"log"
"rocommon"
"rocommon/util"
"roserver/baseserver/model"
model2 "roserver/fruit/model"
"roserver/serverproto"
)
func init() {
log.Println("fruit msg init ..")
serverproto.Handle_FRUIT_SSPlayerOnlineNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.SSPlayerOnlineNtf)
util.InfoF("receive SSPlayerOnlineNtf msg:%v", msg)
model2.FruitMgr.AddPlayer(msg.BriefInfo.Uid, msg.BriefInfo.NickName)
})
serverproto.Handle_FRUIT_SSPlayerOfflineNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.SSPlayerOfflineNtf)
util.InfoF("receive SSPlayerOfflineNtf msg:%v", msg)
model2.FruitMgr.Room.Leave(msg.Uid)
model2.FruitMgr.RemovePlayer(msg.Uid)
})
serverproto.Handle_FRUIT_CSFruitJoinReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.CSFruitJoinReq)
util.InfoF("receive CSFruitJoinReq msg:%v", msg)
model2.FruitMgr.Room.Join(msg.Uid)
ackMsg := &serverproto.SCFruitJoinAck{
Error: 0,
}
model.ServiceReplay(ev, ackMsg)
})
serverproto.Handle_FRUIT_CSFruitLeaveReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.CSFruitLeaveReq)
util.InfoF("receive CSFruitLeaveReq msg:%v", msg)
model2.FruitMgr.Room.Leave(msg.Uid)
ackMsg := &serverproto.SCFruitLeaveAck{
Error: 0,
}
model.ServiceReplay(ev, ackMsg)
})
serverproto.Handle_FRUIT_CSFruitBetReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.CSFruitBetReq)
util.InfoF("receive CSFruitBetReq msg:%v", msg)
uid := msg.Uid
errCode := model2.FruitMgr.Room.Bet(msg.Uid, msg.GetBetInfo())
player := model2.FruitMgr.GetPlayer(uid)
totalBetInfo := make([]*serverproto.FruitSlotBetInfo, 0)
myBetInfo := make([]*serverproto.FruitSlotBetInfo, 0)
var i int32
for i = 1; i <= 8; i++ {
slotTotalBetNum := model2.FruitMgr.Room.TotalBetInfo[i]
myBetNum := player.CurrBetInfo[i]
totalBetInfo = append(totalBetInfo, &serverproto.FruitSlotBetInfo{
Slot: i,
BetNum: slotTotalBetNum,
})
myBetInfo = append(myBetInfo, &serverproto.FruitSlotBetInfo{
Slot: i,
BetNum: myBetNum,
})
}
ackMsg := &serverproto.SCFruitBetAck{
Error: int32(errCode),
MyChipNum: player.ChipNum,
PoolChipNum: model2.FruitMgr.Room.PoolChipNum,
TotalBetInfo: totalBetInfo,
MyBetInfo: myBetInfo,
}
model.ServiceReplay(ev, ackMsg)
})
}

View File

@ -2760,6 +2760,7 @@ func (this *Role) playerSocialOnline() {
}
ntfMsg.ServiceNode = service.GetLocalServiceID()
this.SendAllSocial(ntfMsg)
this.SendAllFruit(ntfMsg)
}
func (this *Role) playerSocialOffline() {
@ -2767,6 +2768,7 @@ func (this *Role) playerSocialOffline() {
Uid: this.GetUUid(),
}
this.SendAllSocial(ntfMsg)
this.SendAllFruit(ntfMsg)
}
func (this *Role) playerGuildOnline(changeType int32) {

View File

@ -204,6 +204,32 @@ func (this *Role) SendAllSocial(msg interface{}) {
}
}
func (this *Role) SendAllFruit(msg interface{}) {
data, meta, err := rpc.EncodeMessage(msg)
if err != nil {
util.ErrorF("SendSocial EncodeMessage err=%v,msg=%v", err, msg)
return
}
sendMsg := &serverproto.ServiceTransmitAck{
MsgId: uint32(meta.ID),
MsgData: data,
}
//如果玩家信息存在ClientId中存放的是玩家ID否则存放的是玩家的gate sessionId
if this.uuid != 0 {
sendMsg.ClientId = this.uuid //对应的玩家 gate uuid uuidRoleList[key]
} else {
sendMsg.ClientId = this.CliID().SessID //对应的玩家 gate channelId channelRoleList[key]
}
serviceList := model.GetAllServiceNodeByName(model.SERVICE_NODE_TYPE_FRUIT_STR)
for _, node := range serviceList {
socialSess := model.GetServiceNode(node)
if socialSess != nil {
socialSess.Send(sendMsg)
}
}
}
// 发送给social服务器
func (this *Role) SendSocial(msg interface{}) bool {
//todo...

View File

@ -0,0 +1,22 @@
package msg
import (
"rocommon"
"rocommon/util"
"roserver/baseserver/model"
model2 "roserver/game/model"
"roserver/serverproto"
)
func init() {
serverproto.Handle_FRUIT_CSFruitJoinReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.CSFruitJoinReq)
role := model2.RoleMag.GetRoleOrKick(cliId, ev)
if role == nil {
return
}
util.InfoF("uid=%v receive CSBuildGuildReq msg=%v", role.GetUUid(), msg)
msg.Uuid = role.GetUUid()
role.(*model2.Role).SendAllFruit(msg)
})
}

File diff suppressed because it is too large Load Diff

View File

@ -467,15 +467,17 @@ const (
ErrorCode_ERROR_HEAD_NO_WEAR ErrorCode = 2902
ErrorCode_ERROR_HEAD_NO_ACTIVATE ErrorCode = 2903
// 许愿系统
ErrorCode_ERROR_WISH_ALL_UNLOCK ErrorCode = 3000
ErrorCode_ERROR_WISH_NOT_WISHBOX ErrorCode = 3001
ErrorCode_ERROR_WISH_NOT_ITEM ErrorCode = 3002
ErrorCode_ERROR_WISH_NOT_SLOT ErrorCode = 3003
ErrorCode_ERROR_WISH_SLOT_NOT_ITEM ErrorCode = 3004
ErrorCode_ERROR_WISH_NOT_TIME ErrorCode = 3005
ErrorCode_ERROR_WISH_NOT_SPEED_ITEM ErrorCode = 3006
ErrorCode_ERROR_WISH_BOX_NOT_ITEM ErrorCode = 3007
ErrorCode_ERROR_COLLECTION_REWARD_EMPTY ErrorCode = 3050
ErrorCode_ERROR_WISH_ALL_UNLOCK ErrorCode = 3000
ErrorCode_ERROR_WISH_NOT_WISHBOX ErrorCode = 3001
ErrorCode_ERROR_WISH_NOT_ITEM ErrorCode = 3002
ErrorCode_ERROR_WISH_NOT_SLOT ErrorCode = 3003
ErrorCode_ERROR_WISH_SLOT_NOT_ITEM ErrorCode = 3004
ErrorCode_ERROR_WISH_NOT_TIME ErrorCode = 3005
ErrorCode_ERROR_WISH_NOT_SPEED_ITEM ErrorCode = 3006
ErrorCode_ERROR_WISH_BOX_NOT_ITEM ErrorCode = 3007
ErrorCode_ERROR_COLLECTION_REWARD_EMPTY ErrorCode = 3050
ErrorCode_ERROR_FRUIT_CHIP_INSUFFICIENT ErrorCode = 4000
ErrorCode_ERROR_FRUIT_CURR_STAGE_CANNOT_BET ErrorCode = 4001
)
var ErrorCode_name = map[int32]string{
@ -913,6 +915,8 @@ var ErrorCode_name = map[int32]string{
3006: "ERROR_WISH_NOT_SPEED_ITEM",
3007: "ERROR_WISH_BOX_NOT_ITEM",
3050: "ERROR_COLLECTION_REWARD_EMPTY",
4000: "ERROR_FRUIT_CHIP_INSUFFICIENT",
4001: "ERROR_FRUIT_CURR_STAGE_CANNOT_BET",
}
var ErrorCode_value = map[string]int32{
@ -1350,6 +1354,8 @@ var ErrorCode_value = map[string]int32{
"ERROR_WISH_NOT_SPEED_ITEM": 3006,
"ERROR_WISH_BOX_NOT_ITEM": 3007,
"ERROR_COLLECTION_REWARD_EMPTY": 3050,
"ERROR_FRUIT_CHIP_INSUFFICIENT": 4000,
"ERROR_FRUIT_CURR_STAGE_CANNOT_BET": 4001,
}
func (x ErrorCode) String() string {
@ -1367,307 +1373,309 @@ func init() {
func init() { proto.RegisterFile("error_code.proto", fileDescriptor_c5513ac0a8e17e40) }
var fileDescriptor_c5513ac0a8e17e40 = []byte{
// 4818 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x7b, 0x57, 0x98, 0x24, 0xb7,
0x71, 0xff, 0x7f, 0x77, 0x67, 0x67, 0xa5, 0x51, 0xf8, 0x17, 0x9b, 0xb7, 0xb7, 0xcc, 0x39, 0x88,
0xb4, 0x2c, 0x8b, 0xd6, 0xf7, 0xf9, 0x1d, 0xd3, 0x8d, 0x99, 0x81, 0xb6, 0xa7, 0xd1, 0xec, 0x46,
0x6f, 0x78, 0xea, 0x8f, 0x36, 0x97, 0x12, 0x6d, 0x92, 0x47, 0x1f, 0x8f, 0xb2, 0xe8, 0x27, 0xe6,
0x9c, 0x73, 0x4e, 0x92, 0xa8, 0x44, 0xc9, 0x99, 0x49, 0x4e, 0x92, 0x6d, 0x89, 0x39, 0x47, 0x05,
0x06, 0x91, 0x72, 0x90, 0x6d, 0x89, 0x94, 0x98, 0x83, 0xe8, 0x0f, 0x05, 0xa0, 0x51, 0xd3, 0xdd,
0x73, 0xd4, 0xcb, 0xdd, 0xce, 0xd4, 0x0f, 0x85, 0x42, 0xa1, 0xaa, 0x50, 0x55, 0xc0, 0xf4, 0x60,
0x63, 0xeb, 0xd6, 0x2d, 0x5b, 0xcb, 0x3f, 0xda, 0x72, 0xf8, 0xc6, 0xa7, 0x8e, 0xdd, 0xba, 0x65,
0xdb, 0x96, 0xe0, 0x23, 0xc7, 0x6d, 0x6c, 0xfd, 0xc2, 0xc6, 0x56, 0xfc, 0x70, 0xf0, 0xb7, 0x8e,
0xef, 0x7d, 0x98, 0x6b, 0x44, 0xb8, 0xe5, 0xf0, 0x8d, 0xe0, 0xa3, 0xbd, 0x0f, 0xf1, 0x2c, 0x93,
0x59, 0x29, 0x97, 0xe1, 0xff, 0x05, 0x1f, 0xef, 0xf5, 0xcc, 0xa7, 0x01, 0x13, 0x31, 0xcc, 0x04,
0x3b, 0xf4, 0x3e, 0x66, 0x3e, 0x67, 0x3c, 0x96, 0x43, 0x91, 0xc0, 0x6c, 0xb0, 0x53, 0x6f, 0x93,
0xfd, 0x4a, 0xc6, 0xbc, 0x4c, 0xa4, 0x2a, 0x07, 0xb2, 0x48, 0x22, 0x98, 0x0b, 0x76, 0xe9, 0x6d,
0x36, 0x94, 0xb1, 0x4c, 0xf8, 0x3a, 0x92, 0x78, 0x22, 0x8b, 0xe1, 0x08, 0x3a, 0x64, 0x14, 0xcf,
0x29, 0x65, 0x3e, 0xd8, 0xd4, 0x03, 0x43, 0x49, 0xd8, 0x98, 0x97, 0x7c, 0x4d, 0xe4, 0x0a, 0xba,
0xf5, 0x6f, 0xc7, 0xa9, 0x5a, 0x87, 0x85, 0x60, 0xa9, 0xb7, 0xa3, 0xf9, 0x56, 0xb1, 0x7c, 0xb9,
0xcc, 0xf8, 0x2a, 0xcb, 0x22, 0x1e, 0xc1, 0x87, 0x82, 0xa0, 0xf7, 0x71, 0x43, 0xe8, 0xb3, 0x61,
0x39, 0x28, 0xe2, 0x18, 0x3e, 0xec, 0xa7, 0x14, 0x8a, 0x8f, 0x89, 0xa0, 0xbd, 0xe0, 0xa0, 0xde,
0xfe, 0x6d, 0x4b, 0x28, 0x13, 0xce, 0xa3, 0x92, 0x85, 0x4a, 0xac, 0xf0, 0x32, 0x94, 0x11, 0x87,
0x8f, 0x04, 0x7b, 0xf6, 0x76, 0x25, 0x50, 0x43, 0xd3, 0xa4, 0x12, 0xbf, 0x85, 0x8f, 0x06, 0x7b,
0xf4, 0x76, 0x69, 0x07, 0x14, 0x39, 0x8f, 0xe0, 0x63, 0xc1, 0x3e, 0xbd, 0x3d, 0x08, 0x1d, 0xe5,
0xce, 0x43, 0x99, 0x71, 0x2f, 0xfd, 0xff, 0x0f, 0xf6, 0xed, 0xed, 0xd9, 0x8e, 0xf1, 0x42, 0x43,
0xb0, 0x5f, 0x6f, 0xaf, 0xe9, 0x20, 0xab, 0xcd, 0x1d, 0x6a, 0xf2, 0xc6, 0x7c, 0x85, 0xc7, 0x14,
0x10, 0x78, 0xc5, 0x22, 0xa0, 0xcf, 0x12, 0x1e, 0xc1, 0x8e, 0xc1, 0xe6, 0x5e, 0x40, 0xbe, 0x15,
0xc9, 0x0a, 0x8b, 0x45, 0x04, 0x9b, 0x82, 0xc5, 0xde, 0x0e, 0xd6, 0x1e, 0xc4, 0x70, 0xa4, 0xca,
0x70, 0xc4, 0xc3, 0x65, 0x58, 0xf4, 0xb3, 0xf4, 0x99, 0x52, 0xb1, 0x5e, 0x4b, 0x28, 0xb3, 0xa8,
0x1a, 0xb7, 0x39, 0xd8, 0xad, 0xb7, 0x53, 0x1b, 0x20, 0x67, 0x2b, 0x1c, 0x96, 0xfc, 0x6c, 0x43,
0xbd, 0xb9, 0x2b, 0x3c, 0xcb, 0x85, 0x4c, 0x60, 0x27, 0x62, 0x24, 0xe3, 0x3e, 0x95, 0x7a, 0x67,
0xbf, 0xf1, 0x7a, 0x7f, 0x71, 0x3f, 0x53, 0x11, 0x73, 0xd8, 0xc5, 0xab, 0x3f, 0x1c, 0xb1, 0x38,
0xe6, 0xc9, 0x90, 0x97, 0x4a, 0x8c, 0x79, 0x19, 0x8b, 0xb1, 0x50, 0xb0, 0xab, 0x9f, 0x2a, 0xe7,
0xd9, 0x0a, 0xcf, 0xec, 0xb6, 0xed, 0xe6, 0x6d, 0x35, 0x8f, 0x96, 0x4b, 0x34, 0x6d, 0x34, 0x79,
0x1e, 0xc1, 0xee, 0x6d, 0x34, 0xbe, 0x96, 0x8a, 0x8c, 0xc3, 0x1e, 0xc1, 0xce, 0xbd, 0xc5, 0x09,
0x7e, 0x63, 0x26, 0x12, 0xc5, 0x44, 0x02, 0x7b, 0x06, 0xbb, 0xf6, 0x96, 0x26, 0x48, 0xcb, 0x22,
0x5c, 0xd6, 0x1a, 0x63, 0x0a, 0xf6, 0x0a, 0xf6, 0xee, 0xed, 0x3e, 0x41, 0x2c, 0x72, 0x6e, 0x27,
0xb4, 0xa2, 0xee, 0xed, 0x59, 0xe3, 0x1e, 0x8c, 0x58, 0x5e, 0x86, 0x19, 0x67, 0x8a, 0xc3, 0x3e,
0xb5, 0x5d, 0x0d, 0x59, 0x82, 0xda, 0xc9, 0xf8, 0x50, 0xe4, 0x8a, 0x67, 0xb0, 0xaf, 0x9f, 0x1b,
0x01, 0x76, 0x0e, 0xc3, 0x78, 0xbf, 0x60, 0xf7, 0xde, 0xce, 0x84, 0x98, 0xc6, 0x4c, 0x0d, 0x64,
0x36, 0xb6, 0x4e, 0xb5, 0xbf, 0x5f, 0xae, 0x4c, 0x62, 0x91, 0x38, 0xc3, 0x2c, 0x13, 0x09, 0x07,
0x78, 0xf5, 0x56, 0x3e, 0x24, 0x12, 0x94, 0x5d, 0x2b, 0x19, 0x0e, 0xf4, 0xfb, 0x92, 0xc8, 0x92,
0x29, 0x95, 0x95, 0xa9, 0x14, 0x89, 0x82, 0xdf, 0xf7, 0x8b, 0xc1, 0x6f, 0xc9, 0x5e, 0x7e, 0xc6,
0x8f, 0x19, 0xf1, 0x4c, 0xea, 0x81, 0xc6, 0xc2, 0x37, 0xfc, 0x2a, 0x91, 0x10, 0xca, 0x64, 0x20,
0x86, 0xc4, 0x05, 0x8e, 0xf0, 0xf6, 0x81, 0x00, 0x63, 0xdc, 0x63, 0xb6, 0x06, 0x9f, 0xf3, 0xeb,
0x37, 0x3c, 0xd1, 0x8f, 0xa3, 0x15, 0x96, 0x84, 0x1c, 0x3e, 0xef, 0x17, 0x88, 0x44, 0xfb, 0x3d,
0x0e, 0x3c, 0xb2, 0x3e, 0x50, 0xea, 0xf5, 0x19, 0x9b, 0x85, 0x3f, 0xf6, 0x8a, 0x73, 0x44, 0xfc,
0xdf, 0x92, 0xff, 0xa4, 0x36, 0x36, 0x57, 0x19, 0x4f, 0x86, 0x6a, 0x84, 0x8c, 0x8f, 0x0a, 0x0e,
0xec, 0xed, 0xdb, 0x46, 0x0c, 0x65, 0xae, 0xa8, 0x3a, 0x8e, 0xf6, 0xae, 0x82, 0xc0, 0x31, 0x5b,
0x2b, 0x3f, 0x2b, 0xfb, 0x65, 0xae, 0xd8, 0x90, 0xc3, 0x31, 0xc1, 0xc1, 0xbd, 0x03, 0xa8, 0x4e,
0x46, 0x4c, 0x5b, 0xb8, 0x06, 0x84, 0x32, 0x89, 0x84, 0x12, 0xb2, 0xb2, 0xdb, 0x2d, 0xc1, 0xfe,
0xbd, 0xbd, 0x0d, 0x96, 0x1f, 0x5a, 0x88, 0xd4, 0x29, 0x30, 0x62, 0x8a, 0x11, 0x2d, 0x1e, 0xeb,
0x03, 0x89, 0x81, 0x0d, 0x64, 0x36, 0xe4, 0x65, 0x52, 0x8c, 0xa9, 0x58, 0x7f, 0xea, 0x75, 0x3d,
0x81, 0x92, 0xb0, 0xd5, 0xdb, 0x84, 0xa1, 0xa8, 0xf5, 0xd4, 0xc4, 0xa0, 0x31, 0x53, 0xe1, 0x08,
0x8e, 0xf3, 0xa6, 0x6e, 0xe8, 0x66, 0x9b, 0x8a, 0xb4, 0x64, 0xb1, 0x0e, 0x45, 0x09, 0x87, 0x6d,
0x5e, 0xb1, 0x06, 0x92, 0xc7, 0x52, 0x2b, 0xc5, 0x7c, 0x82, 0xe3, 0xeb, 0x0b, 0xc9, 0xf8, 0x40,
0xdb, 0x65, 0x6d, 0x21, 0x5f, 0xa8, 0x73, 0xb1, 0x30, 0xab, 0x8e, 0x3f, 0xf3, 0xe4, 0x70, 0x24,
0xd2, 0xfa, 0xe8, 0x2f, 0x7a, 0x6b, 0x43, 0x72, 0xc3, 0xda, 0x4e, 0x08, 0xf6, 0xea, 0xed, 0x36,
0x01, 0x18, 0xa7, 0x32, 0xa7, 0x21, 0xf9, 0xcf, 0x83, 0x3d, 0xdc, 0x0c, 0xf9, 0xb2, 0x88, 0xe3,
0x6a, 0x19, 0xf8, 0x09, 0x4e, 0x9e, 0x09, 0x76, 0xa9, 0x82, 0x85, 0xa7, 0xc7, 0x32, 0x5c, 0x86,
0x53, 0x66, 0x82, 0x4f, 0x38, 0xfb, 0xa0, 0x34, 0x54, 0x15, 0x4a, 0xea, 0x42, 0xe9, 0xa9, 0x33,
0xc1, 0x01, 0x4e, 0x1b, 0x06, 0x59, 0xdf, 0x56, 0x73, 0x62, 0x9e, 0x36, 0x13, 0xec, 0x5a, 0x85,
0x2d, 0xc4, 0x69, 0x9a, 0x39, 0x8e, 0xe0, 0xf4, 0x99, 0x60, 0x4f, 0xb7, 0x69, 0x86, 0xa8, 0x2d,
0x08, 0x37, 0xce, 0xc4, 0xc3, 0x33, 0x66, 0x82, 0xbd, 0x9c, 0x3a, 0x3c, 0x00, 0x6d, 0xd0, 0x22,
0xce, 0x6c, 0x20, 0xcc, 0xbf, 0xda, 0x5e, 0x51, 0x6c, 0x38, 0xab, 0x21, 0x69, 0xfb, 0x11, 0x74,
0x76, 0x43, 0x98, 0x5a, 0x4a, 0x70, 0x4e, 0x63, 0xaa, 0x04, 0x75, 0xc3, 0xb2, 0xc4, 0xaa, 0xf6,
0xdc, 0x99, 0x60, 0x6f, 0xb7, 0x39, 0x54, 0x18, 0x99, 0xf2, 0xc4, 0x4a, 0x73, 0x5e, 0x63, 0x16,
0x37, 0x97, 0xd5, 0xc9, 0xf9, 0x33, 0xc1, 0x7e, 0xee, 0xd8, 0x75, 0xb3, 0xb8, 0x3f, 0x74, 0xf8,
0xc8, 0x78, 0xce, 0x15, 0x5c, 0xd0, 0x26, 0x2c, 0x37, 0x1e, 0xac, 0x67, 0x83, 0x0b, 0x67, 0x82,
0x03, 0x7b, 0xfb, 0x34, 0x01, 0x0d, 0x7b, 0xba, 0x68, 0x26, 0x38, 0xd8, 0xa5, 0x1d, 0x14, 0x98,
0xf1, 0x5c, 0x16, 0x59, 0x38, 0x71, 0x8c, 0x5f, 0xdc, 0x30, 0x1d, 0x99, 0x45, 0x1c, 0xc3, 0x28,
0x5c, 0x32, 0x13, 0xec, 0xe4, 0x02, 0xa8, 0xa1, 0xf1, 0xb5, 0x14, 0x29, 0x97, 0xce, 0x04, 0x3b,
0x3b, 0xa7, 0x0d, 0x4d, 0x04, 0x77, 0x93, 0x5f, 0x5e, 0x27, 0x79, 0x53, 0xbc, 0x62, 0xc6, 0x9b,
0x31, 0x92, 0x6a, 0xfe, 0x7c, 0xe5, 0x4c, 0xb0, 0x9b, 0x8b, 0x73, 0x48, 0x37, 0x1b, 0xda, 0xe7,
0xeb, 0x32, 0x89, 0xe0, 0xaa, 0xfa, 0x68, 0x9a, 0x4c, 0xad, 0x29, 0xb8, 0x9a, 0xec, 0xa5, 0x9f,
0x58, 0x9f, 0x6d, 0x89, 0xc4, 0x2f, 0xe0, 0x9a, 0x99, 0x60, 0x7f, 0x17, 0x90, 0x10, 0x21, 0x6d,
0x3c, 0x30, 0xc2, 0x48, 0x59, 0x0e, 0x58, 0xae, 0xe0, 0xda, 0x3a, 0x2c, 0x94, 0x71, 0xcc, 0x43,
0xad, 0xbf, 0x55, 0xae, 0x3f, 0x0f, 0x58, 0x9c, 0x73, 0xb8, 0xae, 0x3e, 0x5f, 0x63, 0x1f, 0xae,
0x27, 0xae, 0x57, 0x67, 0xe4, 0x97, 0x17, 0xcb, 0x55, 0xb8, 0x81, 0x58, 0xd9, 0x80, 0xe5, 0x23,
0x1d, 0x6b, 0x6b, 0x51, 0xe4, 0x46, 0xa2, 0x57, 0x07, 0xd1, 0x8b, 0x2b, 0x52, 0xb8, 0x89, 0x68,
0x86, 0x92, 0x6c, 0x1c, 0x81, 0x9b, 0x67, 0x82, 0x7d, 0x5c, 0xa0, 0x74, 0xf4, 0x94, 0xa5, 0x66,
0x97, 0x2d, 0xfb, 0x2f, 0x11, 0x97, 0x9a, 0xc4, 0xe4, 0x7c, 0x8d, 0xec, 0xd1, 0x97, 0xa7, 0xe2,
0xb4, 0x1b, 0x7b, 0xdc, 0x57, 0x66, 0x82, 0xdf, 0xeb, 0x1d, 0x3c, 0x89, 0x73, 0x71, 0xcd, 0x7d,
0x56, 0xb2, 0x8c, 0xb8, 0x13, 0xf2, 0x96, 0xed, 0xa9, 0xc0, 0x38, 0xda, 0x57, 0x5b, 0xe6, 0x1e,
0x33, 0xc5, 0x33, 0xc1, 0x26, 0xdc, 0xfe, 0x6b, 0x64, 0x67, 0x1c, 0xce, 0x78, 0x00, 0x66, 0x08,
0x72, 0x19, 0xbe, 0x4e, 0xb6, 0x98, 0x49, 0x81, 0x59, 0x8c, 0x40, 0xc7, 0x88, 0x68, 0xd8, 0xbd,
0x9b, 0xb8, 0xa4, 0x86, 0xf1, 0x44, 0x09, 0xb5, 0x4e, 0x00, 0xf7, 0xd4, 0x00, 0x36, 0x6b, 0xd1,
0x99, 0x5a, 0x19, 0x0a, 0xb5, 0x0e, 0xf7, 0x12, 0x17, 0xc2, 0x89, 0x74, 0x16, 0x8a, 0x94, 0xfb,
0x48, 0x50, 0xd0, 0x14, 0x1d, 0x2b, 0x8c, 0x9c, 0x74, 0x29, 0xf7, 0xcf, 0x04, 0x7f, 0xd0, 0x3b,
0x64, 0xfa, 0x04, 0x55, 0x82, 0xe6, 0x73, 0xd2, 0xbe, 0xcc, 0x73, 0x78, 0x80, 0xc4, 0x0a, 0x3d,
0x4e, 0x7f, 0x49, 0x30, 0xfa, 0x08, 0x36, 0x29, 0xdb, 0x83, 0x33, 0xc1, 0xee, 0x2e, 0x2b, 0xa8,
0x80, 0x7e, 0x81, 0x0f, 0xb5, 0x92, 0xab, 0xd1, 0x0f, 0x13, 0x8f, 0xad, 0xc8, 0x79, 0x31, 0xd6,
0x55, 0x59, 0x04, 0x8f, 0x10, 0xfb, 0xaf, 0x51, 0xf1, 0x08, 0xc6, 0x25, 0xea, 0x15, 0xc3, 0xa3,
0x35, 0x3d, 0x4e, 0x88, 0x2b, 0x92, 0x21, 0x3c, 0x46, 0xb6, 0xd4, 0x03, 0x5c, 0x72, 0xca, 0x92,
0x08, 0x1e, 0x9f, 0x09, 0xf6, 0x75, 0xf5, 0x4f, 0xcb, 0x8a, 0x8d, 0xbc, 0x4f, 0x10, 0x4f, 0xa8,
0x40, 0xe8, 0x2a, 0x0e, 0x18, 0xc1, 0x93, 0xc4, 0x10, 0x2b, 0xcc, 0x98, 0xa5, 0xc4, 0x5d, 0x9f,
0x22, 0xd2, 0xd8, 0xaa, 0x43, 0x24, 0xa1, 0x1c, 0xfb, 0x72, 0xe6, 0x6d, 0x62, 0xaa, 0x16, 0x41,
0x4e, 0x5c, 0xaf, 0xdf, 0x77, 0x88, 0x7e, 0x2d, 0xce, 0x6e, 0x71, 0xc6, 0x92, 0x65, 0x38, 0x65,
0xb6, 0x41, 0xc6, 0xad, 0x37, 0x01, 0x04, 0x4e, 0x9d, 0xf5, 0x8e, 0x6f, 0xc9, 0x7c, 0x45, 0x18,
0x5f, 0x48, 0x65, 0x0e, 0xa7, 0xcd, 0x7a, 0x1b, 0xa3, 0xf4, 0x8c, 0x0f, 0x32, 0x9e, 0x8f, 0xac,
0x52, 0x4e, 0x9f, 0x0d, 0x3e, 0xd5, 0x3b, 0x68, 0x3a, 0xaa, 0x9e, 0x47, 0x9e, 0x31, 0x85, 0xab,
0x37, 0x1d, 0x91, 0x44, 0x70, 0xe6, 0x6c, 0x43, 0x47, 0x1e, 0x15, 0x09, 0x1e, 0xc1, 0x59, 0xb3,
0x7e, 0xc7, 0xda, 0xe6, 0xc5, 0xbc, 0xff, 0xec, 0x59, 0x6f, 0x19, 0x13, 0x8a, 0x0c, 0x23, 0x03,
0xb8, 0x6c, 0x1a, 0xc0, 0x6d, 0xc5, 0x8d, 0x44, 0x90, 0x43, 0x0b, 0x5d, 0x28, 0x59, 0x58, 0x91,
0xe8, 0x53, 0x89, 0x47, 0x70, 0xe5, 0xac, 0x8f, 0x06, 0x13, 0x08, 0x9d, 0x71, 0x44, 0x19, 0x5b,
0xd5, 0x13, 0xe5, 0x70, 0xd5, 0xac, 0xf7, 0xa9, 0x09, 0x58, 0x55, 0xb0, 0x58, 0x05, 0x5d, 0x3d,
0xeb, 0x2d, 0x28, 0x1c, 0x31, 0x55, 0x19, 0x6a, 0xce, 0x93, 0xa8, 0xcc, 0x79, 0x3c, 0x80, 0x5b,
0xeb, 0x90, 0x71, 0x3e, 0xd4, 0x07, 0x88, 0xe2, 0x89, 0xb2, 0xdb, 0xf2, 0x2d, 0xa2, 0xe6, 0x0a,
0x22, 0x12, 0xc5, 0x33, 0x5a, 0x76, 0x7e, 0x7b, 0xd6, 0x1b, 0x1a, 0xa2, 0x56, 0x65, 0x16, 0x47,
0x34, 0x1f, 0x32, 0xb8, 0xbf, 0xa8, 0x73, 0x33, 0x38, 0xc5, 0xb2, 0x21, 0x57, 0xa5, 0x1c, 0x0c,
0x74, 0x3d, 0x06, 0x7f, 0x49, 0x34, 0x41, 0x50, 0xc4, 0xfa, 0x91, 0xd9, 0x5f, 0x91, 0x9d, 0x63,
0x19, 0x4f, 0x58, 0x99, 0x6c, 0x29, 0xc3, 0xcf, 0x1f, 0x76, 0xd4, 0x51, 0x1b, 0xc7, 0x7c, 0x6e,
0xa3, 0x0c, 0xb7, 0x1c, 0x7f, 0xcc, 0x36, 0xb8, 0x8d, 0x6c, 0x8c, 0x01, 0x8d, 0x36, 0xb6, 0x6e,
0x89, 0x8f, 0x3c, 0x6e, 0x5b, 0xc9, 0x8f, 0x3e, 0x76, 0xdb, 0x09, 0x70, 0xfb, 0x2c, 0x09, 0x1e,
0x8e, 0x4b, 0xff, 0x04, 0x3b, 0xfc, 0x8e, 0xc6, 0xf0, 0x5a, 0x68, 0xbc, 0x93, 0x18, 0xbf, 0x1d,
0x6e, 0x3c, 0x27, 0xe7, 0x2c, 0x97, 0x09, 0xdc, 0x45, 0x19, 0x98, 0x46, 0xcb, 0x88, 0xb3, 0xc8,
0x6f, 0xfb, 0x3f, 0xcf, 0x06, 0xbf, 0xdb, 0xfb, 0x44, 0x13, 0x80, 0x9d, 0x87, 0x66, 0xd1, 0xf3,
0x5d, 0x62, 0x47, 0x7a, 0xba, 0x31, 0x37, 0x0d, 0xa3, 0x98, 0x27, 0x36, 0x71, 0xbd, 0x97, 0xec,
0x85, 0x45, 0x84, 0x32, 0xc9, 0x0b, 0xf3, 0xbf, 0xce, 0x0d, 0x0c, 0xee, 0x3e, 0xb2, 0xf9, 0x16,
0x57, 0x37, 0xa1, 0xfb, 0xc9, 0xe2, 0xe8, 0x64, 0xce, 0xa8, 0x1f, 0x20, 0xba, 0x1b, 0x33, 0x74,
0x79, 0x9d, 0x6f, 0x46, 0xf8, 0x01, 0x1e, 0x22, 0xa3, 0x3d, 0x15, 0x73, 0x0e, 0xa4, 0x3f, 0x3c,
0xeb, 0x33, 0x78, 0x47, 0x8f, 0xb0, 0xc0, 0x15, 0x31, 0x3c, 0x32, 0x1b, 0x2c, 0xb9, 0x4e, 0x86,
0x23, 0x22, 0xe1, 0x51, 0x6a, 0x1c, 0x72, 0x9c, 0x72, 0x65, 0xf4, 0x53, 0x0b, 0x69, 0xcf, 0x12,
0xbd, 0x53, 0x58, 0x95, 0xc7, 0x3e, 0x47, 0xfc, 0x08, 0x4b, 0xcd, 0x8c, 0x87, 0x59, 0x21, 0x54,
0x43, 0x09, 0xef, 0x12, 0x9b, 0xcd, 0x47, 0xb2, 0xaa, 0x9c, 0x2c, 0xce, 0xce, 0x77, 0xfa, 0x9c,
0x37, 0x46, 0x44, 0x4d, 0xa4, 0xb9, 0x09, 0x37, 0x31, 0x6b, 0x8e, 0xa4, 0xf1, 0x1a, 0xe4, 0xa3,
0xac, 0x6d, 0xe3, 0xc0, 0x99, 0x73, 0xa4, 0xac, 0xd1, 0x10, 0xed, 0xfd, 0xfd, 0x62, 0x5d, 0x1f,
0x77, 0x70, 0xd6, 0x1c, 0xa9, 0xc0, 0xdc, 0x78, 0x93, 0x7c, 0x6a, 0x69, 0xe0, 0xec, 0x3a, 0x7f,
0x1f, 0x3c, 0x8b, 0x44, 0x61, 0x9d, 0x7e, 0xce, 0x1c, 0xa9, 0x35, 0x0c, 0x64, 0x2c, 0xb1, 0xfb,
0x97, 0x2b, 0xd3, 0x03, 0x3d, 0x77, 0xce, 0x6f, 0xea, 0x04, 0x13, 0x94, 0xef, 0xbc, 0x39, 0x52,
0x1f, 0x10, 0x6d, 0x54, 0x8a, 0x38, 0x9f, 0x4e, 0x20, 0x43, 0x9d, 0x14, 0x0d, 0x58, 0x92, 0xc7,
0x22, 0x77, 0x21, 0xe5, 0x42, 0xca, 0xc2, 0x20, 0xf2, 0xa2, 0x4f, 0x00, 0x17, 0xd1, 0x65, 0x18,
0x80, 0x3e, 0x1d, 0xb5, 0x53, 0x15, 0xfd, 0x52, 0x03, 0xe1, 0xe2, 0x26, 0xc4, 0xf9, 0x9d, 0x83,
0x5c, 0x32, 0xe7, 0x0d, 0x85, 0x40, 0xf4, 0xb1, 0x50, 0x65, 0x5a, 0x22, 0x82, 0x4b, 0xe7, 0xfc,
0x61, 0x3c, 0x39, 0x99, 0x16, 0xdb, 0xb0, 0xba, 0xac, 0x29, 0xb1, 0x48, 0xca, 0x7e, 0xcc, 0xc2,
0x65, 0x03, 0xb8, 0x7c, 0xce, 0x9f, 0x90, 0x16, 0xe0, 0xa8, 0x7a, 0x41, 0x57, 0x34, 0xc9, 0x39,
0x67, 0x59, 0x38, 0x32, 0x61, 0xf8, 0xca, 0x39, 0xea, 0x46, 0x69, 0xed, 0x98, 0xff, 0xf6, 0x1c,
0x49, 0xd1, 0x74, 0x80, 0xd0, 0x09, 0x57, 0x2e, 0x86, 0x49, 0xa1, 0xb7, 0x26, 0xe5, 0x4c, 0x71,
0x16, 0xc1, 0xf7, 0xe6, 0x7c, 0x96, 0x53, 0xe4, 0x1c, 0x8d, 0xb3, 0xbd, 0x1c, 0xbd, 0x9f, 0x08,
0x33, 0xda, 0x38, 0xec, 0xf0, 0x72, 0xb0, 0xf5, 0xb0, 0xa3, 0x37, 0x4a, 0xfe, 0xc5, 0x63, 0x8f,
0xdc, 0xba, 0x71, 0x38, 0x3c, 0x40, 0x0c, 0x19, 0x03, 0xd1, 0x20, 0x33, 0x6d, 0x6a, 0xdb, 0x8a,
0x41, 0x43, 0x7b, 0x70, 0xce, 0xd7, 0x76, 0x61, 0x2c, 0xc6, 0x7d, 0x91, 0x0c, 0x4b, 0x25, 0x57,
0x79, 0xd6, 0xac, 0x3f, 0x9e, 0x9f, 0xf3, 0x8e, 0x56, 0xc3, 0x62, 0xca, 0x58, 0x64, 0xe6, 0x13,
0xbc, 0x40, 0x36, 0xac, 0x06, 0x94, 0x85, 0x3e, 0x1d, 0x8c, 0x05, 0xfe, 0x74, 0x3a, 0x6c, 0x90,
0x09, 0x7d, 0xb6, 0xb1, 0x6c, 0x98, 0xc3, 0x8b, 0x64, 0x1d, 0x35, 0x98, 0xc8, 0x4b, 0x1b, 0x7c,
0x5f, 0x9a, 0xf3, 0x75, 0xe7, 0xb0, 0x10, 0x71, 0x44, 0x1a, 0x0c, 0xaf, 0x12, 0x67, 0x33, 0x34,
0x16, 0xeb, 0xe0, 0xb6, 0x6e, 0xe9, 0xaf, 0xb5, 0x8e, 0x35, 0x6b, 0x7e, 0xbd, 0x31, 0x36, 0xe3,
0x83, 0x22, 0xe7, 0x51, 0xc9, 0xd2, 0x34, 0x5e, 0x87, 0x37, 0x88, 0x41, 0x59, 0x3a, 0x39, 0x2a,
0xe5, 0x2a, 0xbc, 0x49, 0xbc, 0xc8, 0x4e, 0xae, 0x07, 0x12, 0x47, 0x7e, 0x8b, 0x04, 0x0a, 0x37,
0xbd, 0x0e, 0xbe, 0xc8, 0xff, 0xed, 0x06, 0x31, 0x64, 0x89, 0xb2, 0x93, 0xbf, 0x43, 0x14, 0x68,
0x88, 0x69, 0xc6, 0x73, 0x11, 0xe9, 0x43, 0x1f, 0x61, 0x31, 0x67, 0x2b, 0x1c, 0xde, 0x25, 0x76,
0x52, 0x4d, 0xc0, 0x0a, 0x35, 0x92, 0x99, 0xae, 0x1c, 0xde, 0x6b, 0x2c, 0x21, 0x12, 0x79, 0x9f,
0x25, 0x91, 0x3b, 0xa9, 0x7e, 0x43, 0x5c, 0xd4, 0x00, 0xc6, 0x7c, 0xdc, 0x47, 0x0b, 0x71, 0x6b,
0x78, 0xbf, 0x7d, 0x95, 0x18, 0x0a, 0x4c, 0xb3, 0xf6, 0xc4, 0x4e, 0x9d, 0x89, 0x0f, 0x79, 0x86,
0x1d, 0x9c, 0xd4, 0xf1, 0xe7, 0x9d, 0x81, 0xf4, 0xf1, 0xdf, 0x7a, 0x1c, 0x3f, 0xb9, 0x53, 0x17,
0x18, 0xd7, 0xe9, 0xf4, 0x13, 0xc1, 0x29, 0x9d, 0xe6, 0x82, 0x31, 0xa4, 0xe0, 0x07, 0x38, 0xb5,
0xe3, 0x4b, 0x5f, 0x43, 0xae, 0x48, 0xa7, 0x75, 0xa6, 0xee, 0x96, 0x4a, 0x70, 0xa5, 0xa7, 0x77,
0xea, 0x06, 0x91, 0xaf, 0xe7, 0x5a, 0x40, 0x6b, 0x88, 0x67, 0x34, 0xd6, 0xd9, 0xf0, 0xa3, 0x33,
0x1b, 0x93, 0x68, 0xaf, 0x30, 0x13, 0xd9, 0x86, 0x54, 0xa7, 0x69, 0x12, 0x4a, 0x87, 0xb9, 0x98,
0x27, 0x70, 0x76, 0x43, 0x7c, 0x97, 0x37, 0xc0, 0x39, 0x0d, 0xcd, 0x78, 0x83, 0x58, 0x16, 0xe1,
0x32, 0x9c, 0xdb, 0x5c, 0x5f, 0x36, 0xcc, 0x5d, 0x1a, 0xc0, 0x14, 0x87, 0xf3, 0x3a, 0xde, 0xdb,
0x0c, 0x02, 0xe3, 0xab, 0xe7, 0xa3, 0x95, 0x70, 0x7e, 0xc7, 0x47, 0xb2, 0xfa, 0x76, 0xfb, 0x75,
0x5e, 0xd0, 0x90, 0x06, 0x05, 0xcd, 0x79, 0x92, 0x0b, 0x6c, 0x64, 0x5d, 0xd8, 0x5c, 0xa6, 0xbf,
0x48, 0xbb, 0xa8, 0xe3, 0x4b, 0xdd, 0x94, 0x53, 0xbe, 0x17, 0x77, 0xbc, 0xbf, 0x6a, 0x0a, 0x4d,
0x25, 0x2f, 0x21, 0x2c, 0x35, 0xcd, 0xdc, 0xe7, 0x59, 0xc3, 0xb9, 0xb4, 0xe3, 0xfd, 0x45, 0x13,
0x5d, 0x3f, 0xbd, 0x96, 0x71, 0x5c, 0xd6, 0xf1, 0x51, 0x9c, 0xc2, 0xcc, 0x0c, 0x97, 0xd7, 0x66,
0x70, 0x54, 0xb5, 0x9e, 0x72, 0xb8, 0x82, 0x2c, 0x19, 0xa7, 0x67, 0x49, 0xe1, 0x8e, 0x2b, 0xe4,
0x7d, 0x65, 0x8d, 0xb7, 0x05, 0xd8, 0x02, 0xec, 0xaa, 0x1a, 0x6f, 0xec, 0x92, 0x15, 0xa6, 0x51,
0x0d, 0x57, 0x4f, 0x21, 0x62, 0x63, 0xfa, 0x9a, 0x4e, 0xb0, 0xe8, 0xae, 0xc7, 0x34, 0xd1, 0x76,
0xfa, 0xaf, 0x25, 0xd6, 0x8a, 0xc2, 0xe6, 0xb9, 0xde, 0x23, 0x7b, 0xda, 0x44, 0x70, 0x5d, 0x7d,
0x31, 0x26, 0x6f, 0x1d, 0x17, 0xb1, 0x12, 0x70, 0x7d, 0x6d, 0x70, 0x75, 0x21, 0x66, 0x07, 0xdf,
0x40, 0xdc, 0x8c, 0xac, 0x85, 0x45, 0x2b, 0xd8, 0xd4, 0xbb, 0x91, 0x18, 0x89, 0x26, 0x1f, 0x2a,
0xd6, 0x0b, 0x6e, 0x1a, 0x64, 0x26, 0x67, 0xc6, 0x52, 0xfd, 0xa6, 0x8e, 0x3f, 0x80, 0xda, 0x51,
0xbe, 0x3d, 0x70, 0x33, 0xf1, 0xad, 0x1a, 0xd6, 0x25, 0xb2, 0x5f, 0xaa, 0x6d, 0x31, 0x81, 0xe8,
0x8f, 0x0e, 0xf6, 0xbd, 0x9a, 0x6c, 0xd5, 0xa1, 0xe8, 0x4a, 0x3e, 0x9c, 0xef, 0xbb, 0xc4, 0x17,
0x26, 0x50, 0x86, 0xab, 0x01, 0xfd, 0x0b, 0xb1, 0xc6, 0xac, 0x48, 0x30, 0xf6, 0xc7, 0xe6, 0xa0,
0x86, 0x5b, 0xea, 0x34, 0xb4, 0x34, 0x93, 0xb5, 0x7f, 0x95, 0xb8, 0x31, 0xd2, 0x18, 0x26, 0xd4,
0x43, 0xae, 0xe0, 0x6b, 0xc4, 0xf4, 0x91, 0x94, 0xc8, 0xb2, 0xc0, 0x96, 0xe7, 0xd7, 0x3b, 0x3e,
0x99, 0x76, 0x14, 0x4c, 0x82, 0xbf, 0x41, 0xf6, 0x0a, 0x09, 0x23, 0x31, 0x1c, 0xe9, 0xda, 0xce,
0x28, 0x11, 0xbe, 0xd9, 0x09, 0x0e, 0xea, 0xed, 0x47, 0xe8, 0x7c, 0x2d, 0x8d, 0x65, 0xc6, 0x4b,
0xd3, 0x47, 0xeb, 0x8b, 0xc4, 0xdd, 0xbd, 0xc1, 0xad, 0x1d, 0x9f, 0x80, 0xb8, 0xe0, 0x93, 0x8d,
0x59, 0x5c, 0x35, 0x49, 0x94, 0x6d, 0xba, 0xc0, 0xbf, 0x76, 0xea, 0xe7, 0x8f, 0xed, 0xc6, 0xf8,
0x62, 0x47, 0x1f, 0x81, 0xff, 0xd6, 0xf1, 0x89, 0x99, 0x8d, 0x16, 0xc6, 0xcc, 0x48, 0x4c, 0xff,
0x7e, 0x23, 0xec, 0x54, 0x59, 0x20, 0x72, 0xc4, 0x84, 0xe1, 0x07, 0x8d, 0x80, 0x52, 0xf5, 0x08,
0x4c, 0xcc, 0xb8, 0xbb, 0x13, 0xfc, 0x8e, 0xbb, 0x75, 0x32, 0x00, 0x1e, 0x0b, 0xc5, 0x1d, 0xac,
0xe4, 0x6b, 0x2a, 0x63, 0xce, 0xd9, 0xee, 0x69, 0x48, 0x5f, 0x71, 0xcb, 0x15, 0xcb, 0x94, 0xb9,
0x38, 0x86, 0x7b, 0x1b, 0x92, 0xd5, 0x5a, 0x41, 0x3a, 0x20, 0xde, 0xd7, 0xa9, 0xa7, 0x10, 0xb9,
0xab, 0xb1, 0xe0, 0xfe, 0x86, 0xd4, 0x26, 0xd4, 0x63, 0xd5, 0x2d, 0x0b, 0x05, 0x0f, 0x34, 0xce,
0x3d, 0xbc, 0x7f, 0xb5, 0xb5, 0xb4, 0x8f, 0x1d, 0x0f, 0x36, 0x8e, 0x16, 0x94, 0xc4, 0x56, 0x62,
0xa8, 0xa1, 0x87, 0x1a, 0xa7, 0x13, 0x42, 0xec, 0x15, 0x78, 0x04, 0x0f, 0xb7, 0x4f, 0x65, 0xcf,
0x73, 0x5d, 0xa1, 0xe0, 0x99, 0x0e, 0x8f, 0x10, 0x99, 0xf9, 0x5a, 0xca, 0xed, 0x6e, 0x56, 0x8b,
0x86, 0xa7, 0x89, 0x56, 0xda, 0x00, 0x3a, 0xf5, 0x86, 0x67, 0xc8, 0x6c, 0xad, 0xa0, 0x44, 0x62,
0x35, 0xf4, 0xc3, 0x76, 0x66, 0xb8, 0x13, 0x5a, 0x8d, 0xd8, 0x82, 0xfc, 0x11, 0x09, 0x14, 0x94,
0x59, 0x51, 0xf5, 0x69, 0xb0, 0xf8, 0xc3, 0x56, 0xd0, 0x8f, 0x89, 0x1d, 0x10, 0xac, 0xbd, 0x0b,
0x45, 0xbb, 0xf2, 0x4b, 0xf9, 0x49, 0xfb, 0x5a, 0x3d, 0xb7, 0x67, 0x49, 0xb0, 0x20, 0x80, 0x7e,
0x31, 0x18, 0x10, 0xdb, 0x7b, 0xae, 0x9d, 0x8d, 0xbf, 0x92, 0x7e, 0x9e, 0x9c, 0xbd, 0x4d, 0x80,
0xd6, 0xd7, 0x0b, 0xed, 0x62, 0xd3, 0xe5, 0x25, 0xee, 0x26, 0x15, 0x7e, 0x3a, 0x45, 0x1f, 0x2c,
0x8e, 0x07, 0x99, 0x1c, 0xf1, 0x58, 0x9f, 0x0c, 0x36, 0xad, 0x79, 0xb1, 0xe3, 0x33, 0xf7, 0x3a,
0x56, 0x66, 0x88, 0x35, 0xc1, 0xec, 0x25, 0x12, 0x26, 0xa6, 0x33, 0xd5, 0x92, 0xc0, 0xcf, 0x88,
0xfb, 0x4c, 0xa8, 0x2d, 0xb6, 0xd5, 0x2c, 0xa6, 0xf0, 0xf0, 0xef, 0xed, 0xca, 0xab, 0x60, 0x46,
0xc0, 0xff, 0x68, 0xb7, 0x00, 0x44, 0x55, 0x69, 0xdd, 0x7f, 0xb6, 0x2b, 0x90, 0x88, 0xff, 0x5f,
0xed, 0xe2, 0xb7, 0x55, 0x8b, 0x3f, 0xef, 0x04, 0x9f, 0xec, 0x1d, 0xd8, 0xce, 0xac, 0xa9, 0x97,
0xff, 0x6e, 0x57, 0x76, 0x03, 0xad, 0x77, 0xf1, 0x7f, 0xda, 0x15, 0x53, 0x99, 0x4b, 0xce, 0x63,
0x1e, 0x2a, 0xf8, 0x5f, 0xe2, 0xcd, 0x04, 0x86, 0x77, 0x58, 0x36, 0x68, 0xff, 0xa2, 0xdd, 0xa4,
0xfa, 0x1c, 0x27, 0xe6, 0x11, 0xfc, 0xb2, 0xdd, 0xc1, 0x50, 0x94, 0x71, 0x3e, 0xb4, 0x6f, 0x3f,
0x22, 0x78, 0xb9, 0x5d, 0xa4, 0x94, 0xf9, 0xf0, 0xa1, 0x25, 0x7f, 0x85, 0x44, 0x7e, 0x5b, 0xa0,
0x0a, 0xdb, 0x24, 0xd3, 0x6e, 0x16, 0xb1, 0x75, 0x17, 0x3b, 0x5f, 0x27, 0x5b, 0x41, 0x90, 0xba,
0xde, 0xb6, 0x88, 0x37, 0x48, 0x24, 0x22, 0x08, 0x7c, 0xfc, 0xa3, 0x8f, 0xc6, 0x37, 0x49, 0xf2,
0x40, 0xe8, 0x7d, 0x89, 0xb7, 0x43, 0xf0, 0x56, 0xa7, 0x51, 0x2b, 0x3b, 0x32, 0x11, 0xf8, 0x6d,
0x72, 0x86, 0x4e, 0x0a, 0x0c, 0xef, 0xb4, 0x4b, 0x58, 0xb9, 0xa3, 0x82, 0x77, 0xdb, 0x57, 0x5b,
0x1d, 0xf2, 0x3e, 0xef, 0x78, 0x8f, 0x98, 0x55, 0x1b, 0x92, 0x30, 0xfd, 0x0d, 0xd9, 0x11, 0x02,
0x8d, 0xc5, 0xf2, 0x64, 0xff, 0xf4, 0xfd, 0x76, 0xf5, 0xe0, 0xe5, 0x94, 0x58, 0xe6, 0x70, 0xe2,
0x7c, 0xeb, 0x94, 0xab, 0x23, 0xce, 0xeb, 0xfd, 0xf6, 0x93, 0xe6, 0xc9, 0xe5, 0x53, 0x1d, 0x5a,
0xbd, 0x67, 0x83, 0x93, 0xe7, 0x5b, 0x15, 0x62, 0x60, 0x98, 0x43, 0x9c, 0xb2, 0xfd, 0x39, 0xf5,
0x1a, 0xcd, 0x43, 0x08, 0x05, 0xa7, 0xce, 0xb7, 0xea, 0xce, 0x40, 0x43, 0x96, 0xa0, 0xc9, 0xc4,
0x32, 0xe7, 0x70, 0xda, 0x3c, 0xe9, 0xca, 0x7a, 0xe4, 0x40, 0x24, 0x22, 0x1f, 0xc1, 0x99, 0xf3,
0xc1, 0x66, 0xf7, 0x4e, 0x2b, 0x65, 0xeb, 0xae, 0xd4, 0x83, 0x4b, 0xe7, 0x49, 0xea, 0xc9, 0xd6,
0xcb, 0x34, 0x93, 0x51, 0x61, 0x6e, 0xb4, 0xc6, 0x32, 0xe2, 0x70, 0x59, 0x8d, 0x3e, 0x94, 0x52,
0xd7, 0x3a, 0xda, 0xb7, 0x07, 0x19, 0xe7, 0x70, 0xf9, 0xbc, 0xcf, 0x93, 0x34, 0xbd, 0x6a, 0x16,
0x5e, 0x31, 0xef, 0x53, 0xab, 0x15, 0x41, 0xbb, 0x33, 0xd7, 0xcf, 0xfb, 0x9d, 0x8b, 0x32, 0xb6,
0x6a, 0xcb, 0xba, 0x46, 0xf5, 0xf6, 0xd7, 0xf3, 0xde, 0x32, 0x09, 0xae, 0xd6, 0x4d, 0xfe, 0x1b,
0xa2, 0x6d, 0x82, 0xd2, 0x7f, 0xda, 0x23, 0xf6, 0x6f, 0xe7, 0x7d, 0xc8, 0xa3, 0xf3, 0x69, 0x4b,
0xaa, 0x9e, 0x02, 0xfe, 0xdd, 0xbc, 0x4f, 0x9d, 0x08, 0xc8, 0x64, 0xe3, 0x16, 0x73, 0xdb, 0xbc,
0xf7, 0xa4, 0x68, 0x02, 0x82, 0xe4, 0xdb, 0x89, 0xaa, 0xa2, 0xc9, 0x69, 0x90, 0x7e, 0x07, 0x5d,
0x4f, 0x45, 0xc7, 0xe2, 0xc2, 0xbe, 0x9f, 0xd1, 0xa8, 0x3b, 0xe7, 0xc9, 0x1b, 0x80, 0x29, 0x5d,
0xd1, 0x32, 0x4f, 0x33, 0xa1, 0x38, 0x7c, 0x9f, 0xd8, 0xd1, 0x54, 0xac, 0x89, 0xfb, 0x3f, 0xf8,
0x6d, 0xd8, 0x86, 0x59, 0x21, 0x72, 0x0e, 0x77, 0xcf, 0xfb, 0xfe, 0xfa, 0x74, 0x11, 0xb4, 0xdc,
0x7d, 0x29, 0x97, 0xe1, 0x9e, 0x79, 0x1f, 0xe0, 0xa7, 0xc2, 0x53, 0xae, 0x52, 0xc1, 0x43, 0x0e,
0xf7, 0xfe, 0x36, 0x68, 0xa3, 0x94, 0xb5, 0x14, 0xee, 0x9b, 0xf7, 0x81, 0x39, 0x62, 0x12, 0xc3,
0xc0, 0x21, 0x9f, 0xfe, 0xb4, 0xc9, 0xb3, 0x44, 0x32, 0x84, 0x5f, 0xd0, 0xed, 0x27, 0x80, 0x34,
0xe3, 0x8a, 0x87, 0xba, 0x78, 0xfa, 0xe5, 0xbc, 0xcf, 0x18, 0x29, 0x42, 0x87, 0xb5, 0x97, 0x89,
0x02, 0x29, 0xcd, 0x1c, 0xfe, 0x36, 0x77, 0x32, 0x56, 0xf4, 0xca, 0xbc, 0x3f, 0x45, 0x26, 0xa1,
0xee, 0x59, 0x00, 0xfc, 0x6a, 0x8a, 0xb0, 0x95, 0x4f, 0xfc, 0x9a, 0x04, 0x10, 0x0a, 0xa8, 0x99,
0xf4, 0xab, 0x13, 0x86, 0xe2, 0x61, 0x39, 0x8f, 0x07, 0x7e, 0xe5, 0xaf, 0x4d, 0x41, 0x29, 0x61,
0xcf, 0x52, 0x6c, 0x54, 0xbc, 0x4e, 0xed, 0xba, 0x86, 0x72, 0x35, 0xda, 0x1b, 0xd4, 0x21, 0x09,
0xc6, 0x04, 0x99, 0x2a, 0x4d, 0x87, 0x37, 0xb7, 0x8b, 0xf3, 0x01, 0xf0, 0xad, 0x86, 0xaa, 0x86,
0x89, 0xc7, 0xa1, 0x26, 0xde, 0x26, 0xe6, 0xd8, 0x84, 0x64, 0x7c, 0x35, 0x63, 0x55, 0x08, 0x7c,
0xa7, 0xb1, 0x49, 0x14, 0x3b, 0x11, 0x03, 0xdf, 0x6d, 0xb0, 0xa5, 0x12, 0x4e, 0x46, 0xf3, 0xf7,
0xc8, 0x6a, 0xb2, 0x22, 0x1f, 0xf9, 0x4e, 0xb1, 0x3d, 0x65, 0x6c, 0xe4, 0xbc, 0xbc, 0x4b, 0xba,
0x40, 0x62, 0xa0, 0x4a, 0xff, 0x72, 0xf7, 0xc6, 0xae, 0x0f, 0xb9, 0x9e, 0x24, 0x0b, 0x85, 0x0d,
0x9e, 0x9b, 0xba, 0xa4, 0x44, 0xa8, 0xa8, 0x3e, 0xbe, 0xdd, 0xdc, 0x25, 0x4d, 0x99, 0x8a, 0x3e,
0x90, 0x59, 0x5f, 0x97, 0xd7, 0x5d, 0x52, 0xe7, 0x54, 0xc4, 0x8c, 0x17, 0x39, 0x87, 0x2f, 0x77,
0x49, 0xd7, 0x8d, 0x4a, 0x64, 0x6e, 0x23, 0xbe, 0x42, 0xa4, 0x3a, 0xb4, 0xe0, 0x39, 0x49, 0x7e,
0x79, 0x04, 0xb7, 0x74, 0xbd, 0x41, 0xd8, 0x4b, 0x9c, 0x34, 0x66, 0x21, 0xc7, 0xc7, 0x5c, 0x6c,
0xac, 0xff, 0x87, 0x6f, 0x74, 0x1b, 0x17, 0x3d, 0x15, 0xc6, 0xbd, 0x16, 0xc1, 0xbb, 0xe2, 0x6f,
0x76, 0xbd, 0xbe, 0xeb, 0xc0, 0x7a, 0x33, 0xf1, 0x56, 0xc2, 0x14, 0x63, 0x92, 0xcd, 0xb6, 0xc9,
0xed, 0xb9, 0xc9, 0xef, 0x1f, 0xed, 0xd6, 0xca, 0x38, 0x8b, 0xa8, 0x2c, 0xff, 0xb1, 0x6e, 0xad,
0x06, 0x74, 0x79, 0x3b, 0xcb, 0xe1, 0xf1, 0xae, 0x37, 0x16, 0x4a, 0x6b, 0xf1, 0xe8, 0x27, 0xba,
0xb5, 0xb2, 0x74, 0x52, 0x20, 0xe7, 0x1d, 0x4f, 0x76, 0x6b, 0x3d, 0xce, 0x4a, 0x1c, 0x34, 0x8f,
0xa7, 0xba, 0xb5, 0x5a, 0xd1, 0x0b, 0x53, 0x66, 0xbc, 0x2f, 0xb3, 0x04, 0x9e, 0x9e, 0xb2, 0xf2,
0x89, 0xf2, 0x2c, 0x1b, 0xf7, 0xe1, 0x99, 0x29, 0xbc, 0xb0, 0x36, 0x33, 0x71, 0xfc, 0x87, 0xdd,
0x5a, 0x89, 0x5f, 0xf5, 0x8a, 0xf4, 0x54, 0xa6, 0x36, 0xfd, 0xd1, 0x94, 0xf9, 0x64, 0xca, 0x33,
0xa6, 0x64, 0x56, 0x2a, 0xfb, 0x60, 0xea, 0xc7, 0x53, 0x34, 0x20, 0x8e, 0x29, 0x87, 0xc7, 0x1f,
0x79, 0xd4, 0xe1, 0xfd, 0xc3, 0xb6, 0x6d, 0x3b, 0x6a, 0x03, 0x7e, 0x32, 0x4d, 0x51, 0xc7, 0x1f,
0x71, 0x04, 0xb9, 0x16, 0x7e, 0x76, 0xaa, 0xea, 0x7d, 0x4b, 0xd8, 0x76, 0xcb, 0x9e, 0xeb, 0xd6,
0x3a, 0x1f, 0x4e, 0x23, 0xbe, 0xc6, 0xb4, 0xea, 0x7d, 0xbe, 0x5b, 0x6b, 0x34, 0x34, 0x91, 0x9a,
0x7f, 0x9f, 0x0f, 0x45, 0x02, 0x2f, 0x74, 0x6b, 0x45, 0xf7, 0xa4, 0x04, 0xfd, 0x62, 0xdd, 0xde,
0x87, 0x74, 0xfd, 0x19, 0xd4, 0xb2, 0xf3, 0x19, 0xcf, 0x8b, 0xd8, 0xb7, 0xb0, 0x5e, 0xec, 0xd6,
0x5a, 0xb9, 0xde, 0xa4, 0x6c, 0xe0, 0x7f, 0x89, 0xb8, 0x01, 0x45, 0xd8, 0x06, 0x45, 0xca, 0xcd,
0xfd, 0x95, 0xd2, 0x51, 0xe1, 0x67, 0xf5, 0xb9, 0x23, 0x3e, 0xb6, 0x95, 0x93, 0x29, 0x96, 0x13,
0xf2, 0x44, 0x1d, 0x5e, 0x26, 0xbe, 0xe0, 0x1f, 0xe3, 0x9b, 0xda, 0x05, 0x01, 0xa7, 0x2e, 0x90,
0xcb, 0xed, 0x1a, 0xc0, 0xb4, 0xb8, 0x4f, 0x5b, 0xf0, 0xd6, 0x50, 0x47, 0xa4, 0x3c, 0xcb, 0x65,
0xc2, 0xe2, 0x70, 0xc4, 0x14, 0x9c, 0xbe, 0xe0, 0x0d, 0xfd, 0xd0, 0x82, 0xc5, 0x3a, 0x14, 0xa2,
0x13, 0x9b, 0x36, 0xda, 0xf9, 0x0b, 0x3e, 0x83, 0x74, 0xe4, 0x31, 0x5b, 0x83, 0x0b, 0x5a, 0xbe,
0xd7, 0x61, 0xfb, 0xc2, 0x85, 0xc9, 0xa6, 0xa6, 0xc9, 0x71, 0xbc, 0x9b, 0x5f, 0xd9, 0x4a, 0xf7,
0x6f, 0x45, 0xaf, 0x22, 0x2b, 0xab, 0xe8, 0x48, 0x2a, 0x52, 0xbc, 0x7b, 0x85, 0xab, 0x17, 0xda,
0x1b, 0xc4, 0x48, 0xbc, 0x66, 0x81, 0xbc, 0x9b, 0xd0, 0xe1, 0xbc, 0x2a, 0x22, 0x4c, 0x26, 0xca,
0xb5, 0xac, 0x70, 0xdb, 0x42, 0xed, 0xc9, 0xa0, 0x2f, 0x4a, 0xa4, 0x2a, 0xc7, 0x2b, 0xa9, 0x79,
0x80, 0x78, 0xfb, 0x54, 0x66, 0xe8, 0x9a, 0x26, 0x81, 0x81, 0x3b, 0x16, 0xbc, 0x6f, 0xb6, 0xa0,
0x90, 0xd3, 0x9d, 0x53, 0x39, 0xe1, 0x75, 0xb2, 0x49, 0x82, 0xe1, 0xae, 0x05, 0x6f, 0x24, 0x93,
0x28, 0x91, 0x08, 0x55, 0x7f, 0xb9, 0xf9, 0x9d, 0x05, 0xf2, 0x94, 0x64, 0xa2, 0xc5, 0x58, 0xf5,
0xf6, 0xd0, 0xf4, 0x9e, 0x25, 0x1a, 0x15, 0xc9, 0x8a, 0x50, 0x4c, 0xb9, 0x17, 0x87, 0x49, 0x81,
0x17, 0x43, 0x0f, 0x6f, 0xf2, 0xe6, 0x46, 0x10, 0xbe, 0x40, 0x7b, 0x64, 0x93, 0x17, 0x7f, 0x12,
0xd0, 0xe7, 0x59, 0xe5, 0x31, 0x8f, 0xb6, 0xb3, 0x11, 0xb9, 0xbb, 0x80, 0x7a, 0x6c, 0xd3, 0x54,
0x49, 0xc6, 0x0c, 0x7f, 0xae, 0xf0, 0xf8, 0x26, 0x6f, 0x1d, 0x74, 0x22, 0x59, 0x86, 0xb1, 0x08,
0x97, 0xe1, 0x89, 0x4d, 0x7e, 0xe3, 0x26, 0xe9, 0xee, 0xca, 0x0c, 0x61, 0x4f, 0x6e, 0xf2, 0x5b,
0x42, 0x60, 0x48, 0x34, 0x87, 0xd5, 0x3a, 0x3c, 0xd5, 0xce, 0xca, 0x08, 0x52, 0xf2, 0xc4, 0x76,
0xfc, 0x9e, 0x6e, 0x87, 0x91, 0x5f, 0x19, 0xa1, 0xd9, 0x3f, 0xb3, 0xa9, 0xfe, 0x32, 0xd9, 0xbe,
0x5f, 0x97, 0xb1, 0x2a, 0x13, 0x9d, 0xe1, 0x9f, 0xbb, 0x58, 0x7f, 0x14, 0x6e, 0xdf, 0xe2, 0x0f,
0xf0, 0x9d, 0x09, 0x9c, 0xb7, 0xd8, 0xce, 0x01, 0x5d, 0x07, 0x5f, 0xbf, 0x9f, 0xbf, 0x48, 0xee,
0xe9, 0xe9, 0x1c, 0x8a, 0x65, 0xe4, 0x27, 0x0f, 0x17, 0x6c, 0x8f, 0x11, 0xfa, 0xe0, 0xd5, 0xd0,
0xce, 0xa8, 0x96, 0x90, 0x5e, 0x03, 0xed, 0x12, 0x63, 0xe4, 0x65, 0x43, 0xb8, 0x16, 0xc8, 0x65,
0x3d, 0xa1, 0x47, 0x98, 0x2a, 0xc0, 0x75, 0x50, 0x7f, 0x20, 0x4d, 0xc4, 0xd5, 0x80, 0xeb, 0xb7,
0x07, 0x18, 0x8b, 0x04, 0x6e, 0x80, 0x29, 0x4a, 0xd5, 0x00, 0xed, 0xc9, 0x70, 0x23, 0xd4, 0x9f,
0x7b, 0x57, 0x4a, 0x15, 0x91, 0x81, 0xdc, 0x04, 0xe4, 0x56, 0x3d, 0x93, 0x79, 0x5e, 0xae, 0x17,
0x2c, 0xd1, 0x6e, 0xa5, 0xaa, 0x87, 0xa8, 0x9f, 0x95, 0x22, 0x81, 0x97, 0x17, 0x83, 0x43, 0x7a,
0x9f, 0x74, 0xfe, 0x94, 0x35, 0x80, 0x7d, 0xde, 0x78, 0x9f, 0xf8, 0xca, 0x22, 0x79, 0x31, 0xdc,
0xc6, 0xbb, 0xf2, 0xa0, 0x5f, 0x2d, 0xfa, 0x53, 0xb2, 0x0d, 0x19, 0xb2, 0xea, 0x95, 0xe0, 0xaf,
0x3f, 0x00, 0x4a, 0x9a, 0x40, 0xaf, 0x2e, 0x92, 0x80, 0xd1, 0x02, 0x55, 0x32, 0x2d, 0xf3, 0x91,
0x8d, 0x9f, 0xf0, 0xda, 0xa2, 0x2f, 0xf0, 0xda, 0xd0, 0x2e, 0x51, 0xb6, 0xd7, 0xd2, 0xaf, 0x2f,
0x7e, 0xb0, 0xe2, 0x30, 0xab, 0x7f, 0xe3, 0x83, 0xd6, 0xe6, 0x1f, 0x6b, 0xbe, 0xf9, 0x01, 0x0a,
0xd3, 0x6b, 0xc3, 0xbf, 0xe0, 0xad, 0x45, 0x12, 0x31, 0x11, 0xa9, 0x64, 0x6a, 0x5e, 0x25, 0x10,
0x05, 0xbc, 0xbf, 0x48, 0x62, 0xef, 0x24, 0xaa, 0xca, 0x56, 0x4f, 0xdc, 0x4c, 0xde, 0xee, 0x4d,
0x62, 0x5c, 0xe4, 0x3a, 0x69, 0xf3, 0x76, 0xd9, 0xe0, 0x2a, 0x4f, 0x6e, 0x60, 0xc6, 0x4c, 0xfb,
0x02, 0x93, 0x22, 0x16, 0x09, 0xc7, 0xa9, 0x4e, 0xd9, 0x1c, 0xec, 0xe8, 0x7e, 0x6e, 0x88, 0x4f,
0x42, 0xb4, 0x99, 0x3f, 0xbe, 0xd9, 0xb7, 0x44, 0xf0, 0x4b, 0xac, 0x38, 0x74, 0x64, 0x7e, 0x62,
0xb3, 0xef, 0xa2, 0x58, 0x78, 0xb9, 0xca, 0x59, 0x06, 0x4f, 0x6e, 0xf6, 0x47, 0x9c, 0x23, 0x54,
0xa3, 0x9e, 0xda, 0xec, 0xf3, 0xe0, 0x55, 0xa1, 0x2b, 0x98, 0x38, 0x76, 0x1d, 0xcd, 0x3b, 0x96,
0xfc, 0x40, 0xa4, 0x69, 0xf1, 0xf5, 0x1f, 0x7d, 0xb9, 0x06, 0x77, 0x2e, 0x79, 0x41, 0x2a, 0x22,
0xbe, 0x52, 0xb9, 0xab, 0x8d, 0x92, 0xc7, 0x52, 0xc1, 0x77, 0x96, 0xbc, 0x8f, 0x23, 0xc5, 0xfe,
0x92, 0xc5, 0x0e, 0xfc, 0xfb, 0xb6, 0x81, 0x18, 0x37, 0xff, 0x61, 0xc9, 0x07, 0x0f, 0xcf, 0x32,
0xe5, 0xdc, 0xbe, 0xc0, 0xfa, 0xc7, 0x25, 0x5f, 0xae, 0x20, 0xdd, 0x76, 0x26, 0x0d, 0xf5, 0x9f,
0x96, 0x88, 0xb2, 0xcd, 0x2b, 0x7c, 0xd2, 0xcb, 0x37, 0x2f, 0x1e, 0x7e, 0xbe, 0xf4, 0x87, 0x5d,
0xfc, 0xd9, 0xea, 0x67, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x37, 0x55, 0xbe, 0xd7, 0x3a,
0x00, 0x00,
// 4854 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x5b, 0x67, 0xbc, 0x24, 0xc5,
0x71, 0xf7, 0x7b, 0x6f, 0xdf, 0x3e, 0x69, 0x15, 0x5c, 0x0c, 0xf7, 0xee, 0xc8, 0x47, 0x46, 0x60,
0x59, 0x16, 0xd6, 0xef, 0xe7, 0xef, 0xbd, 0x33, 0xbd, 0xbb, 0xad, 0x37, 0x3b, 0x3d, 0xcc, 0xf4,
0xbc, 0xf0, 0x69, 0x7e, 0xd8, 0x3c, 0x24, 0x6c, 0xe0, 0xf0, 0x71, 0xc8, 0xc2, 0x9f, 0xc8, 0x39,
0xe7, 0xcc, 0x81, 0x24, 0x94, 0xb0, 0x9c, 0x49, 0x72, 0x92, 0x6c, 0x4b, 0xe4, 0x1c, 0x15, 0x08,
0x02, 0x39, 0xc8, 0xb6, 0x04, 0x12, 0x39, 0x08, 0xff, 0xba, 0xba, 0x7b, 0xba, 0x76, 0x66, 0xf6,
0xd0, 0x97, 0xbb, 0xb7, 0x5b, 0xff, 0xae, 0xae, 0xae, 0xae, 0xaa, 0xae, 0xaa, 0xee, 0xed, 0xc1,
0xfa, 0xd6, 0xad, 0x5b, 0xb6, 0x96, 0x7f, 0xb4, 0xe5, 0x88, 0xf5, 0x4f, 0x1d, 0xb7, 0x75, 0xcb,
0xb6, 0x2d, 0xc1, 0x47, 0x8e, 0x5f, 0xdf, 0xfa, 0x85, 0xf5, 0xad, 0xf8, 0xe1, 0x90, 0xb7, 0x4e,
0xe8, 0x7d, 0x98, 0x6b, 0x44, 0xb8, 0xe5, 0x88, 0xf5, 0xe0, 0xa3, 0xbd, 0x0f, 0xf1, 0x2c, 0x93,
0x59, 0x29, 0x97, 0xe0, 0xb7, 0x82, 0x8f, 0xf7, 0x7a, 0xe6, 0xd3, 0x80, 0x89, 0x18, 0x66, 0x82,
0x9d, 0x7a, 0x1f, 0x33, 0x9f, 0x33, 0x1e, 0xcb, 0xa1, 0x48, 0x60, 0x36, 0xd8, 0xa5, 0xb7, 0xc1,
0x7e, 0x25, 0x63, 0x5e, 0x26, 0x52, 0x95, 0x03, 0x59, 0x24, 0x11, 0xcc, 0x05, 0xbb, 0xf5, 0x36,
0x1a, 0xca, 0x58, 0x26, 0x7c, 0x0d, 0x49, 0x3c, 0x91, 0xc5, 0x70, 0x04, 0x1d, 0x32, 0x8a, 0xe7,
0x94, 0x32, 0x1f, 0x6c, 0xe8, 0x81, 0xa1, 0x24, 0x6c, 0xcc, 0x4b, 0xbe, 0x2a, 0x72, 0x05, 0xdd,
0xfa, 0xb7, 0xe3, 0x54, 0xad, 0xc1, 0x42, 0xb0, 0xa9, 0xb7, 0xb3, 0xf9, 0x56, 0xb1, 0x7c, 0xa9,
0xcc, 0xf8, 0x0a, 0xcb, 0x22, 0x1e, 0xc1, 0x87, 0x82, 0xa0, 0xf7, 0x71, 0x43, 0xe8, 0xb3, 0x61,
0x39, 0x28, 0xe2, 0x18, 0x3e, 0xec, 0xa7, 0x14, 0x8a, 0x8f, 0x89, 0xa0, 0xbd, 0xe0, 0xe0, 0xde,
0x01, 0x6d, 0x4b, 0x28, 0x13, 0xce, 0xa3, 0x92, 0x85, 0x4a, 0x2c, 0xf3, 0x32, 0x94, 0x11, 0x87,
0x8f, 0x04, 0x9b, 0x7b, 0xbb, 0x13, 0xa8, 0xa1, 0x69, 0x52, 0x89, 0xdf, 0xc2, 0x47, 0x83, 0xbd,
0x7a, 0xbb, 0xb5, 0x03, 0x8a, 0x9c, 0x47, 0xf0, 0xb1, 0x60, 0xdf, 0xde, 0x5e, 0x84, 0x8e, 0x72,
0xe7, 0xa1, 0xcc, 0xb8, 0x97, 0xfe, 0xb7, 0x83, 0xfd, 0x7a, 0x9b, 0xdb, 0x31, 0x5e, 0x68, 0x08,
0xf6, 0xef, 0xed, 0x3d, 0x1d, 0x64, 0xb5, 0xb9, 0x53, 0x4d, 0xde, 0x98, 0x2f, 0xf3, 0x98, 0x02,
0x02, 0xaf, 0x58, 0x04, 0xf4, 0x59, 0xc2, 0x23, 0xd8, 0x39, 0xd8, 0xd8, 0x0b, 0xc8, 0xb7, 0x22,
0x59, 0x66, 0xb1, 0x88, 0x60, 0x43, 0xb0, 0xd8, 0xdb, 0xc9, 0xda, 0x83, 0x18, 0x8e, 0x54, 0x19,
0x8e, 0x78, 0xb8, 0x04, 0x8b, 0x7e, 0x96, 0x3e, 0x53, 0x2a, 0xd6, 0x6b, 0x09, 0x65, 0x16, 0x55,
0xe3, 0x36, 0x06, 0x7b, 0xf4, 0x76, 0x69, 0x03, 0xe4, 0x6c, 0x99, 0xc3, 0x26, 0x3f, 0xdb, 0x50,
0x6f, 0xee, 0x32, 0xcf, 0x72, 0x21, 0x13, 0xd8, 0x85, 0x18, 0xc9, 0xb8, 0x4f, 0xa5, 0xde, 0xd5,
0x6f, 0xbc, 0xde, 0x5f, 0xdc, 0xcf, 0x54, 0xc4, 0x1c, 0x76, 0xf3, 0xea, 0x0f, 0x47, 0x2c, 0x8e,
0x79, 0x32, 0xe4, 0xa5, 0x12, 0x63, 0x5e, 0xc6, 0x62, 0x2c, 0x14, 0xec, 0xee, 0xa7, 0xca, 0x79,
0xb6, 0xcc, 0x33, 0xbb, 0x6d, 0x7b, 0x78, 0x5b, 0xcd, 0xa3, 0xa5, 0x12, 0x4d, 0x1b, 0x4d, 0x9e,
0x47, 0xb0, 0x67, 0x1b, 0x8d, 0xaf, 0xa6, 0x22, 0xe3, 0xb0, 0x57, 0xb0, 0x6b, 0x6f, 0x71, 0x82,
0xdf, 0x98, 0x89, 0x44, 0x31, 0x91, 0xc0, 0xe6, 0x60, 0xf7, 0xde, 0xa6, 0x09, 0xd2, 0x92, 0x08,
0x97, 0xb4, 0xc6, 0x98, 0x82, 0xbd, 0x83, 0x7d, 0x7a, 0x7b, 0x4e, 0x10, 0x8b, 0x9c, 0xdb, 0x09,
0xad, 0xa8, 0xfb, 0x78, 0xd6, 0xb8, 0x07, 0x23, 0x96, 0x97, 0x61, 0xc6, 0x99, 0xe2, 0xb0, 0x6f,
0x6d, 0x57, 0x43, 0x96, 0xa0, 0x76, 0x32, 0x3e, 0x14, 0xb9, 0xe2, 0x19, 0xec, 0xe7, 0xe7, 0x46,
0x80, 0x9d, 0xc3, 0x30, 0xde, 0x3f, 0xd8, 0xb3, 0xb7, 0x2b, 0x21, 0xa6, 0x31, 0x53, 0x03, 0x99,
0x8d, 0xad, 0x53, 0x1d, 0xe0, 0x97, 0x2b, 0x93, 0x58, 0x24, 0xce, 0x30, 0xcb, 0x44, 0xc2, 0x81,
0x5e, 0xbd, 0x95, 0x0f, 0x89, 0x04, 0x65, 0xd7, 0x4a, 0x86, 0x83, 0xfc, 0xbe, 0x24, 0xb2, 0x64,
0x4a, 0x65, 0x65, 0x2a, 0x45, 0xa2, 0xe0, 0xf7, 0xfd, 0x62, 0xf0, 0x5b, 0xb2, 0x97, 0x9f, 0xf1,
0x63, 0x46, 0x3c, 0x93, 0x7a, 0xa0, 0xb1, 0xf0, 0x75, 0xbf, 0x4a, 0x24, 0x84, 0x32, 0x19, 0x88,
0x21, 0x71, 0x81, 0x23, 0xbd, 0x7d, 0x20, 0xc0, 0x18, 0xf7, 0x98, 0xad, 0xc2, 0xe7, 0xfc, 0xfa,
0x0d, 0x4f, 0xf4, 0xe3, 0x68, 0x99, 0x25, 0x21, 0x87, 0xcf, 0xfb, 0x05, 0x22, 0xd1, 0x7e, 0x8f,
0x03, 0x8f, 0xaa, 0x0f, 0x94, 0x7a, 0x7d, 0xc6, 0x66, 0xe1, 0x8f, 0xbd, 0xe2, 0x1c, 0x11, 0xff,
0xb7, 0xe4, 0x3f, 0xa9, 0x8d, 0xcd, 0x55, 0xc6, 0x93, 0xa1, 0x1a, 0x21, 0xe3, 0xa3, 0x83, 0x83,
0x7a, 0xfb, 0xb5, 0x11, 0x43, 0x99, 0x2b, 0xaa, 0x8e, 0x63, 0xbc, 0xab, 0x20, 0x70, 0xcc, 0x56,
0xcb, 0xcf, 0xca, 0x7e, 0x99, 0x2b, 0x36, 0xe4, 0x70, 0x6c, 0x70, 0x48, 0xef, 0x40, 0xaa, 0x93,
0x11, 0xd3, 0x16, 0xae, 0x01, 0xa1, 0x4c, 0x22, 0xa1, 0x84, 0xac, 0xec, 0x76, 0x4b, 0x70, 0x40,
0x6f, 0x1f, 0x83, 0xe5, 0x87, 0x15, 0x22, 0x75, 0x0a, 0x8c, 0x98, 0x62, 0x44, 0x8b, 0xc7, 0xf9,
0x40, 0x62, 0x60, 0x03, 0x99, 0x0d, 0x79, 0x99, 0x14, 0x63, 0x2a, 0xd6, 0x9f, 0x7a, 0x5d, 0x4f,
0xa0, 0x24, 0x6c, 0xf5, 0x36, 0x61, 0x28, 0x6a, 0x2d, 0x35, 0x31, 0x68, 0xcc, 0x54, 0x38, 0x82,
0xe3, 0xbd, 0xa9, 0x1b, 0xba, 0xd9, 0xa6, 0x22, 0x2d, 0x59, 0xac, 0x43, 0x51, 0xc2, 0x61, 0x9b,
0x57, 0xac, 0x81, 0xe4, 0xb1, 0xd4, 0x4a, 0x31, 0x9f, 0xe0, 0x84, 0xfa, 0x42, 0x32, 0x3e, 0xd0,
0x76, 0x59, 0x5b, 0xc8, 0x17, 0xea, 0x5c, 0x2c, 0xcc, 0xaa, 0xe3, 0xcf, 0x3c, 0x39, 0x1c, 0x89,
0xb4, 0x3e, 0xfa, 0x8b, 0xde, 0xda, 0x90, 0xdc, 0xb0, 0xb6, 0x13, 0x83, 0xbd, 0x7b, 0x7b, 0x4c,
0x00, 0xc6, 0xa9, 0xcc, 0x69, 0x48, 0xfe, 0xf3, 0x60, 0x2f, 0x37, 0x43, 0xbe, 0x24, 0xe2, 0xb8,
0x5a, 0x06, 0x7e, 0x82, 0x53, 0x66, 0x82, 0xdd, 0xaa, 0x60, 0xe1, 0xe9, 0xb1, 0x0c, 0x97, 0xe0,
0xd4, 0x99, 0xe0, 0x13, 0xce, 0x3e, 0x28, 0x0d, 0x55, 0x85, 0x92, 0xba, 0x50, 0x7a, 0xda, 0x4c,
0x70, 0xa0, 0xd3, 0x86, 0x41, 0xd6, 0xb7, 0xd5, 0x9c, 0x98, 0xa7, 0xcf, 0x04, 0xbb, 0x57, 0x61,
0x0b, 0x71, 0x9a, 0x66, 0x8e, 0x23, 0x38, 0x63, 0x26, 0xd8, 0xec, 0x36, 0xcd, 0x10, 0xb5, 0x05,
0xe1, 0xc6, 0x99, 0x78, 0x78, 0xe6, 0x4c, 0xb0, 0xb7, 0x53, 0x87, 0x07, 0xa0, 0x0d, 0x5a, 0xc4,
0x59, 0x0d, 0x84, 0xf9, 0x57, 0xdb, 0x2b, 0x8a, 0x0d, 0x67, 0x37, 0x24, 0x6d, 0x3f, 0x82, 0xce,
0x69, 0x08, 0x53, 0x4b, 0x09, 0xce, 0x6d, 0x4c, 0x95, 0xa0, 0x6e, 0x58, 0x96, 0x58, 0xd5, 0x9e,
0x37, 0x13, 0xec, 0xe3, 0x36, 0x87, 0x0a, 0x23, 0x53, 0x9e, 0x58, 0x69, 0xce, 0x6f, 0xcc, 0xe2,
0xe6, 0xb2, 0x3a, 0xb9, 0x60, 0x26, 0xd8, 0xdf, 0x1d, 0xbb, 0x6e, 0x16, 0xf7, 0x87, 0x0e, 0x1f,
0x19, 0xcf, 0xb9, 0x82, 0x0b, 0xdb, 0x84, 0xe5, 0xc6, 0x83, 0xf5, 0x6c, 0x70, 0xd1, 0x4c, 0x70,
0x50, 0x6f, 0xdf, 0x26, 0xa0, 0x61, 0x4f, 0x17, 0xcf, 0x04, 0x87, 0xb8, 0xb4, 0x83, 0x02, 0x33,
0x9e, 0xcb, 0x22, 0x0b, 0x27, 0x8e, 0xf1, 0x4b, 0x1a, 0xa6, 0x23, 0xb3, 0x88, 0x63, 0x18, 0x85,
0x4b, 0x67, 0x82, 0x5d, 0x5c, 0x00, 0x35, 0x34, 0xbe, 0x9a, 0x22, 0xe5, 0xb2, 0x99, 0x60, 0x57,
0xe7, 0xb4, 0xa1, 0x89, 0xe0, 0x6e, 0xf2, 0x2b, 0xea, 0x24, 0x6f, 0x8a, 0x57, 0xce, 0x78, 0x33,
0x46, 0x52, 0xcd, 0x9f, 0xaf, 0x9a, 0x09, 0xf6, 0x70, 0x71, 0x0e, 0xe9, 0x66, 0x43, 0xfb, 0x7c,
0x4d, 0x26, 0x11, 0x5c, 0x5d, 0x1f, 0x4d, 0x93, 0xa9, 0x55, 0x05, 0xd7, 0x90, 0xbd, 0xf4, 0x13,
0xeb, 0xb3, 0x2d, 0x91, 0xf8, 0x05, 0x5c, 0x3b, 0x13, 0x1c, 0xe0, 0x02, 0x12, 0x22, 0xa4, 0x8d,
0x07, 0x46, 0x18, 0x29, 0xcb, 0x01, 0xcb, 0x15, 0x5c, 0x57, 0x87, 0x85, 0x32, 0x8e, 0x79, 0xa8,
0xf5, 0xb7, 0xc2, 0xf5, 0xe7, 0x01, 0x8b, 0x73, 0x0e, 0xd7, 0xd7, 0xe7, 0x6b, 0xec, 0xc3, 0x0d,
0xc4, 0xf5, 0xea, 0x8c, 0xfc, 0xf2, 0x62, 0xb9, 0x02, 0x37, 0x12, 0x2b, 0x1b, 0xb0, 0x7c, 0xa4,
0x63, 0x6d, 0x2d, 0x8a, 0x6c, 0x27, 0x7a, 0x75, 0x10, 0xbd, 0xb8, 0x22, 0x85, 0x9b, 0x88, 0x66,
0x28, 0xc9, 0xc6, 0x11, 0xb8, 0x79, 0x26, 0xd8, 0xd7, 0x05, 0x4a, 0x47, 0x4f, 0x59, 0x6a, 0x76,
0xd9, 0xb2, 0xff, 0x12, 0x71, 0xa9, 0x49, 0x4c, 0xce, 0x57, 0xc9, 0x1e, 0x7d, 0x79, 0x2a, 0x4e,
0xbb, 0xb1, 0xc7, 0x7d, 0x65, 0x26, 0xf8, 0xbd, 0xde, 0x21, 0x93, 0x38, 0x17, 0xd7, 0xdc, 0x67,
0x25, 0xcb, 0x88, 0x3b, 0x21, 0x6f, 0xd9, 0x91, 0x0a, 0x8c, 0xa3, 0x7d, 0xb5, 0x65, 0xee, 0x31,
0x53, 0x3c, 0x13, 0x6c, 0xc2, 0xed, 0xbf, 0x46, 0x76, 0xc6, 0xe1, 0x8c, 0x07, 0x60, 0x86, 0x20,
0x97, 0xe0, 0xeb, 0x64, 0x8b, 0x99, 0x14, 0x98, 0xc5, 0x08, 0x74, 0x8c, 0x88, 0x86, 0xdd, 0xbb,
0x89, 0x4b, 0x6a, 0x18, 0x4f, 0x94, 0x50, 0x6b, 0x04, 0x70, 0x4f, 0x0d, 0x60, 0xb3, 0x16, 0x9d,
0xa9, 0x95, 0xa1, 0x50, 0x6b, 0x70, 0x2f, 0x71, 0x21, 0x9c, 0x48, 0x67, 0xa1, 0x48, 0xb9, 0x8f,
0x04, 0x05, 0x4d, 0xd1, 0xb1, 0xc2, 0xc8, 0x49, 0x97, 0x72, 0xff, 0x4c, 0xf0, 0x07, 0xbd, 0x43,
0xa7, 0x4f, 0x50, 0x25, 0x68, 0x3e, 0x27, 0xed, 0xcb, 0x3c, 0x87, 0x07, 0x48, 0xac, 0xd0, 0xe3,
0xf4, 0x97, 0x04, 0xa3, 0x8f, 0x60, 0x93, 0xb2, 0x3d, 0x38, 0x13, 0xec, 0xe9, 0xb2, 0x82, 0x0a,
0xe8, 0x17, 0xf8, 0x50, 0x2b, 0xb9, 0x1a, 0xfd, 0x30, 0xf1, 0xd8, 0x8a, 0x9c, 0x17, 0x63, 0x5d,
0x95, 0x45, 0xf0, 0x08, 0xb1, 0xff, 0x1a, 0x15, 0x8f, 0x60, 0x5c, 0xa2, 0x5e, 0x31, 0x3c, 0x5a,
0xd3, 0xe3, 0x84, 0xb8, 0x22, 0x19, 0xc2, 0x63, 0x64, 0x4b, 0x3d, 0xc0, 0x25, 0xa7, 0x2c, 0x89,
0xe0, 0xf1, 0x99, 0x60, 0x3f, 0x57, 0xff, 0xb4, 0xac, 0xd8, 0xc8, 0xfb, 0x04, 0xf1, 0x84, 0x0a,
0x84, 0xae, 0xe2, 0x80, 0x11, 0x3c, 0x49, 0x0c, 0xb1, 0xc2, 0x8c, 0x59, 0x4a, 0xdc, 0xf5, 0x29,
0x22, 0x8d, 0xad, 0x3a, 0x44, 0x12, 0xca, 0xb1, 0x2f, 0x67, 0xde, 0x26, 0xa6, 0x6a, 0x11, 0xe4,
0xc4, 0xf5, 0xfa, 0x7d, 0x87, 0xe8, 0xd7, 0xe2, 0xec, 0x16, 0x67, 0x2c, 0x59, 0x82, 0x53, 0x67,
0x1b, 0x64, 0xdc, 0x7a, 0x13, 0x40, 0xe0, 0xb4, 0x59, 0xef, 0xf8, 0x96, 0xcc, 0x97, 0x85, 0xf1,
0x85, 0x54, 0xe6, 0x70, 0xfa, 0xac, 0xb7, 0x31, 0x4a, 0xcf, 0xf8, 0x20, 0xe3, 0xf9, 0xc8, 0x2a,
0xe5, 0x8c, 0xd9, 0xe0, 0x53, 0xbd, 0x83, 0xa7, 0xa3, 0xea, 0x79, 0xe4, 0x99, 0x53, 0xb8, 0x7a,
0xd3, 0x11, 0x49, 0x04, 0x67, 0xcd, 0x36, 0x74, 0xe4, 0x51, 0x91, 0xe0, 0x11, 0x9c, 0x3d, 0xeb,
0x77, 0xac, 0x6d, 0x5e, 0xcc, 0xfb, 0xcf, 0x99, 0xf5, 0x96, 0x31, 0xa1, 0xc8, 0x30, 0x32, 0x80,
0xcb, 0xa7, 0x01, 0xdc, 0x56, 0x6c, 0x27, 0x82, 0x1c, 0x56, 0xe8, 0x42, 0xc9, 0xc2, 0x8a, 0x44,
0x9f, 0x4a, 0x3c, 0x82, 0xab, 0x66, 0x7d, 0x34, 0x98, 0x40, 0xe8, 0x8c, 0x23, 0xca, 0xd8, 0x8a,
0x9e, 0x28, 0x87, 0xab, 0x67, 0xbd, 0x4f, 0x4d, 0xc0, 0xaa, 0x82, 0xc5, 0x2a, 0xe8, 0x9a, 0x59,
0x6f, 0x41, 0xe1, 0x88, 0xa9, 0xca, 0x50, 0x73, 0x9e, 0x44, 0x65, 0xce, 0xe3, 0x01, 0xdc, 0x5a,
0x87, 0x8c, 0xf3, 0xa1, 0x3e, 0x40, 0x14, 0x4f, 0x94, 0xdd, 0x96, 0xbf, 0x20, 0x6a, 0xae, 0x20,
0x22, 0x51, 0x3c, 0xa3, 0x65, 0xe7, 0xb7, 0x66, 0xbd, 0xa1, 0x21, 0x6a, 0x45, 0x66, 0x71, 0x44,
0xf3, 0x21, 0x83, 0xfb, 0xcb, 0x3a, 0x37, 0x83, 0x53, 0x2c, 0x1b, 0x72, 0x55, 0xca, 0xc1, 0x40,
0xd7, 0x63, 0xf0, 0x57, 0x44, 0x13, 0x04, 0x45, 0xac, 0x1f, 0x99, 0xfd, 0x35, 0xd9, 0x39, 0x96,
0xf1, 0x84, 0x95, 0xc9, 0x96, 0x32, 0xfc, 0xfc, 0xe1, 0x47, 0x1f, 0xbd, 0x7e, 0xec, 0xe7, 0xd6,
0xcb, 0x70, 0xcb, 0x09, 0xc7, 0x6e, 0x83, 0xdb, 0xc8, 0xc6, 0x18, 0xd0, 0x68, 0x7d, 0xeb, 0x96,
0xf8, 0xa8, 0xe3, 0xb7, 0x95, 0xfc, 0x98, 0xe3, 0xb6, 0x9d, 0x08, 0xb7, 0xcf, 0x92, 0xe0, 0xe1,
0xb8, 0xf4, 0x4f, 0xb4, 0xc3, 0xef, 0x68, 0x0c, 0xaf, 0x85, 0xc6, 0x3b, 0x89, 0xf1, 0xdb, 0xe1,
0xc6, 0x73, 0x72, 0xce, 0x72, 0x99, 0xc0, 0x5d, 0x94, 0x81, 0x69, 0xb4, 0x8c, 0x38, 0x8b, 0xfc,
0xb6, 0xff, 0xcb, 0x6c, 0xf0, 0xbb, 0xbd, 0x4f, 0x34, 0x01, 0xd8, 0x79, 0x68, 0x16, 0x3d, 0xdf,
0x21, 0x76, 0xa4, 0xa7, 0x1b, 0x73, 0xd3, 0x30, 0x8a, 0x79, 0x62, 0x13, 0xd7, 0x7b, 0xc9, 0x5e,
0x58, 0x44, 0x28, 0x93, 0xbc, 0x30, 0xff, 0xeb, 0xdc, 0xc0, 0xe0, 0xee, 0x23, 0x9b, 0x6f, 0x71,
0x75, 0x13, 0xba, 0x9f, 0x2c, 0x8e, 0x4e, 0xe6, 0x8c, 0xfa, 0x01, 0xa2, 0xbb, 0x31, 0x43, 0x97,
0xd7, 0xf9, 0x66, 0x84, 0x1f, 0xe0, 0x21, 0x32, 0xda, 0x53, 0x31, 0xe7, 0x40, 0xfa, 0xc3, 0xb3,
0x3e, 0x83, 0x77, 0xf4, 0x08, 0x0b, 0x5c, 0x11, 0xc3, 0x23, 0xb3, 0xc1, 0x26, 0xd7, 0xc9, 0x70,
0x44, 0x24, 0x3c, 0x4a, 0x8d, 0x43, 0x8e, 0x53, 0xae, 0x8c, 0x7e, 0x6a, 0x21, 0xed, 0x59, 0xa2,
0x77, 0x0a, 0xab, 0xf2, 0xd8, 0xe7, 0x88, 0x1f, 0x61, 0xa9, 0x99, 0xf1, 0x30, 0x2b, 0x84, 0x6a,
0x28, 0xe1, 0x5d, 0x62, 0xb3, 0xf9, 0x48, 0x56, 0x95, 0x93, 0xc5, 0xd9, 0xf9, 0xce, 0x98, 0xf3,
0xc6, 0x88, 0xa8, 0x89, 0x34, 0x37, 0xe1, 0x26, 0x66, 0xcd, 0x91, 0x34, 0x5e, 0x83, 0x7c, 0x94,
0xb5, 0x6d, 0x1c, 0x38, 0x6b, 0x8e, 0x94, 0x35, 0x1a, 0xa2, 0xbd, 0xbf, 0x5f, 0xac, 0xe9, 0xe3,
0x0e, 0xce, 0x9e, 0x23, 0x15, 0x98, 0x1b, 0x6f, 0x92, 0x4f, 0x2d, 0x0d, 0x9c, 0x53, 0xe7, 0xef,
0x83, 0x67, 0x91, 0x28, 0xac, 0xd3, 0xcf, 0x9d, 0x23, 0xb5, 0x86, 0x81, 0x8c, 0x25, 0x76, 0xff,
0x72, 0x65, 0x7a, 0xa0, 0xe7, 0xcd, 0xf9, 0x4d, 0x9d, 0x60, 0x82, 0xf2, 0x9d, 0x3f, 0x47, 0xea,
0x03, 0xa2, 0x8d, 0x4a, 0x11, 0x17, 0xd0, 0x09, 0x64, 0xa8, 0x93, 0xa2, 0x01, 0x4b, 0xf2, 0x58,
0xe4, 0x2e, 0xa4, 0x5c, 0x44, 0x59, 0x18, 0x44, 0x5e, 0xf4, 0x09, 0xe0, 0x62, 0xba, 0x0c, 0x03,
0xd0, 0xa7, 0xa3, 0x76, 0xaa, 0xa2, 0x5f, 0x6a, 0x20, 0x5c, 0xd2, 0x84, 0x38, 0xbf, 0x73, 0x90,
0x4b, 0xe7, 0xbc, 0xa1, 0x10, 0x88, 0x3e, 0x16, 0xaa, 0x4c, 0x4b, 0x44, 0x70, 0xd9, 0x9c, 0x3f,
0x8c, 0x27, 0x27, 0xd3, 0x62, 0x1b, 0x56, 0x97, 0x37, 0x25, 0x16, 0x49, 0xd9, 0x8f, 0x59, 0xb8,
0x64, 0x00, 0x57, 0xcc, 0xf9, 0x13, 0xd2, 0x02, 0x1c, 0x55, 0x2f, 0xe8, 0xca, 0x26, 0x39, 0xe7,
0x2c, 0x0b, 0x47, 0x26, 0x0c, 0x5f, 0x35, 0x47, 0xdd, 0x28, 0xad, 0x1d, 0xf3, 0xdf, 0x9a, 0x23,
0x29, 0x9a, 0x0e, 0x10, 0x3a, 0xe1, 0xca, 0xc5, 0x30, 0x29, 0xf4, 0xd6, 0xa4, 0x9c, 0x29, 0xce,
0x22, 0xf8, 0xee, 0x9c, 0xcf, 0x72, 0x8a, 0x9c, 0xa3, 0x71, 0xb6, 0x97, 0xa3, 0xf7, 0x13, 0x61,
0x46, 0xeb, 0x87, 0x1f, 0x51, 0x0e, 0xb6, 0x1e, 0x7e, 0xcc, 0x7a, 0xc9, 0xbf, 0x78, 0xdc, 0x51,
0x5b, 0xd7, 0x8f, 0x80, 0x07, 0x88, 0x21, 0x63, 0x20, 0x1a, 0x64, 0xa6, 0x4d, 0x6d, 0x5b, 0x31,
0x68, 0x68, 0x0f, 0xce, 0xf9, 0xda, 0x2e, 0x8c, 0xc5, 0xb8, 0x2f, 0x92, 0x61, 0xa9, 0xe4, 0x0a,
0xcf, 0x9a, 0xf5, 0xc7, 0xf3, 0x73, 0xde, 0xd1, 0x6a, 0x58, 0x4c, 0x19, 0x8b, 0xcc, 0x7c, 0x82,
0x17, 0xc8, 0x86, 0xd5, 0x80, 0xb2, 0xd0, 0xa7, 0x83, 0xb1, 0xc0, 0x9f, 0x4c, 0x87, 0x0d, 0x32,
0xa1, 0xcf, 0x36, 0x96, 0x0d, 0x73, 0x78, 0x91, 0xac, 0xa3, 0x06, 0x13, 0x79, 0x69, 0x83, 0xef,
0x4b, 0x73, 0xbe, 0xee, 0x1c, 0x16, 0x22, 0x8e, 0x48, 0x83, 0xe1, 0x55, 0xe2, 0x6c, 0x86, 0xc6,
0x62, 0x1d, 0xdc, 0xd6, 0x2c, 0xfd, 0xb5, 0xd6, 0xb1, 0x66, 0xcd, 0xaf, 0x37, 0xc6, 0x66, 0x7c,
0x50, 0xe4, 0x3c, 0x2a, 0x59, 0x9a, 0xc6, 0x6b, 0xf0, 0x06, 0x31, 0x28, 0x4b, 0x27, 0x47, 0xa5,
0x5c, 0x81, 0x37, 0x89, 0x17, 0xd9, 0xc9, 0xf5, 0x40, 0xe2, 0xc8, 0x6f, 0x91, 0x40, 0xe1, 0xa6,
0xd7, 0xc1, 0x17, 0xf9, 0xbf, 0xdd, 0x20, 0x86, 0x2c, 0x51, 0x76, 0xf2, 0x77, 0x88, 0x02, 0x0d,
0x31, 0xcd, 0x78, 0x2e, 0x22, 0x7d, 0xe8, 0x23, 0x2c, 0xe6, 0x6c, 0x99, 0xc3, 0xbb, 0xc4, 0x4e,
0xaa, 0x09, 0x58, 0xa1, 0x46, 0x32, 0xd3, 0x95, 0xc3, 0x7b, 0x8d, 0x25, 0x44, 0x22, 0xef, 0xb3,
0x24, 0x72, 0x27, 0xd5, 0xaf, 0x89, 0x8b, 0x1a, 0xc0, 0x98, 0x8f, 0xfb, 0x68, 0x21, 0x6e, 0x0d,
0xef, 0xb7, 0xaf, 0x12, 0x43, 0x81, 0x69, 0xd6, 0x9e, 0xd4, 0xa9, 0x33, 0xf1, 0x21, 0xcf, 0xb0,
0x83, 0x93, 0x3b, 0xfe, 0xbc, 0x33, 0x90, 0x3e, 0xfe, 0x5b, 0x8f, 0xe3, 0xa7, 0x74, 0xea, 0x02,
0xe3, 0x3a, 0x9d, 0x7e, 0x22, 0x38, 0xb5, 0xd3, 0x5c, 0x30, 0x86, 0x14, 0xfc, 0x00, 0xa7, 0x75,
0x7c, 0xe9, 0x6b, 0xc8, 0x15, 0xe9, 0xf4, 0xce, 0xd4, 0xdd, 0x52, 0x09, 0xae, 0xf4, 0x8c, 0x4e,
0xdd, 0x20, 0xf2, 0xb5, 0x5c, 0x0b, 0x68, 0x0d, 0xf1, 0xcc, 0xc6, 0x3a, 0x1b, 0x7e, 0x74, 0x56,
0x63, 0x12, 0xed, 0x15, 0x66, 0x22, 0xdb, 0x90, 0xea, 0x34, 0x4d, 0x42, 0xe9, 0x30, 0x17, 0xf3,
0x04, 0xce, 0x69, 0x88, 0xef, 0xf2, 0x06, 0x38, 0xb7, 0xa1, 0x19, 0x6f, 0x10, 0x4b, 0x22, 0x5c,
0x82, 0xf3, 0x9a, 0xeb, 0xcb, 0x86, 0xb9, 0x4b, 0x03, 0x98, 0xe2, 0x70, 0x7e, 0xc7, 0x7b, 0x9b,
0x41, 0x60, 0x7c, 0xf5, 0x7c, 0xb4, 0x12, 0x2e, 0xe8, 0xf8, 0x48, 0x56, 0xdf, 0x6e, 0xbf, 0xce,
0x0b, 0x1b, 0xd2, 0xa0, 0xa0, 0x39, 0x4f, 0x72, 0x81, 0x8d, 0xac, 0x8b, 0x9a, 0xcb, 0xf4, 0x17,
0x69, 0x17, 0x77, 0x7c, 0xa9, 0x9b, 0x72, 0xca, 0xf7, 0x92, 0x8e, 0xf7, 0x57, 0x4d, 0xa1, 0xa9,
0xe4, 0xa5, 0x84, 0xa5, 0xa6, 0x99, 0xfb, 0x3c, 0x6b, 0x38, 0x97, 0x75, 0xbc, 0xbf, 0x68, 0xa2,
0xeb, 0xa7, 0xd7, 0x32, 0x8e, 0xcb, 0x3b, 0x3e, 0x8a, 0x53, 0x98, 0x99, 0xe1, 0x8a, 0xda, 0x0c,
0x8e, 0xaa, 0xd6, 0x52, 0x0e, 0x57, 0x92, 0x25, 0xe3, 0xf4, 0x2c, 0x29, 0xdc, 0x71, 0x85, 0xbc,
0xaf, 0xaa, 0xf1, 0xb6, 0x00, 0x5b, 0x80, 0x5d, 0x5d, 0xe3, 0x8d, 0x5d, 0xb2, 0xc2, 0x34, 0xaa,
0xe1, 0x9a, 0x29, 0x44, 0x6c, 0x4c, 0x5f, 0xdb, 0x09, 0x16, 0xdd, 0xf5, 0x98, 0x26, 0xda, 0x4e,
0xff, 0x75, 0xc4, 0x5a, 0x51, 0xd8, 0x3c, 0xd7, 0x7b, 0x64, 0x4f, 0x9b, 0x08, 0xae, 0xaf, 0x2f,
0xc6, 0xe4, 0xad, 0xe3, 0x22, 0x56, 0x02, 0x6e, 0xa8, 0x0d, 0xae, 0x2e, 0xc4, 0xec, 0xe0, 0x1b,
0x89, 0x9b, 0x91, 0xb5, 0xb0, 0x68, 0x19, 0x9b, 0x7a, 0xdb, 0x89, 0x91, 0x68, 0xf2, 0x61, 0x62,
0xad, 0xe0, 0xa6, 0x41, 0x66, 0x72, 0x66, 0x2c, 0xd5, 0x6f, 0xea, 0xf8, 0x03, 0xa8, 0x1d, 0xe5,
0xdb, 0x03, 0x37, 0x13, 0xdf, 0xaa, 0x61, 0x5d, 0x22, 0xfb, 0xa5, 0xda, 0x16, 0x13, 0x88, 0xfe,
0xe8, 0x60, 0xdf, 0xad, 0xc9, 0x56, 0x1d, 0x8a, 0xae, 0xe4, 0xc3, 0xf9, 0xbe, 0x43, 0x7c, 0x61,
0x02, 0x65, 0xb8, 0x1a, 0xd0, 0xbf, 0x12, 0x6b, 0xcc, 0x8a, 0x04, 0x63, 0x7f, 0x6c, 0x0e, 0x6a,
0xb8, 0xa5, 0x4e, 0x43, 0x4b, 0x33, 0x59, 0xfb, 0x57, 0x89, 0x1b, 0x23, 0x8d, 0x61, 0x42, 0x3d,
0xe4, 0x0a, 0xbe, 0x46, 0x4c, 0x1f, 0x49, 0x89, 0x2c, 0x0b, 0x6c, 0x79, 0x7e, 0xbd, 0xe3, 0x93,
0x69, 0x47, 0xc1, 0x24, 0xf8, 0x1b, 0x64, 0xaf, 0x90, 0x30, 0x12, 0xc3, 0x91, 0xae, 0xed, 0x8c,
0x12, 0xe1, 0x9b, 0x9d, 0xe0, 0xe0, 0xde, 0xfe, 0x84, 0xce, 0x57, 0xd3, 0x58, 0x66, 0xbc, 0x34,
0x7d, 0xb4, 0xbe, 0x48, 0xdc, 0xdd, 0x1b, 0xdc, 0xda, 0xf1, 0x09, 0x88, 0x0b, 0x3e, 0xd9, 0x98,
0xc5, 0x55, 0x93, 0x44, 0xd9, 0xa6, 0x0b, 0xfc, 0x5b, 0xa7, 0x7e, 0xfe, 0xd8, 0x6e, 0x8c, 0x2f,
0x76, 0xf4, 0x11, 0xf8, 0xef, 0x1d, 0x9f, 0x98, 0xd9, 0x68, 0x61, 0xcc, 0x8c, 0xc4, 0xf4, 0xef,
0x35, 0xc2, 0x4e, 0x95, 0x05, 0x22, 0x47, 0x4c, 0x18, 0xbe, 0xdf, 0x08, 0x28, 0x55, 0x8f, 0xc0,
0xc4, 0x8c, 0xbb, 0x3b, 0xc1, 0xef, 0xb8, 0x5b, 0x27, 0x03, 0xe0, 0xb1, 0x50, 0xdc, 0xc1, 0x4a,
0xbe, 0xaa, 0x32, 0xe6, 0x9c, 0xed, 0x9e, 0x86, 0xf4, 0x15, 0xb7, 0x5c, 0xb1, 0x4c, 0x99, 0x8b,
0x63, 0xb8, 0xb7, 0x21, 0x59, 0xad, 0x15, 0xa4, 0x03, 0xe2, 0x7d, 0x9d, 0x7a, 0x0a, 0x91, 0xbb,
0x1a, 0x0b, 0xee, 0x6f, 0x48, 0x6d, 0x42, 0x3d, 0x56, 0xdd, 0xb2, 0x50, 0xf0, 0x40, 0xe3, 0xdc,
0xc3, 0xfb, 0x57, 0x5b, 0x4b, 0xfb, 0xd8, 0xf1, 0x60, 0xe3, 0x68, 0x41, 0x49, 0x6c, 0x25, 0x86,
0x1a, 0x7a, 0xa8, 0x71, 0x3a, 0x21, 0xc4, 0x5e, 0x81, 0x47, 0xf0, 0x70, 0xfb, 0x54, 0xf6, 0x3c,
0xd7, 0x15, 0x0a, 0x9e, 0xe9, 0xf0, 0x08, 0x91, 0x99, 0xaf, 0xa6, 0xdc, 0xee, 0x66, 0xb5, 0x68,
0x78, 0x9a, 0x68, 0xa5, 0x0d, 0xa0, 0x53, 0x6f, 0x78, 0x86, 0xcc, 0xd6, 0x0a, 0x4a, 0x24, 0x56,
0x43, 0x3f, 0x68, 0x67, 0x86, 0x3b, 0xa1, 0xd5, 0x88, 0x2d, 0xc8, 0x1f, 0x92, 0x40, 0x41, 0x99,
0x15, 0x55, 0x9f, 0x06, 0x8b, 0x3f, 0x6c, 0x05, 0xfd, 0x88, 0xd8, 0x01, 0xc1, 0xda, 0xbb, 0x50,
0xb4, 0x2b, 0xbf, 0x94, 0x1f, 0xb7, 0xaf, 0xd5, 0x73, 0x7b, 0x96, 0x04, 0x0b, 0x02, 0xe8, 0x17,
0x83, 0x01, 0xb1, 0xbd, 0xe7, 0xda, 0xd9, 0xf8, 0x2b, 0xe9, 0xe7, 0xc9, 0xd9, 0xdb, 0x04, 0x68,
0x7d, 0xbd, 0xd0, 0x2e, 0x36, 0x5d, 0x5e, 0xe2, 0x6e, 0x52, 0xe1, 0x27, 0x53, 0xf4, 0xc1, 0xe2,
0x78, 0x90, 0xc9, 0x11, 0x8f, 0xf5, 0xc9, 0x60, 0xd3, 0x9a, 0x17, 0x3b, 0x3e, 0x73, 0xaf, 0x63,
0x65, 0x86, 0x58, 0x13, 0xcc, 0x5e, 0x22, 0x61, 0x62, 0x3a, 0x53, 0x2d, 0x09, 0xfc, 0x94, 0xb8,
0xcf, 0x84, 0xda, 0x62, 0x5b, 0xcd, 0x62, 0x0a, 0x0f, 0xff, 0xd1, 0xae, 0xbc, 0x0a, 0x66, 0x04,
0xfc, 0xcf, 0x76, 0x0b, 0x40, 0x54, 0x95, 0xd6, 0xfd, 0x57, 0xbb, 0x02, 0x89, 0xf8, 0xff, 0xdd,
0x2e, 0x7e, 0x5b, 0xb5, 0xf8, 0xb3, 0x4e, 0xf0, 0xc9, 0xde, 0x41, 0xed, 0xcc, 0x9a, 0x7a, 0xf9,
0x9f, 0x76, 0x65, 0x37, 0xd0, 0x7a, 0x17, 0xff, 0xb7, 0x5d, 0x31, 0x95, 0xb9, 0xe4, 0x3c, 0xe6,
0xa1, 0x82, 0xff, 0x23, 0xde, 0x4c, 0x60, 0x78, 0x87, 0x65, 0x83, 0xf6, 0xcf, 0xdb, 0x4d, 0xaa,
0xcf, 0x71, 0x62, 0x1e, 0xc1, 0x2f, 0xda, 0x1d, 0x0c, 0x45, 0x19, 0xe7, 0x43, 0xfb, 0xf6, 0x23,
0x82, 0x97, 0xdb, 0x45, 0x4a, 0x99, 0x0f, 0x1f, 0x5a, 0xf2, 0x57, 0x48, 0xe4, 0xb7, 0x05, 0xaa,
0xb0, 0x4d, 0x32, 0xed, 0x66, 0x11, 0x5b, 0x73, 0xb1, 0xf3, 0x75, 0xb2, 0x15, 0x04, 0xa9, 0xeb,
0x6d, 0x8b, 0x78, 0x83, 0x44, 0x22, 0x82, 0xc0, 0xc7, 0x3f, 0xfa, 0x68, 0x7c, 0x93, 0x24, 0x0f,
0x84, 0xde, 0x97, 0x78, 0x3b, 0x04, 0x6f, 0x75, 0x1a, 0xb5, 0xb2, 0x23, 0x13, 0x81, 0xdf, 0x26,
0x67, 0xe8, 0xa4, 0xc0, 0xf0, 0x4e, 0xbb, 0x84, 0x95, 0x3b, 0x2a, 0x78, 0xb7, 0x7d, 0xb5, 0xd5,
0x21, 0xef, 0xf3, 0x8e, 0xf7, 0x88, 0x59, 0xb5, 0x21, 0x09, 0xd3, 0x5f, 0x93, 0x1d, 0x21, 0xd0,
0x58, 0x2c, 0x4d, 0xf6, 0x4f, 0xdf, 0x6f, 0x57, 0x0f, 0x5e, 0x4e, 0x89, 0x25, 0x0e, 0x27, 0xcd,
0xb7, 0x4e, 0xb9, 0x32, 0xe2, 0xbc, 0xde, 0x6f, 0x3f, 0x79, 0x9e, 0x5c, 0x3e, 0xd5, 0xa1, 0xd5,
0x7b, 0x36, 0x38, 0x65, 0xbe, 0x55, 0x21, 0x06, 0x86, 0x39, 0xc4, 0xa9, 0x3b, 0x9e, 0x53, 0xaf,
0xd1, 0x3c, 0x84, 0x50, 0x70, 0xda, 0x7c, 0xab, 0xee, 0x0c, 0x34, 0x64, 0x09, 0x9a, 0x4c, 0x2c,
0x73, 0x0e, 0xa7, 0xcf, 0x93, 0xae, 0xac, 0x47, 0x0e, 0x44, 0x22, 0xf2, 0x11, 0x9c, 0x35, 0x1f,
0x6c, 0x74, 0xef, 0xb4, 0x52, 0xb6, 0xe6, 0x4a, 0x3d, 0xb8, 0x6c, 0x9e, 0xa4, 0x9e, 0x6c, 0xad,
0x4c, 0x33, 0x19, 0x15, 0xe6, 0x46, 0x6b, 0x2c, 0x23, 0x0e, 0x97, 0xd7, 0xe8, 0x43, 0x29, 0x75,
0xad, 0xa3, 0x7d, 0x7b, 0x90, 0x71, 0x0e, 0x57, 0xcc, 0xfb, 0x3c, 0x49, 0xd3, 0xab, 0x66, 0xe1,
0x95, 0xf3, 0x3e, 0xb5, 0x5a, 0x16, 0xb4, 0x3b, 0x73, 0xc3, 0xbc, 0xdf, 0xb9, 0x28, 0x63, 0x2b,
0xb6, 0xac, 0x6b, 0x54, 0x6f, 0x7f, 0x33, 0xef, 0x2d, 0x93, 0xe0, 0x6a, 0xdd, 0xe4, 0xbf, 0x25,
0xda, 0x26, 0x28, 0xfd, 0xa7, 0x3d, 0x62, 0xff, 0x6e, 0xde, 0x87, 0x3c, 0x3a, 0x9f, 0xb6, 0xa4,
0xea, 0x29, 0xe0, 0xdf, 0xcf, 0xfb, 0xd4, 0x89, 0x80, 0x4c, 0x36, 0x6e, 0x31, 0xb7, 0xcd, 0x7b,
0x4f, 0x8a, 0x26, 0x20, 0x48, 0xbe, 0x9d, 0xa8, 0x2a, 0x9a, 0x9c, 0x06, 0xe9, 0x77, 0xd0, 0xf5,
0x54, 0x74, 0x2c, 0x2e, 0xec, 0xfb, 0x19, 0x8d, 0xba, 0x73, 0x9e, 0xbc, 0x01, 0x98, 0xd2, 0x15,
0x2d, 0xf3, 0x34, 0x13, 0x8a, 0xc3, 0xf7, 0x88, 0x1d, 0x4d, 0xc5, 0x9a, 0xb8, 0xff, 0xfd, 0xdf,
0x84, 0x6d, 0x98, 0x15, 0x22, 0xe7, 0x70, 0xf7, 0xbc, 0xef, 0xaf, 0x4f, 0x17, 0x41, 0xcb, 0xdd,
0x97, 0x72, 0x09, 0xee, 0x99, 0xf7, 0x01, 0x7e, 0x2a, 0x3c, 0xe5, 0x2a, 0x15, 0x3c, 0xe4, 0x70,
0xef, 0x6f, 0x82, 0x36, 0x4a, 0x59, 0x4d, 0xe1, 0xbe, 0x79, 0x1f, 0x98, 0x23, 0x26, 0x31, 0x0c,
0x1c, 0xfa, 0xe9, 0x4f, 0x9b, 0x3c, 0x4b, 0x24, 0x43, 0xf8, 0x39, 0xdd, 0x7e, 0x02, 0x48, 0x33,
0xae, 0x78, 0xa8, 0x8b, 0xa7, 0x5f, 0xcc, 0xfb, 0x8c, 0x91, 0x22, 0x74, 0x58, 0x7b, 0x99, 0x28,
0x90, 0xd2, 0xcc, 0xe1, 0x6f, 0x73, 0x27, 0x63, 0x45, 0xaf, 0xcc, 0xfb, 0x53, 0x64, 0x12, 0xea,
0x9e, 0x05, 0xc0, 0x2f, 0xa7, 0x08, 0x5b, 0xf9, 0xc4, 0xaf, 0x48, 0x00, 0xa1, 0x80, 0x9a, 0x49,
0xbf, 0x3a, 0x61, 0x28, 0x1e, 0x96, 0xf3, 0x78, 0xe0, 0x57, 0xfe, 0xda, 0x14, 0x94, 0x12, 0xf6,
0x2c, 0xc5, 0x46, 0xc5, 0xeb, 0xd4, 0xae, 0x6b, 0x28, 0x57, 0xa3, 0xbd, 0x41, 0x1d, 0x92, 0x60,
0x4c, 0x90, 0xa9, 0xd2, 0x74, 0x78, 0x73, 0x87, 0x38, 0x1f, 0x00, 0xdf, 0x6a, 0xa8, 0x6a, 0x98,
0x78, 0x1c, 0x6a, 0xe2, 0x6d, 0x62, 0x8e, 0x4d, 0x48, 0xc6, 0x57, 0x32, 0x56, 0x85, 0xc0, 0x77,
0x1a, 0x9b, 0x44, 0xb1, 0x13, 0x31, 0xf0, 0xdd, 0x06, 0x5b, 0x2a, 0xe1, 0x64, 0x34, 0x7f, 0x8f,
0xac, 0x26, 0x2b, 0xf2, 0x91, 0xef, 0x14, 0xdb, 0x53, 0xc6, 0x46, 0xce, 0x2b, 0xba, 0xa4, 0x0b,
0x24, 0x06, 0xaa, 0xf4, 0x2f, 0x77, 0xb7, 0x77, 0x7d, 0xc8, 0xf5, 0x24, 0x59, 0x28, 0x6c, 0xf0,
0xdc, 0xd4, 0x25, 0x25, 0x42, 0x45, 0xf5, 0xf1, 0xed, 0xe6, 0x2e, 0x69, 0xca, 0x54, 0xf4, 0x81,
0xcc, 0xfa, 0xba, 0xbc, 0xee, 0x92, 0x3a, 0xa7, 0x22, 0x66, 0xbc, 0xc8, 0x39, 0x7c, 0xb9, 0x4b,
0xba, 0x6e, 0x54, 0x22, 0x73, 0x1b, 0xf1, 0x15, 0x22, 0xd5, 0x61, 0x05, 0xcf, 0x49, 0xf2, 0xcb,
0x23, 0xb8, 0xa5, 0xeb, 0x0d, 0xc2, 0x5e, 0xe2, 0xa4, 0x31, 0x0b, 0x39, 0x3e, 0xe6, 0x62, 0x63,
0xfd, 0x3f, 0x7c, 0xa3, 0xdb, 0xb8, 0xe8, 0xa9, 0x30, 0xee, 0xb5, 0x08, 0xde, 0x15, 0x7f, 0xb3,
0xeb, 0xf5, 0x5d, 0x07, 0xd6, 0x9b, 0x89, 0xb7, 0x12, 0xa6, 0x18, 0x93, 0x6c, 0xb6, 0x4d, 0x6e,
0xcf, 0x4d, 0x7e, 0xff, 0x68, 0xb7, 0x56, 0xc6, 0x59, 0x44, 0x65, 0xf9, 0x8f, 0x75, 0x6b, 0x35,
0xa0, 0xcb, 0xdb, 0x59, 0x0e, 0x8f, 0x77, 0xbd, 0xb1, 0x50, 0x5a, 0x8b, 0x47, 0x3f, 0xd1, 0xad,
0x95, 0xa5, 0x93, 0x02, 0x39, 0xef, 0x78, 0xb2, 0x5b, 0xeb, 0x71, 0x56, 0xe2, 0xa0, 0x79, 0x3c,
0xd5, 0xad, 0xd5, 0x8a, 0x5e, 0x98, 0x32, 0xe3, 0x7d, 0x99, 0x25, 0xf0, 0xf4, 0x94, 0x95, 0x4f,
0x94, 0x67, 0xd9, 0xb8, 0x0f, 0xcf, 0x4c, 0xe1, 0x85, 0xb5, 0x99, 0x89, 0xe3, 0x3f, 0xe8, 0xd6,
0x4a, 0xfc, 0xaa, 0x57, 0xa4, 0xa7, 0x32, 0xb5, 0xe9, 0x0f, 0xa7, 0xcc, 0x27, 0x53, 0x9e, 0x31,
0x25, 0xb3, 0x52, 0xd9, 0x07, 0x53, 0x3f, 0x9a, 0xa2, 0x01, 0x71, 0x6c, 0x39, 0x3c, 0xe1, 0xa8,
0xa3, 0x8f, 0xe8, 0x1f, 0xbe, 0x6d, 0xdb, 0xd1, 0xeb, 0xf0, 0xe3, 0x69, 0x8a, 0x3a, 0xe1, 0xc8,
0x23, 0xc9, 0xb5, 0xf0, 0xb3, 0x53, 0x55, 0xef, 0x5b, 0xc2, 0xb6, 0x5b, 0xf6, 0x5c, 0xb7, 0xd6,
0xf9, 0x70, 0x1a, 0xf1, 0x35, 0xa6, 0x55, 0xef, 0xf3, 0xdd, 0x5a, 0xa3, 0xa1, 0x89, 0xd4, 0xfc,
0xfb, 0x7c, 0x28, 0x12, 0x78, 0xa1, 0x5b, 0x2b, 0xba, 0x27, 0x25, 0xe8, 0x17, 0x6b, 0xf6, 0x3e,
0xa4, 0xeb, 0xcf, 0xa0, 0x96, 0x9d, 0xcf, 0x78, 0x5e, 0xc4, 0xbe, 0x85, 0xf5, 0x62, 0xb7, 0xd6,
0xca, 0xf5, 0x26, 0x65, 0x03, 0xff, 0x4b, 0xc4, 0x0d, 0x28, 0xc2, 0x36, 0x28, 0x52, 0x6e, 0xee,
0xaf, 0x94, 0x8e, 0x0a, 0x3f, 0xad, 0xcf, 0x1d, 0xf1, 0xb1, 0xad, 0x9c, 0x4c, 0xb1, 0x9c, 0x90,
0x27, 0xea, 0xf0, 0x32, 0xf1, 0x05, 0xff, 0x18, 0xdf, 0xd4, 0x2e, 0x08, 0x38, 0x6d, 0x81, 0x5c,
0x6e, 0xd7, 0x00, 0xa6, 0xc5, 0x7d, 0xfa, 0x82, 0xb7, 0x86, 0x3a, 0x22, 0xe5, 0x59, 0x2e, 0x13,
0x16, 0x87, 0x23, 0xa6, 0xe0, 0x8c, 0x05, 0x6f, 0xe8, 0x87, 0x15, 0x2c, 0xd6, 0xa1, 0x10, 0x9d,
0xd8, 0xb4, 0xd1, 0x2e, 0x58, 0xf0, 0x19, 0xa4, 0x23, 0x8f, 0xd9, 0x2a, 0x5c, 0xd8, 0xf2, 0xbd,
0x0e, 0xdb, 0x17, 0x2d, 0x4c, 0x36, 0x35, 0x4d, 0x8e, 0xe3, 0xdd, 0xfc, 0xaa, 0x56, 0xba, 0x7f,
0x2b, 0x7a, 0x35, 0x59, 0x59, 0x45, 0x47, 0x52, 0x91, 0xe2, 0xdd, 0x2b, 0x5c, 0xb3, 0xd0, 0xde,
0x20, 0x46, 0xe2, 0xb5, 0x0b, 0xe4, 0xdd, 0x84, 0x0e, 0xe7, 0x55, 0x11, 0x61, 0x32, 0x51, 0xae,
0x65, 0x85, 0xdb, 0x16, 0x6a, 0x4f, 0x06, 0x7d, 0x51, 0x22, 0x55, 0x39, 0x5e, 0x4e, 0xcd, 0x03,
0xc4, 0xdb, 0xa7, 0x32, 0x43, 0xd7, 0x34, 0x09, 0x0c, 0xdc, 0xb1, 0xe0, 0x7d, 0xb3, 0x05, 0x85,
0x9c, 0xee, 0x9c, 0xca, 0x09, 0xaf, 0x93, 0x4d, 0x12, 0x0c, 0x77, 0x2d, 0x78, 0x23, 0x99, 0x44,
0x89, 0x44, 0xa8, 0xfa, 0xcb, 0xcd, 0x6f, 0x2f, 0x90, 0xa7, 0x24, 0x13, 0x2d, 0xc6, 0xaa, 0xb7,
0x87, 0xa6, 0xf7, 0x2c, 0xd1, 0xa8, 0x48, 0x96, 0x85, 0x62, 0xca, 0xbd, 0x38, 0x4c, 0x0a, 0xbc,
0x18, 0x7a, 0x78, 0x83, 0x37, 0x37, 0x82, 0xf0, 0x05, 0xda, 0x23, 0x1b, 0xbc, 0xf8, 0x93, 0x80,
0x3e, 0xcf, 0x2a, 0x8f, 0x79, 0xb4, 0x9d, 0x8d, 0xc8, 0xdd, 0x05, 0xd4, 0x63, 0x1b, 0xa6, 0x4a,
0x32, 0x66, 0xf8, 0x73, 0x85, 0xc7, 0x37, 0x78, 0xeb, 0xa0, 0x13, 0xc9, 0x32, 0x8c, 0x45, 0xb8,
0x04, 0x4f, 0x6c, 0xf0, 0x1b, 0x37, 0x49, 0x77, 0x57, 0x66, 0x08, 0x7b, 0x72, 0x83, 0xdf, 0x12,
0x02, 0x43, 0xa2, 0x39, 0xac, 0xd6, 0xe0, 0xa9, 0x76, 0x56, 0x46, 0x90, 0x92, 0x27, 0xb6, 0xe3,
0xf7, 0x74, 0x3b, 0x8c, 0xfc, 0xca, 0x08, 0xcd, 0xfe, 0x99, 0x0d, 0xf5, 0x97, 0xc9, 0xf6, 0xfd,
0xba, 0x8c, 0x55, 0x99, 0xe8, 0x0c, 0xff, 0xbc, 0xc5, 0xfa, 0xa3, 0x70, 0xfb, 0x16, 0x7f, 0x80,
0xef, 0x4c, 0xe0, 0xfc, 0xc5, 0x76, 0x0e, 0xe8, 0x3a, 0xf8, 0xfa, 0xfd, 0x82, 0x45, 0x72, 0x4f,
0x4f, 0xe7, 0x50, 0x2c, 0x23, 0x3f, 0x79, 0xb8, 0x70, 0x47, 0x8c, 0xd0, 0x07, 0xaf, 0x81, 0x76,
0x46, 0xb5, 0x84, 0xf4, 0x5a, 0x68, 0x97, 0x18, 0x23, 0x2f, 0x1b, 0xc2, 0x75, 0x40, 0x2e, 0xeb,
0x09, 0x3d, 0xc2, 0x54, 0x01, 0xae, 0x87, 0xfa, 0x03, 0x69, 0x22, 0xae, 0x06, 0xdc, 0xb0, 0x23,
0xc0, 0x58, 0x24, 0x70, 0x23, 0x4c, 0x51, 0xaa, 0x06, 0x68, 0x4f, 0x86, 0xed, 0x50, 0x7f, 0xee,
0x5d, 0x29, 0x55, 0x44, 0x06, 0x72, 0x13, 0x90, 0x5b, 0xf5, 0x4c, 0xe6, 0x79, 0xb9, 0x56, 0xb0,
0x44, 0xbb, 0x95, 0xaa, 0x1e, 0xa2, 0x7e, 0x56, 0x8a, 0x04, 0x5e, 0x5e, 0x0c, 0x0e, 0xed, 0x7d,
0xd2, 0xf9, 0x53, 0xd6, 0x00, 0xf6, 0x79, 0xe3, 0x7d, 0xe2, 0x2b, 0x8b, 0xe4, 0xc5, 0x70, 0x1b,
0xef, 0xca, 0x83, 0x7e, 0xb9, 0xe8, 0x4f, 0xc9, 0x36, 0x64, 0xc8, 0xaa, 0x57, 0x82, 0xbf, 0xfa,
0x00, 0x28, 0x69, 0x02, 0xbd, 0xba, 0x48, 0x02, 0x46, 0x0b, 0x54, 0xc9, 0xb4, 0xcc, 0x47, 0x36,
0x7e, 0xc2, 0x6b, 0x8b, 0xbe, 0xc0, 0x6b, 0x43, 0xbb, 0x44, 0xd9, 0x5e, 0x4b, 0xbf, 0xbe, 0xf8,
0xc1, 0x8a, 0xc3, 0xac, 0xfe, 0x8d, 0x0f, 0x5a, 0x9b, 0x7f, 0xac, 0xf9, 0xe6, 0x07, 0x28, 0x4c,
0xaf, 0x0d, 0xff, 0x82, 0xb7, 0x16, 0x49, 0xc4, 0x44, 0xa4, 0x92, 0xa9, 0x79, 0x95, 0x40, 0x14,
0xf0, 0xfe, 0x22, 0x89, 0xbd, 0x93, 0xa8, 0x2a, 0x5b, 0x3d, 0x69, 0x23, 0x79, 0xbb, 0x37, 0x89,
0x71, 0x91, 0xeb, 0xe4, 0x8d, 0x3b, 0x64, 0x83, 0xab, 0x3c, 0xa5, 0x81, 0x19, 0x33, 0xed, 0x0b,
0x4c, 0x8a, 0x58, 0x24, 0x1c, 0xa7, 0x3a, 0x75, 0x63, 0xb0, 0xb3, 0xfb, 0xb9, 0x21, 0x3e, 0x09,
0xd1, 0x66, 0xfe, 0xf8, 0x46, 0xdf, 0x12, 0xc1, 0x2f, 0xb1, 0xe2, 0xd0, 0x91, 0xf9, 0x89, 0x8d,
0xbe, 0x8b, 0x62, 0xe1, 0xe5, 0x0a, 0x67, 0x19, 0x3c, 0xb9, 0xd1, 0x1f, 0x71, 0x8e, 0x50, 0x8d,
0x7a, 0x6a, 0xa3, 0xcf, 0x83, 0x57, 0x84, 0xae, 0x60, 0xe2, 0xd8, 0x75, 0x34, 0xef, 0xd8, 0xe4,
0x07, 0x22, 0x4d, 0x8b, 0xaf, 0xff, 0xe8, 0xcb, 0x55, 0xb8, 0x73, 0x93, 0x17, 0xa4, 0x22, 0xe2,
0x2b, 0x95, 0xbb, 0xda, 0x28, 0x79, 0x2c, 0x15, 0x7c, 0x7b, 0x93, 0xf7, 0x71, 0xa4, 0xd8, 0x5f,
0xb2, 0xd8, 0x81, 0xff, 0xd0, 0x36, 0x10, 0xe3, 0xe6, 0x3f, 0x6e, 0xf2, 0xc1, 0xc3, 0xb3, 0x4c,
0x39, 0xb7, 0x2f, 0xb0, 0xfe, 0x69, 0x93, 0x2f, 0x57, 0x90, 0x6e, 0x3b, 0x93, 0x86, 0xfa, 0xcf,
0x9b, 0x88, 0xb2, 0xcd, 0x2b, 0x7c, 0xd2, 0xcb, 0x37, 0x2f, 0x1e, 0x7e, 0x46, 0x30, 0x03, 0x7c,
0x90, 0x86, 0xbf, 0xc6, 0x11, 0x49, 0x5e, 0x0c, 0x06, 0x22, 0x14, 0x3c, 0x51, 0xb0, 0x7d, 0x33,
0x79, 0x82, 0x6e, 0x30, 0x45, 0x96, 0xd9, 0x9f, 0xaf, 0xd8, 0x1a, 0xb2, 0xcf, 0x15, 0xdc, 0xb4,
0xf9, 0x0f, 0xbb, 0xf8, 0x13, 0xd8, 0xcf, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0xab,
0x9b, 0xcf, 0x23, 0x3b, 0x00, 0x00,
}

View File

@ -508,4 +508,6 @@ enum ErrorCode {
ERROR_COLLECTION_REWARD_EMPTY = 3050; //
ERROR_FRUIT_CHIP_INSUFFICIENT = 4000; //
ERROR_FRUIT_CURR_STAGE_CANNOT_BET = 4001; //
}

File diff suppressed because it is too large Load Diff

View File

@ -3767,3 +3767,54 @@ message SCLevelupSummonAck {
message SCLevelupSummonStartupNtf{
repeated LevelupSummonInfo info = 1;
}
message CSFruitJoinReq { //project game|fruit //RouteRule game
uint64 uid = 1;
int32 room_no = 2;
}
message SCFruitJoinAck { //project game|fruit //RouteRule game
int32 error = 1;
int32 stage = 2; //1-2-
int32 sec = 3; //
int32 my_chip_num = 4; //
int32 pool_chip_num = 5; //
repeated FruitSlotBetInfo total_bet_info = 6; //
repeated FruitSlotBetInfo my_bet_info = 7; //
repeated int32 settle_history = 8; //
repeated int32 last_award_slots = 9; //
repeated FruitPlayerAwardInfo last_player_award_info = 10;
}
message CSFruitLeaveReq { //project game|fruit //RouteRule game
uint64 uid = 1;
int32 room_no = 2;
}
message SCFruitLeaveAck { //project game|fruit //RouteRule game
int32 error = 1;
}
message CSFruitBetReq { //project game|fruit //RouteRule game
uint64 uid = 1;
repeated FruitSlotBetInfo bet_info = 2;
}
message SCFruitBetAck { //project game|fruit //RouteRule game
int32 error = 1;
int32 my_chip_num = 2; //
uint32 pool_chip_num = 3; //
repeated FruitSlotBetInfo total_bet_info = 4; //
repeated FruitSlotBetInfo my_bet_info = 5; //
}
message SCFruitSettleNtf {
int32 my_chip_num = 1; //
int32 award_type = 2;
int32 award_chip_num = 3;
repeated int32 award_slots = 4;
repeated int32 settle_history = 5; //
repeated FruitPlayerAwardInfo award_rank_info = 6;
int32 start_slot = 7;
int32 target_slot = 8;
repeated int32 award_items = 9;
}
message SCFruitSecTickNtf {
int32 sec = 1;
uint32 pool_chip_num = 2;
repeated FruitSlotBetInfo total_bet_info = 3;
}

File diff suppressed because it is too large Load Diff

View File

@ -733,6 +733,14 @@ enum protoMsgId{
CS_LEVELUP_SUMMON_REQ = 1751; // CSLevelupSummonReq **CSLevelupSummonReq **login.proto **game [CSLevelupSummonReq]
SC_LEVELUP_SUMMON_ACK = 1752; // SCLevelupSummonAck **SCLevelupSummonAck **login.proto ** [SCLevelupSummonAck]
SC_LEVELUP_SUMMON_STARTUP_NTF = 1753; // SCLevelupSummonStartupNtf **SCLevelupSummonStartupNtf **login.proto ** [SCLevelupSummonStartupNtf]
CS_FRUIT_JOIN_REQ = 1754; // CSFruitJoinReq **CSFruitJoinReq **login.proto **game,fruit [CSFruitJoinReq]
SC_FRUIT_JOIN_ACK = 1755; // SCFruitJoinAck **SCFruitJoinAck **login.proto **game,fruit [SCFruitJoinAck]
CS_FRUIT_LEAVE_REQ = 1756; // CSFruitLeaveReq **CSFruitLeaveReq **login.proto **game,fruit [CSFruitLeaveReq]
SC_FRUIT_LEAVE_ACK = 1757; // SCFruitLeaveAck **SCFruitLeaveAck **login.proto **game,fruit [SCFruitLeaveAck]
CS_FRUIT_BET_REQ = 1758; // CSFruitBetReq **CSFruitBetReq **login.proto **game,fruit [CSFruitBetReq]
SC_FRUIT_BET_ACK = 1759; // SCFruitBetAck **SCFruitBetAck **login.proto **game,fruit [SCFruitBetAck]
SC_FRUIT_SETTLE_NTF = 1760; // SCFruitSettleNtf **SCFruitSettleNtf **login.proto ** [SCFruitSettleNtf]
SC_FRUIT_SEC_TICK_NTF = 1761; // SCFruitSecTickNtf **SCFruitSecTickNtf **login.proto ** [SCFruitSecTickNtf]
SS_WEB_GM_CHAT_MSG_NTF = 3000; // SSWebGMChatMsgNtf **SSWebGMChatMsgNtf **logic.proto **db [SSWebGMChatMsgNtf]
SS_WEB_GM_ADD_MAIL_NTF = 3001; // SSWebGMAddMailNtf **SSWebGMAddMailNtf **logic.proto **social,game,db [SSWebGMAddMailNtf]
SS_WEB_GM_BAN_NTF = 3002; // SSWebGMBanNtf **SSWebGMBanNtf **logic.proto **social,game [SSWebGMBanNtf]

View File

@ -711,5 +711,13 @@ enum protoMsgId{
CS_LEVELUP_SUMMON_REQ = 1751; // CSLevelupSummonReq **CSLevelupSummonReq **login.proto **game [CSLevelupSummonReq]
SC_LEVELUP_SUMMON_ACK = 1752; // SCLevelupSummonAck **SCLevelupSummonAck **login.proto ** [SCLevelupSummonAck]
SC_LEVELUP_SUMMON_STARTUP_NTF = 1753; // SCLevelupSummonStartupNtf **SCLevelupSummonStartupNtf **login.proto ** [SCLevelupSummonStartupNtf]
CS_FRUIT_JOIN_REQ = 1754; // CSFruitJoinReq **CSFruitJoinReq **login.proto **game,fruit [CSFruitJoinReq]
SC_FRUIT_JOIN_ACK = 1755; // SCFruitJoinAck **SCFruitJoinAck **login.proto **game,fruit [SCFruitJoinAck]
CS_FRUIT_LEAVE_REQ = 1756; // CSFruitLeaveReq **CSFruitLeaveReq **login.proto **game,fruit [CSFruitLeaveReq]
SC_FRUIT_LEAVE_ACK = 1757; // SCFruitLeaveAck **SCFruitLeaveAck **login.proto **game,fruit [SCFruitLeaveAck]
CS_FRUIT_BET_REQ = 1758; // CSFruitBetReq **CSFruitBetReq **login.proto **game,fruit [CSFruitBetReq]
SC_FRUIT_BET_ACK = 1759; // SCFruitBetAck **SCFruitBetAck **login.proto **game,fruit [SCFruitBetAck]
SC_FRUIT_SETTLE_NTF = 1760; // SCFruitSettleNtf **SCFruitSettleNtf **login.proto ** [SCFruitSettleNtf]
SC_FRUIT_SEC_TICK_NTF = 1761; // SCFruitSecTickNtf **SCFruitSecTickNtf **login.proto ** [SCFruitSecTickNtf]
}

View File

@ -164,6 +164,12 @@ var(
//FRUIT
var(
Handle_FRUIT_CSFruitJoinReq =func(e rocommon.ProcEvent){panic("CSFruitJoinReq not implements")}
Handle_FRUIT_SCFruitJoinAck =func(e rocommon.ProcEvent){panic("SCFruitJoinAck not implements")}
Handle_FRUIT_CSFruitLeaveReq =func(e rocommon.ProcEvent){panic("CSFruitLeaveReq not implements")}
Handle_FRUIT_SCFruitLeaveAck =func(e rocommon.ProcEvent){panic("SCFruitLeaveAck not implements")}
Handle_FRUIT_CSFruitBetReq =func(e rocommon.ProcEvent){panic("CSFruitBetReq not implements")}
Handle_FRUIT_SCFruitBetAck =func(e rocommon.ProcEvent){panic("SCFruitBetAck not implements")}
Handle_FRUIT_SSPlayerOnlineNtf =func(e rocommon.ProcEvent){panic("SSPlayerOnlineNtf not implements")}
Handle_FRUIT_SSPlayerOfflineNtf =func(e rocommon.ProcEvent){panic("SSPlayerOfflineNtf not implements")}
Handle_FRUIT_Default func(e rocommon.ProcEvent)
@ -548,6 +554,12 @@ var(
Handle_GAME_CSGetPetRankAwardReq =func(e rocommon.ProcEvent){panic("CSGetPetRankAwardReq not implements")}
Handle_GAME_SCGetPetRankAwardAck =func(e rocommon.ProcEvent){panic("SCGetPetRankAwardAck not implements")}
Handle_GAME_CSLevelupSummonReq =func(e rocommon.ProcEvent){panic("CSLevelupSummonReq not implements")}
Handle_GAME_CSFruitJoinReq =func(e rocommon.ProcEvent){panic("CSFruitJoinReq not implements")}
Handle_GAME_SCFruitJoinAck =func(e rocommon.ProcEvent){panic("SCFruitJoinAck not implements")}
Handle_GAME_CSFruitLeaveReq =func(e rocommon.ProcEvent){panic("CSFruitLeaveReq not implements")}
Handle_GAME_SCFruitLeaveAck =func(e rocommon.ProcEvent){panic("SCFruitLeaveAck not implements")}
Handle_GAME_CSFruitBetReq =func(e rocommon.ProcEvent){panic("CSFruitBetReq not implements")}
Handle_GAME_SCFruitBetAck =func(e rocommon.ProcEvent){panic("SCFruitBetAck not implements")}
Handle_GAME_SSWebGMAddMailNtf =func(e rocommon.ProcEvent){panic("SSWebGMAddMailNtf not implements")}
Handle_GAME_SSWebGMBanNtf =func(e rocommon.ProcEvent){panic("SSWebGMBanNtf not implements")}
Handle_GAME_SSWebGMNoticeNtf =func(e rocommon.ProcEvent){panic("SSWebGMNoticeNtf not implements")}
@ -1116,6 +1128,12 @@ func GetMessageHandler(sreviceName string) rocommon.EventCallBack {
case "fruit": //FRUIT message process part
return func(e rocommon.ProcEvent) {
switch e.Msg().(type) {
case *CSFruitJoinReq: Handle_FRUIT_CSFruitJoinReq(e)
case *SCFruitJoinAck: Handle_FRUIT_SCFruitJoinAck(e)
case *CSFruitLeaveReq: Handle_FRUIT_CSFruitLeaveReq(e)
case *SCFruitLeaveAck: Handle_FRUIT_SCFruitLeaveAck(e)
case *CSFruitBetReq: Handle_FRUIT_CSFruitBetReq(e)
case *SCFruitBetAck: Handle_FRUIT_SCFruitBetAck(e)
case *SSPlayerOnlineNtf: Handle_FRUIT_SSPlayerOnlineNtf(e)
case *SSPlayerOfflineNtf: Handle_FRUIT_SSPlayerOfflineNtf(e)
default:
@ -1505,6 +1523,12 @@ func GetMessageHandler(sreviceName string) rocommon.EventCallBack {
case *CSGetPetRankAwardReq: Handle_GAME_CSGetPetRankAwardReq(e)
case *SCGetPetRankAwardAck: Handle_GAME_SCGetPetRankAwardAck(e)
case *CSLevelupSummonReq: Handle_GAME_CSLevelupSummonReq(e)
case *CSFruitJoinReq: Handle_GAME_CSFruitJoinReq(e)
case *SCFruitJoinAck: Handle_GAME_SCFruitJoinAck(e)
case *CSFruitLeaveReq: Handle_GAME_CSFruitLeaveReq(e)
case *SCFruitLeaveAck: Handle_GAME_SCFruitLeaveAck(e)
case *CSFruitBetReq: Handle_GAME_CSFruitBetReq(e)
case *SCFruitBetAck: Handle_GAME_SCFruitBetAck(e)
case *SSWebGMAddMailNtf: Handle_GAME_SSWebGMAddMailNtf(e)
case *SSWebGMBanNtf: Handle_GAME_SSWebGMBanNtf(e)
case *SSWebGMNoticeNtf: Handle_GAME_SSWebGMNoticeNtf(e)
@ -2653,6 +2677,14 @@ func init() {
registerInfo(1751, reflect.TypeOf((*CSLevelupSummonReq)(nil)).Elem(), 0)
registerInfo(1752, reflect.TypeOf((*SCLevelupSummonAck)(nil)).Elem(), 0)
registerInfo(1753, reflect.TypeOf((*SCLevelupSummonStartupNtf)(nil)).Elem(), 0)
registerInfo(1754, reflect.TypeOf((*CSFruitJoinReq)(nil)).Elem(), 0)
registerInfo(1755, reflect.TypeOf((*SCFruitJoinAck)(nil)).Elem(), 0)
registerInfo(1756, reflect.TypeOf((*CSFruitLeaveReq)(nil)).Elem(), 0)
registerInfo(1757, reflect.TypeOf((*SCFruitLeaveAck)(nil)).Elem(), 0)
registerInfo(1758, reflect.TypeOf((*CSFruitBetReq)(nil)).Elem(), 0)
registerInfo(1759, reflect.TypeOf((*SCFruitBetAck)(nil)).Elem(), 0)
registerInfo(1760, reflect.TypeOf((*SCFruitSettleNtf)(nil)).Elem(), 0)
registerInfo(1761, reflect.TypeOf((*SCFruitSecTickNtf)(nil)).Elem(), 0)
registerInfo(3000, reflect.TypeOf((*SSWebGMChatMsgNtf)(nil)).Elem(), 0)
registerInfo(3001, reflect.TypeOf((*SSWebGMAddMailNtf)(nil)).Elem(), 0)
registerInfo(3002, reflect.TypeOf((*SSWebGMBanNtf)(nil)).Elem(), 0)

View File

@ -17124,6 +17124,108 @@ func (m *LevelupSummonInfo) GetExp() int32 {
return 0
}
type FruitSlotBetInfo struct {
Slot int32 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"`
BetNum int32 `protobuf:"varint,2,opt,name=bet_num,json=betNum,proto3" json:"bet_num,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FruitSlotBetInfo) Reset() { *m = FruitSlotBetInfo{} }
func (m *FruitSlotBetInfo) String() string { return proto.CompactTextString(m) }
func (*FruitSlotBetInfo) ProtoMessage() {}
func (*FruitSlotBetInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_116e343673f7ffaf, []int{249}
}
func (m *FruitSlotBetInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FruitSlotBetInfo.Unmarshal(m, b)
}
func (m *FruitSlotBetInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FruitSlotBetInfo.Marshal(b, m, deterministic)
}
func (m *FruitSlotBetInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_FruitSlotBetInfo.Merge(m, src)
}
func (m *FruitSlotBetInfo) XXX_Size() int {
return xxx_messageInfo_FruitSlotBetInfo.Size(m)
}
func (m *FruitSlotBetInfo) XXX_DiscardUnknown() {
xxx_messageInfo_FruitSlotBetInfo.DiscardUnknown(m)
}
var xxx_messageInfo_FruitSlotBetInfo proto.InternalMessageInfo
func (m *FruitSlotBetInfo) GetSlot() int32 {
if m != nil {
return m.Slot
}
return 0
}
func (m *FruitSlotBetInfo) GetBetNum() int32 {
if m != nil {
return m.BetNum
}
return 0
}
type FruitPlayerAwardInfo struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
AwardChipNum int32 `protobuf:"varint,2,opt,name=award_chip_num,json=awardChipNum,proto3" json:"award_chip_num,omitempty"`
Rank int32 `protobuf:"varint,3,opt,name=rank,proto3" json:"rank,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FruitPlayerAwardInfo) Reset() { *m = FruitPlayerAwardInfo{} }
func (m *FruitPlayerAwardInfo) String() string { return proto.CompactTextString(m) }
func (*FruitPlayerAwardInfo) ProtoMessage() {}
func (*FruitPlayerAwardInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_116e343673f7ffaf, []int{250}
}
func (m *FruitPlayerAwardInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FruitPlayerAwardInfo.Unmarshal(m, b)
}
func (m *FruitPlayerAwardInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FruitPlayerAwardInfo.Marshal(b, m, deterministic)
}
func (m *FruitPlayerAwardInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_FruitPlayerAwardInfo.Merge(m, src)
}
func (m *FruitPlayerAwardInfo) XXX_Size() int {
return xxx_messageInfo_FruitPlayerAwardInfo.Size(m)
}
func (m *FruitPlayerAwardInfo) XXX_DiscardUnknown() {
xxx_messageInfo_FruitPlayerAwardInfo.DiscardUnknown(m)
}
var xxx_messageInfo_FruitPlayerAwardInfo proto.InternalMessageInfo
func (m *FruitPlayerAwardInfo) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *FruitPlayerAwardInfo) GetAwardChipNum() int32 {
if m != nil {
return m.AwardChipNum
}
return 0
}
func (m *FruitPlayerAwardInfo) GetRank() int32 {
if m != nil {
return m.Rank
}
return 0
}
func init() {
proto.RegisterType((*AccountRole)(nil), "serverproto.AccountRole")
proto.RegisterType((*ReconnectInfo)(nil), "serverproto.ReconnectInfo")
@ -17374,12 +17476,14 @@ func init() {
proto.RegisterType((*CommonRankShapShotCli)(nil), "serverproto.CommonRankShapShotCli")
proto.RegisterType((*RoleLevelupSummon)(nil), "serverproto.RoleLevelupSummon")
proto.RegisterType((*LevelupSummonInfo)(nil), "serverproto.LevelupSummonInfo")
proto.RegisterType((*FruitSlotBetInfo)(nil), "serverproto.FruitSlotBetInfo")
proto.RegisterType((*FruitPlayerAwardInfo)(nil), "serverproto.FruitPlayerAwardInfo")
}
func init() { proto.RegisterFile("user.proto", fileDescriptor_116e343673f7ffaf) }
var fileDescriptor_116e343673f7ffaf = []byte{
// 14892 bytes of a gzipped FileDescriptorProto
// 14953 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0xbd, 0x5b, 0x8c, 0x24, 0x59,
0x7a, 0x10, 0xac, 0xac, 0xcc, 0xac, 0xcc, 0xfc, 0xf2, 0x56, 0x15, 0xdd, 0x55, 0x53, 0x3d, 0x3d,
0xd7, 0xd8, 0x99, 0xd9, 0x9e, 0xcb, 0xee, 0xcc, 0x74, 0xcf, 0xf4, 0xce, 0xec, 0x6d, 0x54, 0x5d,
@ -18309,6 +18413,10 @@ var fileDescriptor_116e343673f7ffaf = []byte{
0x31, 0x87, 0x39, 0x99, 0x0e, 0x65, 0x3e, 0xff, 0xc1, 0xe0, 0x9a, 0x16, 0x79, 0xbc, 0xcf, 0x22,
0x8f, 0xdc, 0xfe, 0xb6, 0xae, 0xe6, 0x04, 0xd9, 0xf9, 0x03, 0x92, 0xcb, 0x69, 0x48, 0xb4, 0xbf,
0x05, 0xeb, 0x0b, 0x49, 0xd8, 0xe6, 0x51, 0x14, 0xce, 0xa6, 0xda, 0x05, 0x8e, 0x3e, 0x96, 0xd8,
0x3a, 0xae, 0x41, 0x55, 0xa5, 0x36, 0x37, 0xf8, 0xf7, 0x60, 0x95, 0x5a, 0xbc, 0xf6, 0x7f, 0x02,
0x00, 0x00, 0xff, 0xff, 0x84, 0x62, 0x93, 0x9c, 0x60, 0xb8, 0x00, 0x00,
0x3a, 0xae, 0x41, 0x55, 0xa5, 0x36, 0x37, 0xf8, 0xd7, 0x7e, 0x0f, 0xd6, 0x6e, 0x47, 0x33, 0x9f,
0x2c, 0xf8, 0x6f, 0xa8, 0xf4, 0x8d, 0x2c, 0x83, 0x59, 0xa0, 0xff, 0x64, 0x17, 0xa5, 0x92, 0x9c,
0x5d, 0x94, 0x4a, 0x90, 0x83, 0xf7, 0xe0, 0x22, 0x55, 0xc0, 0x82, 0xa0, 0xed, 0xf4, 0xe9, 0xef,
0x32, 0x6b, 0x90, 0x17, 0xa0, 0xc7, 0x9b, 0x1d, 0x49, 0x36, 0xa3, 0xae, 0x0e, 0x41, 0x91, 0x40,
0x33, 0x3d, 0xdc, 0x0c, 0xfb, 0x90, 0x83, 0x55, 0x9a, 0x98, 0x6b, 0xff, 0x27, 0x00, 0x00, 0xff,
0xff, 0x1b, 0x2d, 0xcd, 0x43, 0x07, 0xb9, 0x00, 0x00,
}

View File

@ -2029,4 +2029,14 @@ message LevelupSummonInfo{
int32 group = 1;
int32 level = 2;
int32 exp = 3;
}
}
message FruitSlotBetInfo {
int32 slot = 1;
int32 bet_num = 2;
}
message FruitPlayerAwardInfo {
string name = 1;
int32 award_chip_num = 2;
int32 rank = 3;
}