Contract con_yeti_contract_8


Contract Code


  
1 I = importlib
2
3 balances = Hash(default_value=0)
4 metadata = Hash()
5
6 W_CHIEF = "ec9decc889a17d4ea22afbd518f767a136f36301a0b1aa9a660f3f71d61f5b2b"
7 W_NIEL = "1910513066afbe592d6140c0055de3cb068fe7c17584a654a704ac7e60b2df04"
8 W_LP = "a690e68d8a049ea7c8ad4e16b166e321bd5ebc0dba4dc10d2ea01bf6eed84cca"
9 W_RAIN = "e8dc708028e049397b5baf9579924dde58ce5bebee5655da0b53066117572e73"
10 W_MARKETN = "3466e7576d1b70aef675ee4149b0d83cf21f69f4cfade801249d5afaad7c7ac9"
11 W_CHARITY = "4c66b7ba687222d44df2c3c989ae4cc50185abfcee8ea5356afcc5344c4a5f94"
12 W_BUYBACK = "b22e0df3949428211989867c4e4febd851af3c1c044a8d892e8a07b7034e94dc"
13 w_DEV = "42a13c664781a24ab4aca978abb685d9c07ef9ae64a2af865a043e3186a66907"
14
15
16 @construct
17 def init():
18 # Token info
19 balances[W_CHIEF] = 105_000_000_000
20 balances[W_NIEL] = 4_000_000_000
21 balances[w_DEV] = 1_000_000_000
22 metadata["token_name"] = "YETI_8"
23 metadata["token_symbol"] = "$YETI"
24 metadata["owners"] = [W_CHIEF, W_NIEL, w_DEV]
25 # Swap info
26 metadata["swap_token"] = "con_marmite100_contract_1"
27 metadata["swap_end"] = now + datetime.timedelta(
28 days=180
29 ) # HOW MANY DAYS TO AGREE ON? 6 MONTHS?
30 metadata["swap_rate"] = decimal("1")
31 # Wallets
32 metadata["rewards_contract"] = "con_distr_rewards_yeti_6"
33 metadata["LP_wallet"] = W_LP
34 metadata["rain_wallet"] = W_RAIN
35 metadata["marketing_wallet"] = W_MARKETN
36 metadata["charity_wallet"] = W_CHARITY
37 metadata["buyback_wallet"] = W_BUYBACK
38 metadata["burn_wallet"] = "yeti_burn_wallet"
39
40 metadata["blacklisted_wallets"] = [
41 "1b6a98bc717d568379218ca87b2b8f67b561ee1e50049da1af8f104270816a6b",
42 W_CHIEF,
43 W_LP,
44 W_RAIN,
45 W_MARKETN,
46 W_CHARITY,
47 W_BUYBACK,
48 ]
49
50 # Rates
51 metadata["buy_tax"] = decimal("0.09") # 9%
52 metadata["sell_tax"] = decimal("0.09") # 9%
53 metadata["distr_rates"] = {
54 "marketing%": decimal("0"),
55 "LP%": decimal("0.222"),
56 "rewards%": decimal("0.667"),
57 "rain%": decimal("0.111"),
58 "charity%": decimal("0"),
59 "buyback%": decimal("0"),
60 "burn%": decimal("0")
61 }
62 # DEX
63 metadata["dex"] = ["con_rocketswap_official_v1_1"]
64 # Reward token
65 metadata["reward_token"] = "currency"
66
67 metadata["bridge"] = ["con_lamden_link_bsc_v1", "con_lamden_link_weth_v1"]
68
69 metadata["transfer_contract"] = "con_yeti_transfer_4"
70 metadata["transfer_from_contract"] = "con_yeti_transfer_from_1_3"
71 metadata["sell_function"] = "sell"
72 metadata["buy_function"] = "buy"
73
74
75 # governance
76
77
78 @export
79 def change_metadata(key: str, value: Any):
80 assert_owner()
81 owners = metadata["owners"]
82 caller = ctx.caller
83
84 if key == "distr_rates":
85 validate_distr_rates(value=value)
86
87 metadata[caller, key] = {"v": value, "time": now}
88 agreed = False
89 for owner in owners:
90 if metadata[owner, key] is None:
91 # Without this initial value, we cannot later compare the proposed value "v"
92 metadata[owner, key] = {"v": "", "time": ""}
93
94 # Ensure caller's proposed value is not compared to itself
95 if owner != caller and metadata[owner, key]["v"] == metadata[caller, key]["v"]:
96 metadata[key] = value
97 agreed = True
98
99 if agreed:
100 for owner in owners:
101 # Prevent proposed value been used again by some owner in the future
102 metadata[caller, key] = str(now)
103 return f"{key} = {value}"
104
105 return agreed
106
107
108 @export
109 def mint(amount: float, to: str):
110 assert ctx.caller in metadata["bridge"], "Only bridge can mint!"
111 assert amount > 0, "Cannot mint negative balances!"
112 balances[to] += amount
113
114
115 @export
116 def transfer(amount: float, to: str):
117 assert amount > 0, "Cannot send negative balances!"
118
119 signer = ctx.signer
120 caller = ctx.caller
121 contract_name, contract_method = ctx.entry
122
123 assert balances[caller] >= amount, "Not enough YETI to send!"
124
125 if contract_name in metadata["dex"]:
126 tax_amount = amount * metadata["buy_tax"]
127
128 transfer = I.import_module(metadata["transfer_contract"])
129 amount_2 = transfer.transfer(ctx_signer=signer,contract=
130 contract_name, contract_method=contract_method,amount=amount,
131 owners=metadata["owners"], tax_amount=tax_amount)
132
133 balances[caller] -= amount
134 balances[to] += amount_2
135
136 if signer not in metadata["owners"
137 ] and contract_method == metadata["buy_function"]:
138 # Transfers to YETI fund wallets
139 balances[metadata["marketing_wallet"]
140 ] += tax_amount * metadata["distr_rates"]["marketing%"]
141 balances[metadata["LP_wallet"]] += tax_amount * metadata["distr_rates"]["LP%"]
142 balances[metadata["rewards_contract"]] += tax_amount * metadata["distr_rates"]["rewards%"]
143 balances[metadata["rain_wallet"]] += tax_amount * metadata["distr_rates"]["rain%"]
144 balances[metadata["charity_wallet"]] += tax_amount * metadata["distr_rates"]["charity%"]
145 balances[metadata["buyback_wallet"]] += tax_amount * metadata["distr_rates"]["buyback%"]
146 balances[metadata["burn_wallet"]] += tax_amount * metadata["distr_rates"]["burn%"]
147 else:
148 balances[caller] -= amount
149 balances[to] += amount
150
151
152 @export
153 def approve(amount: float, to: str):
154 assert amount > 0, "Cannot send negative balances!"
155
156 caller = ctx.caller
157 balances[caller, to] += amount
158 return balances[caller, to]
159
160
161 @export
162 def transfer_from(amount: float, to: str, main_account: str):
163 assert amount > 0, "Cannot send negative balances!"
164
165 caller = ctx.caller
166 contract_name, contract_method = ctx.entry
167
168 if contract_name in metadata["dex"]:
169 tax_amount = amount * metadata["sell_tax"]
170
171 transfer_from = I.import_module(metadata["transfer_from_contract"])
172 amount_2 = transfer_from.transfer_from(caller=caller,contract=
173 contract_name, contract_method=contract_method, amount=amount,
174 to=caller, main_account=main_account, tax_amount=tax_amount)
175
176 balances[main_account, caller] -= amount
177
178 balances[main_account] -= amount
179 balances[to] += amount_2
180
181 if contract_method == metadata["sell_function"]:
182 if amount == amount_2:
183 balances[main_account, caller] -= tax_amount
184 balances[main_account] -= tax_amount
185 # Transfers to YETI fund wallets
186 balances[metadata["marketing_wallet"]
187 ] += tax_amount * metadata["distr_rates"]["marketing%"]
188 balances[metadata["LP_wallet"]] += tax_amount * metadata["distr_rates"]["LP%"]
189 balances[metadata["rewards_contract"]] += tax_amount * metadata["distr_rates"]["rewards%"]
190 balances[metadata["rain_wallet"]] += tax_amount * metadata["distr_rates"]["rain%"]
191 balances[metadata["charity_wallet"]] += tax_amount * metadata["distr_rates"]["charity%"]
192 balances[metadata["buyback_wallet"]] += tax_amount * metadata["distr_rates"]["buyback%"]
193 balances[metadata["burn_wallet"]] += tax_amount * metadata["distr_rates"]["burn%"]
194 else:
195 assert balances[main_account, caller
196 ] >= amount, f"Not enough coins approved to send! You have {balances[main_account, caller]} and are trying to spend {amount}"
197 assert balances[main_account] >= amount, "Not enough coins to send!"
198
199 balances[main_account, caller] -= amount
200
201 balances[main_account] -= amount
202 balances[to] += amount
203
204
205 @export
206 def swap_token(amount: float):
207 caller = ctx.caller
208 assert amount > 0, "Cannot send negative balances!"
209 assert caller not in metadata["blacklisted_wallets"], "This wallet is blacklisted"
210 assert not caller.startswith("con_"), "Caller is a contract!"
211 assert balances[W_CHIEF
212 ] > amount, f"Token amount left is {balances[W_CHIEF]} and you are trying to swap for {amount}"
213 assert now < metadata["swap_end"], "Swap is over!"
214
215 contract = metadata["swap_token"]
216 swap_token = I.import_module(contract)
217
218 swap_token.transfer_from(amount=amount, to=metadata["burn_wallet"],
219 main_account=caller)
220 amount_of_yeti = amount * metadata["swap_rate"]
221 balances[caller] += amount_of_yeti
222 balances[W_CHIEF] -= amount_of_yeti
223
224
225 @export
226 def execute_proposal_after_a_month(key: str):
227 assert_owner()
228 caller = ctx.caller
229 assert metadata[caller, key], "Proposal does not exist!"
230 assert now > metadata[caller, key]["time"] + datetime.timedelta(weeks=4
231 ), "Proposal must be 1 month old!"
232 metadata[key] = metadata[caller, key]["v"]
233 return True
234
235
236 @export
237 def sell_yeti_for_rewards(cost_of_distr: float):
238 assert_owner()
239 rewards_contract = I.import_module(metadata["rewards_contract"])
240 rewards_contract.sell_yeti_for_rewards(cost_of_distr=cost_of_distr,
241 reward_token=metadata["reward_token"])
242
243
244 @export
245 def distribute_rewards(addresses: list, amounts: list):
246 assert_owner()
247 rewards_contract = I.import_module(metadata["rewards_contract"])
248 rewards_contract.distribute_rewards(reward_token=metadata[
249 "reward_token"], addresses=addresses, amounts=amounts)
250
251
252 def validate_distr_rates(value: Any):
253 r = {"marketing%", "LP%", "rewards%", "rain%", "charity%", "buyback%", "burn%"}
254 s , t = set(), 0
255 for rk in list(value.keys()):
256 s.add(rk)
257 assert s == r, "Key missing or mispelled!"
258 for k, v in value.items():
259 assert isinstance(v, decimal), "Value is not a ContractingDecimal!"
260 t += v
261 assert t == 1, "Ratios do not sum to 1!"
262
263 def assert_owner():
264 assert ctx.caller in metadata["owners"
265 ], "Only owner can call this method!"
266

