Contract con_survival
Creator | 4e681a0fc3ffa26d0649a3a1fce0cf4d171b8159e7e8aceb73e5d5baee9c61b4 |
Creation Hash | 2e1ebf8fa4c671564953f4ab0d777f352ccec7f4700026e1a9f31acff7d9f2c2 |
Created On | 1269 days ago - 11/3/2020, 3:39:12 PM UTC+0 |
Contract Code
1
import currency
2
__game = Hash(default_value=0, contract='con_survival', name='game')
3
__operator = Variable(contract='con_survival', name='operator')
4
random.seed()
5
6
7
def ____(vk: str):
8
__operator.set(vk)
9
__game['boss_enabled'] = False
10
__game['amount_boss'] = 1500
11
__game['character_number'] = 4
12
__game['last_redeem'] = now
13
__game['play_cost'] = 20
14
__game['redeem_time'] = 1
15
__game['fail_attack'] = 5
16
__game['chance_instakill'] = 3
17
__game['chance_life'] = 18
18
__game['max_life_bar'] = 10
19
__game['amount_steal_tau'] = decimal('0.20')
20
__game['items_life'] = [20, 35, 90]
21
__game['charge_life'] = [1, 2, 5]
22
__game['items_weapon'] = [40, 90, 120]
23
__game['stat_weapon'] = [2, 5, 8]
24
__game['items_shield'] = [100]
25
__game['stat_shield'] = [1]
26
__game['items_skill'] = [40, 90, 120]
27
__game['stat_skill'] = [2, 5, 8]
28
__game['items_times'] = 5
29
30
31
@__export('con_survival')
32
def attack_survivor():
33
caller = ctx.caller
34
play_cost = __game['play_cost']
35
assert currency.balance_of(caller
36
) >= play_cost, 'Not enough Balance to play!'
37
currency.transfer_from(play_cost, __operator.get(), caller)
38
__game[caller, 'zombie'] += 1
39
GAMEID = __game['gameId']
40
SURVIVOR = __game[GAMEID, 'survivor']
41
__game[GAMEID, 'zombies_attack'] += 1
42
SHIELD_ITEM = __game[SURVIVOR, 'item_shield']
43
WEAPON_ITEM = __game[SURVIVOR, 'item_weapon']
44
SKILL_ZOMBIE = __game[caller, 'item_skill']
45
if SHIELD_ITEM is None:
46
SHIELD_ITEM = 0
47
if WEAPON_ITEM is None:
48
WEAPON_ITEM = 0
49
if SKILL_ZOMBIE is None:
50
SKILL_ZOMBIE = 0
51
__game[GAMEID, 'game_amount'] += 20
52
randomFirstAttack = random.randint(1, 100)
53
if __game[SURVIVOR, 'item_shield_times'] < 1:
54
SHIELD_ITEM = 0
55
else:
56
__game[SURVIVOR, 'item_shield_times'] -= 1
57
ATTACK_SHIELD = __shield()
58
if (now - __game[GAMEID, SURVIVOR, 'have_sherif_shield_time']
59
).minutes > 90:
60
ATTACK_SHIELD = False
61
__game[GAMEID, SURVIVOR, 'have_sherif_shield'] = 0
62
if randomFirstAttack <= __game['chance_instakill'] - SHIELD_ITEM:
63
if ATTACK_SHIELD is True:
64
__game[GAMEID, SURVIVOR, 'have_sherif_shield'] = 0
65
return __kill_zombie(caller)
66
else:
67
__game[GAMEID, SURVIVOR, 'have_sherif_shield'] = 0
68
return __kill_survivor(caller)
69
else:
70
randomSecondAttack = random.randint(1, 100)
71
if __game[caller, 'item_skill_times'] < 1:
72
SKILL_ZOMBIE = 0
73
else:
74
__game[caller, 'item_skill_times'] -= 1
75
if __game[SURVIVOR, 'item_weapon_times'] < 1:
76
WEAPON_ITEM = 0
77
else:
78
__game[SURVIVOR, 'item_weapon_times'] -= 1
79
if randomFirstAttack <= __game['chance_life'
80
] + SKILL_ZOMBIE - WEAPON_ITEM:
81
if __game[GAMEID, SURVIVOR, 'survivor_life'] < 1:
82
return __kill_survivor(caller)
83
else:
84
return __attack_zombie(caller)
85
else:
86
return __kill_zombie(caller)
87
88
89
@__export('con_survival')
90
def redeem():
91
caller = ctx.caller
92
GAMEID = __game['gameId']
93
SURVIVOR = __game[GAMEID, 'survivor']
94
assert (now - __game[GAMEID, 'last_redeem']
95
).minutes >= 60, 'Not Cant redeem'
96
if caller == SURVIVOR:
97
AMOUNT = 50 * (now - __game[GAMEID, 'last_redeem']).hours
98
if AMOUNT > 0:
99
if __game[GAMEID, 'game_amount'] < AMOUNT:
100
AMOUNT = __game[GAMEID, 'game_amount']
101
currency.transfer_from(int(AMOUNT), SURVIVOR, __operator.get())
102
__game[GAMEID, 'last_redeem'] = now
103
__game[GAMEID, 'game_amount'] -= AMOUNT
104
__game[GAMEID, 'game_survivor_gain'] += AMOUNT
105
__game[caller, 'tau_gain'] += AMOUNT
106
return {'gameId': GAMEID}
107
108
109
@__export('con_survival')
110
def change_value(variable: str, value: int):
111
__assert_owner()
112
__game[variable] = value
113
114
115
@__export('con_survival')
116
def change_value_array(variable: str, value: list):
117
__assert_owner()
118
__game[variable] = value
119
120
121
@__export('con_survival')
122
def start(account: str, amount: int):
123
__assert_owner()
124
__game['gameId'] = hashlib.sha3(str(now))
125
GAMEID = __game['gameId']
126
__game[GAMEID, 'survivor'] = account
127
__game[GAMEID, 'last_redeem'] = now
128
__game[GAMEID, 'game_amount'] = amount
129
__game[GAMEID, 'survivor_date'] = now
130
__game[account, 'survivor_time'] += 1
131
EXTRA_BAR = __life_bar(account)
132
__game[GAMEID, account, 'survivor_life'] = 5 + EXTRA_BAR
133
__game[account, 'item_shield'] = 0
134
__game[account, 'item_weapon'] = 0
135
__game['avatar'] += 1
136
__game[GAMEID, 'avatar'] += __game['avatar']
137
if __game['avatar'] > __game['character_number']:
138
__game['avatar'] = 1
139
__game[GAMEID, 'avatar'] = 1
140
__game[GAMEID, account, 'have_sherif_shield'] = 1
141
__game[GAMEID, account, 'have_sherif_shield_time'] = now
142
143
144
def __life_bar(account: str):
145
EXP = __game[account, 'zombies_kills']
146
EXP_LIFE = EXP / 50
147
EXP_LIFE = int(EXP_LIFE)
148
if EXP_LIFE > 5:
149
EXP_LIFE = 5
150
__game[account, 'life_extra_bar'] = EXP_LIFE
151
return EXP_LIFE
152
153
154
def __kill_zombie(account: str):
155
GAMEID = __game['gameId']
156
FAIL_AMOUNT = __game['fail_attack']
157
SURVIVOR = __game[GAMEID, 'survivor']
158
currency.transfer_from(FAIL_AMOUNT, SURVIVOR, __operator.get())
159
__game[SURVIVOR, 'zombies_kills'] += 1
160
__game[GAMEID, 'game_zombies_kills'] += 1
161
__game[SURVIVOR, 'tau_gain'] += FAIL_AMOUNT
162
__game[GAMEID, 'game_amount'] -= FAIL_AMOUNT
163
__game[GAMEID, 'game_survivor_gain'] += FAIL_AMOUNT
164
return {'survivor': SURVIVOR, 'status': 'fail_attack', 'amount': int(
165
FAIL_AMOUNT), 'gameId': GAMEID}
166
167
168
def __attack_zombie(account: str):
169
LAST_GAMEID = __game['gameId']
170
SURVIVOR = __game[LAST_GAMEID, 'survivor']
171
__game[LAST_GAMEID, SURVIVOR, 'survivor_life'] -= 1
172
STEAL_AMOUNT = 50 * (now - __game[LAST_GAMEID, 'last_redeem']
173
).hours * __game['amount_steal_tau']
174
if __game[LAST_GAMEID, 'game_amount'] <= STEAL_AMOUNT:
175
STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * __game[
176
'amount_steal_tau']
177
if STEAL_AMOUNT == 0:
178
STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * __game[
179
'amount_steal_tau']
180
__game[LAST_GAMEID, 'game_amount'] -= int(STEAL_AMOUNT)
181
if STEAL_AMOUNT > 0:
182
currency.transfer_from(int(STEAL_AMOUNT), account, __operator.get())
183
else:
184
STEAL_AMOUNT = 0
185
__game[LAST_GAMEID, 'game_zombies_gain'] += int(STEAL_AMOUNT)
186
__game[account, 'tau_zombie_gain'] += int(STEAL_AMOUNT)
187
return {'survivor': SURVIVOR, 'status': 'steal_life', 'amount': int(
188
STEAL_AMOUNT), 'gameId': LAST_GAMEID}
189
190
191
def __kill_survivor(account: str):
192
LAST_GAMEID = __game['gameId']
193
SURVIVOR = __game[LAST_GAMEID, 'survivor']
194
STEAL_AMOUNT = 50 * (now - __game[LAST_GAMEID, 'last_redeem']).hours
195
LAST_AMOUNT = __game[LAST_GAMEID, 'game_amount']
196
if LAST_AMOUNT <= STEAL_AMOUNT:
197
STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * decimal('0.50')
198
if STEAL_AMOUNT == 0:
199
STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * decimal('0.50')
200
__game['gameId'] = hashlib.sha3(str(now))
201
GAMEID = __game['gameId']
202
__game[GAMEID, 'survivor'] = account
203
__game[GAMEID, 'game_amount'] = int(LAST_AMOUNT - STEAL_AMOUNT)
204
__game[GAMEID, 'last_redeem'] = now
205
__game[account, 'survivor_time'] += 1
206
__game[GAMEID, 'survivor_date'] = now
207
__game[GAMEID, 'game_survivor_gain'] += STEAL_AMOUNT
208
__game[account, 'tau_gain'] += STEAL_AMOUNT
209
EXTRA_BAR = __life_bar(account)
210
__game[GAMEID, account, 'survivor_life'] = 5 + EXTRA_BAR
211
__game['avatar'] += 1
212
__game[GAMEID, 'avatar'] = __game['avatar']
213
if __game['avatar'] > __game['character_number']:
214
__game['avatar'] = 1
215
__game[GAMEID, 'avatar'] = 1
216
__game[GAMEID, account, 'have_sherif_shield'] = 1
217
__game[GAMEID, account, 'have_sherif_shield_time'] = now
218
__game[account, 'item_shield'] = 0
219
__game[account, 'item_weapon'] = 0
220
if STEAL_AMOUNT > 0:
221
currency.transfer_from(STEAL_AMOUNT, account, __operator.get())
222
return {'survivor': account, 'status': 'new_survivor', 'avatar': __game
223
['avatar'], 'amount': int(STEAL_AMOUNT), 'lastId': LAST_GAMEID,
224
'gameId': GAMEID}
225
226
227
def __shield():
228
GAMEID = __game['gameId']
229
SURVIVOR = __game[GAMEID, 'survivor']
230
HAVE_SHIELD = __game[GAMEID, SURVIVOR, 'have_sherif_shield']
231
if HAVE_SHIELD == 1:
232
randomShield = random.randint(1, 100)
233
if randomShield <= 80:
234
return True
235
else:
236
return False
237
238
239
@__export('con_survival')
240
def weapon(item: int):
241
caller = ctx.caller
242
LIST_ITEM = __game['items_weapon']
243
ITEM_STATS = __game['stat_weapon']
244
currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
245
__game[caller, 'item_weapon'] = ITEM_STATS[item]
246
__game[caller, 'item_weapon_times'] = __game['items_times']
247
248
249
@__export('con_survival')
250
def shield_buy(item: int):
251
caller = ctx.caller
252
LIST_ITEM = __game['items_shield']
253
ITEM_STATS = __game['stat_shield']
254
currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
255
__game[caller, 'item_shield'] = ITEM_STATS[item]
256
__game[caller, 'item_shield_times'] = 1
257
258
259
@__export('con_survival')
260
def skill(item: int):
261
caller = ctx.caller
262
LIST_ITEM = __game['items_skill']
263
ITEM_STATS = __game['stat_skill']
264
currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
265
__game[caller, 'item_skill'] = ITEM_STATS[item]
266
__game[caller, 'item_skill_times'] = __game['items_times']
267
268
269
@__export('con_survival')
270
def life(item: int):
271
caller = ctx.caller
272
GAMEID = __game['gameId']
273
LIST_ITEM = __game['items_life']
274
CHARGE_LIFE = __game['charge_life']
275
currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
276
if __game[GAMEID, caller, 'survivor_life'] > 5 + __game[caller,
277
'life_extra_bar']:
278
__game[GAMEID, caller, 'survivor_life'] = 5 + __game[caller,
279
'life_extra_bar']
280
else:
281
__game[GAMEID, caller, 'survivor_life'] += CHARGE_LIFE[item]
282
283
284
@__export('con_survival')
285
def attack_boss():
286
caller = ctx.caller
287
GAMEID = __game['gameId']
288
SURVIVOR = __game[GAMEID, 'survivor']
289
if caller == SURVIVOR:
290
if __game['boss_enabled'] is True:
291
randomBoss = random.randint(1, 4)
292
if randomBoss == 4:
293
__game[caller, 'boss_kill'] += 1
294
__game[GAMEID, 'game_survivor_gain'] += __game['amount_boss']
295
__game[caller, 'tau_gain'] += AMOUNT
296
currency.transfer_from(__game['amount_boss'], caller,
297
__operator.get())
298
return True
299
else:
300
return False
301
else:
302
return False
303
else:
304
return False
305
306
307
@__export('con_survival')
308
def set_nick_name(nickname: str):
309
caller = ctx.caller
310
assert len(nickname) <= 25, 'Nickname too long (25 chars max).'
311
assert len(nickname) > 0, 'Nickname too short.'
312
names_uid = hashlib.sha3(nickname.lower().replace(' ', ''))
313
assert not __game['nicknames', names_uid
314
], 'A form of this name already belongs to ' + balances['nicknames',
315
names_uid]
316
__game[caller, 'nickname'] = nickname
317
__game['nicknames', names_uid] = nickname
318
319
320
def __assert_owner():
321
assert ctx.caller == __operator.get(), 'Only operator can call!'
322
Byte Code
e30000000000000000000000000500000040000000736a010000640064016c005a00650164006402640364048d035a0265036402640564068d025a0465056a0683000100650764079c016408640984045a08650964028301640a640b840083015a0a650964028301640c640d840083015a0b6509640283016507650c640e9c02640f6410840483015a0d6509640283016507650e640e9c0264116412840483015a0f6509640283016507650c64139c0264146415840483015a10650764169c016417641884045a11650764169c016419641a84045a12650764169c01641b641c84045a13650764169c01641d641e84045a14641f642084005a15650964028301650c64219c0164226423840483015a16650964028301650c64219c0164246425840483015a17650964028301650c64219c0164266427840483015a18650964028301650c64219c0164286429840483015a19650964028301642a642b840083015a1a6509640283016507642c9c01642d642e840483015a1b642f643084005a1c640153002931e9000000004eda0c636f6e5f737572766976616cda0467616d652903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086f70657261746f722902720500000072060000002901da02766b63010000000000000001000000030000004300000073da00000074006a017c00830101006401740264023c006403740264043c006405740264063c007403740264073c006408740264093c00640a7402640b3c00640c7402640d3c00640e7402640f3c006410740264113c006412740264133c00740464148301740264153c006408641664176703740264183c00640a6419640c67037402641a3c00641b6417641c67037402641d3c006419640c641e67037402641f3c0064206701740264213c00640a6701740264223c00641b6417641c6703740264233c006419640c641e6703740264243c00640c740264253c006400530029264e46da0c626f73735f656e61626c656469dc050000da0b616d6f756e745f626f7373e904000000da106368617261637465725f6e756d626572da0b6c6173745f72656465656de914000000da09706c61795f636f7374e901000000da0b72656465656d5f74696d65e905000000da0b6661696c5f61747461636be903000000da106368616e63655f696e7374616b696c6ce912000000da0b6368616e63655f6c696665e90a000000da0c6d61785f6c6966655f6261727a04302e3230da10616d6f756e745f737465616c5f746175e923000000e95a000000da0a6974656d735f6c696665e902000000da0b6368617267655f6c696665e928000000e978000000da0c6974656d735f776561706f6ee908000000da0b737461745f776561706f6ee964000000da0c6974656d735f736869656c64da0b737461745f736869656c64da0b6974656d735f736b696c6cda0a737461745f736b696c6cda0b6974656d735f74696d65732905da0a5f5f6f70657261746f72da03736574da065f5f67616d65da036e6f77da07646563696d616c29017208000000a9007230000000da00da045f5f5f5f07000000732a00000000010a0108010801080108010801080108010801080108010c010e010e010e010e010a010a010e010e0172320000006300000000000000000a0000000500000043000000732c02000074006a017d007402640119007d0174036a047c0083017c016b057324740564028301820174036a067c0174076a0883007c008303010074027c0064036602050019006404370003003c007402640519007d0274027c026406660219007d0374027c0264076602050019006404370003003c0074027c036408660219007d0474027c036409660219007d0574027c00640a660219007d067c0464006b0872a2640b7d047c0564006b0872ae640b7d057c0664006b0872ba640b7d0674027c02640c660205001900640d370003003c0074096a0a6404640e83027d0774027c03640f6602190064046b0072f0640b7d046e1474027c03640f6602050019006404380003003c00740b83007d08740c74027c027c0364106603190018006a0d64116b049001723664127d08640b74027c027c03641366033c007c077402641419007c0418006b01900172807c0864156b0890017268640b74027c027c03641366033c00740e7c0083015300640b74027c027c03641366033c00740f7c00830153006ea874096a0a6404640e83027d0974027c0064166602190064046b00900172a4640b7d066e1474027c0064166602050019006404380003003c0074027c0364176602190064046b00900172d0640b7d056e1474027c0364176602050019006404380003003c007c077402641819007c0617007c0518006b019002722074027c027c0364196603190064046b0090027216740f7c008301530074107c00830153006e08740e7c008301530064005300291a4e720f0000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c617921da067a6f6d6269657210000000da0667616d654964da087375727669766f72da0e7a6f6d626965735f61747461636bda0b6974656d5f736869656c64da0b6974656d5f776561706f6eda0a6974656d5f736b696c6c7201000000da0b67616d655f616d6f756e74720e0000007225000000da116974656d5f736869656c645f74696d6573da17686176655f7368657269665f736869656c645f74696d65721c00000046da12686176655f7368657269665f736869656c64721500000054da106974656d5f736b696c6c5f74696d6573da116974656d5f776561706f6e5f74696d65737217000000da0d7375727669766f725f6c6966652911da03637478da0663616c6c6572722d000000da0863757272656e6379da0a62616c616e63655f6f66da0e417373657274696f6e4572726f72da0d7472616e736665725f66726f6d722b000000da03676574da0672616e646f6dda0772616e64696e74da085f5f736869656c64722e000000da076d696e75746573da0d5f5f6b696c6c5f7a6f6d626965da0f5f5f6b696c6c5f7375727669766f72da0f5f5f61747461636b5f7a6f6d626965290a7242000000720f000000da0647414d454944da085355525649564f52da0b534849454c445f4954454dda0b574541504f4e5f4954454dda0c534b494c4c5f5a4f4d424945da1172616e646f6d466972737441747461636bda0d41545441434b5f534849454c44da1272616e646f6d5365636f6e6441747461636b723000000072300000007231000000da0f61747461636b5f7375727669766f721f000000735e00000000020601080108010e011201140108010c0114010c010c010c0108010401080104010801040114010c0110010602140106011201080104010e0112010a010e0108020e010a020c0112010602140112010602140102011401140108020a02725700000063000000000000000004000000050000004300000073e400000074006a017d007402640119007d0174027c016402660219007d02740374027c0164036602190018006a0464046b05733874056405830182017c007c026b0272e06406740374027c0164036602190018006a0614007d037c0364076b0472e074027c016408660219007c036b00727a74027c016408660219007d0374076a0874097c0383017c02740a6a0b830083030100740374027c01640366023c0074027c0164086602050019007c03380003003c0074027c0164096602050019007c03370003003c0074027c00640a6602050019007c03370003003c0064017c016901530064005300290b4e72340000007235000000720d000000e93c0000007a0f4e6f742043616e742072656465656de9320000007201000000723a000000da1267616d655f7375727669766f725f6761696eda087461755f6761696e290c72410000007242000000722d000000722e000000724b0000007245000000da05686f75727372430000007246000000da03696e74722b000000724700000029047242000000724f0000007250000000da06414d4f554e54723000000072300000007231000000da0672656465656d5900000073200000000002060108010c0110010e0108011601080110010c0116010c01140114011401725f0000002902da087661726961626c65da0576616c756563020000000000000002000000030000004300000073120000007400830001007c0174017c003c006400530029014e2902da0e5f5f6173736572745f6f776e6572722d000000290272600000007261000000723000000072300000007231000000da0c6368616e67655f76616c75656d000000730400000000020601726300000063020000000000000002000000030000004300000073120000007400830001007c0174017c003c006400530029014e29027262000000722d000000290272600000007261000000723000000072300000007231000000da126368616e67655f76616c75655f61727261797300000073040000000002060172640000002902da076163636f756e74da06616d6f756e74630200000000000000040000000500000043000000730201000074008300010074016a027403740483018301740564013c007405640119007d027c0074057c02640266023c00740474057c02640366023c007c0174057c02640466023c00740474057c02640566023c0074057c0064066602050019006407370003003c0074067c0083017d0364087c03170074057c027c00640966033c00640a74057c00640b66023c00640a74057c00640c66023c007405640d050019006407370003003c0074057c02640d6602050019007405640d1900370003003c007405640d19007405640e19006b0472e264077405640d3c00640774057c02640d66023c00640774057c027c00640f66033c00740474057c027c00641066033c006400530029114e72340000007235000000720d000000723a000000da0d7375727669766f725f64617465da0d7375727669766f725f74696d65721000000072120000007240000000720100000072370000007238000000da06617661746172720c000000723d000000723c00000029077262000000da07686173686c6962da0473686133da03737472722e000000722d000000da0a5f5f6c6966655f626172290472650000007266000000724f000000da0945585452415f424152723000000072300000007231000000da05737461727479000000732600000000020601120108010c010c010c010c011401080112010c010c0110011801100108010c010e01726f00000029017265000000630100000000000000030000000400000043000000733800000074007c006401660219007d017c0164021b007d0274017c0283017d027c0264036b04722864037d027c0274007c00640466023c007c02530029054eda0d7a6f6d626965735f6b696c6c7372590000007212000000da0e6c6966655f65787472615f6261722902722d000000725d00000029037265000000da03455850da084558505f4c494645723000000072300000007231000000726d00000090000000730e00000000010c0108010801080104010c01726d00000063010000000000000004000000050000004300000073a40000007400640119007d017400640219007d0274007c016403660219007d0374016a027c027c0374036a0483008303010074007c0364046602050019006405370003003c0074007c0164066602050019006405370003003c0074007c0364076602050019007c02370003003c0074007c0164086602050019007c02380003003c0074007c0164096602050019007c02370003003c007c03640274057c0283017c01640a9c045300290b4e72340000007213000000723500000072700000007210000000da1267616d655f7a6f6d626965735f6b696c6c73725b000000723a000000725a00000029047235000000da06737461747573726600000072340000002906722d00000072430000007246000000722b0000007247000000725d00000029047265000000724f000000da0b4641494c5f414d4f554e547250000000723000000072300000007231000000724c0000009a00000073160000000001080108010c011201140114011401140114010601724c00000063010000000000000004000000050000004300000073060100007400640119007d0174007c016402660219007d0274007c017c0264036603050019006404380003003c006405740174007c0164066602190018006a02140074006407190014007d0374007c016408660219007c036b01726c74007c0164086602190074006407190014007d037c0364096b02728874007c0164086602190074006407190014007d0374007c01640866020500190074037c038301380003003c007c0364096b0472c074046a0574037c0383017c0074066a078300830301006e0464097d0374007c01640a66020500190074037c038301370003003c0074007c00640b66020500190074037c038301370003003c007c02640c74037c0383017c01640d9c045300290e4e72340000007235000000724000000072100000007259000000720d000000721a000000723a0000007201000000da1167616d655f7a6f6d626965735f6761696eda0f7461755f7a6f6d6269655f6761696eda0a737465616c5f6c696665290472350000007275000000726600000072340000002908722d000000722e000000725c000000725d00000072430000007246000000722b000000724700000029047265000000da0b4c4153545f47414d4549447250000000da0c535445414c5f414d4f554e54723000000072300000007231000000724e000000a80000007324000000000108010c0116021e0110010c01080108010c0108011801080118020401180118010601724e00000063010000000000000007000000070000004300000073c60100007400640119007d0174007c016402660219007d026403740174007c0164046602190018006a0214007d0374007c016405660219007d047c047c036b01725274007c0164056602190074036406830114007d037c0364076b02726e74007c0164056602190074036406830114007d0374046a057406740183018301740064013c007400640119007d057c0074007c05640266023c0074077c047c031800830174007c05640566023c00740174007c05640466023c0074007c0064086602050019006409370003003c00740174007c05640a66023c0074007c05640b6602050019007c03370003003c0074007c00640c6602050019007c03370003003c0074087c0083017d06640d7c06170074007c057c00640e66033c007400640f050019006409370003003c007400640f190074007c05640f66023c007400640f19007400641019006b049001725c64097400640f3c00640974007c05640f66023c00640974007c057c00641166033c00740174007c057c00641266033c00640774007c00641366023c00640774007c00641466023c007c0364076b04900172ac74096a0a7c037c00740b6a0c8300830301007c0064157400640f190074077c0383017c017c0564169c06530029174e723400000072350000007259000000720d000000723a0000007a04302e35307201000000726800000072100000007267000000725a000000725b000000721200000072400000007269000000720c000000723d000000723c00000072370000007238000000da0c6e65775f7375727669766f7229067235000000727500000072690000007266000000da066c61737449647234000000290d722d000000722e000000725c000000722f000000726a000000726b000000726c000000725d000000726d00000072430000007246000000722b000000724700000029077265000000727a0000007250000000727b000000da0b4c4153545f414d4f554e54724f000000726e000000723000000072300000007231000000724d000000bf0000007342000000000108010c0116010c010801140108011401120108010c0114010c0114010c01140114010801120110011001120108010c010e010e010c010c010a01120106010c01724d000000630000000000000000040000000400000043000000734c0000007400640119007d0074007c006402660219007d0174007c007c016403660319007d027c0264046b02724474016a026404640583027d037c0364066b017248640753006e04640853006400530029094e72340000007235000000723d00000072100000007225000000e95000000054462903722d000000724800000072490000002904724f0000007250000000da0b484156455f534849454c44da0c72616e646f6d536869656c64723000000072300000007231000000724a000000e30000007310000000000108010c010e0108010c0108010602724a0000002901da046974656d630100000000000000040000000400000043000000735000000074006a017d017402640119007d027402640219007d0374036a047c027c00190074056a0683007c01830301007c037c00190074027c01640366023c0074026404190074027c01640566023c006400530029064e722200000072240000007238000000722a000000723f000000290772410000007242000000722d00000072430000007246000000722b0000007247000000290472820000007242000000da094c4953545f4954454dda0a4954454d5f5354415453723000000072300000007231000000da06776561706f6eef000000730c0000000002060108010801160110017285000000630100000000000000040000000400000043000000734c00000074006a017d017402640119007d027402640219007d0374036a047c027c00190074056a0683007c01830301007c037c00190074027c01640366023c00640474027c01640566023c006400530029064e7226000000722700000072370000007210000000723b000000290772410000007242000000722d00000072430000007246000000722b000000724700000029047282000000724200000072830000007284000000723000000072300000007231000000da0a736869656c645f627579f9000000730c0000000002060108010801160110017286000000630100000000000000040000000400000043000000735000000074006a017d017402640119007d027402640219007d0374036a047c027c00190074056a0683007c01830301007c037c00190074027c01640366023c0074026404190074027c01640566023c006400530029064e722800000072290000007239000000722a000000723e000000290772410000007242000000722d00000072430000007246000000722b000000724700000029047282000000724200000072830000007284000000723000000072300000007231000000da05736b696c6c03010000730c0000000002060108010801160110017287000000630100000000000000050000000500000043000000738c00000074006a017d017402640119007d027402640219007d037402640319007d0474036a047c037c00190074056a0683007c018303010074027c027c01640466031900640574027c0164066602190017006b04726e640574027c01640666021900170074027c027c01640466033c006e1a74027c027c0164046603050019007c047c001900370003003c006400530029074e7234000000721d000000721f000000724000000072120000007271000000290772410000007242000000722d00000072430000007246000000722b0000007247000000290572820000007242000000724f0000007283000000da0b4348415247455f4c494645723000000072300000007231000000da046c6966650d010000731400000000020601080108010801160112010c0106011602728900000063000000000000000004000000050000004300000073b000000074006a017d007402640119007d0174027c016402660219007d027c007c026b0272a874026403190064046b0872a274036a046405640683027d037c0364066b02729c74027c0064076602050019006405370003003c0074027c016408660205001900740264091900370003003c0074027c00640a6602050019007405370003003c0074066a077402640919007c0074086a0983008303010064045300640b530071ac640b53006e04640b530064005300290c4e723400000072350000007209000000547210000000720b000000da09626f73735f6b696c6c725a000000720a000000725b00000046290a72410000007242000000722d00000072480000007249000000725e00000072430000007246000000722b000000724700000029047242000000724f0000007250000000da0a72616e646f6d426f7373723000000072300000007231000000da0b61747461636b5f626f73731c01000073200000000002060108010c0108010c010c0108011401180114010c010a01040206020602728c0000002901da086e69636b6e616d65630100000000000000030000000500000043000000738200000074006a017d0174027c00830164016b01731a740364028301820174027c00830164036b04732e740364048301820174046a057c006a0683006a0764056406830283017d02740864077c02660219000c00736674036408740964077c02660219001700830182017c0074087c01640966023c007c00740864077c0266023c0064005300290a4ee9190000007a214e69636b6e616d6520746f6f206c6f6e6720283235206368617273206d6178292e72010000007a134e69636b6e616d6520746f6f2073686f72742efa01207231000000da096e69636b6e616d65737a274120666f726d206f662074686973206e616d6520616c72656164792062656c6f6e677320746f20728d000000290a72410000007242000000da036c656e7245000000726a000000726b000000da056c6f776572da077265706c616365722d000000da0862616c616e6365732903728d0000007242000000da096e616d65735f756964723000000072300000007231000000da0d7365745f6e69636b5f6e616d6533010000731200000000020601140114011601100106010c010c017296000000630000000000000000000000000200000043000000731a00000074006a0174026a0383006b02731674046401830182016400530029024e7a174f6e6c79206f70657261746f722063616e2063616c6c21290572410000007242000000722b000000724700000072450000007230000000723000000072300000007231000000726200000040010000730200000000017262000000291d7243000000da0448617368722d000000da085661726961626c65722b0000007248000000da0473656564726c0000007232000000da085f5f6578706f72747257000000725f000000725d0000007263000000da046c6973747264000000726f000000726d000000724c000000724e000000724d000000724a0000007285000000728600000072870000007289000000728c000000729600000072620000007230000000723000000072300000007231000000da083c6d6f64756c653e01000000733a00000008010e010c0108030e18103a10140601120506011205060112160e0a0e0e0e170e24080c0601100906011009060110090601100e10170601100c