Contract con_tg_game_1
Creator | ff61544ea94eaaeb5df08ed863c4a938e9129aba6ceee5f31b6681bdede11b89 |
Creation Hash | 01e0d376a85af556033cc2c65bb4d2ee1ae1b21c61a8d697472600d18b08fc10 |
Created On | 512 days ago - 12/8/2022, 1:31:22 PM UTC+0 |
Contract Code
1
# The game works as following (turn based):
2
# The player wants to move to the bottom to win
3
# The enemy tries to catch him before he reaches and wins
4
# Should return a good formated map for telegram message
5
6
7
import currency
8
rooms = Hash(default_value=False)
9
operator = Variable()
10
11
p = "Player"
12
c = "Collider"
13
e = "Enemy"
14
f = "Finish"
15
16
@construct
17
def seed():
18
operator.set("ff61544ea94eaaeb5df08ed863c4a938e9129aba6ceee5f31b6681bdede11b89")
19
20
@export
21
def change_op(op:str):
22
assert operator.get() == ctx.caller, "Only op can change it"
23
operator.set(op)
24
25
@export
26
def createGame(roomName: str, wager: float):
27
assert roomName != "", "The room name cannot be empty"
28
assert rooms[roomName] == False, "There is already a room with that name"
29
assert wager > 0, "Wager needs to be more than 0"
30
31
currency.transfer_from(amount=wager, to=ctx.this, main_account=ctx.caller)
32
33
34
rooms[roomName, "state"] = "waiting"
35
rooms[roomName, "winner"] = ""
36
rooms[roomName, "player"] = ctx.caller
37
rooms[roomName, "enemy"] = ""
38
rooms[roomName, "turn"] = "Enemy"
39
rooms[roomName, "p_position"] = 20
40
rooms[roomName, "e_position"] = 113
41
rooms[roomName, "map"] = [
42
c, c, c, c, c, c, c, c, c, c, c, c, c,
43
c, 0, 0, 0, 0, 0, p, 0, 0, 0, 0, 0, c,
44
c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c,
45
c, 0, 0, c, 0, 0, 0, 0, 0, c, 0, 0, c,
46
c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c,
47
c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c,
48
c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c,
49
c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c,
50
c, 0, 0, c, 0, 0, 0, 0, 0, c, 0, 0, c,
51
c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c,
52
c, 0, 0, 0, 0, 0, e, 0, 0, 0, 0, 0, c,
53
f, f, f, f, f, f, f, f, f, f, f, f, f
54
]
55
rooms[roomName, "pot"] = wager
56
57
printable_map = ""
58
i = 0
59
for tile in rooms[roomName, "map"]:
60
abbreviation = tile
61
if(tile == "Enemy"):
62
abbreviation = "E"
63
if(tile == "Collider"):
64
abbreviation = "C"
65
if(tile == "Player"):
66
abbreviation = "P"
67
if(tile == "Finish"):
68
abbreviation = "F"
69
if i % 13 == 0:
70
printable_map += '\n'
71
printable_map += str(f" {abbreviation}")
72
i+=1
73
return printable_map
74
75
@export
76
def joinGame(roomName:str):
77
assert rooms[roomName, "enemy"] == "", "Room is full"
78
assert rooms[roomName, "state"] == "waiting", "Room is full"
79
currency.transfer_from(amount=rooms[roomName, "pot"], to=ctx.this, main_account=ctx.caller)
80
rooms[roomName, "pot"] *= 2
81
rooms[roomName, "enemy"] == ctx.caller
82
rooms[roomName, "state"] = "playing"
83
printable_map = ""
84
i = 0
85
for tile in rooms[roomName, "map"]:
86
abbreviation = tile
87
if(tile == "Enemy"):
88
abbreviation = "E"
89
if(tile == "Collider"):
90
abbreviation = "C"
91
if(tile == "Player"):
92
abbreviation = "P"
93
if(tile == "Finish"):
94
abbreviation = "F"
95
if i % 13 == 0:
96
printable_map += '\n'
97
printable_map += str(f" {abbreviation}")
98
i+=1
99
return printable_map
100
101
@export
102
def move(roomName:str, direction:str):
103
assert rooms[roomName, "enemy"] == ctx.caller or rooms[roomName, "player"] == ctx.caller, "You are not a player in that room"
104
assert rooms[roomName, "winner"] == "", "This game ended already."
105
assert rooms[roomName, "state"] == "playing", "This game ended already."
106
107
room_map = rooms[roomName, "map"]
108
109
110
if rooms[roomName, "enemy"] == ctx.caller:
111
assert rooms[roomName, "turn"] == "Enemy", "Its not your turn"
112
if direction == "left":
113
assert room_map[rooms[roomName, "e_position"] - 1] != c, "You cannot move there"
114
assert room_map[rooms[roomName, "e_position"] - 1] != f, "You cannot move there"
115
if(room_map[rooms[roomName, "e_position"] - 1] == 0):
116
room_map[rooms[roomName, "e_position"]] = 0
117
room_map[rooms[roomName, "e_position"] - 1] = e
118
rooms[roomName, "e_position"] -= 1
119
if(room_map[rooms[roomName, "e_position"] - 1] == p):
120
room_map[rooms[roomName, "e_position"]] = 0
121
room_map[rooms[roomName, "e_position"] - 1] = e
122
rooms[roomName, "e_position"] -= 1
123
rooms[roomName, "state"] = "ended"
124
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
125
if direction == "right":
126
assert room_map[rooms[roomName, "e_position"] + 1] != c, "You cannot move there"
127
assert room_map[rooms[roomName, "e_position"] + 1] != f, "You cannot move there"
128
if(room_map[rooms[roomName, "e_position"] + 1] == 0):
129
room_map[rooms[roomName, "e_position"]] = 0
130
room_map[rooms[roomName, "e_position"] + 1] = e
131
rooms[roomName, "e_position"] += 1
132
if(room_map[rooms[roomName, "e_position"] + 1] == p):
133
room_map[rooms[roomName, "e_position"]] = 0
134
room_map[rooms[roomName, "e_position"] + 1] = e
135
rooms[roomName, "e_position"] += 1
136
rooms[roomName, "state"] = "ended"
137
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
138
if direction == "down":
139
assert rooms[roomName, "e_position"] + 13 <= 155, "You cannot move there"
140
assert room_map[rooms[roomName, "e_position"] + 13] != c, "You cannot move there"
141
assert room_map[rooms[roomName, "e_position"] + 13] != f, "You cannot move there"
142
if(room_map[rooms[roomName, "e_position"] + 13] == 0):
143
room_map[rooms[roomName, "e_position"]] = 0
144
room_map[rooms[roomName, "e_position"] + 13] = e
145
rooms[roomName, "e_position"] += 13
146
if(room_map[rooms[roomName, "e_position"] + 13] == p):
147
room_map[rooms[roomName, "e_position"]] = 0
148
room_map[rooms[roomName, "e_position"] + 13] = e
149
rooms[roomName, "e_position"] += 13
150
rooms[roomName, "state"] = "ended"
151
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
152
if direction == "up":
153
assert rooms[roomName, "e_position"] - 13 >= 0, "You cannot move there"
154
assert room_map[rooms[roomName, "e_position"] - 13] != c, "You cannot move there"
155
assert room_map[rooms[roomName, "e_position"] - 13] != f, "You cannot move there"
156
if(room_map[rooms[roomName, "e_position"] - 13] == 0):
157
room_map[rooms[roomName, "e_position"]] = 0
158
room_map[rooms[roomName, "e_position"] - 13] = e
159
rooms[roomName, "e_position"] -= 13
160
if(room_map[rooms[roomName, "e_position"] - 13] == p):
161
room_map[rooms[roomName, "e_position"]] = 0
162
room_map[rooms[roomName, "e_position"] - 13] = e
163
rooms[roomName, "e_position"] -= 13
164
rooms[roomName, "state"] = "ended"
165
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
166
rooms[roomName, "turn"] = "Player"
167
168
if rooms[roomName, "player"] == ctx.caller:
169
assert rooms[roomName, "turn"] == "Player", "Its not your turn"
170
if direction == "left":
171
assert room_map[rooms[roomName, "p_position"] - 1] != c, "You cannot move there"
172
if(room_map[rooms[roomName, "p_position"] - 1] == 0):
173
room_map[rooms[roomName, "p_position"]] = 0
174
room_map[rooms[roomName, "p_position"] - 1] = e
175
rooms[roomName, "p_position"] -= 1
176
if(room_map[rooms[roomName, "p_position"] - 1] == p):
177
room_map[rooms[roomName, "p_position"]] = 0
178
room_map[rooms[roomName, "p_position"] - 1] = e
179
rooms[roomName, "p_position"] -= 1
180
rooms[roomName, "state"] = "ended"
181
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
182
if(room_map[rooms[roomName, "p_position"] - 1] == f):
183
room_map[rooms[roomName, "p_position"]] = 0
184
room_map[rooms[roomName, "p_position"] - 1] = e
185
rooms[roomName, "p_position"] -= 1
186
rooms[roomName, "state"] = "ended"
187
rooms[roomName, "winner"] = rooms[roomName, "player"]
188
if direction == "right":
189
assert room_map[rooms[roomName, "p_position"] + 1] != c, "You cannot move there"
190
if(room_map[rooms[roomName, "p_position"] + 1] == 0):
191
room_map[rooms[roomName, "p_position"]] = 0
192
room_map[rooms[roomName, "p_position"] + 1] = e
193
rooms[roomName, "p_position"] += 1
194
if(room_map[rooms[roomName, "p_position"] + 1] == p):
195
room_map[rooms[roomName, "p_position"]] = 0
196
room_map[rooms[roomName, "p_position"] + 1] = e
197
rooms[roomName, "p_position"] += 1
198
rooms[roomName, "state"] = "ended"
199
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
200
if(room_map[rooms[roomName, "p_position"] + 1] == f):
201
room_map[rooms[roomName, "p_position"]] = 0
202
room_map[rooms[roomName, "p_position"] + 1] = e
203
rooms[roomName, "p_position"] += 1
204
rooms[roomName, "state"] = "ended"
205
rooms[roomName, "winner"] = rooms[roomName, "player"]
206
207
if direction == "down":
208
assert rooms[roomName, "p_position"] + 13 <= 155, "You cannot move there"
209
assert room_map[rooms[roomName, "p_position"] + 13] != c, "You cannot move there"
210
if(room_map[rooms[roomName, "p_position"] + 13] == 0):
211
room_map[rooms[roomName, "p_position"]] = 0
212
room_map[rooms[roomName, "p_position"] + 13] = e
213
rooms[roomName, "p_position"] += 13
214
if(room_map[rooms[roomName, "p_position"] + 13] == p):
215
room_map[rooms[roomName, "p_position"]] = 0
216
room_map[rooms[roomName, "p_position"] + 13] = e
217
rooms[roomName, "p_position"] += 13
218
rooms[roomName, "state"] = "ended"
219
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
220
if(room_map[rooms[roomName, "p_position"] + 13] == f):
221
room_map[rooms[roomName, "p_position"]] = 0
222
room_map[rooms[roomName, "p_position"] + 13] = e
223
rooms[roomName, "p_position"] += 13
224
rooms[roomName, "state"] = "ended"
225
rooms[roomName, "winner"] = rooms[roomName, "player"]
226
if direction == "up":
227
assert rooms[roomName, "p_position"] - 13 >= 0, "You cannot move there"
228
assert room_map[rooms[roomName, "p_position"] - 13] != c, "You cannot move there"
229
if(room_map[rooms[roomName, "p_position"] - 13] == 0):
230
room_map[rooms[roomName, "p_position"]] = 0
231
room_map[rooms[roomName, "p_position"] - 13] = e
232
rooms[roomName, "p_position"] -= 13
233
if(room_map[rooms[roomName, "p_position"] - 13] == p):
234
room_map[rooms[roomName, "p_position"]] = 0
235
room_map[rooms[roomName, "p_position"] - 13] = e
236
rooms[roomName, "p_position"] -= 13
237
rooms[roomName, "state"] = "ended"
238
rooms[roomName, "winner"] = rooms[roomName, "enemy"]
239
if(room_map[rooms[roomName, "p_position"] - 13] == f):
240
room_map[rooms[roomName, "p_position"]] = 0
241
room_map[rooms[roomName, "p_position"] - 13] = e
242
rooms[roomName, "p_position"] -= 13
243
rooms[roomName, "state"] = "ended"
244
rooms[roomName, "winner"] = rooms[roomName, "player"]
245
rooms[roomName, "turn"] = "Enemy"
246
247
rooms[roomName, "map"] = room_map
248
if rooms[roomName, "state"] == "playing":
249
printable_map = ""
250
i = 0
251
for tile in room_map:
252
abbreviation = tile
253
if(tile == "Enemy"):
254
abbreviation = "E"
255
if(tile == "Collider"):
256
abbreviation = "C"
257
if(tile == "Player"):
258
abbreviation = "P"
259
if(tile == "Finish"):
260
abbreviation = "F"
261
if i % 13 == 0:
262
printable_map += '\n'
263
printable_map += str(f" {abbreviation}")
264
i+=1
265
return printable_map
266
267
if rooms[roomName, "state"] == "ended":
268
currency_to_transfer_to_winner = rooms[roomName, "pot"] / 100 * 98
269
currency_to_transfer_to_op = rooms[roomName, "pot"] - currency_to_transfer_to_winner
270
currency.transfer(amount=currency_to_transfer_to_winner, to=rooms[roomName, "winner"])
271
currency.transfer(amount=currency_to_transfer_to_op, to=operator.get())
272
return f"The winner is {rooms[roomName, 'winner']}"
Byte Code
e30000000000000000000000000500000040000000739a000000640064016c005a00650164026403640464058d035a0265036403640664078d025a0464085a0564095a06640a5a07640b5a08640c640d84005a09650a64038301650b640e9c01640f6410840483015a0c650a64038301650b650d64119c0264126413840483015a0e650a64038301650b64149c0164156416840483015a0f650a64038301650b650b64179c0264186419840483015a1064015300291ae9000000004e46da0d636f6e5f74675f67616d655f31da05726f6f6d732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086f70657261746f72290272050000007206000000da06506c61796572da08436f6c6c69646572da05456e656d79da0646696e697368630000000000000000000000000200000043000000730e00000074006a016401830101006400530029024eda40666636313534346561393465616165623564663038656438363363346139333865393132396162613663656565356633316236363831626465646531316238392902da0a5f5f6f70657261746f72da03736574a900720f000000720f000000da00da045f5f5f5f0a00000073040000000001040172110000002901da026f70630100000000000000010000000200000043000000732400000074006a01830074026a036b027316740464018301820174006a057c00830101006400530029024e7a154f6e6c79206f702063616e206368616e67652069742906720d000000da03676574da03637478da0663616c6c6572da0e417373657274696f6e4572726f72720e00000029017212000000720f000000720f0000007210000000da096368616e67655f6f700f00000073040000000002160172170000002902da08726f6f6d4e616d65da057761676572630200000000000000060000009c00000043000000737e0200007c0064016b037310740064028301820174017c00190064036b02732474006404830182017c0164056b047334740064068301820174026a037c0174046a0574046a0664078d030100640874017c00640966023c00640174017c00640a66023c0074046a0674017c00640b66023c00640174017c00640c66023c00640d74017c00640e66023c00640f74017c00641066023c00641174017c00641266023c0074077407740774077407740774077407740774077407740774077407640564056405640564057408640564056405640564057407740764056405640564056405640564056405640564056405740774076405640574076405640564056405640574076405640574077407640564056405640564056405640564056405640564057407740764056405640564056405640564056405640564056405740774076405640564056405640564056405640564056405640574077407640564056405640564056405640564056405640564057407740764056405740764056405640564056405740764056405740774076405640564056405640564056405640564056405640574077407640564056405640564057409640564056405640564057407740a740a740a740a740a740a740a740a740a740a740a740a740a679c74017c00641366023c007c0174017c00641466023c0064017d0264057d03788274017c0064136602190044005d727d047c047d057c04640d6b029002721a64157d057c0464166b029002722864177d057c0464186b029002723664197d057c04641a6b0290027244641b7d057c03641c160064056b029002725a7c02641d37007d027c02740b641e7c059b009d02830137007d027c03641f37007d039002710457007c02530029204e72100000007a1d54686520726f6f6d206e616d652063616e6e6f7420626520656d707479467a26546865726520697320616c7265616479206120726f6f6d20776974682074686174206e616d6572010000007a1d5761676572206e6565647320746f206265206d6f7265207468616e20302903da06616d6f756e74da02746fda0c6d61696e5f6163636f756e74da0777616974696e67da057374617465da0677696e6e6572da06706c61796572da05656e656d79720a000000da047475726ee914000000da0a705f706f736974696f6ee971000000da0a655f706f736974696f6eda036d6170da03706f74da01457209000000da01437208000000da0150720b000000da0146e90d000000da010afa0120e901000000290c7216000000da075f5f726f6f6d73da0863757272656e6379da0d7472616e736665725f66726f6d7214000000da04746869737215000000da0163da0170da0165da0166da03737472290672180000007219000000da0d7072696e7461626c655f6d6170da0169da0474696c65da0c616262726576696174696f6e720f000000720f0000007210000000da0a63726561746547616d6515000000734a000000000210011401100114010c010c010e010c010c010c010c011e012e012e012e012e012e012e0112010c0104010401120104010a0104010a0104010a0104010a0104010e01080112010e01723e00000029017218000000630100000000000000050000000500000043000000730201000074007c0064016602190064026b027318740164038301820174007c0064046602190064056b027330740164038301820174026a0374007c0064066602190074046a0574046a0664078d03010074007c0064066602050019006408390003003c0074007c0064016602190074046a066b020100640974007c00640466023c0064027d01640a7d02787674007c00640b6602190044005d667d037c037d047c03640c6b0272a8640d7d047c03640e6b0272b4640f7d047c0364106b0272c064117d047c0364126b0272cc64137d047c0264141600640a6b0272e07c01641537007d017c01740764167c049b009d02830137007d017c02641737007d02719457007c01530029184e722100000072100000007a0c526f6f6d2069732066756c6c721e000000721d00000072280000002903721a000000721b000000721c000000e902000000da07706c6179696e6772010000007227000000720a00000072290000007209000000722a0000007208000000722b000000720b000000722c000000722d000000722e000000722f000000723000000029087231000000721600000072320000007233000000721400000072340000007215000000723900000029057218000000723a000000723b000000723c000000723d000000720f000000720f0000007210000000da086a6f696e47616d653e000000733000000000021801180112010a01140112010c010401040112010401080104010801040108010401080104010c01080112010c01724100000029027218000000da09646972656374696f6e63020000000000000009000000050000004300000073380c000074007c0064016602190074016a026b02732c74007c0064026602190074016a026b02732c740364038301820174007c0064046602190064056b027344740364068301820174007c0064076602190064086b02735c740364068301820174007c006409660219007d0274007c0064016602190074016a026b029005722074007c00640a66021900640b6b0273947403640c830182017c01640d6b02900172a27c0274007c00640e66021900640f1800190074046b0373be74036410830182017c0274007c00640e66021900640f1800190074056b0373de74036410830182017c0274007c00640e66021900640f1800190064116b029001723064117c0274007c00640e660219003c0074067c0274007c00640e66021900640f18003c0074007c00640e660205001900640f380003003c007c0274007c00640e66021900640f1800190074076b02900172a264117c0274007c00640e660219003c0074067c0274007c00640e66021900640f18003c0074007c00640e660205001900640f380003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c007c0164136b02900272b47c0274007c00640e66021900640f1700190074046b03900173ce74036410830182017c0274007c00640e66021900640f1700190074056b03900173f074036410830182017c0274007c00640e66021900640f1700190064116b029002724264117c0274007c00640e660219003c0074067c0274007c00640e66021900640f17003c0074007c00640e660205001900640f370003003c007c0274007c00640e66021900640f1700190074076b02900272b464117c0274007c00640e660219003c0074067c0274007c00640e66021900640f17003c0074007c00640e660205001900640f370003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c007c0164146b02900372e474007c00640e660219006415170064166b01900273dc74036410830182017c0274007c00640e6602190064151700190074046b03900273fe74036410830182017c0274007c00640e6602190064151700190074056b039003732074036410830182017c0274007c00640e6602190064151700190064116b029003727264117c0274007c00640e660219003c0074067c0274007c00640e66021900641517003c0074007c00640e6602050019006415370003003c007c0274007c00640e6602190064151700190074076b02900372e464117c0274007c00640e660219003c0074067c0274007c00640e66021900641517003c0074007c00640e6602050019006415370003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c007c0164176b029005721474007c00640e660219006415180064116b059004730c74036410830182017c0274007c00640e6602190064151800190074046b039004732e74036410830182017c0274007c00640e6602190064151800190074056b039004735074036410830182017c0274007c00640e6602190064151800190064116b02900472a264117c0274007c00640e660219003c0074067c0274007c00640e66021900641518003c0074007c00640e6602050019006415380003003c007c0274007c00640e6602190064151800190074076b029005721464117c0274007c00640e660219003c0074067c0274007c00640e66021900641518003c0074007c00640e6602050019006415380003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c00641874007c00640a66023c0074007c0064026602190074016a026b02900b721e74007c00640a6602190064186b029005734e7403640c830182017c01640d6b02900672b07c0274007c00641966021900640f1800190074046b039005737a74036410830182017c0274007c00641966021900640f1800190064116b02900572cc64117c0274007c006419660219003c0074067c0274007c00641966021900640f18003c0074007c006419660205001900640f380003003c007c0274007c00641966021900640f1800190074076b029006723e64117c0274007c006419660219003c0074067c0274007c00641966021900640f18003c0074007c006419660205001900640f380003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c007c0274007c00641966021900640f1800190074056b02900672b064117c0274007c006419660219003c0074067c0274007c00641966021900640f18003c0074007c006419660205001900640f380003003c00641274007c00640766023c0074007c0064026602190074007c00640466023c007c0164136b02900872127c0274007c00641966021900640f1700190074046b03900673dc74036410830182017c0274007c00641966021900640f1700190064116b029007722e64117c0274007c006419660219003c0074067c0274007c00641966021900640f17003c0074007c006419660205001900640f370003003c007c0274007c00641966021900640f1700190074076b02900772a064117c0274007c006419660219003c0074067c0274007c00641966021900640f17003c0074007c006419660205001900640f370003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c007c0274007c00641966021900640f1700190074056b029008721264117c0274007c006419660219003c0074067c0274007c00641966021900640f17003c0074007c006419660205001900640f370003003c00641274007c00640766023c0074007c0064026602190074007c00640466023c007c0164146b029009729274007c006419660219006415170064166b019008733a74036410830182017c0274007c0064196602190064151700190074046b039008735c74036410830182017c0274007c0064196602190064151700190064116b02900872ae64117c0274007c006419660219003c0074067c0274007c00641966021900641517003c0074007c0064196602050019006415370003003c007c0274007c0064196602190064151700190074076b029009722064117c0274007c006419660219003c0074067c0274007c00641966021900641517003c0074007c0064196602050019006415370003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c007c0274007c0064196602190064151700190074056b029009729264117c0274007c006419660219003c0074067c0274007c00641966021900641517003c0074007c0064196602050019006415370003003c00641274007c00640766023c0074007c0064026602190074007c00640466023c007c0164176b02900b721274007c006419660219006415180064116b05900973ba74036410830182017c0274007c0064196602190064151800190074046b03900973dc74036410830182017c0274007c0064196602190064151800190064116b02900a722e64117c0274007c006419660219003c0074067c0274007c00641966021900641518003c0074007c0064196602050019006415380003003c007c0274007c0064196602190064151800190074076b02900a72a064117c0274007c006419660219003c0074067c0274007c00641966021900641518003c0074007c0064196602050019006415380003003c00641274007c00640766023c0074007c0064016602190074007c00640466023c007c0274007c0064196602190064151800190074056b02900b721264117c0274007c006419660219003c0074067c0274007c00641966021900641518003c0074007c0064196602050019006415380003003c00641274007c00640766023c0074007c0064026602190074007c00640466023c00640b74007c00640a66023c007c0274007c00640966023c0074007c0064076602190064086b02900b72c464057d0364117d04787a7c0244005d727d057c057d067c05640b6b02900b7260641a7d067c05641b6b02900b726e641c7d067c0564186b02900b727c641d7d067c05641e6b02900b728a641f7d067c046415160064116b02900b72a07c03642037007d037c03740864217c069b009d02830137007d037c04640f37007d04900b714a57007c03530074007c0064076602190064126b02900c723474007c0064226602190064231b00642414007d0774007c006422660219007c0718007d0874096a0a7c0774007c0064046602190064258d02010074096a0a7c08740b6a0c830064258d020100642674007c006404660219009b009d0253006400530029274e722100000072200000007a21596f7520617265206e6f74206120706c6179657220696e207468617420726f6f6d721f00000072100000007a18546869732067616d6520656e64656420616c72656164792e721e000000724000000072270000007222000000720a0000007a11497473206e6f7420796f7572207475726eda046c656674722600000072300000007a15596f752063616e6e6f74206d6f76652074686572657201000000da05656e646564da057269676874da04646f776e722d000000e99b000000da0275707208000000722400000072290000007209000000722a000000722b000000720b000000722c000000722e000000722f0000007228000000e964000000e9620000002902721a000000721b0000007a0e5468652077696e6e657220697320290d7231000000721400000072150000007216000000723500000072380000007237000000723600000072390000007232000000da087472616e73666572720d0000007213000000290972180000007242000000da08726f6f6d5f6d6170723a000000723b000000723c000000723d000000da1e63757272656e63795f746f5f7472616e736665725f746f5f77696e6e6572da1a63757272656e63795f746f5f7472616e736665725f746f5f6f70720f000000720f0000007210000000da046d6f76655a000000736c010000000216011601180118010c01140118010a0112010e0112010e011a011001140114011a011001140114010c0114010a0112011001120110011a011001140114011a011001140114010c0114010a010a01140112011001120110011a011001140114011a011001140114010c0114010a010a01140112011001120110011a011001140114011a011001140114010c0114010c0114011a010a01120110011a011001140114011a011001140114010c0114011a011001140114010c0114010a01120110011a011001140114011a011001140114010c0114011a011001140114010c0114010a010a011401120110011a011001140114011a011001140114010c0114011a011001140114010c0114010a010a011401120110011a011001140114011a011001140114010c0114011a011001140114010c0114010c010c011201040104010a0104010a0104010a0104010a0104010a0104010e01080112010e010401120114010a01060108010e011202724f00000029117232000000da04486173687231000000da085661726961626c65720d00000072360000007235000000723700000072380000007211000000da085f5f6578706f727472390000007217000000da05666c6f6174723e0000007241000000724f000000720f000000720f000000720f0000007210000000da083c6d6f64756c653e01000000731e00000008010e010c010401040104010403080506011005060112280601101b0601