Byte Code

e30000000000000000000000000500000040000000733401000065005a01650264006401640264038d035a0365026401640464058d025a0464065a0564075a0664085a0764095a08640a5a09640b5a0a640c5a0b640d5a0c640e640f84005a0d650e64018301650f651064109c0264116412840483015a11650e640183016512650f64139c0264146415840483015a13650e640183016512650f64139c0264166417840483015a14650e640183016512650f64139c0264186419840483015a15650e640183016512650f650f641a9c03641b641c840483015a16650e640183016512641d9c01641e641f840483015a17650e64018301650f64209c0164216422840483015a18650e64018301651264239c0164246425840483015a19650e64018301651a651a64269c0264276428840483015a1b651064299c01642a642b84045a1c642c642d84005a1d642e5300292fe900000000da13636f6e5f796574695f636f6e74726163745f38da0862616c616e6365732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086d65746164617461290272050000007206000000da4065633964656363383839613137643465613232616662643531386637363761313336663336333031613062316161396136363066336637316436316635623262da4031393130353133303636616662653539326436313430633030353564653363623036386665376331373538346136353461373034616337653630623264663034da4061363930653638643861303439656137633861643465313662313636653332316264356562633064626134646331306432656130316266366565643834636361da4065386463373038303238653034393339376235626166393537393932346464653538636535626562656535363535646130623533303636313137353732653733da4033343636653735373664316237306165663637356565343134396230643833636632316636396634636661646538303132343964356166616164376337616339da4034633636623762613638373232326434346466326333633938396165346363353031383561626663656538656135333536616663633533343463346135663934da4062323265306466333934393432383231313938393836376334653466656264383531616633633163303434613864383932653861303762373033346539346463da4034326131336336363437383161323461623461636139373861626236383564396330376566396165363461326166383635613034336533313836613636393037630000000000000000000000000800000043000000733a0100006401740074013c006402740074023c006403740074033c006404740464053c006406740464073c007401740274036703740464083c0064097404640a3c00740574066a07640b640c8d0117007404640d3c007408640e83017404640f3c006410740464113c007409740464123c00740a740464133c00740b740464143c00740c740464153c00740d740464163c006417740464183c00641974017409740a740b740c740d67077404641a3c007408641b83017404641c3c007408641b83017404641d3c007408641e83017408641f83017408642083017408642183017408641e83017408641e83017408641e830164229c07740464233c0064246701740464253c006426740464273c006428642967027404642a3c00642b7404642c3c00642d7404642e3c00642f740464303c006431740464323c006400530029334e6c03000000005af96461006c030000000028d65c03006900ca9a3bda06594554495f38da0a746f6b656e5f6e616d657a052459455449da0c746f6b656e5f73796d626f6cda066f776e657273da19636f6e5f6d61726d6974653130305f636f6e74726163745f31da0a737761705f746f6b656ee9b40000002901da0464617973da08737761705f656e64da0131da09737761705f72617465da18636f6e5f64697374725f726577617264735f796574695f36da10726577617264735f636f6e7472616374da094c505f77616c6c6574da0b7261696e5f77616c6c6574da106d61726b6574696e675f77616c6c6574da0e636861726974795f77616c6c6574da0e6275796261636b5f77616c6c6574da10796574695f6275726e5f77616c6c6574da0b6275726e5f77616c6c6574da4031623661393862633731376435363833373932313863613837623262386636376235363165653165353030343964613161663866313034323730383136613662da13626c61636b6c69737465645f77616c6c6574737a04302e3039da076275795f746178da0873656c6c5f746178da01307a05302e3232327a05302e3636377a05302e31313129077a0a6d61726b6574696e67257a034c50257a0872657761726473257a057261696e257a0863686172697479257a086275796261636b257a056275726e25da0b64697374725f7261746573da1c636f6e5f726f636b6574737761705f6f6666696369616c5f76315f31da03646578da0863757272656e6379da0c7265776172645f746f6b656eda16636f6e5f6c616d64656e5f6c696e6b5f6273635f7631da17636f6e5f6c616d64656e5f6c696e6b5f776574685f7631da06627269646765da13636f6e5f796574695f7472616e736665725f34da117472616e736665725f636f6e7472616374da1a636f6e5f796574695f7472616e736665725f66726f6d5f315f33da167472616e736665725f66726f6d5f636f6e7472616374da0473656c6cda0d73656c6c5f66756e6374696f6eda03627579da0c6275795f66756e6374696f6e290eda0a5f5f62616c616e636573da07575f4348494546da06575f4e49454cda05775f444556da0a5f5f6d65746164617461da036e6f77da086461746574696d65da0974696d6564656c7461da07646563696d616cda04575f4c50da06575f5241494eda09575f4d41524b45544eda09575f43484152495459da09575f4255594241434ba90072470000007247000000da00da045f5f5f5f0f000000733e0000000001080108010801080108010e01080114010c010801080108010801080108010802020114010c010c01080110010c0110010a0108010c0208010801080172490000002902da036b6579da0576616c756563020000000000000006000000050000004300000073d40000007400830001007401640119007d0274026a037d037c0064026b02722674047c0164038d0101007c01740564049c0274017c037c0066023c0064057d0478627c0244005d5a7d0574017c057c006602190064006b0872686406640664049c0274017c057c0066023c007c057c036b03724274017c057c00660219006407190074017c037c0066021900640719006b0272427c0174017c003c0064087d04714257007c0472d0781c7c0244005d147d0574067405830174017c037c0066023c0071aa57007c009b0064097c019b009d0353007c045300290a4e721300000072290000002901724b0000002902da0176da0474696d65467248000000724c000000547a03203d202907da0e5f5f6173736572745f6f776e6572723d000000da03637478da0663616c6c6572da165f5f76616c69646174655f64697374725f7261746573723e000000da037374722906724a000000724b00000072130000007250000000da06616772656564da056f776e6572724700000072470000007248000000da0f6368616e67655f6d65746164617461330000007326000000000206010801060108010a01120104010a0110011201180110010801080104010a0114010e0172550000002902da06616d6f756e74da02746f630200000000000000020000000400000043000000733a00000074006a017402640119006b06731674036402830182017c0064036b047326740364048301820174047c01050019007c00370003003c006400530029054e72300000007a154f6e6c79206272696467652063616e206d696e742172010000007a1e43616e6e6f74206d696e74206e656761746976652062616c616e636573212905724f0000007250000000723d000000da0e417373657274696f6e4572726f727239000000290272560000007257000000724700000072470000007248000000da046d696e744a0000007306000000000216011001725900000063020000000000000009000000080000004300000073bc0100007c0064016b047310740064028301820174016a027d0274016a037d0374016a045c027d047d0574057c0319007c006b05733a74006403830182017c047406640419006b06900172987c0074066405190014007d0674076a0874066406190083017d077c076a097c027c047c057c007406640719007c0664088d067d0874057c03050019007c00380003003c0074057c01050019007c08370003003c007c027406640719006b076fb27c057406640919006b02900172b874057406640a1900050019007c067406640b1900640c19001400370003003c0074057406640d1900050019007c067406640b1900640e19001400370003003c0074057406640f1900050019007c067406640b1900641019001400370003003c007405740664111900050019007c067406640b1900641219001400370003003c007405740664131900050019007c067406640b1900641419001400370003003c007405740664151900050019007c067406640b1900641619001400370003003c007405740664171900050019007c067406640b1900641819001400370003003c006e2074057c03050019007c00380003003c0074057c01050019007c00370003003c006400530029194e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e636573217a184e6f7420656e6f756768205945544920746f2073656e6421722b0000007226000000723200000072130000002906da0a6374785f7369676e65727205000000da0f636f6e74726163745f6d6574686f6472560000007213000000da0a7461785f616d6f756e747238000000721f00000072290000007a0a6d61726b6574696e6725721d0000007a034c5025721c0000007a087265776172647325721e0000007a057261696e2572200000007a08636861726974792572210000007a086275796261636b2572230000007a056275726e25290a7258000000724f000000da067369676e65727250000000da05656e7472797239000000723d000000da0149da0d696d706f72745f6d6f64756c65da087472616e73666572290972560000007257000000725d0000007250000000da0d636f6e74726163745f6e616d65725b000000725c0000007261000000da08616d6f756e745f32724700000072470000007248000000726100000051000000733e00000000021001060106010a0114010e010c010e01060106010e01100110010c010e010c011401100110010c011401100110010c0114010c011401100112021001726100000063020000000000000003000000040000004300000073360000007c0064016b047310740064028301820174016a027d0274037c027c016602050019007c00370003003c0074037c027c0166021900530029034e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e6365732129047258000000724f000000725000000072390000002903725600000072570000007250000000724700000072470000007248000000da07617070726f766575000000730800000000021001060114017264000000290372560000007257000000da0c6d61696e5f6163636f756e74630300000000000000090000000900000043000000732c0200007c0064016b047310740064028301820174016a027d0374016a035c027d047d057c047404640319006b06900172b07c0074046404190014007d0674056a0674046405190083017d077c076a077c037c047c057c007c037c027c0664068d077d0874087c027c036602050019007c00380003003c0074087c02050019007c00380003003c0074087c01050019007c08370003003c007c057404640719006b02900272287c007c086b0272ce74087c027c036602050019007c06380003003c0074087c02050019007c06380003003c007408740464081900050019007c06740464091900640a19001400370003003c0074087404640b1900050019007c06740464091900640c19001400370003003c0074087404640d1900050019007c06740464091900640e19001400370003003c0074087404640f1900050019007c06740464091900641019001400370003003c007408740464111900050019007c06740464091900641219001400370003003c007408740464131900050019007c06740464091900641419001400370003003c007408740464151900050019007c06740464091900641619001400370003003c006e7874087c027c03660219007c006b05900173de7400641774087c027c03660219009b0064187c009b009d048301820174087c0219007c006b05900173f4740064198301820174087c027c036602050019007c00380003003c0074087c02050019007c00380003003c0074087c01050019007c00370003003c0064005300291a4e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e63657321722b00000072270000007234000000290772500000007205000000725b000000725600000072570000007265000000725c0000007236000000721f00000072290000007a0a6d61726b6574696e6725721d0000007a034c5025721c0000007a087265776172647325721e0000007a057261696e2572200000007a08636861726974792572210000007a086275796261636b2572230000007a056275726e257a2c4e6f7420656e6f75676820636f696e7320617070726f76656420746f2073656e642120596f752068617665207a1920616e642061726520747279696e6720746f207370656e64207a194e6f7420656e6f75676820636f696e7320746f2073656e642129097258000000724f0000007250000000725e000000723d000000725f0000007260000000da0d7472616e736665725f66726f6d7239000000290972560000007257000000726500000072500000007262000000725b000000725c0000007266000000726300000072470000007247000000724800000072660000007d00000073480000000002100106010a010e010c010e01060106010c011401100110010e010801140110010c011401100110010c011401100110010c0114010c011401100112020a01240116011401100172660000002901725600000063010000000000000005000000050000004300000073cc00000074006a017d017c0064016b04731674026402830182017c017403640319006b07732a74026404830182017c016a04640583010c00733e74026406830182017405740619007c006b047362740264077405740619009b0064087c009b009d048301820174077403640919006b0073767402640a830182017403640b19007d0274086a097c0283017d037c036a0a7c007403640c19007c01640d8d0301007c007403640e190014007d0474057c01050019007c04370003003c0074057406050019007c04380003003c0064005300290f4e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e6365732172250000007a1a546869732077616c6c657420697320626c61636b6c6973746564da04636f6e5f7a1543616c6c6572206973206120636f6e7472616374217a15546f6b656e20616d6f756e74206c656674206973207a2020616e6420796f752061726520747279696e6720746f207377617020666f722072180000007a0d53776170206973206f76657221721500000072230000002903725600000072570000007265000000721a000000290b724f00000072500000007258000000723d000000da0a737461727473776974687239000000723a000000723e000000725f0000007260000000726600000029057256000000725000000072050000007215000000da0e616d6f756e745f6f665f796574697247000000724700000072480000007215000000a6000000731e0000000002060110010e010601140106011e01140108010a010c0108010c01100172150000002901724a000000630100000000000000020000000500000043000000736000000074008300010074016a027d0174037c017c006602190073207404640183018201740574037c017c00660219006402190074066a07640364048d0117006b047348740464058301820174037c017c00660219006406190074037c003c006407530029084e7a1850726f706f73616c20646f6573206e6f7420657869737421724d000000e9040000002901da057765656b737a1d50726f706f73616c206d7573742062652031206d6f6e7468206f6c6421724c000000542908724e000000724f0000007250000000723d0000007258000000723e000000723f00000072400000002902724a0000007250000000724700000072470000007248000000da1e657865637574655f70726f706f73616c5f61667465725f615f6d6f6e7468b9000000730e0000000002060106011401220106011401726c0000002901da0d636f73745f6f665f6469737472630100000000000000020000000400000043000000732a00000074008300010074016a0274036401190083017d017c016a047c0074036402190064038d0201006400530029044e721c000000722d0000002902726d000000722d0000002905724e000000725f0000007260000000723d000000da1573656c6c5f796574695f666f725f726577617264732902726d000000721c000000724700000072470000007248000000726e000000c40000007308000000000206010e010601726e0000002902da09616464726573736573da07616d6f756e7473630200000000000000030000000500000043000000732c00000074008300010074016a0274036401190083017d027c026a047403640219007c007c0164038d0301006400530029044e721c000000722d0000002903722d000000726f00000072700000002905724e000000725f0000007260000000723d000000da12646973747269627574655f726577617264732903726f0000007270000000721c0000007247000000724700000072480000007271000000cc0000007308000000000206010e01060172710000002901724b0000006301000000000000000700000007000000430000007392000000640164026403640464056406640768077d0174008300640802007d027d03781e74017c006a028300830144005d0e7d047c026a037c0483010100712c57007c027c016b02734e7404640983018201782e7c006a05830044005d225c027d057d0674067c067407830273727404640a830182017c037c0637007d03715857007c03640b6b02738e7404640c8301820164005300290d4e7a0a6d61726b6574696e67257a034c50257a0872657761726473257a057261696e257a0863686172697479257a086275796261636b257a056275726e2572010000007a194b6579206d697373696e67206f72206d697370656c6c6564217a2256616c7565206973206e6f74206120436f6e7472616374696e67446563696d616c21e9010000007a17526174696f7320646f206e6f742073756d20746f2031212908da03736574da046c697374da046b657973da036164647258000000da056974656d73da0a6973696e7374616e636572410000002907724b000000da0172da0173da0174da02726bda016b724c0000007247000000724700000072480000007251000000d4000000731400000000010c0106010c0112010e011001120112010c017251000000630000000000000000000000000300000043000000731a00000074006a017402640119006b06731674036402830182016400530029034e72130000007a204f6e6c79206f776e65722063616e2063616c6c2074686973206d6574686f64212904724f0000007250000000723d00000072580000007247000000724700000072470000007248000000724e000000e1000000730400000000011001724e0000004e291eda09696d706f72746c6962725f000000da04486173687239000000723d000000723a000000723b00000072420000007243000000724400000072450000007246000000723c0000007249000000da085f5f6578706f72747252000000da03416e797255000000da05666c6f617472590000007261000000726400000072660000007215000000726c000000726e000000727400000072710000007251000000724e0000007247000000724700000072470000007248000000da083c6d6f64756c653e0100000073400000000401060108010c010401040104010401040104010401040308240601121606011206060112230601120706011428060110120601100a06011007060112070e0d