Software /
code /
verse
Comparison
buildscripts/squish @ 472:864c9dc27c60
buildscripts: Update included squish (now supports Lua 5.2)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 17 Mar 2023 11:07:02 +0000 |
parent | 428:bde804b01f28 |
comparison
equal
deleted
inserted
replaced
471:788d4d91ef6b | 472:864c9dc27c60 |
---|---|
1 #!/usr/bin/env lua | 1 #!/usr/bin/lua5.2 |
2 package.preload['optlex']=(function(...) | 2 package.preload['optlex']=(function(...) |
3 local _ENV=_ENV; | |
4 local function e(t,...) | |
5 local e=package.loaded[t]or _ENV[t]or{_NAME=t}; | |
6 package.loaded[t]=e; | |
7 for t=1,select("#",...)do | |
8 (select(t,...))(e); | |
9 end | |
10 _ENV=e; | |
11 _M=e; | |
12 return e; | |
13 end | |
3 local s=_G | 14 local s=_G |
4 local u=require"string" | 15 local u=require"string" |
5 module"optlex" | |
6 local i=u.match | 16 local i=u.match |
7 local e=u.sub | 17 local e=u.sub |
8 local r=u.find | 18 local r=u.find |
9 local d=u.rep | 19 local l=u.rep |
10 local c | 20 local c |
11 error=s.error | 21 error=s.error |
12 warn={} | 22 warn={} |
13 local n,o,l | 23 local n,o,d |
14 local p={ | 24 local q={ |
15 TK_KEYWORD=true, | 25 TK_KEYWORD=true, |
16 TK_NAME=true, | 26 TK_NAME=true, |
17 TK_NUMBER=true, | 27 TK_NUMBER=true, |
18 TK_STRING=true, | 28 TK_STRING=true, |
19 TK_LSTRING=true, | 29 TK_LSTRING=true, |
20 TK_OP=true, | 30 TK_OP=true, |
21 TK_EOS=true, | 31 TK_EOS=true, |
22 } | 32 } |
23 local y={ | 33 local b={ |
24 TK_COMMENT=true, | 34 TK_COMMENT=true, |
25 TK_LCOMMENT=true, | 35 TK_LCOMMENT=true, |
26 TK_EOL=true, | 36 TK_EOL=true, |
27 TK_SPACE=true, | 37 TK_SPACE=true, |
28 } | 38 } |
29 local h | 39 local h |
30 local function w(e) | 40 local function k(e) |
31 local t=n[e-1] | 41 local t=n[e-1] |
32 if e<=1 or t=="TK_EOL"then | 42 if e<=1 or t=="TK_EOL"then |
33 return true | 43 return true |
34 elseif t==""then | 44 elseif t==""then |
35 return w(e-1) | 45 return k(e-1) |
36 end | 46 end |
37 return false | 47 return false |
38 end | 48 end |
39 local function g(e) | 49 local function g(e) |
40 local t=n[e+1] | 50 local t=n[e+1] |
43 elseif t==""then | 53 elseif t==""then |
44 return g(e+1) | 54 return g(e+1) |
45 end | 55 end |
46 return false | 56 return false |
47 end | 57 end |
48 local function _(a) | 58 local function E(a) |
49 local t=#i(a,"^%-%-%[=*%[") | 59 local t=#i(a,"^%-%-%[=*%[") |
50 local a=e(a,t+1,-(t-1)) | 60 local a=e(a,t+1,-(t-1)) |
51 local e,t=1,0 | 61 local e,t=1,0 |
52 while true do | 62 while true do |
53 local o,n,i,a=r(a,"([\r\n])([\r\n]?)",e) | 63 local a,n,i,o=r(a,"([\r\n])([\r\n]?)",e) |
54 if not o then break end | 64 if not a then break end |
55 e=o+1 | 65 e=a+1 |
56 t=t+1 | 66 t=t+1 |
57 if#a>0 and i~=a then | 67 if#o>0 and i~=o then |
58 e=e+1 | 68 e=e+1 |
59 end | 69 end |
60 end | 70 end |
61 return t | 71 return t |
62 end | 72 end |
88 return"" | 98 return"" |
89 else | 99 else |
90 return" " | 100 return" " |
91 end | 101 end |
92 end | 102 end |
93 local function b() | 103 local function j() |
94 local s,i,a={},{},{} | 104 local a,s,i={},{},{} |
95 local e=1 | 105 local e=1 |
96 for t=1,#n do | 106 for t=1,#n do |
97 local n=n[t] | 107 local n=n[t] |
98 if n~=""then | 108 if n~=""then |
99 s[e],i[e],a[e]=n,o[t],l[t] | 109 a[e],s[e],i[e]=n,o[t],d[t] |
100 e=e+1 | 110 e=e+1 |
101 end | 111 end |
102 end | 112 end |
103 n,o,l=s,i,a | 113 n,o,d=a,s,i |
104 end | 114 end |
105 local function A(r) | 115 local function x(r) |
106 local t=o[r] | 116 local t=o[r] |
107 local t=t | 117 local t=t |
108 local n | 118 local n |
109 if i(t,"^0[xX]")then | 119 if i(t,"^0[xX]")then |
110 local e=s.tostring(s.tonumber(t)) | 120 local e=s.tostring(s.tonumber(t)) |
140 if a+0>0 then | 150 if a+0>0 then |
141 n=a.."."..t | 151 n=a.."."..t |
142 else | 152 else |
143 n="."..t | 153 n="."..t |
144 local a=#i(t,"^0*") | 154 local a=#i(t,"^0*") |
145 local a=#t-a | 155 local o=#t-a |
146 local o=s.tostring(#t) | 156 local a=s.tostring(#t) |
147 if a+2+#o<1+#t then | 157 if o+2+#a<1+#t then |
148 n=e(t,-a).."e-"..o | 158 n=e(t,-o).."e-"..a |
149 end | 159 end |
150 end | 160 end |
151 end | 161 end |
152 else | 162 else |
153 local t,a=i(t,"^([^eE]+)[eE]([%+%-]?%d+)$") | 163 local t,a=i(t,"^([^eE]+)[eE]([%+%-]?%d+)$") |
169 end | 179 end |
170 local i=s.tostring(a) | 180 local i=s.tostring(a) |
171 if a==0 then | 181 if a==0 then |
172 n=t | 182 n=t |
173 elseif a>0 and(a<=1+#i)then | 183 elseif a>0 and(a<=1+#i)then |
174 n=t..d("0",a) | 184 n=t..l("0",a) |
175 elseif a<0 and(a>=-#t)then | 185 elseif a<0 and(a>=-#t)then |
176 o=#t+a | 186 o=#t+a |
177 n=e(t,1,o).."."..e(t,o+1) | 187 n=e(t,1,o).."."..e(t,o+1) |
178 elseif a<0 and(#i>=-a-#t)then | 188 elseif a<0 and(#i>=-a-#t)then |
179 o=-a-#t | 189 o=-a-#t |
180 n="."..d("0",o)..t | 190 n="."..l("0",o)..t |
181 else | 191 else |
182 n=t.."e"..a | 192 n=t.."e"..a |
183 end | 193 end |
184 end | 194 end |
185 end | 195 end |
186 if n and n~=o[r]then | 196 if n and n~=o[r]then |
187 if h then | 197 if h then |
188 c("<number> (line "..l[r]..") "..o[r].." -> "..n) | 198 c("<number> (line "..d[r]..") "..o[r].." -> "..n) |
189 h=h+1 | 199 h=h+1 |
190 end | 200 end |
191 o[r]=n | 201 o[r]=n |
192 end | 202 end |
193 end | 203 end |
194 local function O(m) | 204 local function z(m) |
195 local t=o[m] | 205 local t=o[m] |
196 local s=e(t,1,1) | 206 local n=e(t,1,1) |
197 local f=(s=="'")and'"'or"'" | 207 local f=(n=="'")and'"'or"'" |
198 local t=e(t,2,-2) | 208 local t=e(t,2,-2) |
199 local a=1 | 209 local a=1 |
200 local d,n=0,0 | 210 local l,s=0,0 |
201 while a<=#t do | 211 while a<=#t do |
202 local c=e(t,a,a) | 212 local c=e(t,a,a) |
203 if c=="\\"then | 213 if c=="\\"then |
204 local o=a+1 | 214 local o=a+1 |
205 local l=e(t,o,o) | 215 local d=e(t,o,o) |
206 local h=r("abfnrtv\\\n\r\"\'0123456789",l,1,true) | 216 local h=r("abfnrtv\\\n\r\"\'0123456789",d,1,true) |
207 if not h then | 217 if not h then |
208 t=e(t,1,a-1)..e(t,o) | 218 t=e(t,1,a-1)..e(t,o) |
209 a=a+1 | 219 a=a+1 |
210 elseif h<=8 then | 220 elseif h<=8 then |
211 a=a+2 | 221 a=a+2 |
216 elseif h==10 then | 226 elseif h==10 then |
217 t=e(t,1,a).."\n"..e(t,o+1) | 227 t=e(t,1,a).."\n"..e(t,o+1) |
218 end | 228 end |
219 a=a+2 | 229 a=a+2 |
220 elseif h<=12 then | 230 elseif h<=12 then |
221 if l==s then | 231 if d==n then |
222 d=d+1 | 232 l=l+1 |
223 a=a+2 | 233 a=a+2 |
224 else | 234 else |
225 n=n+1 | 235 s=s+1 |
226 t=e(t,1,a-1)..e(t,o) | 236 t=e(t,1,a-1)..e(t,o) |
227 a=a+1 | 237 a=a+1 |
228 end | 238 end |
229 else | 239 else |
230 local i=i(t,"^(%d%d?%d?)",o) | 240 local i=i(t,"^(%d%d?%d?)",o) |
231 o=a+1+#i | 241 o=a+1+#i |
232 local l=i+0 | 242 local d=i+0 |
233 local h=u.char(l) | 243 local h=u.char(d) |
234 local r=r("\a\b\f\n\r\t\v",h,1,true) | 244 local r=r("\a\b\f\n\r\t\v",h,1,true) |
235 if r then | 245 if r then |
236 i="\\"..e("abfnrtv",r,r) | 246 i="\\"..e("abfnrtv",r,r) |
237 elseif l<32 then | 247 elseif d<32 then |
238 i="\\"..l | 248 i="\\"..d |
239 elseif h==s then | 249 elseif h==n then |
240 i="\\"..h | 250 i="\\"..h |
241 d=d+1 | 251 l=l+1 |
242 elseif h=="\\"then | 252 elseif h=="\\"then |
243 i="\\\\" | 253 i="\\\\" |
244 else | 254 else |
245 i=h | 255 i=h |
246 if h==f then | 256 if h==f then |
247 n=n+1 | 257 s=s+1 |
248 end | 258 end |
249 end | 259 end |
250 t=e(t,1,a-1)..i..e(t,o) | 260 t=e(t,1,a-1)..i..e(t,o) |
251 a=a+#i | 261 a=a+#i |
252 end | 262 end |
253 else | 263 else |
254 a=a+1 | 264 a=a+1 |
255 if c==f then | 265 if c==f then |
256 n=n+1 | 266 s=s+1 |
257 end | 267 end |
258 end | 268 end |
259 end | 269 end |
260 if d>n then | 270 if l>s then |
261 a=1 | 271 a=1 |
262 while a<=#t do | 272 while a<=#t do |
263 local o,n,i=r(t,"([\'\"])",a) | 273 local o,s,i=r(t,"([\'\"])",a) |
264 if not o then break end | 274 if not o then break end |
265 if i==s then | 275 if i==n then |
266 t=e(t,1,o-2)..e(t,o) | 276 t=e(t,1,o-2)..e(t,o) |
267 a=o | 277 a=o |
268 else | 278 else |
269 t=e(t,1,o-1).."\\"..e(t,o) | 279 t=e(t,1,o-1).."\\"..e(t,o) |
270 a=o+2 | 280 a=o+2 |
271 end | 281 end |
272 end | 282 end |
273 s=f | 283 n=f |
274 end | 284 end |
275 t=s..t..s | 285 t=n..t..n |
276 if t~=o[m]then | 286 if t~=o[m]then |
277 if h then | 287 if h then |
278 c("<string> (line "..l[m]..") "..o[m].." -> "..t) | 288 c("<string> (line "..d[m]..") "..o[m].." -> "..t) |
279 h=h+1 | 289 h=h+1 |
280 end | 290 end |
281 o[m]=t | 291 o[m]=t |
282 end | 292 end |
283 end | 293 end |
284 local function I(u) | 294 local function _(u) |
285 local t=o[u] | 295 local t=o[u] |
286 local s=i(t,"^%[=*%[") | 296 local h=i(t,"^%[=*%[") |
287 local a=#s | 297 local a=#h |
288 local c=e(t,-a,-1) | 298 local c=e(t,-a,-1) |
289 local h=e(t,a+1,-(a+1)) | 299 local s=e(t,a+1,-(a+1)) |
290 local n="" | 300 local n="" |
291 local t=1 | 301 local t=1 |
292 while true do | 302 while true do |
293 local a,o,r,s=r(h,"([\r\n])([\r\n]?)",t) | 303 local a,o,r,h=r(s,"([\r\n])([\r\n]?)",t) |
294 local o | 304 local o |
295 if not a then | 305 if not a then |
296 o=e(h,t) | 306 o=e(s,t) |
297 elseif a>=t then | 307 elseif a>=t then |
298 o=e(h,t,a-1) | 308 o=e(s,t,a-1) |
299 end | 309 end |
300 if o~=""then | 310 if o~=""then |
301 if i(o,"%s+$")then | 311 if i(o,"%s+$")then |
302 warn.lstring="trailing whitespace in long string near line "..l[u] | 312 warn.lstring="trailing whitespace in long string near line "..d[u] |
303 end | 313 end |
304 n=n..o | 314 n=n..o |
305 end | 315 end |
306 if not a then | 316 if not a then |
307 break | 317 break |
308 end | 318 end |
309 t=a+1 | 319 t=a+1 |
310 if a then | 320 if a then |
311 if#s>0 and r~=s then | 321 if#h>0 and r~=h then |
312 t=t+1 | 322 t=t+1 |
313 end | 323 end |
314 if not(t==1 and t==a)then | 324 if not(t==1 and t==a)then |
315 n=n.."\n" | 325 n=n.."\n" |
316 end | 326 end |
317 end | 327 end |
318 end | 328 end |
319 if a>=3 then | 329 if a>=3 then |
320 local e,t=a-1 | 330 local e,t=a-1 |
321 while e>=2 do | 331 while e>=2 do |
322 local a="%]"..d("=",e-2).."%]" | 332 local a="%]"..l("=",e-2).."%]" |
323 if not i(n,a)then t=e end | 333 if not i(n,a)then t=e end |
324 e=e-1 | 334 e=e-1 |
325 end | 335 end |
326 if t then | 336 if t then |
327 a=d("=",t-2) | 337 a=l("=",t-2) |
328 s,c="["..a.."[","]"..a.."]" | 338 h,c="["..a.."[","]"..a.."]" |
329 end | 339 end |
330 end | 340 end |
331 o[u]=s..n..c | 341 o[u]=h..n..c |
332 end | 342 end |
333 local function j(l) | 343 local function w(u) |
334 local a=o[l] | 344 local a=o[u] |
335 local h=i(a,"^%-%-%[=*%[") | 345 local h=i(a,"^%-%-%[=*%[") |
336 local t=#h | 346 local t=#h |
337 local u=e(a,-t,-1) | 347 local d=e(a,-t,-1) |
338 local s=e(a,t+1,-(t-1)) | 348 local s=e(a,t+1,-(t-1)) |
339 local n="" | 349 local n="" |
340 local a=1 | 350 local a=1 |
341 while true do | 351 while true do |
342 local o,t,r,h=r(s,"([\r\n])([\r\n]?)",a) | 352 local o,t,r,h=r(s,"([\r\n])([\r\n]?)",a) |
364 end | 374 end |
365 t=t-2 | 375 t=t-2 |
366 if t>=3 then | 376 if t>=3 then |
367 local e,a=t-1 | 377 local e,a=t-1 |
368 while e>=2 do | 378 while e>=2 do |
369 local t="%]"..d("=",e-2).."%]" | 379 local t="%]"..l("=",e-2).."%]" |
370 if not i(n,t)then a=e end | 380 if not i(n,t)then a=e end |
371 e=e-1 | 381 e=e-1 |
372 end | 382 end |
373 if a then | 383 if a then |
374 t=d("=",a-2) | 384 t=l("=",a-2) |
375 h,u="--["..t.."[","]"..t.."]" | 385 h,d="--["..t.."[","]"..t.."]" |
376 end | 386 end |
377 end | 387 end |
378 o[l]=h..n..u | 388 o[u]=h..n..d |
379 end | 389 end |
380 local function q(n) | 390 local function p(a) |
381 local t=o[n] | 391 local t=o[a] |
382 local a=i(t,"%s*$") | 392 local i=i(t,"%s*$") |
383 if#a>0 then | 393 if#i>0 then |
384 t=e(t,1,-(a+1)) | 394 t=e(t,1,-(i+1)) |
385 end | 395 end |
386 o[n]=t | 396 o[a]=t |
387 end | 397 end |
388 local function x(o,a) | 398 local function A(o,a) |
389 if not o then return false end | 399 if not o then return false end |
390 local t=i(a,"^%-%-%[=*%[") | 400 local t=i(a,"^%-%-%[=*%[") |
391 local t=#t | 401 local t=#t |
392 local i=e(a,-t,-1) | 402 local i=e(a,-t,-1) |
393 local e=e(a,t+1,-(t-1)) | 403 local e=e(a,t+1,-(t-1)) |
394 if r(e,o,1,true)then | 404 if r(e,o,1,true)then |
395 return true | 405 return true |
396 end | 406 end |
397 end | 407 end |
398 function optimize(t,a,i,r) | 408 function optimize(t,i,r,a) |
399 local f=t["opt-comments"] | 409 local m=t["opt-comments"] |
400 local u=t["opt-whitespace"] | 410 local u=t["opt-whitespace"] |
401 local m=t["opt-emptylines"] | 411 local f=t["opt-emptylines"] |
402 local k=t["opt-eols"] | 412 local y=t["opt-eols"] |
403 local E=t["opt-strings"] | 413 local I=t["opt-strings"] |
404 local T=t["opt-numbers"] | 414 local T=t["opt-numbers"] |
405 local z=t.KEEP | 415 local O=t.KEEP |
406 h=t.DETAILS and 0 | 416 h=t.DETAILS and 0 |
407 c=c or s.print | 417 c=c or s.print |
408 if k then | 418 if y then |
419 m=true | |
420 u=true | |
409 f=true | 421 f=true |
410 u=true | 422 end |
411 m=true | 423 n,o,d |
412 end | 424 =i,r,a |
413 n,o,l | |
414 =a,i,r | |
415 local t=1 | 425 local t=1 |
416 local a,r | 426 local a,r |
417 local s | 427 local s |
418 local function i(a,i,e) | 428 local function i(i,a,e) |
419 e=e or t | 429 e=e or t |
420 n[e]=a or"" | 430 n[e]=i or"" |
421 o[e]=i or"" | 431 o[e]=a or"" |
422 end | 432 end |
423 while true do | 433 while true do |
424 a,r=n[t],o[t] | 434 a,r=n[t],o[t] |
425 local h=w(t) | 435 local h=k(t) |
426 if h then s=nil end | 436 if h then s=nil end |
427 if a=="TK_EOS"then | 437 if a=="TK_EOS"then |
428 break | 438 break |
429 elseif a=="TK_KEYWORD"or | 439 elseif a=="TK_KEYWORD"or |
430 a=="TK_NAME"or | 440 a=="TK_NAME"or |
431 a=="TK_OP"then | 441 a=="TK_OP"then |
432 s=t | 442 s=t |
433 elseif a=="TK_NUMBER"then | 443 elseif a=="TK_NUMBER"then |
434 if T then | 444 if T then |
435 A(t) | 445 x(t) |
436 end | 446 end |
437 s=t | 447 s=t |
438 elseif a=="TK_STRING"or | 448 elseif a=="TK_STRING"or |
439 a=="TK_LSTRING"then | 449 a=="TK_LSTRING"then |
440 if E then | 450 if I then |
441 if a=="TK_STRING"then | 451 if a=="TK_STRING"then |
442 O(t) | 452 z(t) |
443 else | 453 else |
444 I(t) | 454 _(t) |
445 end | 455 end |
446 end | 456 end |
447 s=t | 457 s=t |
448 elseif a=="TK_COMMENT"then | 458 elseif a=="TK_COMMENT"then |
449 if f then | 459 if m then |
450 if t==1 and e(r,1,1)=="#"then | 460 if t==1 and e(r,1,1)=="#"then |
451 q(t) | 461 p(t) |
452 else | 462 else |
453 i() | 463 i() |
454 end | 464 end |
455 elseif u then | 465 elseif u then |
456 q(t) | 466 p(t) |
457 end | 467 end |
458 elseif a=="TK_LCOMMENT"then | 468 elseif a=="TK_LCOMMENT"then |
459 if x(z,r)then | 469 if A(O,r)then |
460 if u then | 470 if u then |
461 j(t) | 471 w(t) |
462 end | 472 end |
463 s=t | 473 s=t |
464 elseif f then | 474 elseif m then |
465 local e=_(r) | 475 local e=E(r) |
466 if y[n[t+1]]then | 476 if b[n[t+1]]then |
467 i() | 477 i() |
468 a="" | 478 a="" |
469 else | 479 else |
470 i("TK_SPACE"," ") | 480 i("TK_SPACE"," ") |
471 end | 481 end |
472 if not m and e>0 then | 482 if not f and e>0 then |
473 i("TK_EOL",d("\n",e)) | 483 i("TK_EOL",l("\n",e)) |
474 end | 484 end |
475 if u and a~=""then | 485 if u and a~=""then |
476 t=t-1 | 486 t=t-1 |
477 end | 487 end |
478 else | 488 else |
479 if u then | 489 if u then |
480 j(t) | 490 w(t) |
481 end | 491 end |
482 s=t | 492 s=t |
483 end | 493 end |
484 elseif a=="TK_EOL"then | 494 elseif a=="TK_EOL"then |
485 if h and m then | 495 if h and f then |
486 i() | 496 i() |
487 elseif r=="\r\n"or r=="\n\r"then | 497 elseif r=="\r\n"or r=="\n\r"then |
488 i("TK_EOL","\n") | 498 i("TK_EOL","\n") |
489 end | 499 end |
490 elseif a=="TK_SPACE"then | 500 elseif a=="TK_SPACE"then |
495 local a=n[s] | 505 local a=n[s] |
496 if a=="TK_LCOMMENT"then | 506 if a=="TK_LCOMMENT"then |
497 i() | 507 i() |
498 else | 508 else |
499 local e=n[t+1] | 509 local e=n[t+1] |
500 if y[e]then | 510 if b[e]then |
501 if(e=="TK_COMMENT"or e=="TK_LCOMMENT")and | 511 if(e=="TK_COMMENT"or e=="TK_LCOMMENT")and |
502 a=="TK_OP"and o[s]=="-"then | 512 a=="TK_OP"and o[s]=="-"then |
503 else | 513 else |
504 i() | 514 i() |
505 end | 515 end |
517 else | 527 else |
518 error("unidentified token encountered") | 528 error("unidentified token encountered") |
519 end | 529 end |
520 t=t+1 | 530 t=t+1 |
521 end | 531 end |
522 b() | 532 j() |
523 if k then | 533 if y then |
524 t=1 | 534 t=1 |
525 if n[1]=="TK_COMMENT"then | 535 if n[1]=="TK_COMMENT"then |
526 t=3 | 536 t=3 |
527 end | 537 end |
528 while true do | 538 while true do |
529 a,r=n[t],o[t] | 539 a,r=n[t],o[t] |
530 if a=="TK_EOS"then | 540 if a=="TK_EOS"then |
531 break | 541 break |
532 elseif a=="TK_EOL"then | 542 elseif a=="TK_EOL"then |
533 local a,e=n[t-1],n[t+1] | 543 local e,a=n[t-1],n[t+1] |
534 if p[a]and p[e]then | 544 if q[e]and q[a]then |
535 local e=v(t-1,t+1) | 545 local e=v(t-1,t+1) |
536 if e==""then | 546 if e==""then |
537 i() | 547 i() |
538 end | 548 end |
539 end | 549 end |
540 end | 550 end |
541 t=t+1 | 551 t=t+1 |
542 end | 552 end |
543 b() | 553 j() |
544 end | 554 end |
545 if h and h>0 then c()end | 555 if h and h>0 then c()end |
546 return n,o,l | 556 return n,o,d |
547 end | 557 end |
558 return{optimize=optimize} | |
548 end) | 559 end) |
549 package.preload['optparser']=(function(...) | 560 package.preload['optparser']=(function(...) |
561 local _ENV=_ENV; | |
562 local function e(t,...) | |
563 local e=package.loaded[t]or _ENV[t]or{_NAME=t}; | |
564 package.loaded[t]=e; | |
565 for t=1,select("#",...)do | |
566 (select(t,...))(e); | |
567 end | |
568 _ENV=e; | |
569 _M=e; | |
570 return e; | |
571 end | |
550 local e=_G | 572 local e=_G |
551 local a=require"string" | 573 local a=require"string" |
552 local f=require"table" | 574 local l=require"table" |
553 module"optparser" | |
554 local s="etaoinshrdlucmfwypvbgkqjxz_ETAOINSHRDLUCMFWYPVBGKQJXZ" | 575 local s="etaoinshrdlucmfwypvbgkqjxz_ETAOINSHRDLUCMFWYPVBGKQJXZ" |
555 local r="etaoinshrdlucmfwypvbgkqjxz_0123456789ETAOINSHRDLUCMFWYPVBGKQJXZ" | 576 local d="etaoinshrdlucmfwypvbgkqjxz_0123456789ETAOINSHRDLUCMFWYPVBGKQJXZ" |
556 local w={} | 577 local w={} |
557 for e in a.gmatch([[ | 578 for e in a.gmatch([[ |
558 and break do else elseif end false for function if in | 579 and break do else elseif end false for function if in |
559 local nil not or repeat return then true until while | 580 local nil not or repeat return then true until while |
560 self]],"%S+")do | 581 self _ENV]],"%S+")do |
561 w[e]=true | 582 w[e]=true |
562 end | 583 end |
563 local h,m, | 584 local h,u, |
564 u,o, | 585 m,o, |
565 l,y, | 586 c,v, |
566 d, | 587 r, |
567 n | 588 n |
568 local function c(e) | 589 local function f(e) |
569 local o={} | 590 local i={} |
570 for n=1,#e do | 591 for n=1,#e do |
571 local e=e[n] | 592 local e=e[n] |
572 local i=e.name | 593 local o=e.name |
573 if not o[i]then | 594 if not i[o]then |
574 o[i]={ | 595 i[o]={ |
575 decl=0,token=0,size=0, | 596 decl=0,token=0,size=0, |
576 } | 597 } |
577 end | 598 end |
578 local t=o[i] | 599 local t=i[o] |
579 t.decl=t.decl+1 | 600 t.decl=t.decl+1 |
580 local o=e.xref | 601 local i=e.xref |
581 local a=#o | 602 local a=#i |
582 t.token=t.token+a | 603 t.token=t.token+a |
583 t.size=t.size+a*#i | 604 t.size=t.size+a*#o |
584 if e.decl then | 605 if e.decl then |
585 e.id=n | 606 e.id=n |
586 e.xcount=a | 607 e.xcount=a |
587 if a>1 then | 608 if a>1 then |
588 e.first=o[2] | 609 e.first=i[2] |
589 e.last=o[a] | 610 e.last=i[a] |
590 end | 611 end |
591 else | 612 else |
592 t.id=n | 613 t.id=n |
593 end | 614 end |
594 end | 615 end |
595 return o | 616 return i |
596 end | 617 end |
597 local function v(e) | 618 local function y(e) |
598 local n=a.byte | 619 local i=a.byte |
599 local d=a.char | 620 local n=a.char |
600 local a={ | 621 local a={ |
601 TK_KEYWORD=true,TK_NAME=true,TK_NUMBER=true, | 622 TK_KEYWORD=true,TK_NAME=true,TK_NUMBER=true, |
602 TK_STRING=true,TK_LSTRING=true, | 623 TK_STRING=true,TK_LSTRING=true, |
603 } | 624 } |
604 if not e["opt-comments"]then | 625 if not e["opt-comments"]then |
605 a.TK_COMMENT=true | 626 a.TK_COMMENT=true |
606 a.TK_LCOMMENT=true | 627 a.TK_LCOMMENT=true |
607 end | 628 end |
629 local e={} | |
630 for t=1,#h do | |
631 e[t]=u[t] | |
632 end | |
633 for t=1,#o do | |
634 local t=o[t] | |
635 local a=t.xref | |
636 for t=1,t.xcount do | |
637 local t=a[t] | |
638 e[t]="" | |
639 end | |
640 end | |
608 local t={} | 641 local t={} |
609 for e=1,#h do | 642 for e=0,255 do t[e]=0 end |
610 t[e]=m[e] | 643 for o=1,#h do |
611 end | 644 local o,e=h[o],e[o] |
612 for e=1,#o do | 645 if a[o]then |
613 local e=o[e] | 646 for a=1,#e do |
614 local a=e.xref | 647 local e=i(e,a) |
615 for e=1,e.xcount do | 648 t[e]=t[e]+1 |
616 local e=a[e] | 649 end |
617 t[e]="" | 650 end |
618 end | 651 end |
619 end | 652 local function o(a) |
620 local e={} | 653 local e={} |
621 for t=0,255 do e[t]=0 end | |
622 for o=1,#h do | |
623 local o,t=h[o],t[o] | |
624 if a[o]then | |
625 for a=1,#t do | |
626 local t=n(t,a) | |
627 e[t]=e[t]+1 | |
628 end | |
629 end | |
630 end | |
631 local function i(a) | |
632 local t={} | |
633 for o=1,#a do | 654 for o=1,#a do |
634 local a=n(a,o) | 655 local a=i(a,o) |
635 t[o]={c=a,freq=e[a],} | 656 e[o]={c=a,freq=t[a],} |
636 end | 657 end |
637 f.sort(t, | 658 l.sort(e, |
638 function(t,e) | 659 function(t,e) |
639 return t.freq>e.freq | 660 return t.freq>e.freq |
640 end | 661 end |
641 ) | 662 ) |
642 local a={} | 663 local t={} |
643 for e=1,#t do | 664 for a=1,#e do |
644 a[e]=d(t[e].c) | 665 t[a]=n(e[a].c) |
645 end | 666 end |
646 return f.concat(a) | 667 return l.concat(t) |
647 end | 668 end |
648 s=i(s) | 669 s=o(s) |
649 r=i(r) | 670 d=o(d) |
650 end | 671 end |
651 local function p() | 672 local function p() |
652 local t | 673 local t |
653 local n,h=#s,#r | 674 local n,h=#s,#d |
654 local e=d | 675 local e=r |
655 if e<n then | 676 if e<n then |
656 e=e+1 | 677 e=e+1 |
657 t=a.sub(s,e,e) | 678 t=a.sub(s,e,e) |
658 else | 679 else |
659 local o,i=n,1 | 680 local i,o=n,1 |
660 repeat | 681 repeat |
661 e=e-o | 682 e=e-i |
662 o=o*h | 683 i=i*h |
684 o=o+1 | |
685 until i>e | |
686 local i=e%n | |
687 e=(e-i)/n | |
663 i=i+1 | 688 i=i+1 |
664 until o>e | 689 t=a.sub(s,i,i) |
665 local o=e%n | 690 while o>1 do |
666 e=(e-o)/n | 691 local i=e%h |
667 o=o+1 | 692 e=(e-i)/h |
668 t=a.sub(s,o,o) | 693 i=i+1 |
669 while i>1 do | 694 t=t..a.sub(d,i,i) |
670 local o=e%h | 695 o=o-1 |
671 e=(e-o)/h | 696 end |
672 o=o+1 | 697 end |
673 t=t..a.sub(r,o,o) | 698 r=r+1 |
674 i=i-1 | 699 return t,c[t]~=nil |
675 end | 700 end |
676 end | 701 function optimize(e,i,t,s,a) |
677 d=d+1 | 702 h,u,m,o |
678 return t,l[t]~=nil | 703 =i,t,s,a |
679 end | 704 r=0 |
680 function optimize(e,a,s,i,t) | |
681 h,m,u,o | |
682 =a,s,i,t | |
683 d=0 | |
684 n={} | 705 n={} |
685 l=c(u) | 706 c=f(m) |
686 y=c(o) | 707 v=f(o) |
687 if e["opt-entropy"]then | 708 if e["opt-entropy"]then |
688 v(e) | 709 y(e) |
689 end | 710 end |
690 local e={} | 711 local e={} |
691 for t=1,#o do | 712 for t=1,#o do |
692 e[t]=o[t] | 713 e[t]=o[t] |
693 end | 714 end |
694 f.sort(e, | 715 l.sort(e, |
695 function(e,t) | 716 function(t,e) |
696 return e.xcount>t.xcount | 717 return t.xcount>e.xcount |
697 end | 718 end |
698 ) | 719 ) |
699 local a,t,r={},1,false | 720 local a,t,r={},1,false |
700 for o=1,#e do | 721 for o=1,#e do |
701 local e=e[o] | 722 local e=e[o] |
702 if not e.isself then | 723 if not e.preserve then |
703 a[t]=e | 724 a[t]=e |
704 t=t+1 | 725 t=t+1 |
705 else | 726 elseif e.name=="self"then |
706 r=true | 727 r=true |
707 end | 728 end |
708 end | 729 end |
709 e=a | 730 e=a |
710 local s=#e | 731 local s=#e |
714 h,t=p() | 735 h,t=p() |
715 until not w[h] | 736 until not w[h] |
716 n[#n+1]=h | 737 n[#n+1]=h |
717 local a=s | 738 local a=s |
718 if t then | 739 if t then |
719 local i=u[l[h].id].xref | 740 local i=m[c[h].id].xref |
720 local h=#i | 741 local n=#i |
721 for t=1,s do | 742 for t=1,s do |
722 local t=e[t] | 743 local t=e[t] |
723 local n,e=t.act,t.rem | 744 local s,e=t.act,t.rem |
724 while e<0 do | 745 while e<0 do |
725 e=o[-e].rem | 746 e=o[-e].rem |
726 end | 747 end |
727 local o | 748 local o |
728 for t=1,h do | 749 for t=1,n do |
729 local t=i[t] | 750 local t=i[t] |
730 if t>=n and t<=e then o=true end | 751 if t>=s and t<=e then o=true end |
731 end | 752 end |
732 if o then | 753 if o then |
733 t.skip=true | 754 t.skip=true |
734 a=a-1 | 755 a=a-1 |
735 end | 756 end |
744 local i=e[t] | 765 local i=e[t] |
745 t=t+1 | 766 t=t+1 |
746 i.newname=h | 767 i.newname=h |
747 i.skip=true | 768 i.skip=true |
748 i.done=true | 769 i.done=true |
749 local s,r=i.first,i.last | 770 local s,h=i.first,i.last |
750 local h=i.xref | 771 local r=i.xref |
751 if s and a>0 then | 772 if s and a>0 then |
752 local n=a | 773 local n=a |
753 while n>0 do | 774 while n>0 do |
754 while e[t].skip do | 775 while e[t].skip do |
755 t=t+1 | 776 t=t+1 |
759 t=t+1 | 780 t=t+1 |
760 local n,t=e.act,e.rem | 781 local n,t=e.act,e.rem |
761 while t<0 do | 782 while t<0 do |
762 t=o[-t].rem | 783 t=o[-t].rem |
763 end | 784 end |
764 if not(r<n or s>t)then | 785 if not(h<n or s>t)then |
765 if n>=i.act then | 786 if n>=i.act then |
766 for o=1,i.xcount do | 787 for o=1,i.xcount do |
767 local o=h[o] | 788 local o=r[o] |
768 if o>=n and o<=t then | 789 if o>=n and o<=t then |
769 a=a-1 | 790 a=a-1 |
770 e.skip=true | 791 e.skip=true |
771 break | 792 break |
772 end | 793 end |
798 local e=o[e] | 819 local e=o[e] |
799 local t=e.xref | 820 local t=e.xref |
800 if e.newname then | 821 if e.newname then |
801 for a=1,e.xcount do | 822 for a=1,e.xcount do |
802 local t=t[a] | 823 local t=t[a] |
803 m[t]=e.newname | 824 u[t]=e.newname |
804 end | 825 end |
805 e.name,e.oldname | 826 e.name,e.oldname |
806 =e.newname,e.name | 827 =e.newname,e.name |
807 else | 828 else |
808 e.oldname=e.name | 829 e.oldname=e.name |
809 end | 830 end |
810 end | 831 end |
811 if r then | 832 if r then |
812 n[#n+1]="self" | 833 n[#n+1]="self" |
813 end | 834 end |
814 local e=c(o) | 835 local e=f(o) |
815 end | 836 end |
837 return{optimize=optimize} | |
816 end) | 838 end) |
817 package.preload['llex']=(function(...) | 839 package.preload['llex']=(function(...) |
818 local f=_G | 840 local _ENV=_ENV; |
819 local r=require"string" | 841 local function e(t,...) |
820 module"llex" | 842 local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
821 local l=r.find | 843 package.loaded[t]=e; |
822 local c=r.match | 844 for t=1,select("#",...)do |
823 local i=r.sub | 845 (select(t,...))(e); |
846 end | |
847 _ENV=e; | |
848 _M=e; | |
849 return e; | |
850 end | |
851 local y=_G | |
852 local s=require"string" | |
853 local l=s.find | |
854 local c=s.match | |
855 local n=s.sub | |
856 local e='' | |
857 local r='' | |
858 local a=1 | |
859 local d=1 | |
824 local m={} | 860 local m={} |
825 for e in r.gmatch([[ | 861 local w={} |
862 local p={} | |
863 local i='' | |
864 local v={} | |
865 for e in s.gmatch([[ | |
826 and break do else elseif end false for function if in | 866 and break do else elseif end false for function if in |
827 local nil not or repeat return then true until while]],"%S+")do | 867 local nil not or repeat return then true until while]],"%S+")do |
828 m[e]=true | 868 v[e]=true |
829 end | 869 end |
830 local e, | 870 local function o(a,t) |
831 d, | 871 local e=#m+1 |
832 a, | 872 m[e]=a |
833 n, | 873 w[e]=t |
834 h | 874 p[e]=d |
835 local function o(t,a) | 875 end |
836 local e=#tok+1 | 876 local function h(t,s) |
837 tok[e]=t | 877 local n=n |
838 seminfo[e]=a | |
839 tokln[e]=h | |
840 end | |
841 local function s(t,s) | |
842 local n=i | |
843 local i=n(e,t,t) | 878 local i=n(e,t,t) |
844 t=t+1 | 879 t=t+1 |
845 local e=n(e,t,t) | 880 local e=n(e,t,t) |
846 if(e=="\n"or e=="\r")and(e~=i)then | 881 if(e=="\n"or e=="\r")and(e~=i)then |
847 t=t+1 | 882 t=t+1 |
848 i=i..e | 883 i=i..e |
849 end | 884 end |
850 if s then o("TK_EOL",i)end | 885 if s then o("TK_EOL",i)end |
851 h=h+1 | 886 d=d+1 |
852 a=t | 887 a=t |
853 return t | 888 return t |
854 end | 889 end |
855 function init(t,i) | 890 function init(i,t) |
856 e=t | 891 e=i |
857 d=i | 892 r=t |
858 a=1 | 893 local t,n,e,i=l(e,"^(#[^\r\n]*)(\r?\n?)") |
859 h=1 | 894 if t then |
860 tok={} | |
861 seminfo={} | |
862 tokln={} | |
863 local i,n,e,t=l(e,"^(#[^\r\n]*)(\r?\n?)") | |
864 if i then | |
865 a=a+#e | 895 a=a+#e |
866 o("TK_COMMENT",e) | 896 o("TK_COMMENT",e) |
867 if#t>0 then s(a,true)end | 897 if#i>0 then h(a,true)end |
868 end | 898 end |
869 end | 899 end |
870 function chunkid() | 900 function chunkid() |
871 if d and c(d,"^[=@]")then | 901 if r and c(r,"^[=@]")then |
872 return i(d,2) | 902 return n(r,2) |
873 end | 903 end |
874 return"[string]" | 904 return"[string]" |
875 end | 905 end |
876 function errorline(a,t) | 906 function errorline(t,a) |
877 local e=error or f.error | 907 local e=error or y.error |
878 e(r.format("%s:%d: %s",chunkid(),t or h,a)) | 908 e(s.format("%s:%d: %s",chunkid(),a or d,t)) |
879 end | 909 end |
880 local r=errorline | 910 local r=errorline |
881 local function u(t) | 911 local function u(t) |
882 local i=i | 912 local i=n |
883 local n=i(e,t,t) | 913 local n=i(e,t,t) |
884 t=t+1 | 914 t=t+1 |
885 local o=#c(e,"=*",t) | 915 local o=#c(e,"=*",t) |
886 t=t+o | 916 t=t+o |
887 a=t | 917 a=t |
888 return(i(e,t,t)==n)and o or(-o)-1 | 918 return(i(e,t,t)==n)and o or(-o)-1 |
889 end | 919 end |
890 local function w(h,d) | 920 local function f(d,s) |
891 local t=a+1 | 921 local t=a+1 |
892 local i=i | 922 local n=n |
893 local o=i(e,t,t) | 923 local o=n(e,t,t) |
894 if o=="\r"or o=="\n"then | 924 if o=="\r"or o=="\n"then |
895 t=s(t) | 925 t=h(t) |
896 end | 926 end |
897 local o=t | 927 local o=t |
898 while true do | 928 while true do |
899 local o,c,l=l(e,"([\r\n%]])",t) | 929 local o,c,l=l(e,"([\r\n%]])",t) |
900 if not o then | 930 if not o then |
901 r(h and"unfinished long string"or | 931 r(d and"unfinished long string"or |
902 "unfinished long comment") | 932 "unfinished long comment") |
903 end | 933 end |
904 t=o | 934 t=o |
905 if l=="]"then | 935 if l=="]"then |
906 if u(t)==d then | 936 if u(t)==s then |
907 n=i(e,n,a) | 937 i=n(e,i,a) |
908 a=a+1 | 938 a=a+1 |
909 return n | 939 return i |
910 end | 940 end |
911 t=a | 941 t=a |
912 else | 942 else |
913 n=n.."\n" | 943 i=i.."\n" |
914 t=s(t) | 944 t=h(t) |
915 end | 945 end |
916 end | 946 end |
917 end | 947 end |
918 local function y(u) | 948 local function b(u) |
919 local t=a | 949 local t=a |
920 local h=l | 950 local s=l |
921 local d=i | 951 local d=n |
922 while true do | 952 while true do |
923 local i,l,o=h(e,"([\n\r\\\"\'])",t) | 953 local n,l,o=s(e,"([\n\r\\\"\'])",t) |
924 if i then | 954 if n then |
925 if o=="\n"or o=="\r"then | 955 if o=="\n"or o=="\r"then |
926 r("unfinished string") | 956 r("unfinished string") |
927 end | 957 end |
928 t=i | 958 t=n |
929 if o=="\\"then | 959 if o=="\\"then |
930 t=t+1 | 960 t=t+1 |
931 o=d(e,t,t) | 961 o=d(e,t,t) |
932 if o==""then break end | 962 if o==""then break end |
933 i=h("abfnrtv\n\r",o,1,true) | 963 n=s("abfnrtv\n\r",o,1,true) |
934 if i then | 964 if n then |
935 if i>7 then | 965 if n>7 then |
936 t=s(t) | 966 t=h(t) |
937 else | 967 else |
938 t=t+1 | 968 t=t+1 |
939 end | 969 end |
940 elseif h(o,"%D")then | 970 elseif s(o,"%D")then |
941 t=t+1 | 971 t=t+1 |
942 else | 972 else |
943 local o,e,a=h(e,"^(%d%d?%d?)",t) | 973 local o,a,e=s(e,"^(%d%d?%d?)",t) |
944 t=e+1 | 974 t=a+1 |
945 if a+1>256 then | 975 if e+1>256 then |
946 r("escape sequence too large") | 976 r("escape sequence too large") |
947 end | 977 end |
948 end | 978 end |
949 else | 979 else |
950 t=t+1 | 980 t=t+1 |
951 if o==u then | 981 if o==u then |
952 a=t | 982 a=t |
953 return d(e,n,t-1) | 983 return d(e,i,t-1) |
954 end | 984 end |
955 end | 985 end |
956 else | 986 else |
957 break | 987 break |
958 end | 988 end |
959 end | 989 end |
960 r("unfinished string") | 990 r("unfinished string") |
961 end | 991 end |
962 function llex() | 992 function llex() |
963 local h=l | 993 local s=l |
964 local l=c | 994 local d=c |
965 while true do | 995 while true do |
966 local t=a | 996 local t=a |
967 while true do | 997 while true do |
968 local c,p,d=h(e,"^([_%a][_%w]*)",t) | 998 local c,m,l=s(e,"^([_%a][_%w]*)",t) |
969 if c then | 999 if c then |
970 a=t+#d | 1000 a=t+#l |
971 if m[d]then | 1001 if v[l]then |
972 o("TK_KEYWORD",d) | 1002 o("TK_KEYWORD",l) |
973 else | 1003 else |
974 o("TK_NAME",d) | 1004 o("TK_NAME",l) |
975 end | 1005 end |
976 break | 1006 break |
977 end | 1007 end |
978 local d,m,c=h(e,"^(%.?)%d",t) | 1008 local l,m,c=s(e,"^(%.?)%d",t) |
979 if d then | 1009 if l then |
980 if c=="."then t=t+1 end | 1010 if c=="."then t=t+1 end |
981 local u,s,n=h(e,"^%d*[%.%d]*([eE]?)",t) | 1011 local u,h,i=s(e,"^%d*[%.%d]*([eE]?)",t) |
982 t=s+1 | 1012 t=h+1 |
983 if#n==1 then | 1013 if#i==1 then |
984 if l(e,"^[%+%-]",t)then | 1014 if d(e,"^[%+%-]",t)then |
985 t=t+1 | 1015 t=t+1 |
986 end | 1016 end |
987 end | 1017 end |
988 local n,t=h(e,"^[_%w]*",t) | 1018 local i,t=s(e,"^[_%w]*",t) |
989 a=t+1 | 1019 a=t+1 |
990 local e=i(e,d,t) | 1020 local e=n(e,l,t) |
991 if not f.tonumber(e)then | 1021 if not y.tonumber(e)then |
992 r("malformed number") | 1022 r("malformed number") |
993 end | 1023 end |
994 o("TK_NUMBER",e) | 1024 o("TK_NUMBER",e) |
995 break | 1025 break |
996 end | 1026 end |
997 local c,m,f,d=h(e,"^((%s)[ \t\v\f]*)",t) | 1027 local m,w,c,l=s(e,"^((%s)[ \t\v\f]*)",t) |
998 if c then | 1028 if m then |
999 if d=="\n"or d=="\r"then | 1029 if l=="\n"or l=="\r"then |
1000 s(t,true) | 1030 h(t,true) |
1001 else | 1031 else |
1002 a=m+1 | 1032 a=w+1 |
1003 o("TK_SPACE",f) | 1033 o("TK_SPACE",c) |
1004 end | 1034 end |
1005 break | 1035 break |
1006 end | 1036 end |
1007 local s=l(e,"^%p",t) | 1037 local h=d(e,"^%p",t) |
1008 if s then | 1038 if h then |
1009 n=t | 1039 i=t |
1010 local d=h("-[\"\'.=<>~",s,1,true) | 1040 local l=s("-[\"\'.=<>~",h,1,true) |
1011 if d then | 1041 if l then |
1012 if d<=2 then | 1042 if l<=2 then |
1013 if d==1 then | 1043 if l==1 then |
1014 local r=l(e,"^%-%-(%[?)",t) | 1044 local r=d(e,"^%-%-(%[?)",t) |
1015 if r then | 1045 if r then |
1016 t=t+2 | 1046 t=t+2 |
1017 local s=-1 | 1047 local h=-1 |
1018 if r=="["then | 1048 if r=="["then |
1019 s=u(t) | 1049 h=u(t) |
1020 end | 1050 end |
1021 if s>=0 then | 1051 if h>=0 then |
1022 o("TK_LCOMMENT",w(false,s)) | 1052 o("TK_LCOMMENT",f(false,h)) |
1023 else | 1053 else |
1024 a=h(e,"[\n\r]",t)or(#e+1) | 1054 a=s(e,"[\n\r]",t)or(#e+1) |
1025 o("TK_COMMENT",i(e,n,a-1)) | 1055 o("TK_COMMENT",n(e,i,a-1)) |
1026 end | 1056 end |
1027 break | 1057 break |
1028 end | 1058 end |
1029 else | 1059 else |
1030 local e=u(t) | 1060 local e=u(t) |
1031 if e>=0 then | 1061 if e>=0 then |
1032 o("TK_LSTRING",w(true,e)) | 1062 o("TK_LSTRING",f(true,e)) |
1033 elseif e==-1 then | 1063 elseif e==-1 then |
1034 o("TK_OP","[") | 1064 o("TK_OP","[") |
1035 else | 1065 else |
1036 r("invalid long string delimiter") | 1066 r("invalid long string delimiter") |
1037 end | 1067 end |
1038 break | 1068 break |
1039 end | 1069 end |
1040 elseif d<=5 then | 1070 elseif l<=5 then |
1041 if d<5 then | 1071 if l<5 then |
1042 a=t+1 | 1072 a=t+1 |
1043 o("TK_STRING",y(s)) | 1073 o("TK_STRING",b(h)) |
1044 break | 1074 break |
1045 end | 1075 end |
1046 s=l(e,"^%.%.?%.?",t) | 1076 h=d(e,"^%.%.?%.?",t) |
1047 else | 1077 else |
1048 s=l(e,"^%p=?",t) | 1078 h=d(e,"^%p=?",t) |
1049 end | 1079 end |
1050 end | 1080 end |
1051 a=t+#s | 1081 a=t+#h |
1052 o("TK_OP",s) | 1082 o("TK_OP",h) |
1053 break | 1083 break |
1054 end | 1084 end |
1055 local e=i(e,t,t) | 1085 local e=n(e,t,t) |
1056 if e~=""then | 1086 if e~=""then |
1057 a=t+1 | 1087 a=t+1 |
1058 o("TK_OP",e) | 1088 o("TK_OP",e) |
1059 break | 1089 break |
1060 end | 1090 end |
1061 o("TK_EOS","") | 1091 o("TK_EOS","") |
1062 return | 1092 return |
1063 end | 1093 end |
1064 end | 1094 end |
1065 end | 1095 end |
1066 return _M | 1096 return{ |
1097 llex=llex, | |
1098 init=init, | |
1099 chunkid=chunkid, | |
1100 tok=m, | |
1101 tokln=p, | |
1102 seminfo=w | |
1103 } | |
1067 end) | 1104 end) |
1068 package.preload['lparser']=(function(...) | 1105 package.preload['lparser']=(function(...) |
1069 local R=_G | 1106 local _ENV=_ENV; |
1070 local p=require"string" | 1107 local function e(t,...) |
1071 module"lparser" | 1108 local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
1072 local _, | 1109 package.loaded[t]=e; |
1110 for t=1,select("#",...)do | |
1111 (select(t,...))(e); | |
1112 end | |
1113 _ENV=e; | |
1114 _M=e; | |
1115 return e; | |
1116 end | |
1117 local U=_G | |
1118 local b=require"string" | |
1119 local D={} | |
1120 local T, | |
1121 j, | |
1122 A, | |
1123 C, | |
1124 d, | |
1125 r, | |
1126 P, | |
1127 t,k,l,y, | |
1128 p, | |
1129 a, | |
1130 W, | |
1073 q, | 1131 q, |
1074 z, | 1132 N, |
1075 S, | |
1076 u, | 1133 u, |
1077 r, | 1134 g, |
1078 V, | 1135 E |
1079 t,k,l,f, | 1136 local f,n,w,_,x,v |
1080 w, | 1137 local e=b.gmatch |
1081 a, | 1138 local H={} |
1082 K, | |
1083 j, | |
1084 I, | |
1085 d, | |
1086 b, | |
1087 A | |
1088 local v,h,y,E,T,x | |
1089 local e=p.gmatch | |
1090 local D={} | |
1091 for e in e("else elseif end until <eof>","%S+")do | 1139 for e in e("else elseif end until <eof>","%S+")do |
1092 D[e]=true | 1140 H[e]=true |
1093 end | 1141 end |
1094 local B={} | 1142 local Y={} |
1095 for e in e("if while do for repeat function local return break","%S+")do | 1143 for e in e("if while do for repeat function local return break","%S+")do |
1096 B[e]=e.."_stat" | 1144 Y[e]=e.."_stat" |
1097 end | 1145 end |
1098 local L={} | 1146 local S={} |
1099 local G={} | 1147 local V={} |
1100 for e,t,a in e([[ | 1148 for e,a,t in e([[ |
1101 {+ 6 6}{- 6 6}{* 7 7}{/ 7 7}{% 7 7} | 1149 {+ 6 6}{- 6 6}{* 7 7}{/ 7 7}{% 7 7} |
1102 {^ 10 9}{.. 5 4} | 1150 {^ 10 9}{.. 5 4} |
1103 {~= 3 3}{== 3 3} | 1151 {~= 3 3}{== 3 3} |
1104 {< 3 3}{<= 3 3}{> 3 3}{>= 3 3} | 1152 {< 3 3}{<= 3 3}{> 3 3}{>= 3 3} |
1105 {and 2 2}{or 1 1} | 1153 {and 2 2}{or 1 1} |
1106 ]],"{(%S+)%s(%d+)%s(%d+)}")do | 1154 ]],"{(%S+)%s(%d+)%s(%d+)}")do |
1107 L[e]=t+0 | 1155 S[e]=a+0 |
1108 G[e]=a+0 | 1156 V[e]=t+0 |
1109 end | 1157 end |
1110 local Z={["not"]=true,["-"]=true, | 1158 local Z={["not"]=true,["-"]=true, |
1111 ["#"]=true,} | 1159 ["#"]=true,} |
1112 local X=8 | 1160 local ee=8 |
1113 local function o(a,t) | 1161 local function o(t,a) |
1114 local e=error or R.error | 1162 local e=error or U.error |
1115 e(p.format("(source):%d: %s",t or l,a)) | 1163 e(b.format("(source):%d: %s",a or l,t)) |
1116 end | 1164 end |
1117 local function e() | 1165 local function e() |
1118 V=z[u] | 1166 P=A[d] |
1119 t,k,l,f | 1167 t,k,l,y |
1120 =_[u],q[u],z[u],S[u] | 1168 =T[d],j[d],A[d],C[d] |
1121 u=u+1 | 1169 d=d+1 |
1122 end | 1170 end |
1123 local function J() | 1171 local function X() |
1124 return _[u] | 1172 return T[d] |
1125 end | 1173 end |
1126 local function n(a) | 1174 local function s(a) |
1127 local e=t | 1175 local e=t |
1128 if e~="<number>"and e~="<string>"then | 1176 if e~="<number>"and e~="<string>"then |
1129 if e=="<name>"then e=k end | 1177 if e=="<name>"then e=k end |
1130 e="'"..e.."'" | 1178 e="'"..e.."'" |
1131 end | 1179 end |
1132 o(a.." near "..e) | 1180 o(a.." near "..e) |
1133 end | 1181 end |
1134 local function c(e) | 1182 local function c(e) |
1135 n("'"..e.."' expected") | 1183 s("'"..e.."' expected") |
1136 end | 1184 end |
1137 local function o(a) | 1185 local function o(a) |
1138 if t==a then e();return true end | 1186 if t==a then e();return true end |
1139 end | 1187 end |
1140 local function O(e) | 1188 local function L(e) |
1141 if t~=e then c(e)end | 1189 if t~=e then c(e)end |
1142 end | 1190 end |
1143 local function i(t) | 1191 local function i(t) |
1144 O(t);e() | 1192 L(t);e() |
1145 end | 1193 end |
1146 local function Q(e,t) | 1194 local function F(e,t) |
1147 if not e then n(t)end | 1195 if not e then s(t)end |
1148 end | 1196 end |
1149 local function s(e,a,t) | 1197 local function h(e,a,t) |
1150 if not o(e)then | 1198 if not o(e)then |
1151 if t==l then | 1199 if t==l then |
1152 c(e) | 1200 c(e) |
1153 else | 1201 else |
1154 n("'"..e.."' expected (to close '"..a.."' at line "..t..")") | 1202 s("'"..e.."' expected (to close '"..a.."' at line "..t..")") |
1155 end | 1203 end |
1156 end | 1204 end |
1157 end | 1205 end |
1158 local function m() | 1206 local function c() |
1159 O("<name>") | 1207 L("<name>") |
1160 local t=k | 1208 local t=k |
1161 w=f | 1209 p=y |
1162 e() | 1210 e() |
1163 return t | 1211 return t |
1164 end | 1212 end |
1165 local function N(e,t) | 1213 local function I(e,t) |
1166 e.k="VK" | 1214 e.k="VK" |
1167 end | 1215 end |
1168 local function U(e) | 1216 local function R(e) |
1169 N(e,m()) | 1217 I(e,c()) |
1170 end | 1218 end |
1171 local function c(o,i) | 1219 local function m(o,i) |
1220 local e=a.bl | |
1221 local t | |
1222 if e then | |
1223 t=e.locallist | |
1224 else | |
1225 t=a.locallist | |
1226 end | |
1227 local e=#u+1 | |
1228 u[e]={ | |
1229 name=o, | |
1230 xref={p}, | |
1231 decl=p, | |
1232 } | |
1233 if i or o=="_ENV"then | |
1234 u[e].preserve=true | |
1235 end | |
1236 local a=#g+1 | |
1237 g[a]=e | |
1238 E[a]=t | |
1239 end | |
1240 local function z(e) | |
1241 local t=#g | |
1242 while e>0 do | |
1243 e=e-1 | |
1244 local t=t-e | |
1245 local a=g[t] | |
1246 local e=u[a] | |
1247 local o=e.name | |
1248 e.act=y | |
1249 g[t]=nil | |
1250 local i=E[t] | |
1251 E[t]=nil | |
1252 local t=i[o] | |
1253 if t then | |
1254 e=u[t] | |
1255 e.rem=-a | |
1256 end | |
1257 i[o]=a | |
1258 end | |
1259 end | |
1260 local function O() | |
1172 local t=a.bl | 1261 local t=a.bl |
1173 local e | 1262 local e |
1174 if t then | 1263 if t then |
1175 e=t.locallist | 1264 e=t.locallist |
1176 else | 1265 else |
1177 e=a.locallist | 1266 e=a.locallist |
1178 end | 1267 end |
1179 local t=#d+1 | 1268 for t,e in U.pairs(e)do |
1180 d[t]={ | 1269 local e=u[e] |
1181 name=o, | 1270 e.rem=y |
1182 xref={w}, | 1271 end |
1183 decl=w, | 1272 end |
1184 } | 1273 local function y(e,t) |
1185 if i then | 1274 if b.sub(e,1,1)=="("then |
1186 d[t].isself=true | |
1187 end | |
1188 local a=#b+1 | |
1189 b[a]=t | |
1190 A[a]=e | |
1191 end | |
1192 local function g(e) | |
1193 local t=#b | |
1194 while e>0 do | |
1195 e=e-1 | |
1196 local t=t-e | |
1197 local a=b[t] | |
1198 local e=d[a] | |
1199 local o=e.name | |
1200 e.act=f | |
1201 b[t]=nil | |
1202 local i=A[t] | |
1203 A[t]=nil | |
1204 local t=i[o] | |
1205 if t then | |
1206 e=d[t] | |
1207 e.rem=-a | |
1208 end | |
1209 i[o]=a | |
1210 end | |
1211 end | |
1212 local function H() | |
1213 local t=a.bl | |
1214 local e | |
1215 if t then | |
1216 e=t.locallist | |
1217 else | |
1218 e=a.locallist | |
1219 end | |
1220 for t,e in R.pairs(e)do | |
1221 local e=d[e] | |
1222 e.rem=f | |
1223 end | |
1224 end | |
1225 local function f(e,t) | |
1226 if p.sub(e,1,1)=="("then | |
1227 return | 1275 return |
1228 end | 1276 end |
1229 c(e,t) | 1277 m(e,t) |
1230 end | 1278 end |
1231 local function R(o,a) | 1279 local function U(o,a) |
1232 local t=o.bl | 1280 local t=o.bl |
1233 local e | 1281 local e |
1234 if t then | 1282 if t then |
1235 e=t.locallist | 1283 e=t.locallist |
1236 while e do | 1284 while e do |
1240 end | 1288 end |
1241 end | 1289 end |
1242 e=o.locallist | 1290 e=o.locallist |
1243 return e[a]or-1 | 1291 return e[a]or-1 |
1244 end | 1292 end |
1245 local function p(t,o,e) | 1293 local function b(t,o,e) |
1246 if t==nil then | 1294 if t==nil then |
1247 e.k="VGLOBAL" | 1295 e.k="VGLOBAL" |
1248 return"VGLOBAL" | 1296 return"VGLOBAL" |
1249 else | 1297 else |
1250 local a=R(t,o) | 1298 local a=U(t,o) |
1251 if a>=0 then | 1299 if a>=0 then |
1252 e.k="VLOCAL" | 1300 e.k="VLOCAL" |
1253 e.id=a | 1301 e.id=a |
1254 return"VLOCAL" | 1302 return"VLOCAL" |
1255 else | 1303 else |
1256 if p(t.prev,o,e)=="VGLOBAL"then | 1304 if b(t.prev,o,e)=="VGLOBAL"then |
1257 return"VGLOBAL" | 1305 return"VGLOBAL" |
1258 end | 1306 end |
1259 e.k="VUPVAL" | 1307 e.k="VUPVAL" |
1260 return"VUPVAL" | 1308 return"VUPVAL" |
1261 end | 1309 end |
1262 end | 1310 end |
1263 end | 1311 end |
1264 local function W(o) | 1312 local function Q(o) |
1265 local t=m() | 1313 local t=c() |
1266 p(a,t,o) | 1314 b(a,t,o) |
1267 if o.k=="VGLOBAL"then | 1315 if o.k=="VGLOBAL"then |
1268 local e=I[t] | 1316 local e=N[t] |
1269 if not e then | 1317 if not e then |
1270 e=#j+1 | 1318 e=#q+1 |
1271 j[e]={ | 1319 q[e]={ |
1272 name=t, | 1320 name=t, |
1273 xref={w}, | 1321 xref={p}, |
1274 } | 1322 } |
1275 I[t]=e | 1323 N[t]=e |
1276 else | 1324 else |
1277 local e=j[e].xref | 1325 local e=q[e].xref |
1278 e[#e+1]=w | 1326 e[#e+1]=p |
1279 end | 1327 end |
1280 else | 1328 else |
1281 local e=o.id | 1329 local e=o.id |
1282 local e=d[e].xref | 1330 local e=u[e].xref |
1283 e[#e+1]=w | 1331 e[#e+1]=p |
1284 end | 1332 end |
1285 end | 1333 end |
1286 local function p(t) | 1334 local function p(t) |
1287 local e={} | 1335 local e={} |
1288 e.isbreakable=t | 1336 e.isbreakable=t |
1289 e.prev=a.bl | 1337 e.prev=a.bl |
1290 e.locallist={} | 1338 e.locallist={} |
1291 a.bl=e | 1339 a.bl=e |
1292 end | 1340 end |
1293 local function w() | 1341 local function b() |
1294 local e=a.bl | 1342 local e=a.bl |
1295 H() | 1343 O() |
1296 a.bl=e.prev | 1344 a.bl=e.prev |
1297 end | 1345 end |
1298 local function C() | 1346 local function B() |
1299 local e | 1347 local e |
1300 if not a then | 1348 if not a then |
1301 e=K | 1349 e=W |
1302 else | 1350 else |
1303 e={} | 1351 e={} |
1304 end | 1352 end |
1305 e.prev=a | 1353 e.prev=a |
1306 e.bl=nil | 1354 e.bl=nil |
1307 e.locallist={} | 1355 e.locallist={} |
1308 a=e | 1356 a=e |
1309 end | 1357 end |
1310 local function M() | 1358 local function G() |
1311 H() | 1359 O() |
1312 a=a.prev | 1360 a=a.prev |
1313 end | 1361 end |
1314 local function H(a) | 1362 local function U(t) |
1315 local t={} | 1363 local a={} |
1316 e() | 1364 e() |
1317 U(t) | 1365 R(a) |
1318 a.k="VINDEXED" | 1366 t.k="VINDEXED" |
1319 end | 1367 end |
1320 local function F(t) | 1368 local function K(t) |
1321 e() | 1369 e() |
1322 h(t) | 1370 n(t) |
1323 i("]") | 1371 i("]") |
1324 end | 1372 end |
1325 local function R(e) | 1373 local function M(e) |
1326 local e,a={},{} | 1374 local e,a={},{} |
1327 if t=="<name>"then | 1375 if t=="<name>"then |
1328 U(e) | 1376 R(e) |
1329 else | 1377 else |
1330 F(e) | 1378 K(e) |
1331 end | 1379 end |
1332 i("=") | 1380 i("=") |
1333 h(a) | 1381 n(a) |
1334 end | 1382 end |
1335 local function Y(e) | 1383 local function O(e) |
1336 if e.v.k=="VVOID"then return end | 1384 if e.v.k=="VVOID"then return end |
1337 e.v.k="VVOID" | 1385 e.v.k="VVOID" |
1338 end | 1386 end |
1339 local function Y(e) | 1387 local function O(e) |
1340 h(e.v) | 1388 n(e.v) |
1341 end | 1389 end |
1342 local function P(a) | 1390 local function J(a) |
1343 local n=l | 1391 local n=l |
1344 local e={} | 1392 local e={} |
1345 e.v={} | 1393 e.v={} |
1346 e.t=a | 1394 e.t=a |
1347 a.k="VRELOCABLE" | 1395 a.k="VRELOCABLE" |
1349 i("{") | 1397 i("{") |
1350 repeat | 1398 repeat |
1351 if t=="}"then break end | 1399 if t=="}"then break end |
1352 local t=t | 1400 local t=t |
1353 if t=="<name>"then | 1401 if t=="<name>"then |
1354 if J()~="="then | 1402 if X()~="="then |
1355 Y(e) | 1403 O(e) |
1356 else | 1404 else |
1357 R(e) | 1405 M(e) |
1358 end | 1406 end |
1359 elseif t=="["then | 1407 elseif t=="["then |
1360 R(e) | 1408 M(e) |
1361 else | 1409 else |
1362 Y(e) | 1410 O(e) |
1363 end | 1411 end |
1364 until not o(",")and not o(";") | 1412 until not o(",")and not o(";") |
1365 s("}","{",n) | 1413 h("}","{",n) |
1366 end | 1414 end |
1367 local function J() | 1415 local function X() |
1368 local i=0 | 1416 local i=0 |
1369 if t~=")"then | 1417 if t~=")"then |
1370 repeat | 1418 repeat |
1371 local t=t | 1419 local t=t |
1372 if t=="<name>"then | 1420 if t=="<name>"then |
1373 c(m()) | 1421 m(c()) |
1374 i=i+1 | 1422 i=i+1 |
1375 elseif t=="..."then | 1423 elseif t=="..."then |
1376 e() | 1424 e() |
1377 a.is_vararg=true | 1425 a.is_vararg=true |
1378 else | 1426 else |
1379 n("<name> or '...' expected") | 1427 s("<name> or '...' expected") |
1380 end | 1428 end |
1381 until a.is_vararg or not o(",") | 1429 until a.is_vararg or not o(",") |
1382 end | 1430 end |
1383 g(i) | 1431 z(i) |
1384 end | 1432 end |
1385 local function Y(h) | 1433 local function M(n) |
1386 local a={} | 1434 local a={} |
1387 local i=l | 1435 local i=l |
1388 local o=t | 1436 local o=t |
1389 if o=="("then | 1437 if o=="("then |
1390 if i~=V then | 1438 if i~=P then |
1391 n("ambiguous syntax (function call x new statement)") | 1439 s("ambiguous syntax (function call x new statement)") |
1392 end | 1440 end |
1393 e() | 1441 e() |
1394 if t==")"then | 1442 if t==")"then |
1395 a.k="VVOID" | 1443 a.k="VVOID" |
1396 else | 1444 else |
1397 v(a) | 1445 f(a) |
1398 end | 1446 end |
1399 s(")","(",i) | 1447 h(")","(",i) |
1400 elseif o=="{"then | 1448 elseif o=="{"then |
1401 P(a) | 1449 J(a) |
1402 elseif o=="<string>"then | 1450 elseif o=="<string>"then |
1403 N(a,k) | 1451 I(a,k) |
1404 e() | 1452 e() |
1405 else | 1453 else |
1406 n("function arguments expected") | 1454 s("function arguments expected") |
1407 return | 1455 return |
1408 end | 1456 end |
1409 h.k="VCALL" | 1457 n.k="VCALL" |
1410 end | 1458 end |
1411 local function V(a) | 1459 local function P(a) |
1412 local t=t | 1460 local t=t |
1413 if t=="("then | 1461 if t=="("then |
1414 local t=l | 1462 local t=l |
1415 e() | 1463 e() |
1416 h(a) | 1464 n(a) |
1417 s(")","(",t) | 1465 h(")","(",t) |
1418 elseif t=="<name>"then | 1466 elseif t=="<name>"then |
1419 W(a) | 1467 Q(a) |
1420 else | 1468 else |
1421 n("unexpected symbol") | 1469 s("unexpected symbol") |
1422 end | 1470 end |
1423 end | 1471 end |
1424 local function R(a) | 1472 local function O(a) |
1425 V(a) | 1473 P(a) |
1426 while true do | 1474 while true do |
1427 local t=t | 1475 local t=t |
1428 if t=="."then | 1476 if t=="."then |
1429 H(a) | 1477 U(a) |
1430 elseif t=="["then | 1478 elseif t=="["then |
1431 local e={} | 1479 local e={} |
1432 F(e) | 1480 K(e) |
1433 elseif t==":"then | 1481 elseif t==":"then |
1434 local t={} | 1482 local t={} |
1435 e() | 1483 e() |
1436 U(t) | 1484 R(t) |
1437 Y(a) | 1485 M(a) |
1438 elseif t=="("or t=="<string>"or t=="{"then | 1486 elseif t=="("or t=="<string>"or t=="{"then |
1439 Y(a) | 1487 M(a) |
1440 else | 1488 else |
1441 return | 1489 return |
1442 end | 1490 end |
1443 end | 1491 end |
1444 end | 1492 end |
1445 local function U(o) | 1493 local function R(o) |
1446 local t=t | 1494 local t=t |
1447 if t=="<number>"then | 1495 if t=="<number>"then |
1448 o.k="VKNUM" | 1496 o.k="VKNUM" |
1449 elseif t=="<string>"then | 1497 elseif t=="<string>"then |
1450 N(o,k) | 1498 I(o,k) |
1451 elseif t=="nil"then | 1499 elseif t=="nil"then |
1452 o.k="VNIL" | 1500 o.k="VNIL" |
1453 elseif t=="true"then | 1501 elseif t=="true"then |
1454 o.k="VTRUE" | 1502 o.k="VTRUE" |
1455 elseif t=="false"then | 1503 elseif t=="false"then |
1456 o.k="VFALSE" | 1504 o.k="VFALSE" |
1457 elseif t=="..."then | 1505 elseif t=="..."then |
1458 Q(a.is_vararg==true, | 1506 F(a.is_vararg==true, |
1459 "cannot use '...' outside a vararg function"); | 1507 "cannot use '...' outside a vararg function"); |
1460 o.k="VVARARG" | 1508 o.k="VVARARG" |
1461 elseif t=="{"then | 1509 elseif t=="{"then |
1462 P(o) | 1510 J(o) |
1463 return | 1511 return |
1464 elseif t=="function"then | 1512 elseif t=="function"then |
1465 e() | 1513 e() |
1466 T(o,false,l) | 1514 x(o,false,l) |
1467 return | 1515 return |
1468 else | 1516 else |
1469 R(o) | 1517 O(o) |
1470 return | 1518 return |
1471 end | 1519 end |
1472 e() | 1520 e() |
1473 end | 1521 end |
1474 local function k(o,n) | 1522 local function k(o,n) |
1475 local a=t | 1523 local a=t |
1476 local i=Z[a] | 1524 local i=Z[a] |
1477 if i then | 1525 if i then |
1478 e() | 1526 e() |
1479 k(o,X) | 1527 k(o,ee) |
1480 else | 1528 else |
1481 U(o) | 1529 R(o) |
1482 end | 1530 end |
1483 a=t | 1531 a=t |
1484 local t=L[a] | 1532 local t=S[a] |
1485 while t and t>n do | 1533 while t and t>n do |
1486 local o={} | 1534 local o={} |
1487 e() | 1535 e() |
1488 local e=k(o,G[a]) | 1536 local e=k(o,V[a]) |
1489 a=e | 1537 a=e |
1490 t=L[a] | 1538 t=S[a] |
1491 end | 1539 end |
1492 return a | 1540 return a |
1493 end | 1541 end |
1494 function h(e) | 1542 function n(e) |
1495 k(e,0) | 1543 k(e,0) |
1496 end | 1544 end |
1497 local function N(e) | 1545 local function I(e) |
1498 local t={} | 1546 local t={} |
1499 local e=e.v.k | 1547 local e=e.v.k |
1500 Q(e=="VLOCAL"or e=="VUPVAL"or e=="VGLOBAL" | 1548 F(e=="VLOCAL"or e=="VUPVAL"or e=="VGLOBAL" |
1501 or e=="VINDEXED","syntax error") | 1549 or e=="VINDEXED","syntax error") |
1502 if o(",")then | 1550 if o(",")then |
1503 local e={} | 1551 local e={} |
1504 e.v={} | 1552 e.v={} |
1505 R(e.v) | 1553 O(e.v) |
1506 N(e) | 1554 I(e) |
1507 else | 1555 else |
1508 i("=") | 1556 i("=") |
1509 v(t) | 1557 f(t) |
1510 return | 1558 return |
1511 end | 1559 end |
1512 t.k="VNONRELOC" | 1560 t.k="VNONRELOC" |
1513 end | 1561 end |
1514 local function k(e,t) | 1562 local function k(e,t) |
1515 i("do") | 1563 i("do") |
1516 p(false) | 1564 p(false) |
1517 g(e) | 1565 z(e) |
1518 y() | |
1519 w() | 1566 w() |
1520 end | 1567 b() |
1521 local function L(e) | 1568 end |
1569 local function R(e) | |
1522 local t=r | 1570 local t=r |
1523 f("(for index)") | 1571 y("(for index)") |
1524 f("(for limit)") | 1572 y("(for limit)") |
1525 f("(for step)") | 1573 y("(for step)") |
1526 c(e) | 1574 m(e) |
1527 i("=") | 1575 i("=") |
1528 E() | 1576 _() |
1529 i(",") | 1577 i(",") |
1530 E() | 1578 _() |
1531 if o(",")then | 1579 if o(",")then |
1532 E() | 1580 _() |
1533 else | 1581 else |
1534 end | 1582 end |
1535 k(1,true) | 1583 k(1,true) |
1536 end | 1584 end |
1537 local function F(e) | 1585 local function M(e) |
1538 local t={} | 1586 local t={} |
1539 f("(for generator)") | 1587 y("(for generator)") |
1540 f("(for state)") | 1588 y("(for state)") |
1541 f("(for control)") | 1589 y("(for control)") |
1542 c(e) | 1590 m(e) |
1543 local e=1 | 1591 local e=1 |
1544 while o(",")do | 1592 while o(",")do |
1545 c(m()) | 1593 m(c()) |
1546 e=e+1 | 1594 e=e+1 |
1547 end | 1595 end |
1548 i("in") | 1596 i("in") |
1549 local a=r | 1597 local a=r |
1550 v(t) | 1598 f(t) |
1551 k(e,false) | 1599 k(e,false) |
1552 end | 1600 end |
1553 local function U(e) | 1601 local function F(e) |
1554 local a=false | 1602 local a=false |
1555 W(e) | 1603 Q(e) |
1556 while t=="."do | 1604 while t=="."do |
1557 H(e) | 1605 U(e) |
1558 end | 1606 end |
1559 if t==":"then | 1607 if t==":"then |
1560 a=true | 1608 a=true |
1561 H(e) | 1609 U(e) |
1562 end | 1610 end |
1563 return a | 1611 return a |
1564 end | 1612 end |
1565 function E() | 1613 function _() |
1566 local e={} | 1614 local e={} |
1567 h(e) | 1615 n(e) |
1568 end | 1616 end |
1569 local function k() | 1617 local function k() |
1570 local e={} | 1618 local e={} |
1571 h(e) | 1619 n(e) |
1572 end | 1620 end |
1573 local function E() | 1621 local function S() |
1574 e() | 1622 e() |
1575 k() | 1623 k() |
1576 i("then") | 1624 i("then") |
1577 y() | 1625 w() |
1578 end | 1626 end |
1579 local function H() | 1627 local function P() |
1580 local e,t={} | 1628 local t,e={} |
1581 c(m()) | 1629 m(c()) |
1582 e.k="VLOCAL" | 1630 t.k="VLOCAL" |
1583 g(1) | 1631 z(1) |
1584 T(t,false,l) | 1632 x(e,false,l) |
1585 end | 1633 end |
1586 local function W() | 1634 local function U() |
1587 local e=0 | 1635 local e=0 |
1588 local t={} | 1636 local t={} |
1589 repeat | 1637 repeat |
1590 c(m()) | 1638 m(c()) |
1591 e=e+1 | 1639 e=e+1 |
1592 until not o(",") | 1640 until not o(",") |
1593 if o("=")then | 1641 if o("=")then |
1594 v(t) | 1642 f(t) |
1595 else | 1643 else |
1596 t.k="VVOID" | 1644 t.k="VVOID" |
1597 end | 1645 end |
1598 g(e) | 1646 z(e) |
1599 end | 1647 end |
1600 function v(e) | 1648 function f(e) |
1601 h(e) | 1649 n(e) |
1602 while o(",")do | 1650 while o(",")do |
1603 h(e) | 1651 n(e) |
1604 end | 1652 end |
1605 end | 1653 end |
1606 function T(a,t,e) | 1654 function x(a,t,e) |
1607 C() | 1655 B() |
1608 i("(") | 1656 i("(") |
1609 if t then | 1657 if t then |
1610 f("self",true) | 1658 y("self",true) |
1611 g(1) | 1659 z(1) |
1612 end | 1660 end |
1613 J() | 1661 X() |
1614 i(")") | 1662 i(")") |
1615 x() | 1663 v() |
1616 s("end","function",e) | 1664 h("end","function",e) |
1617 M() | 1665 G() |
1618 end | 1666 end |
1619 function y() | 1667 function w() |
1620 p(false) | 1668 p(false) |
1621 x() | 1669 v() |
1622 w() | 1670 b() |
1623 end | 1671 end |
1624 function for_stat() | 1672 function for_stat() |
1625 local o=r | 1673 local o=r |
1626 p(true) | 1674 p(true) |
1627 e() | 1675 e() |
1628 local a=m() | 1676 local a=c() |
1629 local e=t | 1677 local e=t |
1630 if e=="="then | 1678 if e=="="then |
1631 L(a) | 1679 R(a) |
1632 elseif e==","or e=="in"then | 1680 elseif e==","or e=="in"then |
1633 F(a) | 1681 M(a) |
1634 else | 1682 else |
1635 n("'=' or 'in' expected") | 1683 s("'=' or 'in' expected") |
1636 end | 1684 end |
1637 s("end","for",o) | 1685 h("end","for",o) |
1638 w() | 1686 b() |
1639 end | 1687 end |
1640 function while_stat() | 1688 function while_stat() |
1641 local t=r | 1689 local t=r |
1642 e() | 1690 e() |
1643 k() | 1691 k() |
1644 p(true) | 1692 p(true) |
1645 i("do") | 1693 i("do") |
1646 y() | |
1647 s("end","while",t) | |
1648 w() | 1694 w() |
1695 h("end","while",t) | |
1696 b() | |
1649 end | 1697 end |
1650 function repeat_stat() | 1698 function repeat_stat() |
1651 local t=r | 1699 local t=r |
1652 p(true) | 1700 p(true) |
1653 p(false) | 1701 p(false) |
1654 e() | 1702 e() |
1655 x() | 1703 v() |
1656 s("until","repeat",t) | 1704 h("until","repeat",t) |
1657 k() | 1705 k() |
1658 w() | 1706 b() |
1659 w() | 1707 b() |
1660 end | 1708 end |
1661 function if_stat() | 1709 function if_stat() |
1662 local a=r | 1710 local a=r |
1663 local o={} | 1711 local o={} |
1664 E() | 1712 S() |
1665 while t=="elseif"do | 1713 while t=="elseif"do |
1666 E() | 1714 S() |
1667 end | 1715 end |
1668 if t=="else"then | 1716 if t=="else"then |
1669 e() | 1717 e() |
1670 y() | 1718 w() |
1671 end | 1719 end |
1672 s("end","if",a) | 1720 h("end","if",a) |
1673 end | 1721 end |
1674 function return_stat() | 1722 function return_stat() |
1675 local a={} | 1723 local a={} |
1676 e() | 1724 e() |
1677 local e=t | 1725 local e=t |
1678 if D[e]or e==";"then | 1726 if H[e]or e==";"then |
1679 else | 1727 else |
1680 v(a) | 1728 f(a) |
1681 end | 1729 end |
1682 end | 1730 end |
1683 function break_stat() | 1731 function break_stat() |
1684 local t=a.bl | 1732 local t=a.bl |
1685 e() | 1733 e() |
1686 while t and not t.isbreakable do | 1734 while t and not t.isbreakable do |
1687 t=t.prev | 1735 t=t.prev |
1688 end | 1736 end |
1689 if not t then | 1737 if not t then |
1690 n("no loop to break") | 1738 s("no loop to break") |
1691 end | 1739 end |
1692 end | 1740 end |
1693 function expr_stat() | 1741 function expr_stat() |
1694 local e={} | 1742 local e={} |
1695 e.v={} | 1743 e.v={} |
1696 R(e.v) | 1744 O(e.v) |
1697 if e.v.k=="VCALL"then | 1745 if e.v.k=="VCALL"then |
1698 else | 1746 else |
1699 e.prev=nil | 1747 e.prev=nil |
1700 N(e) | 1748 I(e) |
1701 end | 1749 end |
1702 end | 1750 end |
1703 function function_stat() | 1751 function function_stat() |
1704 local o=r | 1752 local a=r |
1705 local a,t={},{} | 1753 local o,t={},{} |
1706 e() | 1754 e() |
1707 local e=U(a) | 1755 local e=F(o) |
1708 T(t,e,o) | 1756 x(t,e,a) |
1709 end | 1757 end |
1710 function do_stat() | 1758 function do_stat() |
1711 local t=r | 1759 local t=r |
1712 e() | 1760 e() |
1713 y() | 1761 w() |
1714 s("end","do",t) | 1762 h("end","do",t) |
1715 end | 1763 end |
1716 function local_stat() | 1764 function local_stat() |
1717 e() | 1765 e() |
1718 if o("function")then | 1766 if o("function")then |
1719 H() | 1767 P() |
1720 else | 1768 else |
1721 W() | 1769 U() |
1722 end | 1770 end |
1723 end | 1771 end |
1724 local function i() | 1772 local function i() |
1725 r=l | 1773 r=l |
1726 local e=t | 1774 local e=t |
1727 local t=B[e] | 1775 local t=Y[e] |
1728 if t then | 1776 if t then |
1729 _M[t]() | 1777 D[t]() |
1730 if e=="return"or e=="break"then return true end | 1778 if e=="return"or e=="break"then return true end |
1731 else | 1779 else |
1732 expr_stat() | 1780 expr_stat() |
1733 end | 1781 end |
1734 return false | 1782 return false |
1735 end | 1783 end |
1736 function x() | 1784 function v() |
1737 local e=false | 1785 local e=false |
1738 while not e and not D[t]do | 1786 while not e and not H[t]do |
1739 e=i() | 1787 e=i() |
1740 o(";") | 1788 o(";") |
1741 end | 1789 end |
1742 end | 1790 end |
1743 function parser() | 1791 function parser() |
1744 C() | 1792 B() |
1745 a.is_vararg=true | 1793 a.is_vararg=true |
1746 e() | 1794 e() |
1747 x() | 1795 v() |
1748 O("<eof>") | 1796 L("<eof>") |
1749 M() | 1797 G() |
1750 return j,d | 1798 return q,u |
1751 end | 1799 end |
1752 function init(e,o,n) | 1800 function init(e,o,n) |
1753 u=1 | 1801 d=1 |
1754 K={} | 1802 W={} |
1755 local t=1 | 1803 local t=1 |
1756 _,q,z,S={},{},{},{} | 1804 T,j,A,C={},{},{},{} |
1757 for a=1,#e do | 1805 for a=1,#e do |
1758 local e=e[a] | 1806 local e=e[a] |
1759 local i=true | 1807 local i=true |
1760 if e=="TK_KEYWORD"or e=="TK_OP"then | 1808 if e=="TK_KEYWORD"or e=="TK_OP"then |
1761 e=o[a] | 1809 e=o[a] |
1762 elseif e=="TK_NAME"then | 1810 elseif e=="TK_NAME"then |
1763 e="<name>" | 1811 e="<name>" |
1764 q[t]=o[a] | 1812 j[t]=o[a] |
1765 elseif e=="TK_NUMBER"then | 1813 elseif e=="TK_NUMBER"then |
1766 e="<number>" | 1814 e="<number>" |
1767 q[t]=0 | 1815 j[t]=0 |
1768 elseif e=="TK_STRING"or e=="TK_LSTRING"then | 1816 elseif e=="TK_STRING"or e=="TK_LSTRING"then |
1769 e="<string>" | 1817 e="<string>" |
1770 q[t]="" | 1818 j[t]="" |
1771 elseif e=="TK_EOS"then | 1819 elseif e=="TK_EOS"then |
1772 e="<eof>" | 1820 e="<eof>" |
1773 else | 1821 else |
1774 i=false | 1822 i=false |
1775 end | 1823 end |
1776 if i then | 1824 if i then |
1777 _[t]=e | 1825 T[t]=e |
1778 z[t]=n[a] | 1826 A[t]=n[a] |
1779 S[t]=a | 1827 C[t]=a |
1780 t=t+1 | 1828 t=t+1 |
1781 end | 1829 end |
1782 end | 1830 end |
1783 j,I,d={},{},{} | 1831 q,N,u={},{},{} |
1784 b,A={},{} | 1832 g,E={},{} |
1785 end | 1833 end |
1786 return _M | 1834 D={ |
1835 expr=n, | |
1836 exp1=_, | |
1837 explist1=f, | |
1838 body=x, | |
1839 block=w, | |
1840 for_stat=for_stat, | |
1841 while_stat=while_stat, | |
1842 repeat_stat=repeat_stat, | |
1843 if_stat=if_stat, | |
1844 return_stat=return_stat, | |
1845 break_stat=break_stat, | |
1846 expr_stat=expr_stat, | |
1847 function_stat=function_stat, | |
1848 do_stat=do_stat, | |
1849 local_stat=local_stat, | |
1850 chunk=v, | |
1851 parser=parser, | |
1852 init=init | |
1853 } | |
1854 return D | |
1855 end) | |
1856 package.preload['minichunkspy']=(function(...) | |
1857 local _ENV=_ENV; | |
1858 local function e(t,...) | |
1859 local e=package.loaded[t]or _ENV[t]or{_NAME=t}; | |
1860 package.loaded[t]=e; | |
1861 for t=1,select("#",...)do | |
1862 (select(t,...))(e); | |
1863 end | |
1864 _ENV=e; | |
1865 _M=e; | |
1866 return e; | |
1867 end | |
1868 local m,t,u=string,table,math | |
1869 local a,v,n,e=ipairs,setmetatable,type,assert | |
1870 local a=__END_OF_GLOBALS__ | |
1871 local c,l,i=m.char,m.byte,m.sub | |
1872 local w,d,g=u.frexp,u.ldexp,u.abs | |
1873 local p=t.concat | |
1874 local a=u.huge | |
1875 local k=a-a | |
1876 local o=false | |
1877 local r=4 | |
1878 local s=4 | |
1879 local h=8 | |
1880 local t={} | |
1881 local function y() | |
1882 t[#t+1] | |
1883 ={o,r,s,h} | |
1884 end | |
1885 local function b() | |
1886 o,r,s,h | |
1887 =unpack(t[#t]) | |
1888 t[#t]=nil | |
1889 end | |
1890 local function t(e,t) | |
1891 return e.new(e,t) | |
1892 end | |
1893 local f={} | |
1894 local t=t{ | |
1895 new= | |
1896 function(e,a) | |
1897 local a=a or{} | |
1898 local t=f[e]or{ | |
1899 __index=e, | |
1900 __call=t | |
1901 } | |
1902 f[e]=t | |
1903 return v(a,t) | |
1904 end, | |
1905 } | |
1906 local j=t{ | |
1907 unpack=function(t,t,e)return nil,e end, | |
1908 pack=function(e,e)return""end | |
1909 } | |
1910 local f={} | |
1911 local function v(e) | |
1912 local t=f[e]or t{ | |
1913 unpack=function(o,a,t) | |
1914 return i(a,t,t+e-1),t+e | |
1915 end, | |
1916 pack=function(a,t)return i(t,1,e)end | |
1917 } | |
1918 f[e]=t | |
1919 return t | |
1920 end | |
1921 local q=t{ | |
1922 unpack=function(a,t,e) | |
1923 return l(t,e,e),e+1 | |
1924 end, | |
1925 pack=function(t,e)return c(e)end | |
1926 } | |
1927 local i=t{ | |
1928 unpack= | |
1929 function(t,e,n) | |
1930 local i,e,t,a=l(e,n,n+3) | |
1931 if o then i,e,t,a=a,t,e,i end | |
1932 return i+e*256+t*256^2+a*256^3,n+4 | |
1933 end, | |
1934 pack= | |
1935 function(t,s) | |
1936 e(n(s)=="number", | |
1937 "unexpected value type to pack as an uint32") | |
1938 local i,a,t,e | |
1939 e=s%2^32 | |
1940 i=e%256;e=(e-i)/256 | |
1941 a=e%256;e=(e-a)/256 | |
1942 t=e%256;e=(e-t)/256 | |
1943 if o then i,a,t,e=e,t,a,i end | |
1944 return c(i,a,t,e) | |
1945 end | |
1946 } | |
1947 local x=t{ | |
1948 unpack= | |
1949 function(a,e,t) | |
1950 local a=i:unpack(e,t) | |
1951 local e=i:unpack(e,t+4) | |
1952 if o then a,e=e,a end | |
1953 return a+e*2^32,t+8 | |
1954 end, | |
1955 pack= | |
1956 function(a,t) | |
1957 e(n(t)=="number", | |
1958 "unexpected value type to pack as an uint64") | |
1959 local e=t%2^32 | |
1960 local t=(t-e)/2^32 | |
1961 if o then e,t=t,e end | |
1962 return i:pack(e)..i:pack(t) | |
1963 end | |
1964 } | |
1965 local function E(e,a) | |
1966 local t=i:unpack(e,a) | |
1967 local e=i:unpack(e,a+4) | |
1968 if o then t,e=e,t end | |
1969 local a=e%2^20 | |
1970 local t=t | |
1971 local o=t+a*2^32 | |
1972 e=(e-a)/2^20 | |
1973 local t=e%2^11 | |
1974 local e=e<=t and 1 or-1 | |
1975 return e,t,o | |
1976 end | |
1977 local function c(n,a,t) | |
1978 local e=t%2^32 | |
1979 local t=(t-e)/2^32 | |
1980 local e=e | |
1981 local t=((n<0 and 2^11 or 0)+a)*2^20+t | |
1982 if o then e,t=t,e end | |
1983 return i.pack(nil,e)..i.pack(nil,t) | |
1984 end | |
1985 local function _(e) | |
1986 if e~=e then return e end | |
1987 if e==0 then e=1/e end | |
1988 return e>0 and 1 or-1 | |
1989 end | |
1990 local l=d(1,-1022-52) | |
1991 local f=l*2^52 | |
1992 local z=d(2^52-1,-1022-52) | |
1993 local f=d(2^53-1,1023-52) | |
1994 e(l~=0 and l/2==0) | |
1995 e(f~=a) | |
1996 e(f*2==a) | |
1997 local d=t{ | |
1998 unpack= | |
1999 function(t,e,i) | |
2000 local n,o,t=E(e,i) | |
2001 local e | |
2002 if o==0 then | |
2003 e=d(t,-1022-52) | |
2004 elseif o==2047 then | |
2005 e=t==0 and a or k | |
2006 else | |
2007 e=d(2^52+t,o-1023-52) | |
2008 end | |
2009 e=n*e | |
2010 return e,i+8 | |
2011 end, | |
2012 pack= | |
2013 function(t,e) | |
2014 if e~=e then | |
2015 return c(1,2047,2^52-1) | |
2016 end | |
2017 local o=_(e) | |
2018 e=g(e) | |
2019 if e==a then return c(o,2047,0)end | |
2020 if e==0 then return c(o,0,0)end | |
2021 local t,a | |
2022 if e<=z then | |
2023 t=0 | |
2024 a=e/l | |
2025 else | |
2026 local o,e=w(e) | |
2027 a=(2*o-1)*2^52 | |
2028 t=e+1022 | |
2029 end | |
2030 return c(o,t,a) | |
2031 end | |
2032 } | |
2033 local a=q | |
2034 local l={ | |
2035 [4]=i, | |
2036 [8]=x | |
2037 } | |
2038 local w={ | |
2039 [4]=float, | |
2040 [8]=d | |
2041 } | |
2042 local c=t{ | |
2043 unpack=function(a,t,e) | |
2044 return l[r]:unpack(t,e) | |
2045 end, | |
2046 pack=function(t,e) | |
2047 return l[r]:pack(e) | |
2048 end, | |
2049 } | |
2050 local i=t{ | |
2051 unpack=function(a,e,t) | |
2052 return l[s]:unpack(e,t) | |
2053 end, | |
2054 pack=function(t,e) | |
2055 return l[s]:pack(e) | |
2056 end, | |
2057 } | |
2058 local g=t{ | |
2059 unpack=function(a,t,e) | |
2060 return w[h]:unpack(t,e) | |
2061 end, | |
2062 pack=function(t,e) | |
2063 return w[h]:pack(e) | |
2064 end, | |
2065 } | |
2066 local k=v(4) | |
2067 local f=t{ | |
2068 unpack= | |
2069 function(t,s,o) | |
2070 local i={} | |
2071 local e,a=1,1 | |
2072 while t[e]do | |
2073 local n=t[e] | |
2074 local t=n.name | |
2075 if not t then t,a=a,a+1 end | |
2076 i[t],o=n:unpack(s,o) | |
2077 e=e+1 | |
2078 end | |
2079 return i,o | |
2080 end, | |
2081 pack= | |
2082 function(a,n) | |
2083 local i={} | |
2084 local e,t=1,1 | |
2085 while a[e]do | |
2086 local o=a[e] | |
2087 local a=o.name | |
2088 if not a then a,t=t,t+1 end | |
2089 i[e]=o:pack(n[a]) | |
2090 e=e+1 | |
2091 end | |
2092 return p(i) | |
2093 end | |
2094 } | |
2095 local d=t{ | |
2096 unpack= | |
2097 function(n,t,e) | |
2098 local o,e=i:unpack(t,e) | |
2099 local a={} | |
2100 local i=n.type | |
2101 for o=1,o do | |
2102 a[o],e=i:unpack(t,e) | |
2103 end | |
2104 return a,e | |
2105 end, | |
2106 pack= | |
2107 function(o,a) | |
2108 local t=#a | |
2109 local e={i:pack(t)} | |
2110 local o=o.type | |
2111 for t=1,t do | |
2112 e[#e+1]=o:pack(a[t]) | |
2113 end | |
2114 return p(e) | |
2115 end | |
2116 } | |
2117 local q=t{ | |
2118 unpack= | |
2119 function(o,a,t) | |
2120 local t,a=i:unpack(a,t) | |
2121 e(t==0 or t==1, | |
2122 "unpacked an unexpected value "..t.." for a Boolean") | |
2123 return t==1,a | |
2124 end, | |
2125 pack= | |
2126 function(a,t) | |
2127 e(n(t)=="boolean", | |
2128 "unexpected value type to pack as a Boolean") | |
2129 return i:pack(t and 1 or 0) | |
2130 end | |
2131 } | |
2132 local c=t{ | |
2133 unpack= | |
2134 function(t,a,e) | |
2135 local t,e=c:unpack(a,e) | |
2136 local o=nil | |
2137 if t>0 then | |
2138 local t=t-1 | |
2139 o=a:sub(e,e+t-1) | |
2140 end | |
2141 return o,e+t | |
2142 end, | |
2143 pack= | |
2144 function(a,t) | |
2145 e(n(t)=="nil"or n(t)=="string", | |
2146 "unexpected value type to pack as a String") | |
2147 if t==nil then | |
2148 return c:pack(0) | |
2149 end | |
2150 return c:pack(#t+1)..t.."\000" | |
2151 end | |
2152 } | |
2153 local p=f{ | |
2154 v(4){name="signature"}, | |
2155 a{name="version"}, | |
2156 a{name="format"}, | |
2157 a{name="endianness"}, | |
2158 a{name="sizeof_int"}, | |
2159 a{name="sizeof_size_t"}, | |
2160 a{name="sizeof_insn"}, | |
2161 a{name="sizeof_Number"}, | |
2162 a{name="integral_flag"}, | |
2163 } | |
2164 local v={ | |
2165 [0]=j, | |
2166 [1]=q, | |
2167 [3]=g, | |
2168 [4]=c, | |
2169 } | |
2170 local g=t{ | |
2171 unpack= | |
2172 function(i,o,t) | |
2173 local t,i=a:unpack(o,t) | |
2174 local a=v[t] | |
2175 e(a,"unknown constant type "..t.." to unpack") | |
2176 local a,o=a:unpack(o,i) | |
2177 if t==3 then | |
2178 e(n(a)=="number") | |
2179 end | |
2180 return{ | |
2181 type=t, | |
2182 value=a | |
2183 },o | |
2184 end, | |
2185 pack= | |
2186 function(t,e) | |
2187 local e,t=e.type,e.value | |
2188 return a:pack(e)..v[e]:pack(t) | |
2189 end | |
2190 } | |
2191 local v=f{ | |
2192 c{name="name"}, | |
2193 i{name="startpc"}, | |
2194 i{name="endpc"} | |
2195 } | |
2196 local a=f{ | |
2197 c{name="name"}, | |
2198 i{name="line"}, | |
2199 i{name="last_line"}, | |
2200 a{name="num_upvalues"}, | |
2201 a{name="num_parameters"}, | |
2202 a{name="is_vararg"}, | |
2203 a{name="max_stack_size"}, | |
2204 d{name="insns",type=k}, | |
2205 d{name="constants",type=g}, | |
2206 d{name="prototypes",type=nil}, | |
2207 d{name="source_lines",type=i}, | |
2208 d{name="locals",type=v}, | |
2209 d{name="upvalues",type=c}, | |
2210 } | |
2211 e(a[10].name=="prototypes", | |
2212 "missed the function prototype list") | |
2213 a[10].type=a | |
2214 local a=t{ | |
2215 unpack= | |
2216 function(i,d,t) | |
2217 local n={} | |
2218 local t,i=p:unpack(d,t) | |
2219 e(t.signature=="\027Lua","signature check failed") | |
2220 e(t.version==81,"version mismatch") | |
2221 e(t.format==0,"format mismatch") | |
2222 e(t.endianness==0 or | |
2223 t.endianness==1,"endianness mismatch") | |
2224 e(l[t.sizeof_int],"int size unsupported") | |
2225 e(l[t.sizeof_size_t],"size_t size unsupported") | |
2226 e(t.sizeof_insn==4,"insn size unsupported") | |
2227 e(w[t.sizeof_Number],"number size unsupported") | |
2228 e(t.integral_flag==0,"integral flag mismatch; only floats supported") | |
2229 y() | |
2230 o=t.endianness==0 | |
2231 r=t.sizeof_size_t | |
2232 s=t.sizeof_int | |
2233 h=t.sizeof_Number | |
2234 n.header=t | |
2235 n.body,i=a:unpack(d,i) | |
2236 b() | |
2237 return n,i | |
2238 end, | |
2239 pack= | |
2240 function(e,t) | |
2241 local i | |
2242 y() | |
2243 local e=t.header | |
2244 o=e.endianness==0 | |
2245 r=e.sizeof_size_t | |
2246 s=e.sizeof_int | |
2247 h=e.sizeof_Number | |
2248 i=p:pack(t.header)..a:pack(t.body) | |
2249 b() | |
2250 return i | |
2251 end | |
2252 } | |
2253 local function o(e) | |
2254 if n(e)=="function"then | |
2255 return o(m.dump(e)) | |
2256 end | |
2257 local t=a:unpack(e,1) | |
2258 local a=a:pack(t) | |
2259 if e==a then return true end | |
2260 local t | |
2261 local t=u.min(#e,#a) | |
2262 for t=1,t do | |
2263 local a=e:sub(t,t) | |
2264 local e=e:sub(t,t) | |
2265 if a~=e then | |
2266 return false,("chunk roundtripping failed: ".. | |
2267 "first byte difference at index %d"):format(t) | |
2268 end | |
2269 end | |
2270 return false,("chunk round tripping failed: ".. | |
2271 "original length %d vs. %d"):format(#e,#a) | |
2272 end | |
2273 return{ | |
2274 disassemble=function(e)return a:unpack(e,1)end, | |
2275 assemble=function(e)return a:pack(e)end, | |
2276 validate=o | |
2277 } | |
1787 end) | 2278 end) |
1788 do local e={}; | 2279 do local e={}; |
1789 e["vio"]="local vio = {};\ | 2280 e["vio"]="local vio = {};\ |
1790 vio.__index = vio; \ | 2281 vio.__index = vio; \ |
1791 \ | 2282 \9\ |
1792 function vio.open(string)\ | 2283 function vio.open(string)\ |
1793 return setmetatable({ pos = 1, data = string }, vio);\ | 2284 \9return setmetatable({ pos = 1, data = string }, vio);\ |
1794 end\ | 2285 end\ |
1795 \ | 2286 \ |
1796 function vio:read(format, ...)\ | 2287 function vio:read(format, ...)\ |
1797 if self.pos >= #self.data then return; end\ | 2288 \9if self.pos >= #self.data then return; end\ |
1798 if format == \"*a\" then\ | 2289 \9if format == \"*a\" then\ |
1799 local oldpos = self.pos;\ | 2290 \9\9local oldpos = self.pos;\ |
1800 self.pos = #self.data;\ | 2291 \9\9self.pos = #self.data;\ |
1801 return self.data:sub(oldpos, self.pos);\ | 2292 \9\9return self.data:sub(oldpos, self.pos);\ |
1802 elseif format == \"*l\" then\ | 2293 \9elseif format == \"*l\" then\ |
1803 local data;\ | 2294 \9\9local data;\ |
1804 data, self.pos = self.data:match(\"([^\\r\\n]*)\\r?\\n?()\", self.pos)\ | 2295 \9\9data, self.pos = self.data:match(\"([^\\r\\n]*)\\r?\\n?()\", self.pos)\ |
1805 return data;\ | 2296 \9\9return data;\ |
1806 elseif format == \"*n\" then\ | 2297 \9elseif format == \"*n\" then\ |
1807 local data;\ | 2298 \9\9local data;\ |
1808 data, self.pos = self.data:match(\"(%d+)()\", self.pos)\ | 2299 \9\9data, self.pos = self.data:match(\"(%d+)()\", self.pos)\ |
1809 return tonumber(data); \ | 2300 \9\9return tonumber(data);\9\ |
1810 elseif type(format) == \"number\" then\ | 2301 \9elseif type(format) == \"number\" then\ |
1811 local oldpos = self.pos;\ | 2302 \9\9local oldpos = self.pos;\ |
1812 self.pos = self.pos + format;\ | 2303 \9\9self.pos = self.pos + format;\ |
1813 return self.data:sub(oldpos, self.pos-1);\ | 2304 \9\9return self.data:sub(oldpos, self.pos-1);\ |
1814 end\ | 2305 \9end\ |
1815 end\ | 2306 end\ |
1816 \ | 2307 \ |
1817 function vio:seek(whence, offset)\ | 2308 function vio:seek(whence, offset)\ |
1818 if type(whence) == \"number\" then\ | 2309 \9if type(whence) == \"number\" then\ |
1819 whence, offset = \"cur\", whence;\ | 2310 \9\9whence, offset = \"cur\", whence;\ |
1820 end\ | 2311 \9end\ |
1821 offset = offset or 0;\ | 2312 \9offset = offset or 0;\ |
1822 \ | 2313 \9\ |
1823 if whence == \"cur\" then\ | 2314 \9if whence == \"cur\" then\ |
1824 self.pos = self.pos + offset;\ | 2315 \9\9self.pos = self.pos + offset;\ |
1825 elseif whence == \"set\" then\ | 2316 \9elseif whence == \"set\" then\ |
1826 self.pos = offset + 1;\ | 2317 \9\9self.pos = offset + 1;\ |
1827 elseif whence == \"end\" then\ | 2318 \9elseif whence == \"end\" then\ |
1828 self.pos = #self.data - offset;\ | 2319 \9\9self.pos = #self.data - offset;\ |
1829 end\ | 2320 \9end\ |
1830 \ | 2321 \9\ |
1831 return self.pos;\ | 2322 \9return self.pos;\ |
1832 end\ | 2323 end\ |
1833 \ | 2324 \ |
1834 local function _readline(f) return f:read(\"*l\"); end\ | 2325 local function _readline(f) return f:read(\"*l\"); end\ |
1835 function vio:lines()\ | 2326 function vio:lines()\ |
1836 return _readline, self;\ | 2327 \9return _readline, self;\ |
1837 end\ | 2328 end\ |
1838 \ | 2329 \ |
1839 function vio:write(...)\ | 2330 function vio:write(...)\ |
1840 for i=1,select('#', ...) do\ | 2331 \9for i=1,select('#', ...) do\ |
1841 local dat = tostring(select(i, ...));\ | 2332 \9\9local dat = tostring(select(i, ...));\ |
1842 self.data = self.data:sub(1, self.pos-1)..dat..self.data:sub(self.pos+#dat, -1);\ | 2333 \9\9self.data = self.data:sub(1, self.pos-1)..dat..self.data:sub(self.pos+#dat, -1);\ |
1843 end\ | 2334 \9end\ |
1844 end\ | 2335 end\ |
1845 \ | 2336 \ |
1846 function vio:close()\ | 2337 function vio:close()\ |
1847 self.pos, self.data = nil, nil;\ | 2338 \9self.pos, self.data = nil, nil;\ |
1848 end\ | 2339 end\ |
1849 \ | 2340 \ |
1850 "e["gunzip.lua"]="local base_char,keywords=128,{\"and\",\"break\",\"do\",\"else\",\"elseif\",\"end\",\"false\",\"for\",\"function\",\"if\",\"in\",\"local\",\"nil\",\"not\",\"or\",\"repeat\",\"return\",\"then\",\"true\",\"until\",\"while\",\"read\",\"nbits\",\"nbits_left_in_byte\",\"wnd_pos\",\"output\",\"val\",\"input\",}; function prettify(code) return code:gsub(\"[\"..string.char(base_char)..\"-\"..string.char(base_char+#keywords)..\"]\", \ | 2341 "e["gunzip.lua"]="local base_char,keywords=128,{\"and\",\"break\",\"do\",\"else\",\"elseif\",\"end\",\"false\",\"for\",\"function\",\"if\",\"in\",\"local\",\"nil\",\"not\",\"or\",\"repeat\",\"return\",\"then\",\"true\",\"until\",\"while\",\"read\",\"nbits\",\"nbits_left_in_byte\",\"wnd_pos\",\"output\",\"val\",\"input\",}; function prettify(code) return code:gsub(\"[\"..string.char(base_char)..\"-\"..string.char(base_char+#keywords)..\"]\", \ |
1851 function (c) return keywords[c:byte()-base_char]; end) end return assert(loadstring(prettify[===[ i,h,b,m,l,d,e,y,r,w,u,v,l,l=assert,error,ipairs,pairs,tostring,type,setmetatable,io,math,table.sort,math.max,string.char,io.open,_G; p(n) l={}; e=e({},l) l:__index(l) n=n(l);e[l]=n\ | 2342 \9function (c) return keywords[c:byte()-base_char]; end) end return setfenv(assert(loadstring(prettify[===[ i,h,b,m,l,d,e,y,r,w,\ |
2343 u,v,l,l=\ | |
2344 assert,error,ipairs,pairs,tostring,type,setmetatable,io,math,table.sort,\ | |
2345 math.max,string.char,io.open,_G;\ | |
2346 p(n)\ | |
2347 l={};\ | |
2348 e=e({},l)\ | |
2349 l:__index(l)\ | |
2350 n=n(l);e[l]=n\ | |
1852 n\ | 2351 n\ |
1853 \ | 2352 \ |
1854 e\ | 2353 e\ |
1855 \ | 2354 \ |
1856 l(n,l)l=l 1\ | 2355 l(n,l)\ |
1857 h({n},l+1)\ | 2356 l=l 1\ |
1858 _(n) l={}l.outbs=n\ | 2357 h({n},l+1)\ |
1859 l.wnd={}l.=1\ | 2358 \ |
2359 _(n)\ | |
2360 l={}\ | |
2361 l.outbs=n\ | |
2362 l.wnd={}\ | |
2363 l.=1\ | |
1860 l\ | 2364 l\ |
1861 \ | 2365 \ |
1862 t(l,e) n=l.\ | 2366 t(l,e)\ |
1863 l.outbs(e)l.wnd[n]=e\ | 2367 n=l.\ |
2368 l.outbs(e)\ | |
2369 l.wnd[n]=e\ | |
1864 l.=n%32768+1\ | 2370 l.=n%32768+1\ |
1865 \ | 2371 \ |
1866 n(l) i(l,'unexpected end of file')\ | 2372 n(l)\ |
1867 o(n,l) n%(l+l)>=l\ | 2373 i(l,'unexpected end of file')\ |
1868 \ | 2374 \ |
1869 a=p((l) 2^l ) c=e({},{__mode='k'}) g(o) l=1\ | 2375 o(n,l)\ |
1870 e={} e:() n\ | 2376 n%(l+l)>=l\ |
2377 \ | |
2378 a=p((l) 2^l )\ | |
2379 c=e({},{__mode='k'})\ | |
2380 g(o)\ | |
2381 l=1\ | |
2382 e={}\ | |
2383 e:()\ | |
2384 n\ | |
1871 l<=#o \ | 2385 l<=#o \ |
1872 n=o:byte(l)l=l+1\ | 2386 n=o:byte(l)\ |
2387 l=l+1\ | |
1873 \ | 2388 \ |
1874 n\ | 2389 n\ |
1875 \ | 2390 \ |
1876 e\ | 2391 e\ |
1877 \ | 2392 \ |
1878 l\ | 2393 l\ |
1879 s(d) n,l,o=0,0,{}; o:() l\ | 2394 s(d)\ |
1880 \ | 2395 n,l,o=0,0,{};\ |
1881 o:(e)e=e 1\ | 2396 o:()\ |
2397 l\ | |
2398 \ | |
2399 o:(e)\ | |
2400 e=e 1\ | |
1882 l<e \ | 2401 l<e \ |
1883 e=d:() e \ | 2402 e=d:()\ |
2403 e \ | |
1884 n=n+a[l]*e\ | 2404 n=n+a[l]*e\ |
1885 l=l+8\ | 2405 l=l+8\ |
1886 \ | 2406 \ |
1887 o=a[e] a=n%o\ | 2407 o=a[e]\ |
2408 a=n%o\ | |
1888 n=(n-a)/o\ | 2409 n=(n-a)/o\ |
1889 l=l-e\ | 2410 l=l-e\ |
1890 a\ | 2411 a\ |
1891 \ | 2412 \ |
1892 c[o]=\ | 2413 c[o]=\ |
1893 o\ | 2414 o\ |
1894 \ | 2415 \ |
1895 f(l) c[l] l s(g(l))\ | 2416 f(l)\ |
1896 s(l) n\ | 2417 c[l] l s(g(l))\ |
2418 \ | |
2419 s(l)\ | |
2420 n\ | |
1897 y.type(l)=='file'\ | 2421 y.type(l)=='file'\ |
1898 n=(n)l:write(v(n))\ | 2422 n=(n)l:write(v(n))\ |
1899 d(l)=='function'\ | 2423 d(l)=='function'\ |
1900 n=l\ | 2424 n=l\ |
1901 \ | 2425 \ |
1902 n\ | 2426 n\ |
1903 \ | 2427 \ |
1904 d(e,o) l={} o \ | 2428 d(e,o)\ |
2429 l={}\ | |
2430 o \ | |
1905 e,n m(e)\ | 2431 e,n m(e)\ |
1906 n~=0 \ | 2432 n~=0 \ |
1907 l[#l+1]={=e,=n}\ | 2433 l[#l+1]={=e,=n}\ |
2434 \ | |
1908 \ | 2435 \ |
1909 \ | 2436 \ |
1910 n=1,#e-2,2 \ | 2437 n=1,#e-2,2 \ |
1911 o,n,e=e[n],e[n+1],e[n+2] n~=0 \ | 2438 o,n,e=e[n],e[n+1],e[n+2]\ |
2439 n~=0 \ | |
1912 e=o,e-1 \ | 2440 e=o,e-1 \ |
1913 l[#l+1]={=e,=n}\ | 2441 l[#l+1]={=e,=n}\ |
1914 \ | 2442 \ |
1915 \ | 2443 \ |
1916 \ | 2444 \ |
1917 w(l,(n,l) n.==l. n.<l. n.<l.\ | 2445 \ |
1918 ) e=1\ | 2446 w(l,(n,l)\ |
2447 n.==l. n.<l. n.<l.\ | |
2448 )\ | |
2449 e=1\ | |
1919 o=0\ | 2450 o=0\ |
1920 n,l b(l)\ | 2451 n,l b(l)\ |
1921 l.~=o \ | 2452 l.~=o \ |
1922 e=e*a[l.-o]o=l.\ | 2453 e=e*a[l.-o]\ |
2454 o=l.\ | |
1923 \ | 2455 \ |
1924 l.code=e\ | 2456 l.code=e\ |
1925 e=e+1\ | 2457 e=e+1\ |
1926 \ | 2458 \ |
1927 e=r.huge\ | 2459 e=r.huge\ |
1928 c={} n,l b(l)\ | 2460 c={}\ |
1929 e=r.min(e,l.)c[l.code]=l.\ | 2461 n,l b(l)\ |
1930 \ | 2462 e=r.min(e,l.)\ |
1931 o(n,e) l=0\ | 2463 c[l.code]=l.\ |
2464 \ | |
2465 o(n,e)\ | |
2466 l=0\ | |
1932 e=1,e \ | 2467 e=1,e \ |
1933 e=n%2\ | 2468 e=n%2\ |
1934 n=(n-e)/2\ | 2469 n=(n-e)/2\ |
1935 l=l*2+e\ | 2470 l=l*2+e\ |
1936 \ | 2471 \ |
1937 l\ | 2472 l\ |
1938 \ | 2473 \ |
1939 d=p((l) a[e]+o(l,e)) l:(a) o,l=1,0\ | 2474 d=p(\ |
2475 (l) a[e]+o(l,e))\ | |
2476 l:(a)\ | |
2477 o,l=1,0\ | |
1940 1 \ | 2478 1 \ |
1941 l==0 \ | 2479 l==0 \ |
1942 o=d[n(a:(e))]l=l+e\ | 2480 o=d[n(a:(e))]\ |
2481 l=l+e\ | |
1943 \ | 2482 \ |
1944 n=n(a:())l=l+1\ | 2483 n=n(a:())\ |
2484 l=l+1\ | |
1945 o=o*2+n\ | 2485 o=o*2+n\ |
1946 \ | 2486 \ |
1947 l=c[o] l \ | 2487 l=c[o]\ |
2488 l \ | |
1948 l\ | 2489 l\ |
1949 \ | 2490 \ |
1950 \ | 2491 \ |
1951 \ | 2492 \ |
1952 l\ | 2493 l\ |
1953 \ | 2494 \ |
1954 b(l) a=2^1\ | 2495 b(l)\ |
2496 a=2^1\ | |
1955 e=2^2\ | 2497 e=2^2\ |
1956 c=2^3\ | 2498 c=2^3\ |
1957 d=2^4\ | 2499 d=2^4\ |
1958 n=l:(8) n=l:(8) n=l:(8) n=l:(8) t=l:(32) t=l:(8) t=l:(8) o(n,e)\ | 2500 n=l:(8)\ |
1959 n=l:(16) e=0\ | 2501 n=l:(8)\ |
2502 n=l:(8)\ | |
2503 n=l:(8)\ | |
2504 t=l:(32)\ | |
2505 t=l:(8)\ | |
2506 t=l:(8)\ | |
2507 o(n,e)\ | |
2508 n=l:(16)\ | |
2509 e=0\ | |
1960 n=1,n \ | 2510 n=1,n \ |
1961 e=l:(8)\ | 2511 e=l:(8)\ |
2512 \ | |
1962 \ | 2513 \ |
1963 o(n,c)\ | 2514 o(n,c)\ |
1964 l:(8)~=0 \ | 2515 l:(8)~=0 \ |
1965 \ | 2516 \ |
1966 o(n,d)\ | 2517 o(n,d)\ |
1967 l:(8)~=0 \ | 2518 l:(8)~=0 \ |
1968 \ | 2519 \ |
1969 o(n,a)\ | 2520 o(n,a)\ |
1970 l:(16)\ | 2521 l:(16)\ |
1971 \ | 2522 \ |
1972 p(l) f=l:(5) i=l:(5) e=n(l:(4)) a=e+4\ | 2523 \ |
1973 e={} o={16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15} n=1,a \ | 2524 p(l)\ |
1974 l=l:(3) n=o[n]e[n]=l\ | 2525 f=l:(5)\ |
1975 \ | 2526 i=l:(5)\ |
1976 e=d(e,) r(o) t={} a\ | 2527 e=n(l:(4))\ |
2528 a=e+4\ | |
2529 e={}\ | |
2530 o={\ | |
2531 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}\ | |
2532 n=1,a \ | |
2533 l=l:(3)\ | |
2534 n=o[n]\ | |
2535 e[n]=l\ | |
2536 \ | |
2537 e=d(e,)\ | |
2538 r(o)\ | |
2539 t={}\ | |
2540 a\ | |
1977 c=0\ | 2541 c=0\ |
1978 c<o \ | 2542 c<o \ |
1979 o=e:(l) e\ | 2543 o=e:(l)\ |
2544 e\ | |
1980 o<=15 \ | 2545 o<=15 \ |
1981 e=1\ | 2546 e=1\ |
1982 a=o\ | 2547 a=o\ |
1983 o==16 \ | 2548 o==16 \ |
1984 e=3+n(l:(2)) o==17 \ | 2549 e=3+n(l:(2))\ |
1985 e=3+n(l:(3))a=0\ | 2550 o==17 \ |
2551 e=3+n(l:(3))\ | |
2552 a=0\ | |
1986 o==18 \ | 2553 o==18 \ |
1987 e=11+n(l:(7))a=0\ | 2554 e=11+n(l:(7))\ |
2555 a=0\ | |
1988 \ | 2556 \ |
1989 h'ASSERT'\ | 2557 h'ASSERT'\ |
2558 \ | |
1990 l=1,e \ | 2559 l=1,e \ |
1991 t[c]=a\ | 2560 t[c]=a\ |
1992 c=c+1\ | 2561 c=c+1\ |
1993 \ | 2562 \ |
1994 \ | 2563 \ |
1995 l=d(t,) l\ | 2564 l=d(t,)\ |
2565 l\ | |
1996 \ | 2566 \ |
1997 n=f+257\ | 2567 n=f+257\ |
1998 l=i+1\ | 2568 l=i+1\ |
1999 n=r(n) l=r(l) n,l\ | 2569 n=r(n)\ |
2570 l=r(l)\ | |
2571 n,l\ | |
2000 \ | 2572 \ |
2001 a\ | 2573 a\ |
2002 o\ | 2574 o\ |
2003 c\ | 2575 c\ |
2004 r\ | 2576 r\ |
2005 h(e,n,l,d) l=l:(e) l<256 \ | 2577 h(e,n,l,d)\ |
2006 t(n,l) l==256 \ | 2578 l=l:(e)\ |
2579 l<256 \ | |
2580 t(n,l)\ | |
2581 l==256 \ | |
2007 \ | 2582 \ |
2008 \ | 2583 \ |
2009 a \ | 2584 a \ |
2010 l={[257]=3} e=1\ | 2585 l={[257]=3}\ |
2586 e=1\ | |
2011 n=258,285,4 \ | 2587 n=258,285,4 \ |
2012 n=n,n+3 l[n]=l[n-1]+e \ | 2588 n=n,n+3 l[n]=l[n-1]+e \ |
2013 n~=258 e=e*2 \ | 2589 n~=258 e=e*2 \ |
2014 \ | 2590 \ |
2015 l[285]=258\ | 2591 l[285]=258\ |
2016 a=l\ | 2592 a=l\ |
2017 \ | 2593 \ |
2018 o \ | 2594 o \ |
2019 l={} e=257,285 \ | 2595 l={}\ |
2020 n=u(e-261,0)l[e]=(n-(n%4))/4\ | 2596 e=257,285 \ |
2597 n=u(e-261,0)\ | |
2598 l[e]=(n-(n%4))/4\ | |
2021 \ | 2599 \ |
2022 l[285]=0\ | 2600 l[285]=0\ |
2023 o=l\ | 2601 o=l\ |
2024 \ | 2602 \ |
2025 a=a[l] l=o[l] l=e:(l) o=a+l\ | 2603 a=a[l]\ |
2604 l=o[l]\ | |
2605 l=e:(l)\ | |
2606 o=a+l\ | |
2026 c \ | 2607 c \ |
2027 e={[0]=1} l=1\ | 2608 e={[0]=1}\ |
2609 l=1\ | |
2028 n=1,29,2 \ | 2610 n=1,29,2 \ |
2029 n=n,n+1 e[n]=e[n-1]+l \ | 2611 n=n,n+1 e[n]=e[n-1]+l \ |
2030 n~=1 l=l*2 \ | 2612 n~=1 l=l*2 \ |
2031 \ | 2613 \ |
2032 c=e\ | 2614 c=e\ |
2033 \ | 2615 \ |
2034 r \ | 2616 r \ |
2035 n={} e=0,29 \ | 2617 n={}\ |
2036 l=u(e-2,0)n[e]=(l-(l%2))/2\ | 2618 e=0,29 \ |
2619 l=u(e-2,0)\ | |
2620 n[e]=(l-(l%2))/2\ | |
2037 \ | 2621 \ |
2038 r=n\ | 2622 r=n\ |
2039 \ | 2623 \ |
2040 l=d:(e) a=c[l] l=r[l] l=e:(l) l=a+l\ | 2624 l=d:(e)\ |
2625 a=c[l]\ | |
2626 l=r[l]\ | |
2627 l=e:(l)\ | |
2628 l=a+l\ | |
2041 e=1,o \ | 2629 e=1,o \ |
2042 l=(n.-1-l)%32768+1\ | 2630 l=(n.-1-l)%32768+1\ |
2043 t(n,i(n.wnd[l],'invalid distance'))\ | 2631 t(n,i(n.wnd[l],'invalid distance'))\ |
2632 \ | |
2044 \ | 2633 \ |
2045 \ | 2634 \ |
2046 \ | 2635 \ |
2047 u(l,a) i=l:(1) e=l:(2) r=0\ | 2636 u(l,a)\ |
2637 i=l:(1)\ | |
2638 e=l:(2)\ | |
2639 r=0\ | |
2048 o=1\ | 2640 o=1\ |
2049 c=2\ | 2641 c=2\ |
2050 f=3\ | 2642 f=3\ |
2051 e==r \ | 2643 e==r \ |
2052 l:(l:()) e=l:(16) o=n(l:(16)) e=1,e \ | 2644 l:(l:())\ |
2053 l=n(l:(8))t(a,l)\ | 2645 e=l:(16)\ |
2646 o=n(l:(16))\ | |
2647 e=1,e \ | |
2648 l=n(l:(8))\ | |
2649 t(a,l)\ | |
2650 \ | |
2054 e==o e==c \ | 2651 e==o e==c \ |
2055 n,o\ | 2652 n,o\ |
2056 e==c \ | 2653 e==c \ |
2057 n,o=p(l)\ | 2654 n,o=p(l)\ |
2058 n=d{0,8,144,9,256,7,280,8,288,}o=d{0,5,32,}\ | 2655 \ |
2059 h(l,a,n,o);\ | 2656 n=d{0,8,144,9,256,7,280,8,288,}\ |
2657 o=d{0,5,32,}\ | |
2658 \ | |
2659 h(\ | |
2660 l,a,n,o\ | |
2661 );\ | |
2662 \ | |
2060 i~=0\ | 2663 i~=0\ |
2061 \ | 2664 \ |
2062 e(l) n,l=f(l.),_(s(l.)) u(n,l)\ | 2665 e(l)\ |
2063 (n) l=f(n.) n=s(n.)b(l)e{=l,=n}l:(l:())l:()\ | 2666 n,l=f(l.)\ |
2064 ]===], '@gunzip.lua'))()"e["lua5.1.min.js"]="////////////////////////////////////////////////////////////////////////////////\ | 2667 ,_(s(l.))\ |
2065 // lua5.1.5.js: Lua 5.1.5 in JavaScript\ | 2668 u(n,l)\ |
2066 // This file is a part of lua5.1.js project:\ | 2669 \ |
2067 // https://github.com/logiceditor-com/lua5.1.js/\ | 2670 (n)\ |
2068 // Copyright (c) LogicEditor <info@logiceditor.com>\ | 2671 l=f(n.)\ |
2069 // Copyright (c) lua5.1.js authors\ | 2672 n=s(n.)\ |
2070 // Distributed under the terms of the MIT license:\ | 2673 b(l)\ |
2071 // https://github.com/logiceditor-com/lua5.1.js/tree/master/COPYRIGHT\ | 2674 e{=l,=n}\ |
2072 // Based on original Lua 5.1.5 header files:\ | 2675 l:(l:())\ |
2073 // Copyright (c) 1994-2012 Lua.org, PUC-Rio\ | 2676 l:()\ |
2074 ////////////////////////////////////////////////////////////////////////////////\ | 2677 \ |
2075 // WARNING: Emscriptenized code does not like minification.\ | 2678 ]===], '@gunzip.lua')), getfenv())()"e["squish.debug"]="package.preload['minichunkspy']=(function(...)local _ENV=_ENV;local function module(name,...)local t=package.loaded[name]or _ENV[name]or{_NAME=name};package.loaded[name]=t;for i=1,select(\"#\",...)do(select(i,...))(t);end\ |
2076 // Keep this file as is and enable compression in your HTTP server.\ | 2679 _ENV=t;_M=t;return t;end\ |
2077 ////////////////////////////////////////////////////////////////////////////////\ | 2680 local string,table,math=string,table,math\ |
2078 \ | 2681 local ipairs,setmetatable,type,assert=ipairs,setmetatable,type,assert\ |
2079 var Lua5_1 = Lua5_1 || { };\ | 2682 local _=__END_OF_GLOBALS__\ |
2080 \ | 2683 local string_char,string_byte,string_sub=string.char,string.byte,string.sub\ |
2081 ////////////////////////////////////////////////////////////////////////////////\ | 2684 local table_concat=table.concat\ |
2082 \ | 2685 local math_abs,math_ldexp,math_frexp=math.abs,math.ldexp,math.frexp\ |
2083 (function(Lua5_1) {\ | 2686 local Inf=math.huge\ |
2084 \ | 2687 local Nan=Inf-Inf\ |
2085 ////////////////////////////////////////////////////////////////////////////////\ | 2688 local BIG_ENDIAN=false\ |
2086 \ | 2689 local function construct(class,...)return class.new(class,...)end\ |
2087 // Note: For maximum-speed code, see \"Optimizing Code\" on the Emscripten wiki, https://github.com/kripken/emscripten/wiki/Optimizing-Code\ | 2690 local mt_memo={}local Field=construct{new=function(class,self)local self=self or{}local mt=mt_memo[class]or{__index=class,__call=construct}mt_memo[class]=mt\ |
2088 // Note: Some Emscripten settings may limit the speed of the generated code.\ | 2691 return setmetatable(self,mt)end,}local None=Field{unpack=function(self,bytes,ix)return nil,ix end,pack=function(self,val)return\"\"end}local char_memo={}local function char(n)local field=char_memo[n]or Field{unpack=function(self,bytes,ix)return string_sub(bytes,ix,ix+n-1),ix+n\ |
2089 // The Module object: Our interface to the outside world. We import\ | 2692 end,pack=function(self,val)return string_sub(val,1,n)end}char_memo[n]=field\ |
2090 // and export values on it, and do the work to get that through\ | 2693 return field\ |
2091 // closure compiler if necessary. There are various ways Module can be used:\ | 2694 end\ |
2092 // 1. Not defined. We create it here\ | 2695 local uint8=Field{unpack=function(self,bytes,ix)return string_byte(bytes,ix,ix),ix+1\ |
2093 // 2. A function parameter, function(Module) { ..generated code.. }\ | 2696 end,pack=function(self,val)return string_char(val)end}local uint32=Field{unpack=function(self,bytes,ix)local a,b,c,d=string_byte(bytes,ix,ix+3)if BIG_ENDIAN then a,b,c,d=d,c,b,a end\ |
2094 // 3. pre-run appended it, var Module = {}; ..generated code..\ | 2697 return a+b*256+c*256^2+d*256^3,ix+4\ |
2095 // 4. External script tag defines var Module.\ | 2698 end,pack=function(self,val)assert(type(val)==\"number\",\"unexpected value type to pack as an uint32\")local a,b,c,d\ |
2096 // We need to do an eval in order to handle the closure compiler\ | 2699 d=val%2^32\ |
2097 // case, where this code here is minified but Module was defined\ | 2700 a=d%256;d=(d-a)/256\ |
2098 // elsewhere (e.g. case 4 above). We also need to check if Module\ | 2701 b=d%256;d=(d-b)/256\ |
2099 // already exists (e.g. case 3 above).\ | 2702 c=d%256;d=(d-c)/256\ |
2100 // Note that if you want to run closure, and also to use Module\ | 2703 if BIG_ENDIAN then a,b,c,d=d,c,b,a end\ |
2101 // after the generated code, you will need to define var Module = {};\ | 2704 return string_char(a,b,c,d)end}local int32=uint32{unpack=function(self,bytes,ix)local val,ix=uint32:unpack(bytes,ix)return val<2^32 and val or(val-2^31),ix\ |
2102 // before the code. Then that object will be used in the code, and you\ | 2705 end}local Byte=uint8\ |
2103 // can continue to use Module afterwards as well.\ | 2706 local Size_t=uint32\ |
2104 var Module;\ | 2707 local Integer=int32\ |
2105 if (!Module) Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()');\ | 2708 local Number=char(8)local Insn=char(4)local Struct=Field{unpack=function(self,bytes,ix)local val={}local i,j=1,1\ |
2106 // Sometimes an existing Module object exists with properties\ | 2709 while self[i]do\ |
2107 // meant to overwrite the default module functionality. Here\ | 2710 local field=self[i]local key=field.name\ |
2108 // we collect those properties and reapply _after_ we configure\ | 2711 if not key then key,j=j,j+1 end\ |
2109 // the current environment's defaults to avoid having to be so\ | 2712 val[key],ix=field:unpack(bytes,ix)i=i+1\ |
2110 // defensive during initialization.\ | 2713 end\ |
2111 var moduleOverrides = {};\ | 2714 return val,ix\ |
2112 for (var key in Module) {\ | 2715 end,pack=function(self,val)local data={}local i,j=1,1\ |
2113 if (Module.hasOwnProperty(key)) {\ | 2716 while self[i]do\ |
2114 moduleOverrides[key] = Module[key];\ | 2717 local field=self[i]local key=field.name\ |
2115 }\ | 2718 if not key then key,j=j,j+1 end\ |
2116 }\ | 2719 data[i]=field:pack(val[key])i=i+1\ |
2117 // The environment setup code below is customized to use Module.\ | 2720 end\ |
2118 // *** Environment setup code ***\ | 2721 return table_concat(data)end}local List=Field{unpack=function(self,bytes,ix)local len,ix=Integer:unpack(bytes,ix)local vals={}local field=self.type\ |
2119 var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';\ | 2722 for i=1,len do\ |
2120 var ENVIRONMENT_IS_WEB = typeof window === 'object';\ | 2723 vals[i],ix=field:unpack(bytes,ix)end\ |
2121 var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\ | 2724 return vals,ix\ |
2122 var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\ | 2725 end,pack=function(self,vals)local len=#vals\ |
2123 if (ENVIRONMENT_IS_NODE) {\ | 2726 local data={Integer:pack(len)}local field=self.type\ |
2124 // Expose functionality in the same simple way that the shells work\ | 2727 for i=1,len do\ |
2125 // Note that we pollute the global namespace here, otherwise we break in node\ | 2728 data[#data+1]=field:pack(vals[i])end\ |
2126 Module['print'] = function(x) {\ | 2729 return table_concat(data)end}local Boolean=Field{unpack=function(self,bytes,ix)local val,ix=Integer:unpack(bytes,ix)assert(val==0 or val==1,\"unpacked an unexpected value \"..val..\" for a Boolean\")return val==1,ix\ |
2127 process['stdout'].write(x + '\\n');\ | 2730 end,pack=function(self,val)assert(type(val)==\"boolean\",\"unexpected value type to pack as a Boolean\")return Integer:pack(val and 1 or 0)end}local String=Field{unpack=function(self,bytes,ix)local len,ix=Integer:unpack(bytes,ix)local val=nil\ |
2128 };\ | 2731 if len>0 then\ |
2129 Module['printErr'] = function(x) {\ | 2732 local string_len=len-1\ |
2130 process['stderr'].write(x + '\\n');\ | 2733 val=bytes:sub(ix,ix+string_len-1)end\ |
2131 };\ | 2734 return val,ix+len\ |
2132 var nodeFS = require('fs');\ | 2735 end,pack=function(self,val)assert(type(val)==\"nil\"or type(val)==\"string\",\"unexpected value type to pack as a String\")if val==nil then\ |
2133 var nodePath = require('path');\ | 2736 return Integer:pack(0)end\ |
2134 Module['read'] = function(filename, binary) {\ | 2737 return Integer:pack(#val+1)..val..\"\\0\"end}local ChunkHeader=Struct{char(4){name=\"signature\"},Byte{name=\"version\"},Byte{name=\"format\"},Byte{name=\"endianness\"},Byte{name=\"sizeof_int\"},Byte{name=\"sizeof_size_t\"},Byte{name=\"sizeof_insn\"},Byte{name=\"sizeof_Number\"},Byte{name=\"integral_flag\"},}local ConstantTypes={[0]=None,[1]=Boolean,[3]=Number,[4]=String,}local Constant=Field{unpack=function(self,bytes,ix)local t,ix=Byte:unpack(bytes,ix)local field=ConstantTypes[t]assert(field,\"unknown constant type \"..t..\" to unpack\")local v,ix=field:unpack(bytes,ix)return{type=t,value=v},ix\ |
2135 filename = nodePath['normalize'](filename);\ | 2738 end,pack=function(self,val)local t,v=val.type,val.value\ |
2136 var ret = nodeFS['readFileSync'](filename);\ | 2739 return Byte:pack(t)..ConstantTypes[t]:pack(v)end}local Local=Struct{String{name=\"name\"},Integer{name=\"startpc\"},Integer{name=\"endpc\"}}local Function=Struct{String{name=\"name\"},Integer{name=\"line\"},Integer{name=\"last_line\"},Byte{name=\"num_upvalues\"},Byte{name=\"num_parameters\"},Byte{name=\"is_vararg\"},Byte{name=\"max_stack_size\"},List{name=\"insns\",type=Insn},List{name=\"constants\",type=Constant},List{name=\"prototypes\",type=nil},List{name=\"source_lines\",type=Integer},List{name=\"locals\",type=Local},List{name=\"upvalues\",type=String},}assert(Function[10].name==\"prototypes\",\"missed the function prototype list\")Function[10].type=Function\ |
2137 // The path is absolute if the normalized version is the same as the resolved.\ | 2740 local Chunk=Struct{ChunkHeader{name=\"header\"},Function{name=\"body\"}}local function validate(chunk)if type(chunk)==\"function\"then\ |
2138 if (!ret && filename != nodePath['resolve'](filename)) {\ | 2741 return validate(string.dump(chunk))end\ |
2139 filename = path.join(__dirname, '..', 'src', filename);\ | 2742 local f=Chunk:unpack(chunk,1)local chunk2=Chunk:pack(f)if chunk==chunk2 then return true end\ |
2140 ret = nodeFS['readFileSync'](filename);\ | 2743 local i\ |
2141 }\ | 2744 local len=math.min(#chunk,#chunk2)for i=1,len do\ |
2142 if (ret && !binary) ret = ret.toString();\ | 2745 local a=chunk:sub(i,i)local b=chunk:sub(i,i)if a~=b then\ |
2143 return ret;\ | 2746 return false,(\"chunk roundtripping failed: \"..\"first byte difference at index %d\"):format(i)end\ |
2144 };\ | 2747 end\ |
2145 Module['readBinary'] = function(filename) { return Module['read'](filename, true) };\ | 2748 return false,(\"chunk round tripping failed: \"..\"original length %d vs. %d\"):format(#chunk,#chunk2)end\ |
2146 Module['load'] = function(f) {\ | 2749 return{disassemble=function(chunk)return Chunk:unpack(chunk,1)end,assemble=function(disassembled)return Chunk:pack(disassembled)end,validate=validate}end)local cs=require\"minichunkspy\"local function ___adjust_chunk(chunk,newname,lineshift)local c=cs.disassemble(string.dump(chunk));c.body.name=newname;lineshift=-c.body.line;local function shiftlines(c)c.line=c.line+lineshift;c.last_line=c.last_line+lineshift;for i,line in ipairs(c.source_lines)do\ |
2147 globalEval(read(f));\ | 2750 c.source_lines[i]=line+lineshift;end\ |
2148 };\ | 2751 for i,f in ipairs(c.prototypes)do\ |
2149 Module['arguments'] = process['argv'].slice(2);\ | 2752 shiftlines(f);end\ |
2150 module.exports = Module;\ | 2753 end\ |
2151 }\ | 2754 shiftlines(c.body);return assert(loadstring(cs.assemble(c),newname))();end\ |
2152 else if (ENVIRONMENT_IS_SHELL) {\ | |
2153 Module['print'] = print;\ | |
2154 if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm\ | |
2155 if (typeof read != 'undefined') {\ | |
2156 Module['read'] = read;\ | |
2157 } else {\ | |
2158 Module['read'] = function() { throw 'no read() available (jsc?)' };\ | |
2159 }\ | |
2160 Module['readBinary'] = function(f) {\ | |
2161 return read(f, 'binary');\ | |
2162 };\ | |
2163 if (typeof scriptArgs != 'undefined') {\ | |
2164 Module['arguments'] = scriptArgs;\ | |
2165 } else if (typeof arguments != 'undefined') {\ | |
2166 Module['arguments'] = arguments;\ | |
2167 }\ | |
2168 this['Module'] = Module;\ | |
2169 }\ | |
2170 else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\ | |
2171 Module['read'] = function(url) {\ | |
2172 var xhr = new XMLHttpRequest();\ | |
2173 xhr.open('GET', url, false);\ | |
2174 xhr.send(null);\ | |
2175 return xhr.responseText;\ | |
2176 };\ | |
2177 if (typeof arguments != 'undefined') {\ | |
2178 Module['arguments'] = arguments;\ | |
2179 }\ | |
2180 if (ENVIRONMENT_IS_WEB) {\ | |
2181 Module['print'] = function(x) {\ | |
2182 console.log(x);\ | |
2183 };\ | |
2184 Module['printErr'] = function(x) {\ | |
2185 console.log(x);\ | |
2186 };\ | |
2187 this['Module'] = Module;\ | |
2188 } else if (ENVIRONMENT_IS_WORKER) {\ | |
2189 // We can do very little here...\ | |
2190 var TRY_USE_DUMP = false;\ | |
2191 Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== \"undefined\") ? (function(x) {\ | |
2192 dump(x);\ | |
2193 }) : (function(x) {\ | |
2194 // self.postMessage(x); // enable this if you want stdout to be sent as messages\ | |
2195 }));\ | |
2196 Module['load'] = importScripts;\ | |
2197 }\ | |
2198 }\ | |
2199 else {\ | |
2200 // Unreachable because SHELL is dependent on the others\ | |
2201 throw 'Unknown runtime environment. Where are we?';\ | |
2202 }\ | |
2203 function globalEval(x) {\ | |
2204 eval.call(null, x);\ | |
2205 }\ | |
2206 if (!Module['load'] == 'undefined' && Module['read']) {\ | |
2207 Module['load'] = function(f) {\ | |
2208 globalEval(Module['read'](f));\ | |
2209 };\ | |
2210 }\ | |
2211 if (!Module['print']) {\ | |
2212 Module['print'] = function(){};\ | |
2213 }\ | |
2214 if (!Module['printErr']) {\ | |
2215 Module['printErr'] = Module['print'];\ | |
2216 }\ | |
2217 if (!Module['arguments']) {\ | |
2218 Module['arguments'] = [];\ | |
2219 }\ | |
2220 // *** Environment setup code ***\ | |
2221 // Closure helpers\ | |
2222 Module.print = Module['print'];\ | |
2223 Module.printErr = Module['printErr'];\ | |
2224 // Callbacks\ | |
2225 Module['preRun'] = [];\ | |
2226 Module['postRun'] = [];\ | |
2227 // Merge back in the overrides\ | |
2228 for (var key in moduleOverrides) {\ | |
2229 if (moduleOverrides.hasOwnProperty(key)) {\ | |
2230 Module[key] = moduleOverrides[key];\ | |
2231 }\ | |
2232 }\ | |
2233 // === Auto-generated preamble library stuff ===\ | |
2234 //========================================\ | |
2235 // Runtime code shared with compiler\ | |
2236 //========================================\ | |
2237 var Runtime = {\ | |
2238 stackSave: function () {\ | |
2239 return STACKTOP;\ | |
2240 },\ | |
2241 stackRestore: function (stackTop) {\ | |
2242 STACKTOP = stackTop;\ | |
2243 },\ | |
2244 forceAlign: function (target, quantum) {\ | |
2245 quantum = quantum || 4;\ | |
2246 if (quantum == 1) return target;\ | |
2247 if (isNumber(target) && isNumber(quantum)) {\ | |
2248 return Math.ceil(target/quantum)*quantum;\ | |
2249 } else if (isNumber(quantum) && isPowerOfTwo(quantum)) {\ | |
2250 var logg = log2(quantum);\ | |
2251 return '((((' +target + ')+' + (quantum-1) + ')>>' + logg + ')<<' + logg + ')';\ | |
2252 }\ | |
2253 return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;\ | |
2254 },\ | |
2255 isNumberType: function (type) {\ | |
2256 return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;\ | |
2257 },\ | |
2258 isPointerType: function isPointerType(type) {\ | |
2259 return type[type.length-1] == '*';\ | |
2260 },\ | |
2261 isStructType: function isStructType(type) {\ | |
2262 if (isPointerType(type)) return false;\ | |
2263 if (isArrayType(type)) return true;\ | |
2264 if (/<?{ ?[^}]* ?}>?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types\ | |
2265 // See comment in isStructPointerType()\ | |
2266 return type[0] == '%';\ | |
2267 },\ | |
2268 INT_TYPES: {\"i1\":0,\"i8\":0,\"i16\":0,\"i32\":0,\"i64\":0},\ | |
2269 FLOAT_TYPES: {\"float\":0,\"double\":0},\ | |
2270 or64: function (x, y) {\ | |
2271 var l = (x | 0) | (y | 0);\ | |
2272 var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;\ | |
2273 return l + h;\ | |
2274 },\ | |
2275 and64: function (x, y) {\ | |
2276 var l = (x | 0) & (y | 0);\ | |
2277 var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;\ | |
2278 return l + h;\ | |
2279 },\ | |
2280 xor64: function (x, y) {\ | |
2281 var l = (x | 0) ^ (y | 0);\ | |
2282 var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;\ | |
2283 return l + h;\ | |
2284 },\ | |
2285 getNativeTypeSize: function (type, quantumSize) {\ | |
2286 if (Runtime.QUANTUM_SIZE == 1) return 1;\ | |
2287 var size = {\ | |
2288 '%i1': 1,\ | |
2289 '%i8': 1,\ | |
2290 '%i16': 2,\ | |
2291 '%i32': 4,\ | |
2292 '%i64': 8,\ | |
2293 \"%float\": 4,\ | |
2294 \"%double\": 8\ | |
2295 }['%'+type]; // add '%' since float and double confuse Closure compiler as keys, and also spidermonkey as a compiler will remove 's from '_i8' etc\ | |
2296 if (!size) {\ | |
2297 if (type.charAt(type.length-1) == '*') {\ | |
2298 size = Runtime.QUANTUM_SIZE; // A pointer\ | |
2299 } else if (type[0] == 'i') {\ | |
2300 var bits = parseInt(type.substr(1));\ | |
2301 assert(bits % 8 == 0);\ | |
2302 size = bits/8;\ | |
2303 }\ | |
2304 }\ | |
2305 return size;\ | |
2306 },\ | |
2307 getNativeFieldSize: function (type) {\ | |
2308 return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);\ | |
2309 },\ | |
2310 dedup: function dedup(items, ident) {\ | |
2311 var seen = {};\ | |
2312 if (ident) {\ | |
2313 return items.filter(function(item) {\ | |
2314 if (seen[item[ident]]) return false;\ | |
2315 seen[item[ident]] = true;\ | |
2316 return true;\ | |
2317 });\ | |
2318 } else {\ | |
2319 return items.filter(function(item) {\ | |
2320 if (seen[item]) return false;\ | |
2321 seen[item] = true;\ | |
2322 return true;\ | |
2323 });\ | |
2324 }\ | |
2325 },\ | |
2326 set: function set() {\ | |
2327 var args = typeof arguments[0] === 'object' ? arguments[0] : arguments;\ | |
2328 var ret = {};\ | |
2329 for (var i = 0; i < args.length; i++) {\ | |
2330 ret[args[i]] = 0;\ | |
2331 }\ | |
2332 return ret;\ | |
2333 },\ | |
2334 STACK_ALIGN: 8,\ | |
2335 getAlignSize: function (type, size, vararg) {\ | |
2336 // we align i64s and doubles on 64-bit boundaries, unlike x86\ | |
2337 if (type == 'i64' || type == 'double' || vararg) return 8;\ | |
2338 if (!type) return Math.min(size, 8); // align structures internally to 64 bits\ | |
2339 return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);\ | |
2340 },\ | |
2341 calculateStructAlignment: function calculateStructAlignment(type) {\ | |
2342 type.flatSize = 0;\ | |
2343 type.alignSize = 0;\ | |
2344 var diffs = [];\ | |
2345 var prev = -1;\ | |
2346 var index = 0;\ | |
2347 type.flatIndexes = type.fields.map(function(field) {\ | |
2348 index++;\ | |
2349 var size, alignSize;\ | |
2350 if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {\ | |
2351 size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s.\ | |
2352 alignSize = Runtime.getAlignSize(field, size);\ | |
2353 } else if (Runtime.isStructType(field)) {\ | |
2354 if (field[1] === '0') {\ | |
2355 // this is [0 x something]. When inside another structure like here, it must be at the end,\ | |
2356 // and it adds no size\ | |
2357 // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!');\ | |
2358 size = 0;\ | |
2359 if (Types.types[field]) {\ | |
2360 alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);\ | |
2361 } else {\ | |
2362 alignSize = type.alignSize || QUANTUM_SIZE;\ | |
2363 }\ | |
2364 } else {\ | |
2365 size = Types.types[field].flatSize;\ | |
2366 alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);\ | |
2367 }\ | |
2368 } else if (field[0] == 'b') {\ | |
2369 // bN, large number field, like a [N x i8]\ | |
2370 size = field.substr(1)|0;\ | |
2371 alignSize = 1;\ | |
2372 } else {\ | |
2373 throw 'Unclear type in struct: ' + field + ', in ' + type.name_ + ' :: ' + dump(Types.types[type.name_]);\ | |
2374 }\ | |
2375 if (type.packed) alignSize = 1;\ | |
2376 type.alignSize = Math.max(type.alignSize, alignSize);\ | |
2377 var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory\ | |
2378 type.flatSize = curr + size;\ | |
2379 if (prev >= 0) {\ | |
2380 diffs.push(curr-prev);\ | |
2381 }\ | |
2382 prev = curr;\ | |
2383 return curr;\ | |
2384 });\ | |
2385 type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);\ | |
2386 if (diffs.length == 0) {\ | |
2387 type.flatFactor = type.flatSize;\ | |
2388 } else if (Runtime.dedup(diffs).length == 1) {\ | |
2389 type.flatFactor = diffs[0];\ | |
2390 }\ | |
2391 type.needsFlattening = (type.flatFactor != 1);\ | |
2392 return type.flatIndexes;\ | |
2393 },\ | |
2394 generateStructInfo: function (struct, typeName, offset) {\ | |
2395 var type, alignment;\ | |
2396 if (typeName) {\ | |
2397 offset = offset || 0;\ | |
2398 type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];\ | |
2399 if (!type) return null;\ | |
2400 if (type.fields.length != struct.length) {\ | |
2401 printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');\ | |
2402 return null;\ | |
2403 }\ | |
2404 alignment = type.flatIndexes;\ | |
2405 } else {\ | |
2406 var type = { fields: struct.map(function(item) { return item[0] }) };\ | |
2407 alignment = Runtime.calculateStructAlignment(type);\ | |
2408 }\ | |
2409 var ret = {\ | |
2410 __size__: type.flatSize\ | |
2411 };\ | |
2412 if (typeName) {\ | |
2413 struct.forEach(function(item, i) {\ | |
2414 if (typeof item === 'string') {\ | |
2415 ret[item] = alignment[i] + offset;\ | |
2416 } else {\ | |
2417 // embedded struct\ | |
2418 var key;\ | |
2419 for (var k in item) key = k;\ | |
2420 ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);\ | |
2421 }\ | |
2422 });\ | |
2423 } else {\ | |
2424 struct.forEach(function(item, i) {\ | |
2425 ret[item[1]] = alignment[i];\ | |
2426 });\ | |
2427 }\ | |
2428 return ret;\ | |
2429 },\ | |
2430 dynCall: function (sig, ptr, args) {\ | |
2431 if (args && args.length) {\ | |
2432 if (!args.splice) args = Array.prototype.slice.call(args);\ | |
2433 args.splice(0, 0, ptr);\ | |
2434 return Module['dynCall_' + sig].apply(null, args);\ | |
2435 } else {\ | |
2436 return Module['dynCall_' + sig].call(null, ptr);\ | |
2437 }\ | |
2438 },\ | |
2439 functionPointers: [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],\ | |
2440 addFunction: function (func) {\ | |
2441 for (var i = 0; i < Runtime.functionPointers.length; i++) {\ | |
2442 if (!Runtime.functionPointers[i]) {\ | |
2443 Runtime.functionPointers[i] = func;\ | |
2444 return 2 + 2*i;\ | |
2445 }\ | |
2446 }\ | |
2447 throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';\ | |
2448 },\ | |
2449 removeFunction: function (index) {\ | |
2450 Runtime.functionPointers[(index-2)/2] = null;\ | |
2451 },\ | |
2452 warnOnce: function (text) {\ | |
2453 if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};\ | |
2454 if (!Runtime.warnOnce.shown[text]) {\ | |
2455 Runtime.warnOnce.shown[text] = 1;\ | |
2456 Module.printErr(text);\ | |
2457 }\ | |
2458 },\ | |
2459 funcWrappers: {},\ | |
2460 getFuncWrapper: function (func, sig) {\ | |
2461 assert(sig);\ | |
2462 if (!Runtime.funcWrappers[func]) {\ | |
2463 Runtime.funcWrappers[func] = function() {\ | |
2464 return Runtime.dynCall(sig, func, arguments);\ | |
2465 };\ | |
2466 }\ | |
2467 return Runtime.funcWrappers[func];\ | |
2468 },\ | |
2469 UTF8Processor: function () {\ | |
2470 var buffer = [];\ | |
2471 var needed = 0;\ | |
2472 this.processCChar = function (code) {\ | |
2473 code = code & 0xFF;\ | |
2474 if (buffer.length == 0) {\ | |
2475 if ((code & 0x80) == 0x00) { // 0xxxxxxx\ | |
2476 return String.fromCharCode(code);\ | |
2477 }\ | |
2478 buffer.push(code);\ | |
2479 if ((code & 0xE0) == 0xC0) { // 110xxxxx\ | |
2480 needed = 1;\ | |
2481 } else if ((code & 0xF0) == 0xE0) { // 1110xxxx\ | |
2482 needed = 2;\ | |
2483 } else { // 11110xxx\ | |
2484 needed = 3;\ | |
2485 }\ | |
2486 return '';\ | |
2487 }\ | |
2488 if (needed) {\ | |
2489 buffer.push(code);\ | |
2490 needed--;\ | |
2491 if (needed > 0) return '';\ | |
2492 }\ | |
2493 var c1 = buffer[0];\ | |
2494 var c2 = buffer[1];\ | |
2495 var c3 = buffer[2];\ | |
2496 var c4 = buffer[3];\ | |
2497 var ret;\ | |
2498 if (buffer.length == 2) {\ | |
2499 ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F));\ | |
2500 } else if (buffer.length == 3) {\ | |
2501 ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F));\ | |
2502 } else {\ | |
2503 // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\ | |
2504 var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) |\ | |
2505 ((c3 & 0x3F) << 6) | (c4 & 0x3F);\ | |
2506 ret = String.fromCharCode(\ | |
2507 Math.floor((codePoint - 0x10000) / 0x400) + 0xD800,\ | |
2508 (codePoint - 0x10000) % 0x400 + 0xDC00);\ | |
2509 }\ | |
2510 buffer.length = 0;\ | |
2511 return ret;\ | |
2512 }\ | |
2513 this.processJSString = function(string) {\ | |
2514 string = unescape(encodeURIComponent(string));\ | |
2515 var ret = [];\ | |
2516 for (var i = 0; i < string.length; i++) {\ | |
2517 ret.push(string.charCodeAt(i));\ | |
2518 }\ | |
2519 return ret;\ | |
2520 }\ | |
2521 },\ | |
2522 stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = ((((STACKTOP)+7)>>3)<<3); return ret; },\ | |
2523 staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = ((((STATICTOP)+7)>>3)<<3); return ret; },\ | |
2524 dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = ((((DYNAMICTOP)+7)>>3)<<3); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },\ | |
2525 alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; },\ | |
2526 makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+(((low)>>>(0))))+((+(((high)>>>(0))))*(+(4294967296)))) : ((+(((low)>>>(0))))+((+(((high)|(0))))*(+(4294967296))))); return ret; },\ | |
2527 GLOBAL_BASE: 8,\ | |
2528 QUANTUM_SIZE: 4,\ | |
2529 __dummy__: 0\ | |
2530 }\ | |
2531 function jsCall() {\ | |
2532 var args = Array.prototype.slice.call(arguments);\ | |
2533 return Runtime.functionPointers[args[0]].apply(null, args.slice(1));\ | |
2534 }\ | |
2535 //========================================\ | |
2536 // Runtime essentials\ | |
2537 //========================================\ | |
2538 var __THREW__ = 0; // Used in checking for thrown exceptions.\ | |
2539 var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()\ | |
2540 var EXITSTATUS = 0;\ | |
2541 var undef = 0;\ | |
2542 // tempInt is used for 32-bit signed values or smaller. tempBigInt is used\ | |
2543 // for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt\ | |
2544 var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD;\ | |
2545 var tempI64, tempI64b;\ | |
2546 var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;\ | |
2547 function assert(condition, text) {\ | |
2548 if (!condition) {\ | |
2549 abort('Assertion failed: ' + text);\ | |
2550 }\ | |
2551 }\ | |
2552 var globalScope = this;\ | |
2553 // C calling interface. A convenient way to call C functions (in C files, or\ | |
2554 // defined with extern \"C\").\ | |
2555 //\ | |
2556 // Note: LLVM optimizations can inline and remove functions, after which you will not be\ | |
2557 // able to call them. Closure can also do so. To avoid that, add your function to\ | |
2558 // the exports using something like\ | |
2559 //\ | |
2560 // -s EXPORTED_FUNCTIONS='[\"_main\", \"_myfunc\"]'\ | |
2561 //\ | |
2562 // @param ident The name of the C function (note that C++ functions will be name-mangled - use extern \"C\")\ | |
2563 // @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and\ | |
2564 // 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit).\ | |
2565 // @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be omitted). Types are as in returnType,\ | |
2566 // except that 'array' is not possible (there is no way for us to know the length of the array)\ | |
2567 // @param args An array of the arguments to the function, as native JS values (as in returnType)\ | |
2568 // Note that string arguments will be stored on the stack (the JS string will become a C string on the stack).\ | |
2569 // @return The return value, as a native JS value (as in returnType)\ | |
2570 function ccall(ident, returnType, argTypes, args) {\ | |
2571 return ccallFunc(getCFunc(ident), returnType, argTypes, args);\ | |
2572 }\ | |
2573 Module[\"ccall\"] = ccall;\ | |
2574 // Returns the C function with a specified identifier (for C++, you need to do manual name mangling)\ | |
2575 function getCFunc(ident) {\ | |
2576 try {\ | |
2577 var func = Module['_' + ident]; // closure exported function\ | |
2578 if (!func) func = eval('_' + ident); // explicit lookup\ | |
2579 } catch(e) {\ | |
2580 }\ | |
2581 assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');\ | |
2582 return func;\ | |
2583 }\ | |
2584 // Internal function that does a C call using a function, not an identifier\ | |
2585 function ccallFunc(func, returnType, argTypes, args) {\ | |
2586 var stack = 0;\ | |
2587 function toC(value, type) {\ | |
2588 if (type == 'string') {\ | |
2589 if (value === null || value === undefined || value === 0) return 0; // null string\ | |
2590 if (!stack) stack = Runtime.stackSave();\ | |
2591 var ret = Runtime.stackAlloc(value.length+1);\ | |
2592 writeStringToMemory(value, ret);\ | |
2593 return ret;\ | |
2594 } else if (type == 'array') {\ | |
2595 if (!stack) stack = Runtime.stackSave();\ | |
2596 var ret = Runtime.stackAlloc(value.length);\ | |
2597 writeArrayToMemory(value, ret);\ | |
2598 return ret;\ | |
2599 }\ | |
2600 return value;\ | |
2601 }\ | |
2602 function fromC(value, type) {\ | |
2603 if (type == 'string') {\ | |
2604 return Pointer_stringify(value);\ | |
2605 }\ | |
2606 assert(type != 'array');\ | |
2607 return value;\ | |
2608 }\ | |
2609 var i = 0;\ | |
2610 var cArgs = args ? args.map(function(arg) {\ | |
2611 return toC(arg, argTypes[i++]);\ | |
2612 }) : [];\ | |
2613 var ret = fromC(func.apply(null, cArgs), returnType);\ | |
2614 if (stack) Runtime.stackRestore(stack);\ | |
2615 return ret;\ | |
2616 }\ | |
2617 // Returns a native JS wrapper for a C function. This is similar to ccall, but\ | |
2618 // returns a function you can call repeatedly in a normal way. For example:\ | |
2619 //\ | |
2620 // var my_function = cwrap('my_c_function', 'number', ['number', 'number']);\ | |
2621 // alert(my_function(5, 22));\ | |
2622 // alert(my_function(99, 12));\ | |
2623 //\ | |
2624 function cwrap(ident, returnType, argTypes) {\ | |
2625 var func = getCFunc(ident);\ | |
2626 return function() {\ | |
2627 return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));\ | |
2628 }\ | |
2629 }\ | |
2630 Module[\"cwrap\"] = cwrap;\ | |
2631 // Sets a value in memory in a dynamic way at run-time. Uses the\ | |
2632 // type data. This is the same as makeSetValue, except that\ | |
2633 // makeSetValue is done at compile-time and generates the needed\ | |
2634 // code then, whereas this function picks the right code at\ | |
2635 // run-time.\ | |
2636 // Note that setValue and getValue only do *aligned* writes and reads!\ | |
2637 // Note that ccall uses JS types as for defining types, while setValue and\ | |
2638 // getValue need LLVM types ('i8', 'i32') - this is a lower-level operation\ | |
2639 function setValue(ptr, value, type, noSafe) {\ | |
2640 type = type || 'i8';\ | |
2641 if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\ | |
2642 switch(type) {\ | |
2643 case 'i1': HEAP8[(ptr)]=value; break;\ | |
2644 case 'i8': HEAP8[(ptr)]=value; break;\ | |
2645 case 'i16': HEAP16[((ptr)>>1)]=value; break;\ | |
2646 case 'i32': HEAP32[((ptr)>>2)]=value; break;\ | |
2647 case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math.abs(tempDouble))) >= (+(1)) ? (tempDouble > (+(0)) ? ((Math.min((+(Math.floor((tempDouble)/(+(4294967296))))), (+(4294967295))))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+(4294967296)))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;\ | |
2648 case 'float': HEAPF32[((ptr)>>2)]=value; break;\ | |
2649 case 'double': HEAPF64[((ptr)>>3)]=value; break;\ | |
2650 default: abort('invalid type for setValue: ' + type);\ | |
2651 }\ | |
2652 }\ | |
2653 Module['setValue'] = setValue;\ | |
2654 // Parallel to setValue.\ | |
2655 function getValue(ptr, type, noSafe) {\ | |
2656 type = type || 'i8';\ | |
2657 if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\ | |
2658 switch(type) {\ | |
2659 case 'i1': return HEAP8[(ptr)];\ | |
2660 case 'i8': return HEAP8[(ptr)];\ | |
2661 case 'i16': return HEAP16[((ptr)>>1)];\ | |
2662 case 'i32': return HEAP32[((ptr)>>2)];\ | |
2663 case 'i64': return HEAP32[((ptr)>>2)];\ | |
2664 case 'float': return HEAPF32[((ptr)>>2)];\ | |
2665 case 'double': return HEAPF64[((ptr)>>3)];\ | |
2666 default: abort('invalid type for setValue: ' + type);\ | |
2667 }\ | |
2668 return null;\ | |
2669 }\ | |
2670 Module['getValue'] = getValue;\ | |
2671 var ALLOC_NORMAL = 0; // Tries to use _malloc()\ | |
2672 var ALLOC_STACK = 1; // Lives for the duration of the current function call\ | |
2673 var ALLOC_STATIC = 2; // Cannot be freed\ | |
2674 var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk\ | |
2675 var ALLOC_NONE = 4; // Do not allocate\ | |
2676 Module['ALLOC_NORMAL'] = ALLOC_NORMAL;\ | |
2677 Module['ALLOC_STACK'] = ALLOC_STACK;\ | |
2678 Module['ALLOC_STATIC'] = ALLOC_STATIC;\ | |
2679 Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;\ | |
2680 Module['ALLOC_NONE'] = ALLOC_NONE;\ | |
2681 // allocate(): This is for internal use. You can use it yourself as well, but the interface\ | |
2682 // is a little tricky (see docs right below). The reason is that it is optimized\ | |
2683 // for multiple syntaxes to save space in generated code. So you should\ | |
2684 // normally not use allocate(), and instead allocate memory using _malloc(),\ | |
2685 // initialize it with setValue(), and so forth.\ | |
2686 // @slab: An array of data, or a number. If a number, then the size of the block to allocate,\ | |
2687 // in *bytes* (note that this is sometimes confusing: the next parameter does not\ | |
2688 // affect this!)\ | |
2689 // @types: Either an array of types, one for each byte (or 0 if no type at that position),\ | |
2690 // or a single type which is used for the entire block. This only matters if there\ | |
2691 // is initial data - if @slab is a number, then this does not matter at all and is\ | |
2692 // ignored.\ | |
2693 // @allocator: How to allocate memory, see ALLOC_*\ | |
2694 function allocate(slab, types, allocator, ptr) {\ | |
2695 var zeroinit, size;\ | |
2696 if (typeof slab === 'number') {\ | |
2697 zeroinit = true;\ | |
2698 size = slab;\ | |
2699 } else {\ | |
2700 zeroinit = false;\ | |
2701 size = slab.length;\ | |
2702 }\ | |
2703 var singleType = typeof types === 'string' ? types : null;\ | |
2704 var ret;\ | |
2705 if (allocator == ALLOC_NONE) {\ | |
2706 ret = ptr;\ | |
2707 } else {\ | |
2708 ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));\ | |
2709 }\ | |
2710 if (zeroinit) {\ | |
2711 var ptr = ret, stop;\ | |
2712 assert((ret & 3) == 0);\ | |
2713 stop = ret + (size & ~3);\ | |
2714 for (; ptr < stop; ptr += 4) {\ | |
2715 HEAP32[((ptr)>>2)]=0;\ | |
2716 }\ | |
2717 stop = ret + size;\ | |
2718 while (ptr < stop) {\ | |
2719 HEAP8[((ptr++)|0)]=0;\ | |
2720 }\ | |
2721 return ret;\ | |
2722 }\ | |
2723 if (singleType === 'i8') {\ | |
2724 if (slab.subarray || slab.slice) {\ | |
2725 HEAPU8.set(slab, ret);\ | |
2726 } else {\ | |
2727 HEAPU8.set(new Uint8Array(slab), ret);\ | |
2728 }\ | |
2729 return ret;\ | |
2730 }\ | |
2731 var i = 0, type, typeSize, previousType;\ | |
2732 while (i < size) {\ | |
2733 var curr = slab[i];\ | |
2734 if (typeof curr === 'function') {\ | |
2735 curr = Runtime.getFunctionIndex(curr);\ | |
2736 }\ | |
2737 type = singleType || types[i];\ | |
2738 if (type === 0) {\ | |
2739 i++;\ | |
2740 continue;\ | |
2741 }\ | |
2742 if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later\ | |
2743 setValue(ret+i, curr, type);\ | |
2744 // no need to look up size unless type changes, so cache it\ | |
2745 if (previousType !== type) {\ | |
2746 typeSize = Runtime.getNativeTypeSize(type);\ | |
2747 previousType = type;\ | |
2748 }\ | |
2749 i += typeSize;\ | |
2750 }\ | |
2751 return ret;\ | |
2752 }\ | |
2753 Module['allocate'] = allocate;\ | |
2754 function Pointer_stringify(ptr, /* optional */ length) {\ | |
2755 // TODO: use TextDecoder\ | |
2756 // Find the length, and check for UTF while doing so\ | |
2757 var hasUtf = false;\ | |
2758 var t;\ | |
2759 var i = 0;\ | |
2760 while (1) {\ | |
2761 t = HEAPU8[(((ptr)+(i))|0)];\ | |
2762 if (t >= 128) hasUtf = true;\ | |
2763 else if (t == 0 && !length) break;\ | |
2764 i++;\ | |
2765 if (length && i == length) break;\ | |
2766 }\ | |
2767 if (!length) length = i;\ | |
2768 var ret = '';\ | |
2769 if (!hasUtf) {\ | |
2770 var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack\ | |
2771 var curr;\ | |
2772 while (length > 0) {\ | |
2773 curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));\ | |
2774 ret = ret ? ret + curr : curr;\ | |
2775 ptr += MAX_CHUNK;\ | |
2776 length -= MAX_CHUNK;\ | |
2777 }\ | |
2778 return ret;\ | |
2779 }\ | |
2780 var utf8 = new Runtime.UTF8Processor();\ | |
2781 for (i = 0; i < length; i++) {\ | |
2782 t = HEAPU8[(((ptr)+(i))|0)];\ | |
2783 ret += utf8.processCChar(t);\ | |
2784 }\ | |
2785 return ret;\ | |
2786 }\ | |
2787 Module['Pointer_stringify'] = Pointer_stringify;\ | |
2788 // Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns\ | |
2789 // a copy of that string as a Javascript String object.\ | |
2790 function UTF16ToString(ptr) {\ | |
2791 var i = 0;\ | |
2792 var str = '';\ | |
2793 while (1) {\ | |
2794 var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];\ | |
2795 if (codeUnit == 0)\ | |
2796 return str;\ | |
2797 ++i;\ | |
2798 // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.\ | |
2799 str += String.fromCharCode(codeUnit);\ | |
2800 }\ | |
2801 }\ | |
2802 Module['UTF16ToString'] = UTF16ToString;\ | |
2803 // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', \ | |
2804 // null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP.\ | |
2805 function stringToUTF16(str, outPtr) {\ | |
2806 for(var i = 0; i < str.length; ++i) {\ | |
2807 // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.\ | |
2808 var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\ | |
2809 HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit\ | |
2810 }\ | |
2811 // Null-terminate the pointer to the HEAP.\ | |
2812 HEAP16[(((outPtr)+(str.length*2))>>1)]=0\ | |
2813 }\ | |
2814 Module['stringToUTF16'] = stringToUTF16;\ | |
2815 // Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns\ | |
2816 // a copy of that string as a Javascript String object.\ | |
2817 function UTF32ToString(ptr) {\ | |
2818 var i = 0;\ | |
2819 var str = '';\ | |
2820 while (1) {\ | |
2821 var utf32 = HEAP32[(((ptr)+(i*4))>>2)];\ | |
2822 if (utf32 == 0)\ | |
2823 return str;\ | |
2824 ++i;\ | |
2825 // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.\ | |
2826 if (utf32 >= 0x10000) {\ | |
2827 var ch = utf32 - 0x10000;\ | |
2828 str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\ | |
2829 } else {\ | |
2830 str += String.fromCharCode(utf32);\ | |
2831 }\ | |
2832 }\ | |
2833 }\ | |
2834 Module['UTF32ToString'] = UTF32ToString;\ | |
2835 // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', \ | |
2836 // null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP,\ | |
2837 // but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string.\ | |
2838 function stringToUTF32(str, outPtr) {\ | |
2839 var iChar = 0;\ | |
2840 for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) {\ | |
2841 // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\ | |
2842 var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate\ | |
2843 if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {\ | |
2844 var trailSurrogate = str.charCodeAt(++iCodeUnit);\ | |
2845 codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);\ | |
2846 }\ | |
2847 HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit\ | |
2848 ++iChar;\ | |
2849 }\ | |
2850 // Null-terminate the pointer to the HEAP.\ | |
2851 HEAP32[(((outPtr)+(iChar*4))>>2)]=0\ | |
2852 }\ | |
2853 Module['stringToUTF32'] = stringToUTF32;\ | |
2854 // Memory management\ | |
2855 var PAGE_SIZE = 4096;\ | |
2856 function alignMemoryPage(x) {\ | |
2857 return ((x+4095)>>12)<<12;\ | |
2858 }\ | |
2859 var HEAP;\ | |
2860 var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\ | |
2861 var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area\ | |
2862 var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area\ | |
2863 var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk\ | |
2864 function enlargeMemory() {\ | |
2865 abort('Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', or (2) set Module.TOTAL_MEMORY before the program runs.');\ | |
2866 }\ | |
2867 var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;\ | |
2868 var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;\ | |
2869 var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;\ | |
2870 // Initialize the runtime's memory\ | |
2871 // check for full engine support (use string 'subarray' to avoid closure compiler confusion)\ | |
2872 assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),\ | |
2873 'Cannot fallback to non-typed array case: Code is too specialized');\ | |
2874 var buffer = new ArrayBuffer(TOTAL_MEMORY);\ | |
2875 HEAP8 = new Int8Array(buffer);\ | |
2876 HEAP16 = new Int16Array(buffer);\ | |
2877 HEAP32 = new Int32Array(buffer);\ | |
2878 HEAPU8 = new Uint8Array(buffer);\ | |
2879 HEAPU16 = new Uint16Array(buffer);\ | |
2880 HEAPU32 = new Uint32Array(buffer);\ | |
2881 HEAPF32 = new Float32Array(buffer);\ | |
2882 HEAPF64 = new Float64Array(buffer);\ | |
2883 // Endianness check (note: assumes compiler arch was little-endian)\ | |
2884 HEAP32[0] = 255;\ | |
2885 assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');\ | |
2886 Module['HEAP'] = HEAP;\ | |
2887 Module['HEAP8'] = HEAP8;\ | |
2888 Module['HEAP16'] = HEAP16;\ | |
2889 Module['HEAP32'] = HEAP32;\ | |
2890 Module['HEAPU8'] = HEAPU8;\ | |
2891 Module['HEAPU16'] = HEAPU16;\ | |
2892 Module['HEAPU32'] = HEAPU32;\ | |
2893 Module['HEAPF32'] = HEAPF32;\ | |
2894 Module['HEAPF64'] = HEAPF64;\ | |
2895 function callRuntimeCallbacks(callbacks) {\ | |
2896 while(callbacks.length > 0) {\ | |
2897 var callback = callbacks.shift();\ | |
2898 if (typeof callback == 'function') {\ | |
2899 callback();\ | |
2900 continue;\ | |
2901 }\ | |
2902 var func = callback.func;\ | |
2903 if (typeof func === 'number') {\ | |
2904 if (callback.arg === undefined) {\ | |
2905 Runtime.dynCall('v', func);\ | |
2906 } else {\ | |
2907 Runtime.dynCall('vi', func, [callback.arg]);\ | |
2908 }\ | |
2909 } else {\ | |
2910 func(callback.arg === undefined ? null : callback.arg);\ | |
2911 }\ | |
2912 }\ | |
2913 }\ | |
2914 var __ATPRERUN__ = []; // functions called before the runtime is initialized\ | |
2915 var __ATINIT__ = []; // functions called during startup\ | |
2916 var __ATMAIN__ = []; // functions called when main() is to be run\ | |
2917 var __ATEXIT__ = []; // functions called during shutdown\ | |
2918 var __ATPOSTRUN__ = []; // functions called after the runtime has exited\ | |
2919 var runtimeInitialized = false;\ | |
2920 function preRun() {\ | |
2921 // compatibility - merge in anything from Module['preRun'] at this time\ | |
2922 if (Module['preRun']) {\ | |
2923 if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\ | |
2924 while (Module['preRun'].length) {\ | |
2925 addOnPreRun(Module['preRun'].shift());\ | |
2926 }\ | |
2927 }\ | |
2928 callRuntimeCallbacks(__ATPRERUN__);\ | |
2929 }\ | |
2930 function ensureInitRuntime() {\ | |
2931 if (runtimeInitialized) return;\ | |
2932 runtimeInitialized = true;\ | |
2933 callRuntimeCallbacks(__ATINIT__);\ | |
2934 }\ | |
2935 function preMain() {\ | |
2936 callRuntimeCallbacks(__ATMAIN__);\ | |
2937 }\ | |
2938 function exitRuntime() {\ | |
2939 callRuntimeCallbacks(__ATEXIT__);\ | |
2940 }\ | |
2941 function postRun() {\ | |
2942 // compatibility - merge in anything from Module['postRun'] at this time\ | |
2943 if (Module['postRun']) {\ | |
2944 if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\ | |
2945 while (Module['postRun'].length) {\ | |
2946 addOnPostRun(Module['postRun'].shift());\ | |
2947 }\ | |
2948 }\ | |
2949 callRuntimeCallbacks(__ATPOSTRUN__);\ | |
2950 }\ | |
2951 function addOnPreRun(cb) {\ | |
2952 __ATPRERUN__.unshift(cb);\ | |
2953 }\ | |
2954 Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;\ | |
2955 function addOnInit(cb) {\ | |
2956 __ATINIT__.unshift(cb);\ | |
2957 }\ | |
2958 Module['addOnInit'] = Module.addOnInit = addOnInit;\ | |
2959 function addOnPreMain(cb) {\ | |
2960 __ATMAIN__.unshift(cb);\ | |
2961 }\ | |
2962 Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;\ | |
2963 function addOnExit(cb) {\ | |
2964 __ATEXIT__.unshift(cb);\ | |
2965 }\ | |
2966 Module['addOnExit'] = Module.addOnExit = addOnExit;\ | |
2967 function addOnPostRun(cb) {\ | |
2968 __ATPOSTRUN__.unshift(cb);\ | |
2969 }\ | |
2970 Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;\ | |
2971 // Tools\ | |
2972 // This processes a JS string into a C-line array of numbers, 0-terminated.\ | |
2973 // For LLVM-originating strings, see parser.js:parseLLVMString function\ | |
2974 function intArrayFromString(stringy, dontAddNull, length /* optional */) {\ | |
2975 var ret = (new Runtime.UTF8Processor()).processJSString(stringy);\ | |
2976 if (length) {\ | |
2977 ret.length = length;\ | |
2978 }\ | |
2979 if (!dontAddNull) {\ | |
2980 ret.push(0);\ | |
2981 }\ | |
2982 return ret;\ | |
2983 }\ | |
2984 Module['intArrayFromString'] = intArrayFromString;\ | |
2985 function intArrayToString(array) {\ | |
2986 var ret = [];\ | |
2987 for (var i = 0; i < array.length; i++) {\ | |
2988 var chr = array[i];\ | |
2989 if (chr > 0xFF) {\ | |
2990 chr &= 0xFF;\ | |
2991 }\ | |
2992 ret.push(String.fromCharCode(chr));\ | |
2993 }\ | |
2994 return ret.join('');\ | |
2995 }\ | |
2996 Module['intArrayToString'] = intArrayToString;\ | |
2997 // Write a Javascript array to somewhere in the heap\ | |
2998 function writeStringToMemory(string, buffer, dontAddNull) {\ | |
2999 var array = intArrayFromString(string, dontAddNull);\ | |
3000 var i = 0;\ | |
3001 while (i < array.length) {\ | |
3002 var chr = array[i];\ | |
3003 HEAP8[(((buffer)+(i))|0)]=chr\ | |
3004 i = i + 1;\ | |
3005 }\ | |
3006 }\ | |
3007 Module['writeStringToMemory'] = writeStringToMemory;\ | |
3008 function writeArrayToMemory(array, buffer) {\ | |
3009 for (var i = 0; i < array.length; i++) {\ | |
3010 HEAP8[(((buffer)+(i))|0)]=array[i];\ | |
3011 }\ | |
3012 }\ | |
3013 Module['writeArrayToMemory'] = writeArrayToMemory;\ | |
3014 function unSign(value, bits, ignore, sig) {\ | |
3015 if (value >= 0) {\ | |
3016 return value;\ | |
3017 }\ | |
3018 return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts\ | |
3019 : Math.pow(2, bits) + value;\ | |
3020 }\ | |
3021 function reSign(value, bits, ignore, sig) {\ | |
3022 if (value <= 0) {\ | |
3023 return value;\ | |
3024 }\ | |
3025 var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32\ | |
3026 : Math.pow(2, bits-1);\ | |
3027 if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that\ | |
3028 // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors\ | |
3029 // TODO: In i64 mode 1, resign the two parts separately and safely\ | |
3030 value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts\ | |
3031 }\ | |
3032 return value;\ | |
3033 }\ | |
3034 if (!Math['imul']) Math['imul'] = function(a, b) {\ | |
3035 var ah = a >>> 16;\ | |
3036 var al = a & 0xffff;\ | |
3037 var bh = b >>> 16;\ | |
3038 var bl = b & 0xffff;\ | |
3039 return (al*bl + ((ah*bl + al*bh) << 16))|0;\ | |
3040 };\ | |
3041 Math.imul = Math['imul'];\ | |
3042 // A counter of dependencies for calling run(). If we need to\ | |
3043 // do asynchronous work before running, increment this and\ | |
3044 // decrement it. Incrementing must happen in a place like\ | |
3045 // PRE_RUN_ADDITIONS (used by emcc to add file preloading).\ | |
3046 // Note that you can add dependencies in preRun, even though\ | |
3047 // it happens right before run - run will be postponed until\ | |
3048 // the dependencies are met.\ | |
3049 var runDependencies = 0;\ | |
3050 var runDependencyTracking = {};\ | |
3051 var calledInit = false, calledRun = false;\ | |
3052 var runDependencyWatcher = null;\ | |
3053 function addRunDependency(id) {\ | |
3054 runDependencies++;\ | |
3055 if (Module['monitorRunDependencies']) {\ | |
3056 Module['monitorRunDependencies'](runDependencies);\ | |
3057 }\ | |
3058 if (id) {\ | |
3059 assert(!runDependencyTracking[id]);\ | |
3060 runDependencyTracking[id] = 1;\ | |
3061 } else {\ | |
3062 Module.printErr('warning: run dependency added without ID');\ | |
3063 }\ | |
3064 }\ | |
3065 Module['addRunDependency'] = addRunDependency;\ | |
3066 function removeRunDependency(id) {\ | |
3067 runDependencies--;\ | |
3068 if (Module['monitorRunDependencies']) {\ | |
3069 Module['monitorRunDependencies'](runDependencies);\ | |
3070 }\ | |
3071 if (id) {\ | |
3072 assert(runDependencyTracking[id]);\ | |
3073 delete runDependencyTracking[id];\ | |
3074 } else {\ | |
3075 Module.printErr('warning: run dependency removed without ID');\ | |
3076 }\ | |
3077 if (runDependencies == 0) {\ | |
3078 if (runDependencyWatcher !== null) {\ | |
3079 clearInterval(runDependencyWatcher);\ | |
3080 runDependencyWatcher = null;\ | |
3081 } \ | |
3082 // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)\ | |
3083 if (!calledRun && shouldRunNow) run();\ | |
3084 }\ | |
3085 }\ | |
3086 Module['removeRunDependency'] = removeRunDependency;\ | |
3087 Module[\"preloadedImages\"] = {}; // maps url to image data\ | |
3088 Module[\"preloadedAudios\"] = {}; // maps url to audio data\ | |
3089 function loadMemoryInitializer(filename) {\ | |
3090 function applyData(data) {\ | |
3091 HEAPU8.set(data, STATIC_BASE);\ | |
3092 }\ | |
3093 // always do this asynchronously, to keep shell and web as similar as possible\ | |
3094 addOnPreRun(function() {\ | |
3095 if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {\ | |
3096 applyData(Module['readBinary'](filename));\ | |
3097 } else {\ | |
3098 Browser.asyncLoad(filename, function(data) {\ | |
3099 applyData(data);\ | |
3100 }, function(data) {\ | |
3101 throw 'could not load memory initializer ' + filename;\ | |
3102 });\ | |
3103 }\ | |
3104 });\ | |
3105 }\ | |
3106 // === Body ===\ | |
3107 STATIC_BASE = 8;\ | |
3108 STATICTOP = STATIC_BASE + 11056;\ | |
3109 /* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } });\ | |
3110 var _stdout;\ | |
3111 var _stdin;\ | |
3112 var _stderr;\ | |
3113 var _stdout = _stdout=allocate([0,0,0,0,0,0,0,0], \"i8\", ALLOC_STATIC);\ | |
3114 var _stdin = _stdin=allocate([0,0,0,0,0,0,0,0], \"i8\", ALLOC_STATIC);\ | |
3115 var _stderr = _stderr=allocate([0,0,0,0,0,0,0,0], \"i8\", ALLOC_STATIC);\ | |
3116 /* memory initializer */ allocate([16,36,0,0,244,1,0,0,64,28,0,0,2,2,0,0,0,22,0,0,0,2,0,0,88,17,0,0,28,2,0,0,208,14,0,0,210,1,0,0,128,12,0,0,80,1,0,0,152,10,0,0,172,1,0,0,64,9,0,0,102,1,0,0,104,8,0,0,40,2,0,0,0,0,0,0,0,0,0,0,80,36,0,0,34,1,0,0,200,28,0,0,4,2,0,0,32,22,0,0,180,1,0,0,112,17,0,0,36,2,0,0,224,14,0,0,6,2,0,0,136,12,0,0,214,1,0,0,160,10,0,0,52,1,0,0,72,9,0,0,242,1,0,0,112,8,0,0,194,1,0,0,56,40,0,0,46,1,0,0,144,39,0,0,108,1,0,0,0,0,0,0,0,0,0,0,200,14,0,0,192,1,0,0,120,12,0,0,44,1,0,0,144,10,0,0,86,1,0,0,56,9,0,0,56,1,0,0,96,8,0,0,116,1,0,0,24,28,0,0,168,1,0,0,224,35,0,0,98,1,0,0,48,40,0,0,122,1,0,0,72,39,0,0,234,1,0,0,40,38,0,0,184,1,0,0,96,37,0,0,62,1,0,0,136,36,0,0,106,1,0,0,216,35,0,0,42,1,0,0,88,35,0,0,226,1,0,0,224,34,0,0,82,1,0,0,0,0,0,0,0,0,0,0,32,23,0,0,96,40,0,0,184,39,0,0,160,38,0,0,6,6,6,6,7,7,7,7,7,7,10,9,5,4,3,3,3,3,3,3,3,3,3,3,3,3,2,2,1,1,0,0,0,0,0,0,0,0,36,64,0,0,0,0,0,0,89,64,0,0,0,0,0,136,195,64,0,0,0,0,132,215,151,65,0,128,224,55,121,195,65,67,23,110,5,181,181,184,147,70,245,249,63,233,3,79,56,77,50,29,48,249,72,119,130,90,60,191,115,127,221,79,21,117,128,16,0,0,16,2,0,0,80,16,0,0,20,2,0,0,0,0,0,0,0,0,0,0,240,31,0,0,216,30,0,0,200,29,0,0,40,29,0,0,32,28,0,0,56,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,0,15,0,0,16,1,0,0,144,12,0,0,22,1,0,0,184,10,0,0,104,1,0,0,80,9,0,0,138,1,0,0,128,8,0,0,6,1,0,0,64,40,0,0,160,1,0,0,152,39,0,0,32,2,0,0,128,38,0,0,164,1,0,0,152,37,0,0,58,1,0,0,208,36,0,0,78,1,0,0,0,36,0,0,74,1,0,0,80,22,0,0,204,1,0,0,104,35,0,0,158,1,0,0,240,34,0,0,208,1,0,0,88,34,0,0,10,1,0,0,120,33,0,0,222,1,0,0,216,32,0,0,190,1,0,0,248,31,0,0,186,1,0,0,224,30,0,0,92,1,0,0,208,29,0,0,144,1,0,0,56,29,0,0,66,1,0,0,40,28,0,0,126,1,0,0,128,27,0,0,196,1,0,0,208,26,0,0,14,1,0,0,104,26,0,0,254,1,0,0,0,26,0,0,30,2,0,0,96,25,0,0,166,1,0,0,192,24,0,0,150,1,0,0,0,0,0,0,0,0,0,0,24,13,0,0,128,35,0,0,120,27,0,0,128,21,0,0,168,16,0,0,152,14,0,0,216,11,0,0,96,10,0,0,24,9,0,0,16,8,0,0,24,40,0,0,56,39,0,0,16,38,0,0,72,37,0,0,112,36,0,0,200,35,0,0,72,35,0,0,168,34,0,0,248,33,0,0,56,33,0,0,112,32,0,0,120,31,0,0,96,31,0,0,128,30,0,0,136,29,0,0,208,28,0,0,56,27,0,0,40,27,0,0,152,26,0,0,32,26,0,0,184,25,0,0,0,0,0,0,128,31,0,0,216,38,0,0,64,31,0,0,56,24,0,0,232,18,0,0,168,15,0,0,104,13,0,0,64,31,0,0,72,11,0,0,240,9,0,0,200,8,0,0,0,0,0,0,136,40,0,0,216,39,0,0,184,38,0,0,224,37,0,0,32,37,0,0,48,36,0,0,176,35,0,0,32,35,0,0,128,34,0,0,176,33,0,0,0,33,0,0,40,32,0,0,56,31,0,0,96,30,0,0,112,29,0,0,136,28,0,0,192,27,0,0,0,0,0,0,96,113,84,96,80,113,108,49,16,60,84,108,124,124,124,124,124,124,96,96,96,104,34,188,188,188,228,228,84,84,16,98,98,132,20,0,81,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,120,11,0,0,112,11,0,0,80,11,0,0,8,11,0,0,200,10,0,0,168,10,0,0,128,10,0,0,0,0,0,0,208,35,0,0,46,2,0,0,80,35,0,0,118,1,0,0,0,0,0,0,0,0,0,0,136,8,0,0,120,1,0,0,72,40,0,0,42,2,0,0,160,39,0,0,10,2,0,0,136,38,0,0,84,1,0,0,160,37,0,0,220,1,0,0,216,36,0,0,170,1,0,0,200,17,0,0,154,1,0,0,8,36,0,0,206,1,0,0,112,35,0,0,50,1,0,0,248,34,0,0,252,1,0,0,96,34,0,0,2,1,0,0,0,0,0,0,0,0,0,0,136,26,0,0,16,26,0,0,136,25,0,0,224,24,0,0,248,23,0,0,0,0,0,0,136,8,0,0,120,1,0,0,72,40,0,0,200,1,0,0,136,38,0,0,28,1,0,0,8,36,0,0,130,1,0,0,104,22,0,0,252,0,0,0,248,21,0,0,44,2,0,0,96,34,0,0,38,1,0,0,168,21,0,0,32,1,0,0,32,21,0,0,250,1,0,0,0,0,0,0,0,0,0,0,200,19,0,0,48,19,0,0,200,18,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,18,0,0,168,17,0,0,80,17,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,21,0,0,238,1,0,0,80,37,0,0,54,1,0,0,144,29,0,0,18,1,0,0,152,22,0,0,88,1,0,0,232,17,0,0,36,1,0,0,48,15,0,0,198,1,0,0,208,12,0,0,4,1,0,0,208,10,0,0,110,1,0,0,120,9,0,0,176,1,0,0,144,8,0,0,178,1,0,0,80,40,0,0,230,1,0,0,168,39,0,0,90,1,0,0,144,38,0,0,48,1,0,0,168,37,0,0,236,1,0,0,0,0,0,0,0,0,0,0,216,37,0,0,114,1,0,0,88,30,0,0,232,1,0,0,32,23,0,0,136,1,0,0,40,18,0,0,224,1,0,0,64,15,0,0,134,1,0,0,248,12,0,0,174,1,0,0,0,0,0,0,0,0,0,0,88,29,0,0,70,1,0,0,96,28,0,0,18,2,0,0,184,27,0,0,188,1,0,0,248,26,0,0,182,1,0,0,144,26,0,0,152,1,0,0,24,26,0,0,22,2,0,0,144,25,0,0,202,1,0,0,232,24,0,0,212,1,0,0,48,24,0,0,24,2,0,0,16,23,0,0,218,1,0,0,120,22,0,0,8,1,0,0,24,22,0,0,162,1,0,0,216,21,0,0,216,1,0,0,72,21,0,0,12,1,0,0,208,20,0,0,34,2,0,0,104,20,0,0,14,2,0,0,224,19,0,0,8,2,0,0,72,19,0,0,24,1,0,0,216,18,0,0,240,1,0,0,24,18,0,0,112,1,0,0,184,17,0,0,72,1,0,0,104,17,0,0,0,1,0,0,240,16,0,0,228,1,0,0,160,16,0,0,128,1,0,0,0,0,0,0,0,0,0,0,105,102,0,0,0,0,0,0,46,47,63,46,115,111,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,49,47,63,46,115,111,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,49,47,108,111,97,100,97,108,108,46,115,111,0,0,0,0,102,111,114,109,97,116,0,0,115,111,114,116,0,0,0,0,115,101,116,108,111,99,97,108,101,0,0,0,0,0,0,0,97,116,97,110,0,0,0,0,99,108,111,115,101,0,0,0,115,101,116,104,111,111,107,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,114,101,115,117,109,101,0,0,0,0,0,0,98,97,100,32,104,101,97,100,101,114,0,0,0,0,0,0,117,112,118,97,108,0,0,0,105,116,101,109,115,32,105,110,32,97,32,99,111,110,115,116,114,117,99,116,111,114,0,0,102,105,101,108,100,0,0,0,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,101,114,114,111,114,58,32,98,108,111,99,107,32,116,111,111,32,98,105,103,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,76,85,65,95,67,80,65,84,72,0,0,0,0,0,0,0,102,105,110,100,0,0,0,0,115,101,116,110,0,0,0,0,114,101,110,97,109,101,0,0,97,116,97,110,50,0,0,0,99,97,110,110,111,116,32,99,108,111,115,101,32,115,116,97,110,100,97,114,100,32,102,105,108,101,0,0,0,0,0,0,115,101,116,102,101,110,118,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,37,115,32,99,111,114,111,117,116,105,110,101,0,0,0,0,0,0,37,115,58,37,100,58,32,0,99,97,108,108,0,0,0,0,39,102,111,114,39,32,115,116,101,112,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,0,37,115,58,32,37,115,32,105,110,32,112,114,101,99,111,109,112,105,108,101,100,32,99,104,117,110,107,0,0,0,0,0,112,114,111,116,111,0,0,0,116,111,111,32,109,97,110,121,32,108,111,99,97,108,32,118,97,114,105,97,98,108,101,115,0,0,0,0,0,0,0,0,103,108,111,98,97,108,0,0,97,116,116,101,109,112,116,32,116,111,32,37,115,32,37,115,32,39,37,115,39,32,40,97,32,37,115,32,118,97,108,117,101,41,0,0,0,0,0,0,97,115,115,101,114,116,105,111,110,32,102,97,105,108,101,100,33,0,0,0,0,0,0,0,102,111,114,0,0,0,0,0,37,115,0,0,0,0,0,0,100,101,98,117,103,0,0,0,99,112,97,116,104,0,0,0,115,101,116,115,116,101,112,109,117,108,0,0,0,0,0,0,100,117,109,112,0,0,0,0,114,101,109,111,118,101,0,0,114,101,109,111,118,101,0,0,115,101,116,112,97,117,115,101,0,0,0,0,0,0,0,0,97,115,105,110,0,0,0,0,37,115,0,0,0,0,0,0,115,116,101,112,0,0,0,0,103,101,116,117,112,118,97,108,117,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,116,111,32,114,101,115,117,109,101,0,0,0,0,83,108,0,0,0,0,0,0,99,111,117,110,116,0,0,0,39,102,111,114,39,32,108,105,109,105,116,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,110,0,0,0,0,0,0,0,98,97,100,32,105,110,116,101,103,101,114,0,0,0,0,0,116,104,114,101,97,100,0,0,99,111,108,108,101,99,116,0,108,111,99,97,108,32,118,97,114,105,97,98,108,101,115,0,34,93,0,0,0,0,0,0,114,101,115,116,97,114,116,0,115,116,111,112,0,0,0,0,108,111,99,97,108,0,0,0,114,101,97,100,101,114,32,102,117,110,99,116,105,111,110,32,109,117,115,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,0,0,0,0,116,111,111,32,109,97,110,121,32,110,101,115,116,101,100,32,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,61,40,108,111,97,100,41,0,102,97,108,115,101,0,0,0,109,97,116,104,0,0,0,0,46,47,63,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,115,104,97,114,101,47,108,117,97,47,53,46,49,47,63,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,115,104,97,114,101,47,108,117,97,47,53,46,49,47,63,47,105,110,105,116,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,49,47,63,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,49,47,63,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,99,104,97,114,0,0,0,0,105,110,115,101,114,116,0,0,103,101,116,101,110,118,0,0,97,99,111,115,0,0,0,0,37,115,58,32,37,115,0,0,39,116,111,115,116,114,105,110,103,39,32,109,117,115,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,32,116,111,32,39,112,114,105,110,116,39,0,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,121,105,101,108,100,0,0,0,37,115,32,101,120,112,101,99,116,101,100,44,32,103,111,116,32,37,115,0,0,0,0,0,97,110,100,0,0,0,0,0,39,102,111,114,39,32,105,110,105,116,105,97,108,32,118,97,108,117,101,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,98,97,100,32,99,111,110,115,116,97,110,116,0,0,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,110,111,32,102,117,110,99,116,105,111,110,32,101,110,118,105,114,111,110,109,101,110,116,32,102,111,114,32,116,97,105,108,32,99,97,108,108,32,97,116,32,108,101,118,101,108,32,37,100,0,0,0,0,0,0,0,60,110,97,109,101,62,32,111,114,32,39,46,46,46,39,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,0,0,91,115,116,114,105,110,103,32,34,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,108,101,118,101,108,0,0,0,37,115,58,37,100,58,32,37,115,0,0,0,0,0,0,0,95,76,79,65,68,76,73,66,0,0,0,0,0,0,0,0,108,101,118,101,108,32,109,117,115,116,32,98,101,32,110,111,110,45,110,101,103,97,116,105,118,101,0,0,0,0,0,0,39,115,101,116,102,101,110,118,39,32,99,97,110,110,111,116,32,99,104,97,110,103,101,32,101,110,118,105,114,111,110,109,101,110,116,32,111,102,32,103,105,118,101,110,32,111,98,106,101,99,116,0,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,97,32,112,114,111,116,101,99,116,101,100,32,109,101,116,97,116,97,98,108,101,0,0,0,0,0,101,110,100,0,0,0,0,0,115,116,114,105,110,103,0,0,95,95,109,101,116,97,116,97,98,108,101,0,0,0,0,0,76,85,65,95,80,65,84,72,0,0,0,0,0,0,0,0,98,121,116,101,0,0,0,0,109,97,120,110,0,0,0,0,115,116,114,105,110,103,0,0,101,120,105,116,0,0,0,0,110,105,108,32,111,114,32,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,0,97,98,115,0,0,0,0,0,70,73,76,69,42,0,0,0,98,97,115,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,116,97,98,108,101,0,0,0,103,101,116,114,101,103,105,115,116,114,121,0,0,0,0,0,119,114,97,112,0,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,32,35,37,100,32,116,111,32,39,37,115,39,32,40,37,115,41,0,0,0,37,115,58,32,37,112,0,0,103,101,116,32,108,101,110,103,116,104,32,111,102,0,0,0,117,110,101,120,112,101,99,116,101,100,32,101,110,100,0,0,61,40,100,101,98,117,103,32,99,111,109,109,97,110,100,41,0,0,0,0,0,0,0,0,116,97,98,108,101,0,0,0,110,105,108,0,0,0,0,0,105,110,105,116,0,0,0,0,97,114,103,0,0,0,0,0,99,111,110,116,10,0,0,0,10,13,0,0,0,0,0,0,102,97,108,115,101,0,0,0,111,115,0,0,0,0,0,0,97,98,115,101,110,116,0,0,108,117,97,95,100,101,98,117,103,62,32,0,0,0,0,0,116,114,117,101,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,99,111,109,112,97,114,101,32,37,115,32,119,105,116,104,32,37,115,0,0,0,95,95,105,110,100,101,120,0,101,120,116,101,114,110,97,108,32,104,111,111,107,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,115,101,101,97,108,108,0,0,102,117,110,99,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,117,110,112,97,99,107,0,0,0,0,0,0,108,111,97,100,108,105,98,0,97,99,116,105,118,101,108,105,110,101,115,0,0,0,0,0,109,97,116,104,0,0,0,0,120,112,99,97,108,108,0,0,101,108,115,101,105,102,0,0,10,9,110,111,32,102,105,101,108,100,32,112,97,99,107,97,103,101,46,112,114,101,108,111,97,100,91,39,37,115,39,93,0,0,0,0,0,0,0,0,111,115,0,0,0,0,0,0,110,97,109,101,119,104,97,116,0,0,0,0,0,0,0,0,117,110,112,97,99,107,0,0,99,104,117,110,107,32,104,97,115,32,116,111,111,32,109,97,110,121,32,108,105,110,101,115,0,0,0,0,0,0,0,0,112,97,116,104,0,0,0,0,39,112,97,99,107,97,103,101,46,112,114,101,108,111,97,100,39,32,109,117,115,116,32,98,101,32,97,32,116,97,98,108,101,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,101,110,100,0,0,0,0,0,103,101,116,110,0,0,0,0,110,97,109,101,0,0,0,0,116,121,112,101,0,0,0,0,101,120,101,99,117,116,101,0,110,101,115,116,105,110,103,32,111,102,32,91,91,46,46,46,93,93,32,105,115,32,100,101,112,114,101,99,97,116,101,100,0,0,0,0,0,0,0,0,109,111,100,0,0,0,0,0,99,117,114,0,0,0,0,0,110,117,112,115,0,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,0,0,0,112,111,112,101,110,0,0,0,117,110,102,105,110,105,115,104,101,100,32,108,111,110,103,32,99,111,109,109,101,110,116,0,103,101,116,108,111,99,97,108,0,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,115,101,116,0,0,0,0,0,99,117,114,114,101,110,116,108,105,110,101,0,0,0,0,0,116,111,110,117,109,98,101,114,0,0,0,0,0,0,0,0,115,116,97,116,117,115,0,0,63,0,0,0,0,0,0,0,117,110,102,105,110,105,115,104,101,100,32,108,111,110,103,32,115,116,114,105,110,103,0,0,115,116,114,105,110,103,32,108,101,110,103,116,104,32,111,118,101,114,102,108,111,119,0,0,105,111,0,0,0,0,0,0,10,9,110,111,32,102,105,108,101,32,39,37,115,39,0,0,98,97,100,32,99,111,100,101,0,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,121,105,101,108,100,32,97,99,114,111,115,115,32,109,101,116,97,109,101,116,104,111,100,47,67,45,99,97,108,108,32,98,111,117,110,100,97,114,121,0,0,0,0,0,0,108,105,110,101,0,0,0,0,119,104,97,116,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,115,116,114,105,110,103,0,0,101,115,99,97,112,101,32,115,101,113,117,101,110,99,101,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,99,111,110,115,116,97,110,116,32,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,102,117,108,108,0,0,0,0,108,97,115,116,108,105,110,101,100,101,102,105,110,101,100,0,115,101,116,102,101,110,118,0,97,116,116,101,109,112,116,32,116,111,32,99,111,109,112,97,114,101,32,116,119,111,32,37,115,32,118,97,108,117,101,115,0,0,0,0,0,0,0,0,117,110,102,105,110,105,115,104,101,100,32,115,116,114,105,110,103,0,0,0,0,0,0,0,39,112,97,99,107,97,103,101,46,37,115,39,32,109,117,115,116,32,98,101,32,97,32,115,116,114,105,110,103,0,0,0,115,116,114,105,110,103,32,115,108,105,99,101,32,116,111,111,32,108,111,110,103,0,0,0,110,111,0,0,0,0,0,0,108,105,110,101,100,101,102,105,110,101,100,0,0,0,0,0,115,101,108,101,99,116,0,0,108,101,120,105,99,97,108,32,101,108,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,111,114,32,101,120,112,114,101,115,115,105,111,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,47,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,118,97,108,117,101,0,0,0,102,105,108,101,32,40,37,112,41,0,0,0,0,0,0,0,115,104,111,114,116,95,115,114,99,0,0,0,0,0,0,0,114,97,119,115,101,116,0,0,109,97,108,102,111,114,109,101,100,32,110,117,109,98,101,114,0,0,0,0,0,0,0,0,108,117,97,111,112,101,110,95,37,115,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,100,117,109,112,32,103,105,118,101,110,32,102,117,110,99,116,105,111,110,0,0,0,102,105,108,101,32,40,99,108,111,115,101,100,41,0,0,0,115,111,117,114,99,101,0,0,114,97,119,103,101,116,0,0,43,45,0,0,0,0,0,0,69,101,0,0,0,0,0,0,95,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,32,40,119,105,100,116,104,32,111,114,32,112,114,101,99,105,115,105,111,110,32,116,111,111,32,108,111,110,103,41,0,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,0,0,100,101,98,117,103,0,0,0,114,97,119,101,113,117,97,108,0,0,0,0,0,0,0,0,99,111,110,116,114,111,108,32,115,116,114,117,99,116,117,114,101,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,46,0,0,0,0,0,0,0,101,108,115,101,0,0,0,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,32,40,114,101,112,101,97,116,101,100,32,102,108,97,103,115,41,0,95,95,103,99,0,0,0,0,105,111,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,111,114,32,108,101,118,101,108,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,112,114,105,110,116,0,0,0,46,0,0,0,0,0,0,0,108,111,97,100,101,114,115,0,45,43,32,35,48,0,0,0,115,101,116,118,98,117,102,0,102,111,114,101,97,99,104,105,0,0,0,0,0,0,0,0,62,37,115,0,0,0,0,0,112,99,97,108,108,0,0,0,100,105,102,102,116,105,109,101,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,108,111,110,103,32,115,116,114,105,110,103,32,100,101,108,105,109,105,116,101,114,0,0,0,102,109,111,100,0,0,0,0,76,79,65,68,76,73,66,58,32,0,0,0,0,0,0,0,115,101,101,107,0,0,0,0,102,108,110,83,117,0,0,0,110,101,120,116,0,0,0,0,115,116,100,101,114,114,0,0,37,115,32,110,101,97,114,32,39,37,115,39,0,0,0,0,103,101,116,105,110,102,111,0,37,115,37,115,0,0,0,0,92,48,48,48,0,0,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,39,115,101,116,102,101,110,118,39,32,99,97,110,110,111,116,32,99,104,97,110,103,101,32,101,110,118,105,114,111,110,109,101,110,116,32,111,102,32,103,105,118,101,110,32,111,98,106,101,99,116,0,0,0,0,0,108,111,97,100,115,116,114,105,110,103,0,0,0,0,0,0,114,117,110,110,105,110,103,0,99,97,108,108,105,110,103,32,39,37,115,39,32,111,110,32,98,97,100,32,115,101,108,102,32,40,37,115,41,0,0,0,37,115,58,37,100,58,32,37,115,0,0,0,0,0,0,0,108,111,111,112,32,105,110,32,115,101,116,116,97,98,108,101,0,0,0,0,0,0,0,0,100,121,110,97,109,105,99,32,108,105,98,114,97,114,105,101,115,32,110,111,116,32,101,110,97,98,108,101,100,59,32,99,104,101,99,107,32,121,111,117,114,32,76,117,97,32,105,110,115,116,97,108,108,97,116,105,111,110,0,0,0,0,0,0,99,111,114,111,117,116,105,110,101,0,0,0,0,0,0,0,92,114,0,0,0,0,0,0,99,111,100,101,32,116,111,111,32,100,101,101,112,0,0,0,105,110,116,101,114,118,97,108,32,105,115,32,101,109,112,116,121,0,0,0,0,0,0,0,95,95,99,108,111,115,101,0,116,97,105,108,32,114,101,116,117,114,110,0,0,0,0,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,110,111,110,45,115,117,115,112,101,110,100,101,100,32,99,111,114,111,117,116,105,110,101,0,0,0,108,111,97,100,0,0,0,0,110,117,109,98,101,114,0,0,37,99,0,0,0,0,0,0,105,110,118,97,108,105,100,32,107,101,121,32,116,111,32,39,110,101,120,116,39,0,0,0,101,114,114,111,114,32,108,111,97,100,105,110,103,32,109,111,100,117,108,101,32,39,37,115,39,32,102,114,111,109,32,102,105,108,101,32,39,37,115,39,58,10,9,37,115,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,37,37,99,39,32,116,111,32,39,102,111,114,109,97,116,39,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,116,97,110,0,0,0,0,0,102,105,108,101,32,105,115,32,97,108,114,101,97,100,121,32,99,108,111,115,101,100,0,0,99,111,117,110,116,0,0,0,108,111,97,100,102,105,108,101,0,0,0,0,0,0,0,0,112,101,114,102,111,114,109,32,97,114,105,116,104,109,101,116,105,99,32,111,110,0,0,0,37,0,0,0,0,0,0,0,99,104,97,114,40,37,100,41,0,0,0,0,0,0,0,0,10,9,110,111,32,109,111,100,117,108,101,32,39,37,115,39,32,105,110,32,102,105,108,101,32,39,37,115,39,0,0,0,110,111,32,118,97,108,117,101,0,0,0,0,0,0,0,0,121,100,97,121,0,0,0,0,116,97,110,104,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,117,115,101,32,97,32,99,108,111,115,101,100,32,102,105,108,101,0,0,0,0,108,105,110,101,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,32,35,37,100,32,40,37,115,41,0,0,0,60,101,111,102,62,0,0,0,1,0,0,0,0,0,0,0,39,115,116,114,105,110,103,46,103,102,105,110,100,39,32,119,97,115,32,114,101,110,97,109,101,100,32,116,111,32,39,115,116,114,105,110,103,46,103,109,97,116,99,104,39,0,0,0,119,100,97,121,0,0,0,0,115,113,114,116,0,0,0,0,119,0,0,0,0,0,0,0,114,101,116,117,114,110,0,0,103,101,116,102,101,110,118,0,60,115,116,114,105,110,103,62,0,0,0,0,0,0,0,0,59,1,59,0,0,0,0,0,105,110,118,97,108,105,100,32,114,101,112,108,97,99,101,109,101,110,116,32,118,97,108,117,101,32,40,97,32,37,115,41,0,0,0,0,0,0,0,0,42,116,0,0,0,0,0,0,115,105,110,0,0,0,0,0,39,112,111,112,101,110,39,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,99,97,108,108,0,0,0,0,103,99,105,110,102,111,0,0,60,110,97,109,101,62,0,0,59,59,0,0,0,0,0,0,115,116,114,105,110,103,47,102,117,110,99,116,105,111,110,47,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,37,99,0,0,0,0,0,0,115,105,110,104,0,0,0,0,114,0,0,0,0,0,0,0,108,101,118,101,108,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,101,114,114,111,114,0,0,0,99,104,117,110,107,32,104,97,115,32,116,111,111,32,109,97,110,121,32,115,121,110,116,97,120,32,108,101,118,101,108,115,0,0,0,0,0,0,0,0,60,110,117,109,98,101,114,62,0,0,0,0,0,0,0,0,126,61,0,0,0,0,0,0,95,80,65,67,75,65,71,69,0,0,0,0,0,0,0,0,37,46,49,52,103,0,0,0,105,110,118,97,108,105,100,32,112,97,116,116,101,114,110,32,99,97,112,116,117,114,101,0,37,115,58,32,37,115,0,0,100,111,0,0,0,0,0,0,114,97,110,100,111,109,115,101,101,100,0,0,0,0,0,0,37,108,102,0,0,0,0,0,116,97,98,108,101,0,0,0,110,105,108,32,111,114,32,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,0,100,111,102,105,108,101,0,0,95,95,99,97,108,108,0,0,39,37,115,39,32,101,120,112,101,99,116,101,100,0,0,0,99,111,110,115,116,97,110,116,32,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,112,97,99,107,97,103,101,0,95,77,0,0,0,0,0,0,117,110,98,97,108,97,110,99,101,100,32,112,97,116,116,101,114,110,0,0,0,0,0,0,103,102,105,110,100,0,0,0,110,117,109,101,114,105,99,0,114,97,110,100,111,109,0,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,0,0,102,111,114,101,97,99,104,0,32,105,110,32,102,117,110,99,116,105,111,110,32,60,37,115,58,37,100,62,0,0,0,0,99,111,108,108,101,99,116,103,97,114,98,97,103,101,0,0,99,97,110,110,111,116,32,37,115,32,37,115,58,32,37,115,0,0,0,0,0,0,0,0,95,95,99,111,110,99,97,116,0,0,0,0,0,0,0,0,39,37,115,39,32,101,120,112,101,99,116,101,100,32,40,116,111,32,99,108,111,115,101,32,39,37,115,39,32,97,116,32,108,105,110,101,32,37,100,41,0,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,60,61,0,0,0,0,0,0,104,117,103,101,0,0,0,0,39,109,111,100,117,108,101,39,32,110,111,116,32,99,97,108,108,101,100,32,102,114,111,109,32,97,32,76,117,97,32,102,117,110,99,116,105,111,110,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,109,105,115,115,105,110,103,32,39,93,39,41,0,109,111,110,101,116,97,114,121,0,0,0,0,0,0,0,0,114,97,100,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,0,0,32,63,0,0,0,0,0,0,97,115,115,101,114,116,0,0,10,0,0,0,0,0,0,0,115,116,100,111,117,116,0,0,95,95,108,101,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,0,0,0,0,0,62,61,0,0,0,0,0,0,103,101,116,104,111,111,107,0,102,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,101,110,100,115,32,119,105,116,104,32,39,37,37,39,41,0,0,0,0,0,0,99,116,121,112,101,0,0,0,112,111,119,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,32,105,110,32,109,97,105,110,32,99,104,117,110,107,0,0,98,111,111,108,101,97,110,32,111,114,32,112,114,111,120,121,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,0,80,65,78,73,67,58,32,117,110,112,114,111,116,101,99,116,101,100,32,101,114,114,111,114,32,105,110,32,99,97,108,108,32,116,111,32,76,117,97,32,65,80,73,32,40,37,115,41,10,0,0,0,0,0,0,0,114,101,115,117,109,101,0,0,95,95,108,116,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,0,0,0,0,109,101,116,104,111,100,0,0,61,61,0,0,0,0,0,0,108,111,111,112,32,105,110,32,103,101,116,116,97,98,108,101,0,0,0,0,0,0,0,0,95,78,65,77,69,0,0,0,109,105,115,115,105,110,103,32,39,91,39,32,97,102,116,101,114,32,39,37,37,102,39,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,0,61,63,0,0,0,0,0,0,99,111,108,108,97,116,101,0,109,111,100,102,0,0,0,0,102,105,108,101,0,0,0,0,32,105,110,32,102,117,110,99,116,105,111,110,32,39,37,115,39,0,0,0,0,0,0,0,110,101,119,112,114,111,120,121,0,0,0,0,0,0,0,0,114,101,97,100,0,0,0,0,67,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,95,95,108,101,110,0,0,0,117,115,101,114,100,97,116,97,0,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,0,0,0,0,46,46,46,0,0,0,0,0,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,0,46,46,0,0,0,0,0,0,110,105,108,0,0,0,0,0,110,97,109,101,32,99,111,110,102,108,105,99,116,32,102,111,114,32,109,111,100,117,108,101,32,39,37,115,39,0,0,0,117,110,102,105,110,105,115,104,101,100,32,99,97,112,116,117,114,101,0,0,0,0,0,0,99,97,110,110,111,116,32,117,115,101,32,39,46,46,46,39,32,111,117,116,115,105,100,101,32,97,32,118,97,114,97,114,103,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,97,108,108,0,0,0,0,0,109,105,110,0,0,0,0,0,99,108,111,115,101,100,32,102,105,108,101,0,0,0,0,0,37,100,58,0,0,0,0,0,95,95,109,111,100,101,0,0,114,101,111,112,101,110,0,0,95,95,117,110,109,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,0,0,37,112,0,0,0,0,0,0,99,111,110,99,97,116,101,110,97,116,101,0,0,0,0,0,110,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,0,0,0,0,0,0,0,119,104,105,108,101,0,0,0,109,111,100,117,108,101,32,39,37,115,39,32,110,111,116,32,102,111,117,110,100,58,37,115,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,97,112,116,117,114,101,32,105,110,100,101,120,0,0,0,102,105,101,108,100,32,39,37,115,39,32,109,105,115,115,105,110,103,32,105,110,32,100,97,116,101,32,116,97,98,108,101,0,0,0,0,0,0,0,0,109,97,120,0,0,0,0,0,37,46,49,52,103,0,0,0,37,115,58,0,0,0,0,0,107,118,0,0,0,0,0,0,114,98,0,0,0,0,0,0,95,95,112,111,119,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,0,0,0,0,40,42,116,101,109,112,111,114,97,114,121,41,0,0,0,0,63,0,0,0,0,0,0,0,40,110,117,108,108,41,0,0,117,110,116,105,108,0,0,0,116,97,98,108,101,32,105,110,100,101,120,32,105,115,32,110,105,108,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,97,112,116,117,114,101,115,0,0,0,0,0,0,0,105,115,100,115,116,0,0,0,108,111,103,0,0,0,0,0,115,116,97,110,100,97,114,100,32,37,115,32,102,105,108,101,32,105,115,32,99,108,111,115,101,100,0,0,0,0,0,0,83,110,108,0,0,0,0,0,112,97,105,114,115,0,0,0,95,95,109,111,100,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,61,40,116,97,105,108,32,99,97,108,108,41,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,37,115,32,97,32,37,115,32,118,97,108,117,101,0,0,0,0,0,0,0,0,116,114,117,101,0,0,0,0,39,112,97,99,107,97,103,101,46,108,111,97,100,101,114,115,39,32,109,117,115,116,32,98,101,32,97,32,116,97,98,108,101,0,0,0,0,0,0,0,94,36,42,43,63,46,40,91,37,45,0,0,0,0,0,0,121,101,97,114,0,0,0,0,110,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,0,0,0,0,0,0,0,108,111,103,49,48,0,0,0,119,114,105,116,101,0,0,0,10,9,0,0,0,0,0,0,105,112,97,105,114,115,0,0,111,112,101,110,0,0,0,0,95,95,100,105,118,0,0,0,39,61,39,32,111,114,32,39,105,110,39,32,101,120,112,101,99,116,101,100,0,0,0,0,116,97,105,108,0,0,0,0,116,104,101,110,0,0,0,0,108,111,111,112,32,111,114,32,112,114,101,118,105,111,117,115,32,101,114,114,111,114,32,108,111,97,100,105,110,103,32,109,111,100,117,108,101,32,39,37,115,39,0,0,0,0,0,0,117,112,112,101,114,0,0,0,109,111,110,116,104,0,0,0,108,100,101,120,112,0,0,0,116,121,112,101,0,0,0,0,10,9,46,46,46,0,0,0,95,86,69,82,83,73,79,78,0,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,95,95,109,117,108,0,0,0,110,111,32,108,111,111,112,32,116,111,32,98,114,101,97,107,0,0,0,0,0,0,0,0,76,117,97,0,0,0,0,0,114,101,116,117,114,110,0,0,114,101,113,117,105,114,101,0,115,117,98,0,0,0,0,0,100,97,121,0,0,0,0,0,102,114,101,120,112,0,0,0,116,109,112,102,105,108,101,0,112,97,99,107,97,103,101,0,98,114,101,97,107,0,0,0,115,116,97,99,107,32,116,114,97,99,101,98,97,99,107,58,0,0,0,0,0,0,0,0,76,117,97,32,53,46,49,0,64,37,115,0,0,0,0,0,95,95,115,117,98,0,0,0,109,97,105,110,0,0,0,0,95,95,103,99,0,0,0,0,114,101,112,101,97,116,0,0,109,111,100,117,108,101,0,0,114,101,118,101,114,115,101,0,103,109,97,116,99,104,0,0,104,111,117,114,0,0,0,0,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,102,108,111,111,114,0,0,0,114,101,97,100,0,0,0,0,99,111,110,99,97,116,0,0,10,0,0,0,0,0,0,0,95,71,0,0,0,0,0,0,61,115,116,100,105,110,0,0,95,95,97,100,100,0,0,0,117,112,118,97,108,117,101,115,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,99,108,111,99,107,0,0,0,99,111,100,101,32,115,105,122,101,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,111,114,0,0,0,0,0,0,112,105,0,0,0,0,0,0,112,114,101,108,111,97,100,0,114,101,112,0,0,0,0,0,105,110,118,97,108,105,100,32,118,97,108,117,101,32,40,37,115,41,32,97,116,32,105,110,100,101,120,32,37,100,32,105,110,32,116,97,98,108,101,32,102,111,114,32,39,99,111,110,99,97,116,39,0,0,0,0,109,105,110,0,0,0,0,0,101,120,112,0,0,0,0,0,111,117,116,112,117,116,0,0,76,117,97,32,102,117,110,99,116,105,111,110,32,101,120,112,101,99,116,101,100,0,0,0,110,97,109,101,32,99,111,110,102,108,105,99,116,32,102,111,114,32,109,111,100,117,108,101,32,39,37,115,39,0,0,0,115,116,100,105,110,0,0,0,95,95,101,113,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,115,121,109,98,111,108,0,0,0,0,0,0,0,61,91,67,93,0,0,0,0,110,111,116,0,0,0,0,0,103,101,116,102,101,110,118,0,108,111,97,100,101,100,0,0,109,97,116,99,104,0,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,39,105,110,115,101,114,116,39,0,0,0,115,101,99,0,0,0,0,0,100,101,103,0,0,0,0,0,111,112,101,110,0,0,0,0,116,114,97,99,101,98,97,99,107,0,0,0,0,0,0,0,99,111,114,111,117,116,105,110,101,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,95,76,79,65,68,69,68,0,99,114,101,97,116,101,0,0,95,95,109,111,100,101,0,0,102,117,110,99,116,105,111,110,32,97,114,103,117,109,101,110,116,115,32,101,120,112,101,99,116,101,100,0,0,0,0,0,110,0,0,0,0,0,0,0,110,105,108,0,0,0,0,0,105,110,100,101,120,0,0,0,95,76,79,65,68,69,68,0,108,111,119,101,114,0,0,0,39,115,101,116,110,39,32,105,115,32,111,98,115,111,108,101,116,101,0,0,0,0,0,0,98,105,110,97,114,121,32,115,116,114,105,110,103,0,0,0,117,110,97,98,108,101,32,116,111,32,103,101,110,101,114,97,116,101,32,97,32,117,110,105,113,117,101,32,102,105,108,101,110,97,109,101,0,0,0,0,99,111,115,0,0,0,0,0,108,105,110,101,115,0,0,0,115,101,116,117,112,118,97,108,117,101,0,0,0,0,0,0,100,101,97,100,0,0,0,0,118,97,108,117,101,32,101,120,112,101,99,116,101,100,0,0,95,95,103,99,0,0,0,0,101,114,114,111,114,32,105,110,32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,0,98,111,111,108,101,97,110,0,97,109,98,105,103,117,111,117,115,32,115,121,110,116,97,120,32,40,102,117,110,99,116,105,111,110,32,99,97,108,108,32,120,32,110,101,119,32,115,116,97,116,101,109,101,110,116,41,0,0,0,0,0,0,0,0,109,101,116,104,111,100,0,0,116,97,98,108,101,32,105,110,100,101,120,32,105,115,32,78,97,78,0,0,0,0,0,0,108,111,99,97,108,0,0,0,99,111,110,102,105,103,0,0,108,101,110,0,0,0,0,0,118,97,114,105,97,98,108,101,115,32,105,110,32,97,115,115,105,103,110,109,101,110,116,0,105,110,118,97,108,105,100,32,111,114,100,101,114,32,102,117,110,99,116,105,111,110,32,102,111,114,32,115,111,114,116,105,110,103,0,0,0,0,0,0,116,109,112,110,97,109,101,0,99,111,115,104,0,0,0,0,105,110,112,117,116,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,110,111,114,109,97,108,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,32,40,37,115,41,0,0,0,0,0,95,95,110,101,119,105,110,100,101,120,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,104,97,115,32,109,111,114,101,32,116,104,97].concat([110,32,37,100,32,37,115,0,117,112,118,97,108,117,101,0,105,110,0,0,0,0,0,0,47,10,59,10,63,10,33,10,45,0,0,0,0,0,0,0,103,115,117,98,0,0,0,0,116,105,109,101,0,0,0,0,99,101,105,108,0,0,0,0,102,108,117,115,104,0,0,0,115,101,116,108,111,99,97,108,0,0,0,0,0,0,0,0,115,117,115,112,101,110,100,101,100,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,115,39,0,0,0,0,0,95,95,105,110,100,101,120,0,109,97,105,110,32,102,117,110,99,116,105,111,110,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,100,32,37,115,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,110,111,32,118,97,108,117,101,0,0,0,0,0,0,0,0,110,111,32,99,97,108,108,105,110,103,32,101,110,118,105,114,111,110,109,101,110,116,0,0,104,0,0,0,0,0,0,0])\ | |
3117 , \"i8\", ALLOC_NONE, Runtime.GLOBAL_BASE)\ | |
3118 var tempDoublePtr = Runtime.alignMemory(allocate(12, \"i8\", ALLOC_STATIC), 8);\ | |
3119 assert(tempDoublePtr % 8 == 0);\ | |
3120 function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much\ | |
3121 HEAP8[tempDoublePtr] = HEAP8[ptr];\ | |
3122 HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\ | |
3123 HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\ | |
3124 HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\ | |
3125 }\ | |
3126 function copyTempDouble(ptr) {\ | |
3127 HEAP8[tempDoublePtr] = HEAP8[ptr];\ | |
3128 HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\ | |
3129 HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\ | |
3130 HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\ | |
3131 HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];\ | |
3132 HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];\ | |
3133 HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];\ | |
3134 HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];\ | |
3135 }\ | |
3136 Module[\"_strlen\"] = _strlen;\ | |
3137 var _llvm_va_start=undefined;\ | |
3138 function _llvm_va_end() {}\ | |
3139 Module[\"_memcpy\"] = _memcpy;var _llvm_memcpy_p0i8_p0i8_i32=_memcpy;\ | |
3140 var _floor=Math.floor;\ | |
3141 var _llvm_pow_f64=Math.pow;\ | |
3142 function _llvm_lifetime_start() {}\ | |
3143 function _llvm_lifetime_end() {}\ | |
3144 function _strchr(ptr, chr) {\ | |
3145 ptr--;\ | |
3146 do {\ | |
3147 ptr++;\ | |
3148 var val = HEAP8[(ptr)];\ | |
3149 if (val == chr) return ptr;\ | |
3150 } while (val);\ | |
3151 return 0;\ | |
3152 }\ | |
3153 var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:35,EIDRM:36,ECHRNG:37,EL2NSYNC:38,EL3HLT:39,EL3RST:40,ELNRNG:41,EUNATCH:42,ENOCSI:43,EL2HLT:44,EDEADLK:45,ENOLCK:46,EBADE:50,EBADR:51,EXFULL:52,ENOANO:53,EBADRQC:54,EBADSLT:55,EDEADLOCK:56,EBFONT:57,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:74,EDOTDOT:76,EBADMSG:77,ENOTUNIQ:80,EBADFD:81,EREMCHG:82,ELIBACC:83,ELIBBAD:84,ELIBSCN:85,ELIBMAX:86,ELIBEXEC:87,ENOSYS:88,ENOTEMPTY:90,ENAMETOOLONG:91,ELOOP:92,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:106,EPROTOTYPE:107,ENOTSOCK:108,ENOPROTOOPT:109,ESHUTDOWN:110,ECONNREFUSED:111,EADDRINUSE:112,ECONNABORTED:113,ENETUNREACH:114,ENETDOWN:115,ETIMEDOUT:116,EHOSTDOWN:117,EHOSTUNREACH:118,EINPROGRESS:119,EALREADY:120,EDESTADDRREQ:121,EMSGSIZE:122,EPROTONOSUPPORT:123,ESOCKTNOSUPPORT:124,EADDRNOTAVAIL:125,ENETRESET:126,EISCONN:127,ENOTCONN:128,ETOOMANYREFS:129,EUSERS:131,EDQUOT:132,ESTALE:133,ENOTSUP:134,ENOMEDIUM:135,EILSEQ:138,EOVERFLOW:139,ECANCELED:140,ENOTRECOVERABLE:141,EOWNERDEAD:142,ESTRPIPE:143};\ | |
3154 var ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"No message of desired type\",36:\"Identifier removed\",37:\"Channel number out of range\",38:\"Level 2 not synchronized\",39:\"Level 3 halted\",40:\"Level 3 reset\",41:\"Link number out of range\",42:\"Protocol driver not attached\",43:\"No CSI structure available\",44:\"Level 2 halted\",45:\"Deadlock condition\",46:\"No record locks available\",50:\"Invalid exchange\",51:\"Invalid request descriptor\",52:\"Exchange full\",53:\"No anode\",54:\"Invalid request code\",55:\"Invalid slot\",56:\"File locking deadlock error\",57:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",74:\"Multihop attempted\",76:\"Cross mount point (not really error)\",77:\"Trying to read unreadable message\",80:\"Given log. name not unique\",81:\"f.d. invalid for this operation\",82:\"Remote address changed\",83:\"Can access a needed shared lib\",84:\"Accessing a corrupted shared lib\",85:\".lib section in a.out corrupted\",86:\"Attempting to link in too many libs\",87:\"Attempting to exec a shared library\",88:\"Function not implemented\",90:\"Directory not empty\",91:\"File or path name too long\",92:\"Too many symbolic links\",95:\"Operation not supported on transport endpoint\",96:\"Protocol family not supported\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Address family not supported by protocol family\",107:\"Protocol wrong type for socket\",108:\"Socket operation on non-socket\",109:\"Protocol not available\",110:\"Can't send after socket shutdown\",111:\"Connection refused\",112:\"Address already in use\",113:\"Connection aborted\",114:\"Network is unreachable\",115:\"Network interface is not configured\",116:\"Connection timed out\",117:\"Host is down\",118:\"Host is unreachable\",119:\"Connection already in progress\",120:\"Socket already connected\",121:\"Destination address required\",122:\"Message too long\",123:\"Unknown protocol\",124:\"Socket type not supported\",125:\"Address not available\",126:\"Connection reset by network\",127:\"Socket is already connected\",128:\"Socket is not connected\",129:\"Too many references\",131:\"Too many users\",132:\"Quota exceeded\",133:\"Stale file handle\",134:\"Not supported\",135:\"No medium (in tape drive)\",138:\"Illegal byte sequence\",139:\"Value too large for defined data type\",140:\"Operation canceled\",141:\"State not recoverable\",142:\"Previous owner died\",143:\"Streams pipe error\"};\ | |
3155 var ___errno_state=0;function ___setErrNo(value) {\ | |
3156 // For convenient setting and returning of errno.\ | |
3157 HEAP32[((___errno_state)>>2)]=value\ | |
3158 return value;\ | |
3159 }\ | |
3160 var VFS=undefined;\ | |
3161 var PATH={splitPath:function (filename) {\ | |
3162 var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\ | |
3163 return splitPathRe.exec(filename).slice(1);\ | |
3164 },normalizeArray:function (parts, allowAboveRoot) {\ | |
3165 // if the path tries to go above the root, `up` ends up > 0\ | |
3166 var up = 0;\ | |
3167 for (var i = parts.length - 1; i >= 0; i--) {\ | |
3168 var last = parts[i];\ | |
3169 if (last === '.') {\ | |
3170 parts.splice(i, 1);\ | |
3171 } else if (last === '..') {\ | |
3172 parts.splice(i, 1);\ | |
3173 up++;\ | |
3174 } else if (up) {\ | |
3175 parts.splice(i, 1);\ | |
3176 up--;\ | |
3177 }\ | |
3178 }\ | |
3179 // if the path is allowed to go above the root, restore leading ..s\ | |
3180 if (allowAboveRoot) {\ | |
3181 for (; up--; up) {\ | |
3182 parts.unshift('..');\ | |
3183 }\ | |
3184 }\ | |
3185 return parts;\ | |
3186 },normalize:function (path) {\ | |
3187 var isAbsolute = path.charAt(0) === '/',\ | |
3188 trailingSlash = path.substr(-1) === '/';\ | |
3189 // Normalize the path\ | |
3190 path = PATH.normalizeArray(path.split('/').filter(function(p) {\ | |
3191 return !!p;\ | |
3192 }), !isAbsolute).join('/');\ | |
3193 if (!path && !isAbsolute) {\ | |
3194 path = '.';\ | |
3195 }\ | |
3196 if (path && trailingSlash) {\ | |
3197 path += '/';\ | |
3198 }\ | |
3199 return (isAbsolute ? '/' : '') + path;\ | |
3200 },dirname:function (path) {\ | |
3201 var result = PATH.splitPath(path),\ | |
3202 root = result[0],\ | |
3203 dir = result[1];\ | |
3204 if (!root && !dir) {\ | |
3205 // No dirname whatsoever\ | |
3206 return '.';\ | |
3207 }\ | |
3208 if (dir) {\ | |
3209 // It has a dirname, strip trailing slash\ | |
3210 dir = dir.substr(0, dir.length - 1);\ | |
3211 }\ | |
3212 return root + dir;\ | |
3213 },basename:function (path, ext) {\ | |
3214 // EMSCRIPTEN return '/'' for '/', not an empty string\ | |
3215 if (path === '/') return '/';\ | |
3216 var f = PATH.splitPath(path)[2];\ | |
3217 if (ext && f.substr(-1 * ext.length) === ext) {\ | |
3218 f = f.substr(0, f.length - ext.length);\ | |
3219 }\ | |
3220 return f;\ | |
3221 },extname:function (path) {\ | |
3222 return PATH.splitPath(path)[3];\ | |
3223 },join:function () {\ | |
3224 var paths = Array.prototype.slice.call(arguments, 0);\ | |
3225 return PATH.normalize(paths.filter(function(p, index) {\ | |
3226 if (typeof p !== 'string') {\ | |
3227 throw new TypeError('Arguments to path.join must be strings');\ | |
3228 }\ | |
3229 return p;\ | |
3230 }).join('/'));\ | |
3231 },resolve:function () {\ | |
3232 var resolvedPath = '',\ | |
3233 resolvedAbsolute = false;\ | |
3234 for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\ | |
3235 var path = (i >= 0) ? arguments[i] : FS.cwd();\ | |
3236 // Skip empty and invalid entries\ | |
3237 if (typeof path !== 'string') {\ | |
3238 throw new TypeError('Arguments to path.resolve must be strings');\ | |
3239 } else if (!path) {\ | |
3240 continue;\ | |
3241 }\ | |
3242 resolvedPath = path + '/' + resolvedPath;\ | |
3243 resolvedAbsolute = path.charAt(0) === '/';\ | |
3244 }\ | |
3245 // At this point the path should be resolved to a full absolute path, but\ | |
3246 // handle relative paths to be safe (might happen when process.cwd() fails)\ | |
3247 resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {\ | |
3248 return !!p;\ | |
3249 }), !resolvedAbsolute).join('/');\ | |
3250 return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\ | |
3251 },relative:function (from, to) {\ | |
3252 from = PATH.resolve(from).substr(1);\ | |
3253 to = PATH.resolve(to).substr(1);\ | |
3254 function trim(arr) {\ | |
3255 var start = 0;\ | |
3256 for (; start < arr.length; start++) {\ | |
3257 if (arr[start] !== '') break;\ | |
3258 }\ | |
3259 var end = arr.length - 1;\ | |
3260 for (; end >= 0; end--) {\ | |
3261 if (arr[end] !== '') break;\ | |
3262 }\ | |
3263 if (start > end) return [];\ | |
3264 return arr.slice(start, end - start + 1);\ | |
3265 }\ | |
3266 var fromParts = trim(from.split('/'));\ | |
3267 var toParts = trim(to.split('/'));\ | |
3268 var length = Math.min(fromParts.length, toParts.length);\ | |
3269 var samePartsLength = length;\ | |
3270 for (var i = 0; i < length; i++) {\ | |
3271 if (fromParts[i] !== toParts[i]) {\ | |
3272 samePartsLength = i;\ | |
3273 break;\ | |
3274 }\ | |
3275 }\ | |
3276 var outputParts = [];\ | |
3277 for (var i = samePartsLength; i < fromParts.length; i++) {\ | |
3278 outputParts.push('..');\ | |
3279 }\ | |
3280 outputParts = outputParts.concat(toParts.slice(samePartsLength));\ | |
3281 return outputParts.join('/');\ | |
3282 }};\ | |
3283 var TTY={ttys:[],init:function () {\ | |
3284 // https://github.com/kripken/emscripten/pull/1555\ | |
3285 // if (ENVIRONMENT_IS_NODE) {\ | |
3286 // // currently, FS.init does not distinguish if process.stdin is a file or TTY\ | |
3287 // // device, it always assumes it's a TTY device. because of this, we're forcing\ | |
3288 // // process.stdin to UTF8 encoding to at least make stdin reading compatible\ | |
3289 // // with text files until FS.init can be refactored.\ | |
3290 // process['stdin']['setEncoding']('utf8');\ | |
3291 // }\ | |
3292 },shutdown:function () {\ | |
3293 // https://github.com/kripken/emscripten/pull/1555\ | |
3294 // if (ENVIRONMENT_IS_NODE) {\ | |
3295 // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?\ | |
3296 // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation\ | |
3297 // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?\ | |
3298 // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle\ | |
3299 // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call\ | |
3300 // process['stdin']['pause']();\ | |
3301 // }\ | |
3302 },register:function (dev, ops) {\ | |
3303 TTY.ttys[dev] = { input: [], output: [], ops: ops };\ | |
3304 FS.registerDevice(dev, TTY.stream_ops);\ | |
3305 },stream_ops:{open:function (stream) {\ | |
3306 var tty = TTY.ttys[stream.node.rdev];\ | |
3307 if (!tty) {\ | |
3308 throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\ | |
3309 }\ | |
3310 stream.tty = tty;\ | |
3311 stream.seekable = false;\ | |
3312 },close:function (stream) {\ | |
3313 // flush any pending line data\ | |
3314 if (stream.tty.output.length) {\ | |
3315 stream.tty.ops.put_char(stream.tty, 10);\ | |
3316 }\ | |
3317 },read:function (stream, buffer, offset, length, pos /* ignored */) {\ | |
3318 if (!stream.tty || !stream.tty.ops.get_char) {\ | |
3319 throw new FS.ErrnoError(ERRNO_CODES.ENXIO);\ | |
3320 }\ | |
3321 var bytesRead = 0;\ | |
3322 for (var i = 0; i < length; i++) {\ | |
3323 var result;\ | |
3324 try {\ | |
3325 result = stream.tty.ops.get_char(stream.tty);\ | |
3326 } catch (e) {\ | |
3327 throw new FS.ErrnoError(ERRNO_CODES.EIO);\ | |
3328 }\ | |
3329 if (result === undefined && bytesRead === 0) {\ | |
3330 throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\ | |
3331 }\ | |
3332 if (result === null || result === undefined) break;\ | |
3333 bytesRead++;\ | |
3334 buffer[offset+i] = result;\ | |
3335 }\ | |
3336 if (bytesRead) {\ | |
3337 stream.node.timestamp = Date.now();\ | |
3338 }\ | |
3339 return bytesRead;\ | |
3340 },write:function (stream, buffer, offset, length, pos) {\ | |
3341 if (!stream.tty || !stream.tty.ops.put_char) {\ | |
3342 throw new FS.ErrnoError(ERRNO_CODES.ENXIO);\ | |
3343 }\ | |
3344 for (var i = 0; i < length; i++) {\ | |
3345 try {\ | |
3346 stream.tty.ops.put_char(stream.tty, buffer[offset+i]);\ | |
3347 } catch (e) {\ | |
3348 throw new FS.ErrnoError(ERRNO_CODES.EIO);\ | |
3349 }\ | |
3350 }\ | |
3351 if (length) {\ | |
3352 stream.node.timestamp = Date.now();\ | |
3353 }\ | |
3354 return i;\ | |
3355 }},default_tty_ops:{get_char:function (tty) {\ | |
3356 if (!tty.input.length) {\ | |
3357 var result = null;\ | |
3358 if (ENVIRONMENT_IS_NODE) {\ | |
3359 result = process['stdin']['read']();\ | |
3360 if (!result) {\ | |
3361 if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) {\ | |
3362 return null; // EOF\ | |
3363 }\ | |
3364 return undefined; // no data available\ | |
3365 }\ | |
3366 } else if (typeof window != 'undefined' &&\ | |
3367 typeof window.prompt == 'function') {\ | |
3368 // Browser.\ | |
3369 result = window.prompt('Input: '); // returns null on cancel\ | |
3370 if (result !== null) {\ | |
3371 result += '\\n';\ | |
3372 }\ | |
3373 } else if (typeof readline == 'function') {\ | |
3374 // Command line.\ | |
3375 result = readline();\ | |
3376 if (result !== null) {\ | |
3377 result += '\\n';\ | |
3378 }\ | |
3379 }\ | |
3380 if (!result) {\ | |
3381 return null;\ | |
3382 }\ | |
3383 tty.input = intArrayFromString(result, true);\ | |
3384 }\ | |
3385 return tty.input.shift();\ | |
3386 },put_char:function (tty, val) {\ | |
3387 if (val === null || val === 10) {\ | |
3388 Module['print'](tty.output.join(''));\ | |
3389 tty.output = [];\ | |
3390 } else {\ | |
3391 tty.output.push(TTY.utf8.processCChar(val));\ | |
3392 }\ | |
3393 }},default_tty1_ops:{put_char:function (tty, val) {\ | |
3394 if (val === null || val === 10) {\ | |
3395 Module['printErr'](tty.output.join(''));\ | |
3396 tty.output = [];\ | |
3397 } else {\ | |
3398 tty.output.push(TTY.utf8.processCChar(val));\ | |
3399 }\ | |
3400 }}};\ | |
3401 var MEMFS={CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,ensureFlexible:function (node) {\ | |
3402 if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) {\ | |
3403 var contents = node.contents;\ | |
3404 node.contents = Array.prototype.slice.call(contents);\ | |
3405 node.contentMode = MEMFS.CONTENT_FLEXIBLE;\ | |
3406 }\ | |
3407 },mount:function (mount) {\ | |
3408 return MEMFS.create_node(null, '/', 0040000 | 0777, 0);\ | |
3409 },create_node:function (parent, name, mode, dev) {\ | |
3410 if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\ | |
3411 // no supported\ | |
3412 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
3413 }\ | |
3414 var node = FS.createNode(parent, name, mode, dev);\ | |
3415 if (FS.isDir(node.mode)) {\ | |
3416 node.node_ops = {\ | |
3417 getattr: MEMFS.node_ops.getattr,\ | |
3418 setattr: MEMFS.node_ops.setattr,\ | |
3419 lookup: MEMFS.node_ops.lookup,\ | |
3420 mknod: MEMFS.node_ops.mknod,\ | |
3421 mknod: MEMFS.node_ops.mknod,\ | |
3422 rename: MEMFS.node_ops.rename,\ | |
3423 unlink: MEMFS.node_ops.unlink,\ | |
3424 rmdir: MEMFS.node_ops.rmdir,\ | |
3425 readdir: MEMFS.node_ops.readdir,\ | |
3426 symlink: MEMFS.node_ops.symlink\ | |
3427 };\ | |
3428 node.stream_ops = {\ | |
3429 llseek: MEMFS.stream_ops.llseek\ | |
3430 };\ | |
3431 node.contents = {};\ | |
3432 } else if (FS.isFile(node.mode)) {\ | |
3433 node.node_ops = {\ | |
3434 getattr: MEMFS.node_ops.getattr,\ | |
3435 setattr: MEMFS.node_ops.setattr\ | |
3436 };\ | |
3437 node.stream_ops = {\ | |
3438 llseek: MEMFS.stream_ops.llseek,\ | |
3439 read: MEMFS.stream_ops.read,\ | |
3440 write: MEMFS.stream_ops.write,\ | |
3441 allocate: MEMFS.stream_ops.allocate,\ | |
3442 mmap: MEMFS.stream_ops.mmap\ | |
3443 };\ | |
3444 node.contents = [];\ | |
3445 node.contentMode = MEMFS.CONTENT_FLEXIBLE;\ | |
3446 } else if (FS.isLink(node.mode)) {\ | |
3447 node.node_ops = {\ | |
3448 getattr: MEMFS.node_ops.getattr,\ | |
3449 setattr: MEMFS.node_ops.setattr,\ | |
3450 readlink: MEMFS.node_ops.readlink\ | |
3451 };\ | |
3452 node.stream_ops = {};\ | |
3453 } else if (FS.isChrdev(node.mode)) {\ | |
3454 node.node_ops = {\ | |
3455 getattr: MEMFS.node_ops.getattr,\ | |
3456 setattr: MEMFS.node_ops.setattr\ | |
3457 };\ | |
3458 node.stream_ops = FS.chrdev_stream_ops;\ | |
3459 }\ | |
3460 node.timestamp = Date.now();\ | |
3461 // add the new node to the parent\ | |
3462 if (parent) {\ | |
3463 parent.contents[name] = node;\ | |
3464 }\ | |
3465 return node;\ | |
3466 },node_ops:{getattr:function (node) {\ | |
3467 var attr = {};\ | |
3468 // device numbers reuse inode numbers.\ | |
3469 attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\ | |
3470 attr.ino = node.id;\ | |
3471 attr.mode = node.mode;\ | |
3472 attr.nlink = 1;\ | |
3473 attr.uid = 0;\ | |
3474 attr.gid = 0;\ | |
3475 attr.rdev = node.rdev;\ | |
3476 if (FS.isDir(node.mode)) {\ | |
3477 attr.size = 4096;\ | |
3478 } else if (FS.isFile(node.mode)) {\ | |
3479 attr.size = node.contents.length;\ | |
3480 } else if (FS.isLink(node.mode)) {\ | |
3481 attr.size = node.link.length;\ | |
3482 } else {\ | |
3483 attr.size = 0;\ | |
3484 }\ | |
3485 attr.atime = new Date(node.timestamp);\ | |
3486 attr.mtime = new Date(node.timestamp);\ | |
3487 attr.ctime = new Date(node.timestamp);\ | |
3488 // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),\ | |
3489 // but this is not required by the standard.\ | |
3490 attr.blksize = 4096;\ | |
3491 attr.blocks = Math.ceil(attr.size / attr.blksize);\ | |
3492 return attr;\ | |
3493 },setattr:function (node, attr) {\ | |
3494 if (attr.mode !== undefined) {\ | |
3495 node.mode = attr.mode;\ | |
3496 }\ | |
3497 if (attr.timestamp !== undefined) {\ | |
3498 node.timestamp = attr.timestamp;\ | |
3499 }\ | |
3500 if (attr.size !== undefined) {\ | |
3501 MEMFS.ensureFlexible(node);\ | |
3502 var contents = node.contents;\ | |
3503 if (attr.size < contents.length) contents.length = attr.size;\ | |
3504 else while (attr.size > contents.length) contents.push(0);\ | |
3505 }\ | |
3506 },lookup:function (parent, name) {\ | |
3507 throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\ | |
3508 },mknod:function (parent, name, mode, dev) {\ | |
3509 return MEMFS.create_node(parent, name, mode, dev);\ | |
3510 },rename:function (old_node, new_dir, new_name) {\ | |
3511 // if we're overwriting a directory at new_name, make sure it's empty.\ | |
3512 if (FS.isDir(old_node.mode)) {\ | |
3513 var new_node;\ | |
3514 try {\ | |
3515 new_node = FS.lookupNode(new_dir, new_name);\ | |
3516 } catch (e) {\ | |
3517 }\ | |
3518 if (new_node) {\ | |
3519 for (var i in new_node.contents) {\ | |
3520 throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);\ | |
3521 }\ | |
3522 }\ | |
3523 }\ | |
3524 // do the internal rewiring\ | |
3525 delete old_node.parent.contents[old_node.name];\ | |
3526 old_node.name = new_name;\ | |
3527 new_dir.contents[new_name] = old_node;\ | |
3528 },unlink:function (parent, name) {\ | |
3529 delete parent.contents[name];\ | |
3530 },rmdir:function (parent, name) {\ | |
3531 var node = FS.lookupNode(parent, name);\ | |
3532 for (var i in node.contents) {\ | |
3533 throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);\ | |
3534 }\ | |
3535 delete parent.contents[name];\ | |
3536 },readdir:function (node) {\ | |
3537 var entries = ['.', '..']\ | |
3538 for (var key in node.contents) {\ | |
3539 if (!node.contents.hasOwnProperty(key)) {\ | |
3540 continue;\ | |
3541 }\ | |
3542 entries.push(key);\ | |
3543 }\ | |
3544 return entries;\ | |
3545 },symlink:function (parent, newname, oldpath) {\ | |
3546 var node = MEMFS.create_node(parent, newname, 0777 | 0120000, 0);\ | |
3547 node.link = oldpath;\ | |
3548 return node;\ | |
3549 },readlink:function (node) {\ | |
3550 if (!FS.isLink(node.mode)) {\ | |
3551 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
3552 }\ | |
3553 return node.link;\ | |
3554 }},stream_ops:{read:function (stream, buffer, offset, length, position) {\ | |
3555 var contents = stream.node.contents;\ | |
3556 var size = Math.min(contents.length - position, length);\ | |
3557 if (size > 8 && contents.subarray) { // non-trivial, and typed array\ | |
3558 buffer.set(contents.subarray(position, position + size), offset);\ | |
3559 } else\ | |
3560 {\ | |
3561 for (var i = 0; i < size; i++) {\ | |
3562 buffer[offset + i] = contents[position + i];\ | |
3563 }\ | |
3564 }\ | |
3565 return size;\ | |
3566 },write:function (stream, buffer, offset, length, position, canOwn) {\ | |
3567 var node = stream.node;\ | |
3568 node.timestamp = Date.now();\ | |
3569 var contents = node.contents;\ | |
3570 if (length && contents.length === 0 && position === 0 && buffer.subarray) {\ | |
3571 // just replace it with the new data\ | |
3572 assert(buffer.length);\ | |
3573 if (canOwn && buffer.buffer === HEAP8.buffer && offset === 0) {\ | |
3574 node.contents = buffer; // this is a subarray of the heap, and we can own it\ | |
3575 node.contentMode = MEMFS.CONTENT_OWNING;\ | |
3576 } else {\ | |
3577 node.contents = new Uint8Array(buffer.subarray(offset, offset+length));\ | |
3578 node.contentMode = MEMFS.CONTENT_FIXED;\ | |
3579 }\ | |
3580 return length;\ | |
3581 }\ | |
3582 MEMFS.ensureFlexible(node);\ | |
3583 var contents = node.contents;\ | |
3584 while (contents.length < position) contents.push(0);\ | |
3585 for (var i = 0; i < length; i++) {\ | |
3586 contents[position + i] = buffer[offset + i];\ | |
3587 }\ | |
3588 return length;\ | |
3589 },llseek:function (stream, offset, whence) {\ | |
3590 var position = offset;\ | |
3591 if (whence === 1) { // SEEK_CUR.\ | |
3592 position += stream.position;\ | |
3593 } else if (whence === 2) { // SEEK_END.\ | |
3594 if (FS.isFile(stream.node.mode)) {\ | |
3595 position += stream.node.contents.length;\ | |
3596 }\ | |
3597 }\ | |
3598 if (position < 0) {\ | |
3599 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
3600 }\ | |
3601 stream.ungotten = [];\ | |
3602 stream.position = position;\ | |
3603 return position;\ | |
3604 },allocate:function (stream, offset, length) {\ | |
3605 MEMFS.ensureFlexible(stream.node);\ | |
3606 var contents = stream.node.contents;\ | |
3607 var limit = offset + length;\ | |
3608 while (limit > contents.length) contents.push(0);\ | |
3609 },mmap:function (stream, buffer, offset, length, position, prot, flags) {\ | |
3610 if (!FS.isFile(stream.node.mode)) {\ | |
3611 throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\ | |
3612 }\ | |
3613 var ptr;\ | |
3614 var allocated;\ | |
3615 var contents = stream.node.contents;\ | |
3616 // Only make a new copy when MAP_PRIVATE is specified.\ | |
3617 if ( !(flags & 0x02) &&\ | |
3618 (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {\ | |
3619 // We can't emulate MAP_SHARED when the file is not backed by the buffer\ | |
3620 // we're mapping to (e.g. the HEAP buffer).\ | |
3621 allocated = false;\ | |
3622 ptr = contents.byteOffset;\ | |
3623 } else {\ | |
3624 // Try to avoid unnecessary slices.\ | |
3625 if (position > 0 || position + length < contents.length) {\ | |
3626 if (contents.subarray) {\ | |
3627 contents = contents.subarray(position, position + length);\ | |
3628 } else {\ | |
3629 contents = Array.prototype.slice.call(contents, position, position + length);\ | |
3630 }\ | |
3631 }\ | |
3632 allocated = true;\ | |
3633 ptr = _malloc(length);\ | |
3634 if (!ptr) {\ | |
3635 throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);\ | |
3636 }\ | |
3637 buffer.set(contents, ptr);\ | |
3638 }\ | |
3639 return { ptr: ptr, allocated: allocated };\ | |
3640 }}};\ | |
3641 var _stdin=allocate(1, \"i32*\", ALLOC_STATIC);\ | |
3642 var _stdout=allocate(1, \"i32*\", ALLOC_STATIC);\ | |
3643 var _stderr=allocate(1, \"i32*\", ALLOC_STATIC);\ | |
3644 function _fflush(stream) {\ | |
3645 // int fflush(FILE *stream);\ | |
3646 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html\ | |
3647 // we don't currently perform any user-space buffering of data\ | |
3648 }var FS={root:null,devices:[null],streams:[null],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:function ErrnoError(errno) {\ | |
3649 this.errno = errno;\ | |
3650 for (var key in ERRNO_CODES) {\ | |
3651 if (ERRNO_CODES[key] === errno) {\ | |
3652 this.code = key;\ | |
3653 break;\ | |
3654 }\ | |
3655 }\ | |
3656 this.message = ERRNO_MESSAGES[errno];\ | |
3657 },handleFSError:function (e) {\ | |
3658 if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + new Error().stack;\ | |
3659 return ___setErrNo(e.errno);\ | |
3660 },cwd:function () {\ | |
3661 return FS.currentPath;\ | |
3662 },lookupPath:function (path, opts) {\ | |
3663 path = PATH.resolve(FS.currentPath, path);\ | |
3664 opts = opts || { recurse_count: 0 };\ | |
3665 if (opts.recurse_count > 8) { // max recursive lookup of 8\ | |
3666 throw new FS.ErrnoError(ERRNO_CODES.ELOOP);\ | |
3667 }\ | |
3668 // split the path\ | |
3669 var parts = PATH.normalizeArray(path.split('/').filter(function(p) {\ | |
3670 return !!p;\ | |
3671 }), false);\ | |
3672 // start at the root\ | |
3673 var current = FS.root;\ | |
3674 var current_path = '/';\ | |
3675 for (var i = 0; i < parts.length; i++) {\ | |
3676 var islast = (i === parts.length-1);\ | |
3677 if (islast && opts.parent) {\ | |
3678 // stop resolving\ | |
3679 break;\ | |
3680 }\ | |
3681 current = FS.lookupNode(current, parts[i]);\ | |
3682 current_path = PATH.join(current_path, parts[i]);\ | |
3683 // jump to the mount's root node if this is a mountpoint\ | |
3684 if (FS.isMountpoint(current)) {\ | |
3685 current = current.mount.root;\ | |
3686 }\ | |
3687 // follow symlinks\ | |
3688 // by default, lookupPath will not follow a symlink if it is the final path component.\ | |
3689 // setting opts.follow = true will override this behavior.\ | |
3690 if (!islast || opts.follow) {\ | |
3691 var count = 0;\ | |
3692 while (FS.isLink(current.mode)) {\ | |
3693 var link = FS.readlink(current_path);\ | |
3694 current_path = PATH.resolve(PATH.dirname(current_path), link);\ | |
3695 var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });\ | |
3696 current = lookup.node;\ | |
3697 if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).\ | |
3698 throw new FS.ErrnoError(ERRNO_CODES.ELOOP);\ | |
3699 }\ | |
3700 }\ | |
3701 }\ | |
3702 }\ | |
3703 return { path: current_path, node: current };\ | |
3704 },getPath:function (node) {\ | |
3705 var path;\ | |
3706 while (true) {\ | |
3707 if (FS.isRoot(node)) {\ | |
3708 return path ? PATH.join(node.mount.mountpoint, path) : node.mount.mountpoint;\ | |
3709 }\ | |
3710 path = path ? PATH.join(node.name, path) : node.name;\ | |
3711 node = node.parent;\ | |
3712 }\ | |
3713 },hashName:function (parentid, name) {\ | |
3714 var hash = 0;\ | |
3715 for (var i = 0; i < name.length; i++) {\ | |
3716 hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;\ | |
3717 }\ | |
3718 return ((parentid + hash) >>> 0) % FS.nameTable.length;\ | |
3719 },hashAddNode:function (node) {\ | |
3720 var hash = FS.hashName(node.parent.id, node.name);\ | |
3721 node.name_next = FS.nameTable[hash];\ | |
3722 FS.nameTable[hash] = node;\ | |
3723 },hashRemoveNode:function (node) {\ | |
3724 var hash = FS.hashName(node.parent.id, node.name);\ | |
3725 if (FS.nameTable[hash] === node) {\ | |
3726 FS.nameTable[hash] = node.name_next;\ | |
3727 } else {\ | |
3728 var current = FS.nameTable[hash];\ | |
3729 while (current) {\ | |
3730 if (current.name_next === node) {\ | |
3731 current.name_next = node.name_next;\ | |
3732 break;\ | |
3733 }\ | |
3734 current = current.name_next;\ | |
3735 }\ | |
3736 }\ | |
3737 },lookupNode:function (parent, name) {\ | |
3738 var err = FS.mayLookup(parent);\ | |
3739 if (err) {\ | |
3740 throw new FS.ErrnoError(err);\ | |
3741 }\ | |
3742 var hash = FS.hashName(parent.id, name);\ | |
3743 for (var node = FS.nameTable[hash]; node; node = node.name_next) {\ | |
3744 if (node.parent.id === parent.id && node.name === name) {\ | |
3745 return node;\ | |
3746 }\ | |
3747 }\ | |
3748 // if we failed to find it in the cache, call into the VFS\ | |
3749 return FS.lookup(parent, name);\ | |
3750 },createNode:function (parent, name, mode, rdev) {\ | |
3751 var node = {\ | |
3752 id: FS.nextInode++,\ | |
3753 name: name,\ | |
3754 mode: mode,\ | |
3755 node_ops: {},\ | |
3756 stream_ops: {},\ | |
3757 rdev: rdev,\ | |
3758 parent: null,\ | |
3759 mount: null\ | |
3760 };\ | |
3761 if (!parent) {\ | |
3762 parent = node; // root node sets parent to itself\ | |
3763 }\ | |
3764 node.parent = parent;\ | |
3765 node.mount = parent.mount;\ | |
3766 // compatibility\ | |
3767 var readMode = 292 | 73;\ | |
3768 var writeMode = 146;\ | |
3769 // NOTE we must use Object.defineProperties instead of individual calls to\ | |
3770 // Object.defineProperty in order to make closure compiler happy\ | |
3771 Object.defineProperties(node, {\ | |
3772 read: {\ | |
3773 get: function() { return (node.mode & readMode) === readMode; },\ | |
3774 set: function(val) { val ? node.mode |= readMode : node.mode &= ~readMode; }\ | |
3775 },\ | |
3776 write: {\ | |
3777 get: function() { return (node.mode & writeMode) === writeMode; },\ | |
3778 set: function(val) { val ? node.mode |= writeMode : node.mode &= ~writeMode; }\ | |
3779 },\ | |
3780 isFolder: {\ | |
3781 get: function() { return FS.isDir(node.mode); },\ | |
3782 },\ | |
3783 isDevice: {\ | |
3784 get: function() { return FS.isChrdev(node.mode); },\ | |
3785 },\ | |
3786 });\ | |
3787 FS.hashAddNode(node);\ | |
3788 return node;\ | |
3789 },destroyNode:function (node) {\ | |
3790 FS.hashRemoveNode(node);\ | |
3791 },isRoot:function (node) {\ | |
3792 return node === node.parent;\ | |
3793 },isMountpoint:function (node) {\ | |
3794 return node.mounted;\ | |
3795 },isFile:function (mode) {\ | |
3796 return (mode & 0170000) === 0100000;\ | |
3797 },isDir:function (mode) {\ | |
3798 return (mode & 0170000) === 0040000;\ | |
3799 },isLink:function (mode) {\ | |
3800 return (mode & 0170000) === 0120000;\ | |
3801 },isChrdev:function (mode) {\ | |
3802 return (mode & 0170000) === 0020000;\ | |
3803 },isBlkdev:function (mode) {\ | |
3804 return (mode & 0170000) === 0060000;\ | |
3805 },isFIFO:function (mode) {\ | |
3806 return (mode & 0170000) === 0010000;\ | |
3807 },isSocket:function (mode) {\ | |
3808 return (mode & 0140000) === 0140000;\ | |
3809 },flagModes:{\"r\":0,\"rs\":8192,\"r+\":2,\"w\":1537,\"wx\":3585,\"xw\":3585,\"w+\":1538,\"wx+\":3586,\"xw+\":3586,\"a\":521,\"ax\":2569,\"xa\":2569,\"a+\":522,\"ax+\":2570,\"xa+\":2570},modeStringToFlags:function (str) {\ | |
3810 var flags = FS.flagModes[str];\ | |
3811 if (typeof flags === 'undefined') {\ | |
3812 throw new Error('Unknown file open mode: ' + str);\ | |
3813 }\ | |
3814 return flags;\ | |
3815 },flagsToPermissionString:function (flag) {\ | |
3816 var accmode = flag & 3;\ | |
3817 var perms = ['r', 'w', 'rw'][accmode];\ | |
3818 if ((flag & 1024)) {\ | |
3819 perms += 'w';\ | |
3820 }\ | |
3821 return perms;\ | |
3822 },nodePermissions:function (node, perms) {\ | |
3823 if (FS.ignorePermissions) {\ | |
3824 return 0;\ | |
3825 }\ | |
3826 // return 0 if any user, group or owner bits are set.\ | |
3827 if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {\ | |
3828 return ERRNO_CODES.EACCES;\ | |
3829 } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {\ | |
3830 return ERRNO_CODES.EACCES;\ | |
3831 } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {\ | |
3832 return ERRNO_CODES.EACCES;\ | |
3833 }\ | |
3834 return 0;\ | |
3835 },mayLookup:function (dir) {\ | |
3836 return FS.nodePermissions(dir, 'x');\ | |
3837 },mayCreate:function (dir, name) {\ | |
3838 try {\ | |
3839 var node = FS.lookupNode(dir, name);\ | |
3840 return ERRNO_CODES.EEXIST;\ | |
3841 } catch (e) {\ | |
3842 }\ | |
3843 return FS.nodePermissions(dir, 'wx');\ | |
3844 },mayDelete:function (dir, name, isdir) {\ | |
3845 var node;\ | |
3846 try {\ | |
3847 node = FS.lookupNode(dir, name);\ | |
3848 } catch (e) {\ | |
3849 return e.errno;\ | |
3850 }\ | |
3851 var err = FS.nodePermissions(dir, 'wx');\ | |
3852 if (err) {\ | |
3853 return err;\ | |
3854 }\ | |
3855 if (isdir) {\ | |
3856 if (!FS.isDir(node.mode)) {\ | |
3857 return ERRNO_CODES.ENOTDIR;\ | |
3858 }\ | |
3859 if (FS.isRoot(node) || FS.getPath(node) === FS.currentPath) {\ | |
3860 return ERRNO_CODES.EBUSY;\ | |
3861 }\ | |
3862 } else {\ | |
3863 if (FS.isDir(node.mode)) {\ | |
3864 return ERRNO_CODES.EISDIR;\ | |
3865 }\ | |
3866 }\ | |
3867 return 0;\ | |
3868 },mayOpen:function (node, flags) {\ | |
3869 if (!node) {\ | |
3870 return ERRNO_CODES.ENOENT;\ | |
3871 }\ | |
3872 if (FS.isLink(node.mode)) {\ | |
3873 return ERRNO_CODES.ELOOP;\ | |
3874 } else if (FS.isDir(node.mode)) {\ | |
3875 if ((flags & 3) !== 0 || // opening for write\ | |
3876 (flags & 1024)) {\ | |
3877 return ERRNO_CODES.EISDIR;\ | |
3878 }\ | |
3879 }\ | |
3880 return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\ | |
3881 },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {\ | |
3882 fd_start = fd_start || 1;\ | |
3883 fd_end = fd_end || FS.MAX_OPEN_FDS;\ | |
3884 for (var fd = fd_start; fd <= fd_end; fd++) {\ | |
3885 if (!FS.streams[fd]) {\ | |
3886 return fd;\ | |
3887 }\ | |
3888 }\ | |
3889 throw new FS.ErrnoError(ERRNO_CODES.EMFILE);\ | |
3890 },getStream:function (fd) {\ | |
3891 return FS.streams[fd];\ | |
3892 },createStream:function (stream, fd_start, fd_end) {\ | |
3893 var fd = FS.nextfd(fd_start, fd_end);\ | |
3894 stream.fd = fd;\ | |
3895 // compatibility\ | |
3896 Object.defineProperties(stream, {\ | |
3897 object: {\ | |
3898 get: function() { return stream.node; },\ | |
3899 set: function(val) { stream.node = val; }\ | |
3900 },\ | |
3901 isRead: {\ | |
3902 get: function() { return (stream.flags & 3) !== 1; }\ | |
3903 },\ | |
3904 isWrite: {\ | |
3905 get: function() { return (stream.flags & 3) !== 0; }\ | |
3906 },\ | |
3907 isAppend: {\ | |
3908 get: function() { return (stream.flags & 8); }\ | |
3909 }\ | |
3910 });\ | |
3911 FS.streams[fd] = stream;\ | |
3912 return stream;\ | |
3913 },closeStream:function (fd) {\ | |
3914 FS.streams[fd] = null;\ | |
3915 },chrdev_stream_ops:{open:function (stream) {\ | |
3916 var device = FS.getDevice(stream.node.rdev);\ | |
3917 // override node's stream ops with the device's\ | |
3918 stream.stream_ops = device.stream_ops;\ | |
3919 // forward the open call\ | |
3920 if (stream.stream_ops.open) {\ | |
3921 stream.stream_ops.open(stream);\ | |
3922 }\ | |
3923 },llseek:function () {\ | |
3924 throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\ | |
3925 }},major:function (dev) {\ | |
3926 return ((dev) >> 8);\ | |
3927 },minor:function (dev) {\ | |
3928 return ((dev) & 0xff);\ | |
3929 },makedev:function (ma, mi) {\ | |
3930 return ((ma) << 8 | (mi));\ | |
3931 },registerDevice:function (dev, ops) {\ | |
3932 FS.devices[dev] = { stream_ops: ops };\ | |
3933 },getDevice:function (dev) {\ | |
3934 return FS.devices[dev];\ | |
3935 },mount:function (type, opts, mountpoint) {\ | |
3936 var mount = {\ | |
3937 type: type,\ | |
3938 opts: opts,\ | |
3939 mountpoint: mountpoint,\ | |
3940 root: null\ | |
3941 };\ | |
3942 var lookup;\ | |
3943 if (mountpoint) {\ | |
3944 lookup = FS.lookupPath(mountpoint, { follow: false });\ | |
3945 }\ | |
3946 // create a root node for the fs\ | |
3947 var root = type.mount(mount);\ | |
3948 root.mount = mount;\ | |
3949 mount.root = root;\ | |
3950 // assign the mount info to the mountpoint's node\ | |
3951 if (lookup) {\ | |
3952 lookup.node.mount = mount;\ | |
3953 lookup.node.mounted = true;\ | |
3954 // compatibility update FS.root if we mount to /\ | |
3955 if (mountpoint === '/') {\ | |
3956 FS.root = mount.root;\ | |
3957 }\ | |
3958 }\ | |
3959 return root;\ | |
3960 },lookup:function (parent, name) {\ | |
3961 return parent.node_ops.lookup(parent, name);\ | |
3962 },mknod:function (path, mode, dev) {\ | |
3963 var lookup = FS.lookupPath(path, { parent: true });\ | |
3964 var parent = lookup.node;\ | |
3965 var name = PATH.basename(path);\ | |
3966 var err = FS.mayCreate(parent, name);\ | |
3967 if (err) {\ | |
3968 throw new FS.ErrnoError(err);\ | |
3969 }\ | |
3970 if (!parent.node_ops.mknod) {\ | |
3971 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
3972 }\ | |
3973 return parent.node_ops.mknod(parent, name, mode, dev);\ | |
3974 },create:function (path, mode) {\ | |
3975 mode = mode !== undefined ? mode : 0666;\ | |
3976 mode &= 4095;\ | |
3977 mode |= 0100000;\ | |
3978 return FS.mknod(path, mode, 0);\ | |
3979 },mkdir:function (path, mode) {\ | |
3980 mode = mode !== undefined ? mode : 0777;\ | |
3981 mode &= 511 | 0001000;\ | |
3982 mode |= 0040000;\ | |
3983 return FS.mknod(path, mode, 0);\ | |
3984 },mkdev:function (path, mode, dev) {\ | |
3985 if (typeof(dev) === 'undefined') {\ | |
3986 dev = mode;\ | |
3987 mode = 0666;\ | |
3988 }\ | |
3989 mode |= 0020000;\ | |
3990 return FS.mknod(path, mode, dev);\ | |
3991 },symlink:function (oldpath, newpath) {\ | |
3992 var lookup = FS.lookupPath(newpath, { parent: true });\ | |
3993 var parent = lookup.node;\ | |
3994 var newname = PATH.basename(newpath);\ | |
3995 var err = FS.mayCreate(parent, newname);\ | |
3996 if (err) {\ | |
3997 throw new FS.ErrnoError(err);\ | |
3998 }\ | |
3999 if (!parent.node_ops.symlink) {\ | |
4000 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4001 }\ | |
4002 return parent.node_ops.symlink(parent, newname, oldpath);\ | |
4003 },rename:function (old_path, new_path) {\ | |
4004 var old_dirname = PATH.dirname(old_path);\ | |
4005 var new_dirname = PATH.dirname(new_path);\ | |
4006 var old_name = PATH.basename(old_path);\ | |
4007 var new_name = PATH.basename(new_path);\ | |
4008 // parents must exist\ | |
4009 var lookup, old_dir, new_dir;\ | |
4010 try {\ | |
4011 lookup = FS.lookupPath(old_path, { parent: true });\ | |
4012 old_dir = lookup.node;\ | |
4013 lookup = FS.lookupPath(new_path, { parent: true });\ | |
4014 new_dir = lookup.node;\ | |
4015 } catch (e) {\ | |
4016 throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\ | |
4017 }\ | |
4018 // need to be part of the same mount\ | |
4019 if (old_dir.mount !== new_dir.mount) {\ | |
4020 throw new FS.ErrnoError(ERRNO_CODES.EXDEV);\ | |
4021 }\ | |
4022 // source must exist\ | |
4023 var old_node = FS.lookupNode(old_dir, old_name);\ | |
4024 // old path should not be an ancestor of the new path\ | |
4025 var relative = PATH.relative(old_path, new_dirname);\ | |
4026 if (relative.charAt(0) !== '.') {\ | |
4027 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4028 }\ | |
4029 // new path should not be an ancestor of the old path\ | |
4030 relative = PATH.relative(new_path, old_dirname);\ | |
4031 if (relative.charAt(0) !== '.') {\ | |
4032 throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);\ | |
4033 }\ | |
4034 // see if the new path already exists\ | |
4035 var new_node;\ | |
4036 try {\ | |
4037 new_node = FS.lookupNode(new_dir, new_name);\ | |
4038 } catch (e) {\ | |
4039 // not fatal\ | |
4040 }\ | |
4041 // early out if nothing needs to change\ | |
4042 if (old_node === new_node) {\ | |
4043 return;\ | |
4044 }\ | |
4045 // we'll need to delete the old entry\ | |
4046 var isdir = FS.isDir(old_node.mode);\ | |
4047 var err = FS.mayDelete(old_dir, old_name, isdir);\ | |
4048 if (err) {\ | |
4049 throw new FS.ErrnoError(err);\ | |
4050 }\ | |
4051 // need delete permissions if we'll be overwriting.\ | |
4052 // need create permissions if new doesn't already exist.\ | |
4053 err = new_node ?\ | |
4054 FS.mayDelete(new_dir, new_name, isdir) :\ | |
4055 FS.mayCreate(new_dir, new_name);\ | |
4056 if (err) {\ | |
4057 throw new FS.ErrnoError(err);\ | |
4058 }\ | |
4059 if (!old_dir.node_ops.rename) {\ | |
4060 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4061 }\ | |
4062 if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {\ | |
4063 throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\ | |
4064 }\ | |
4065 // if we are going to change the parent, check write permissions\ | |
4066 if (new_dir !== old_dir) {\ | |
4067 err = FS.nodePermissions(old_dir, 'w');\ | |
4068 if (err) {\ | |
4069 throw new FS.ErrnoError(err);\ | |
4070 }\ | |
4071 }\ | |
4072 // remove the node from the lookup hash\ | |
4073 FS.hashRemoveNode(old_node);\ | |
4074 // do the underlying fs rename\ | |
4075 try {\ | |
4076 old_dir.node_ops.rename(old_node, new_dir, new_name);\ | |
4077 } catch (e) {\ | |
4078 throw e;\ | |
4079 } finally {\ | |
4080 // add the node back to the hash (in case node_ops.rename\ | |
4081 // changed its name)\ | |
4082 FS.hashAddNode(old_node);\ | |
4083 }\ | |
4084 },rmdir:function (path) {\ | |
4085 var lookup = FS.lookupPath(path, { parent: true });\ | |
4086 var parent = lookup.node;\ | |
4087 var name = PATH.basename(path);\ | |
4088 var node = FS.lookupNode(parent, name);\ | |
4089 var err = FS.mayDelete(parent, name, true);\ | |
4090 if (err) {\ | |
4091 throw new FS.ErrnoError(err);\ | |
4092 }\ | |
4093 if (!parent.node_ops.rmdir) {\ | |
4094 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4095 }\ | |
4096 if (FS.isMountpoint(node)) {\ | |
4097 throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\ | |
4098 }\ | |
4099 parent.node_ops.rmdir(parent, name);\ | |
4100 FS.destroyNode(node);\ | |
4101 },readdir:function (path) {\ | |
4102 var lookup = FS.lookupPath(path, { follow: true });\ | |
4103 var node = lookup.node;\ | |
4104 if (!node.node_ops.readdir) {\ | |
4105 throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);\ | |
4106 }\ | |
4107 return node.node_ops.readdir(node);\ | |
4108 },unlink:function (path) {\ | |
4109 var lookup = FS.lookupPath(path, { parent: true });\ | |
4110 var parent = lookup.node;\ | |
4111 var name = PATH.basename(path);\ | |
4112 var node = FS.lookupNode(parent, name);\ | |
4113 var err = FS.mayDelete(parent, name, false);\ | |
4114 if (err) {\ | |
4115 // POSIX says unlink should set EPERM, not EISDIR\ | |
4116 if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;\ | |
4117 throw new FS.ErrnoError(err);\ | |
4118 }\ | |
4119 if (!parent.node_ops.unlink) {\ | |
4120 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4121 }\ | |
4122 if (FS.isMountpoint(node)) {\ | |
4123 throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\ | |
4124 }\ | |
4125 parent.node_ops.unlink(parent, name);\ | |
4126 FS.destroyNode(node);\ | |
4127 },readlink:function (path) {\ | |
4128 var lookup = FS.lookupPath(path, { follow: false });\ | |
4129 var link = lookup.node;\ | |
4130 if (!link.node_ops.readlink) {\ | |
4131 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4132 }\ | |
4133 return link.node_ops.readlink(link);\ | |
4134 },stat:function (path, dontFollow) {\ | |
4135 var lookup = FS.lookupPath(path, { follow: !dontFollow });\ | |
4136 var node = lookup.node;\ | |
4137 if (!node.node_ops.getattr) {\ | |
4138 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4139 }\ | |
4140 return node.node_ops.getattr(node);\ | |
4141 },lstat:function (path) {\ | |
4142 return FS.stat(path, true);\ | |
4143 },chmod:function (path, mode, dontFollow) {\ | |
4144 var node;\ | |
4145 if (typeof path === 'string') {\ | |
4146 var lookup = FS.lookupPath(path, { follow: !dontFollow });\ | |
4147 node = lookup.node;\ | |
4148 } else {\ | |
4149 node = path;\ | |
4150 }\ | |
4151 if (!node.node_ops.setattr) {\ | |
4152 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4153 }\ | |
4154 node.node_ops.setattr(node, {\ | |
4155 mode: (mode & 4095) | (node.mode & ~4095),\ | |
4156 timestamp: Date.now()\ | |
4157 });\ | |
4158 },lchmod:function (path, mode) {\ | |
4159 FS.chmod(path, mode, true);\ | |
4160 },fchmod:function (fd, mode) {\ | |
4161 var stream = FS.getStream(fd);\ | |
4162 if (!stream) {\ | |
4163 throw new FS.ErrnoError(ERRNO_CODES.EBADF);\ | |
4164 }\ | |
4165 FS.chmod(stream.node, mode);\ | |
4166 },chown:function (path, uid, gid, dontFollow) {\ | |
4167 var node;\ | |
4168 if (typeof path === 'string') {\ | |
4169 var lookup = FS.lookupPath(path, { follow: !dontFollow });\ | |
4170 node = lookup.node;\ | |
4171 } else {\ | |
4172 node = path;\ | |
4173 }\ | |
4174 if (!node.node_ops.setattr) {\ | |
4175 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4176 }\ | |
4177 node.node_ops.setattr(node, {\ | |
4178 timestamp: Date.now()\ | |
4179 // we ignore the uid / gid for now\ | |
4180 });\ | |
4181 },lchown:function (path, uid, gid) {\ | |
4182 FS.chown(path, uid, gid, true);\ | |
4183 },fchown:function (fd, uid, gid) {\ | |
4184 var stream = FS.getStream(fd);\ | |
4185 if (!stream) {\ | |
4186 throw new FS.ErrnoError(ERRNO_CODES.EBADF);\ | |
4187 }\ | |
4188 FS.chown(stream.node, uid, gid);\ | |
4189 },truncate:function (path, len) {\ | |
4190 if (len < 0) {\ | |
4191 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4192 }\ | |
4193 var node;\ | |
4194 if (typeof path === 'string') {\ | |
4195 var lookup = FS.lookupPath(path, { follow: true });\ | |
4196 node = lookup.node;\ | |
4197 } else {\ | |
4198 node = path;\ | |
4199 }\ | |
4200 if (!node.node_ops.setattr) {\ | |
4201 throw new FS.ErrnoError(ERRNO_CODES.EPERM);\ | |
4202 }\ | |
4203 if (FS.isDir(node.mode)) {\ | |
4204 throw new FS.ErrnoError(ERRNO_CODES.EISDIR);\ | |
4205 }\ | |
4206 if (!FS.isFile(node.mode)) {\ | |
4207 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4208 }\ | |
4209 var err = FS.nodePermissions(node, 'w');\ | |
4210 if (err) {\ | |
4211 throw new FS.ErrnoError(err);\ | |
4212 }\ | |
4213 node.node_ops.setattr(node, {\ | |
4214 size: len,\ | |
4215 timestamp: Date.now()\ | |
4216 });\ | |
4217 },ftruncate:function (fd, len) {\ | |
4218 var stream = FS.getStream(fd);\ | |
4219 if (!stream) {\ | |
4220 throw new FS.ErrnoError(ERRNO_CODES.EBADF);\ | |
4221 }\ | |
4222 if ((stream.flags & 3) === 0) {\ | |
4223 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4224 }\ | |
4225 FS.truncate(stream.node, len);\ | |
4226 },utime:function (path, atime, mtime) {\ | |
4227 var lookup = FS.lookupPath(path, { follow: true });\ | |
4228 var node = lookup.node;\ | |
4229 node.node_ops.setattr(node, {\ | |
4230 timestamp: Math.max(atime, mtime)\ | |
4231 });\ | |
4232 },open:function (path, flags, mode, fd_start, fd_end) {\ | |
4233 path = PATH.normalize(path);\ | |
4234 flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;\ | |
4235 mode = typeof mode === 'undefined' ? 0666 : mode;\ | |
4236 if ((flags & 512)) {\ | |
4237 mode = (mode & 4095) | 0100000;\ | |
4238 } else {\ | |
4239 mode = 0;\ | |
4240 }\ | |
4241 var node;\ | |
4242 try {\ | |
4243 var lookup = FS.lookupPath(path, {\ | |
4244 follow: !(flags & 0200000)\ | |
4245 });\ | |
4246 node = lookup.node;\ | |
4247 path = lookup.path;\ | |
4248 } catch (e) {\ | |
4249 // ignore\ | |
4250 }\ | |
4251 // perhaps we need to create the node\ | |
4252 if ((flags & 512)) {\ | |
4253 if (node) {\ | |
4254 // if O_CREAT and O_EXCL are set, error out if the node already exists\ | |
4255 if ((flags & 2048)) {\ | |
4256 throw new FS.ErrnoError(ERRNO_CODES.EEXIST);\ | |
4257 }\ | |
4258 } else {\ | |
4259 // node doesn't exist, try to create it\ | |
4260 node = FS.mknod(path, mode, 0);\ | |
4261 }\ | |
4262 }\ | |
4263 if (!node) {\ | |
4264 throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\ | |
4265 }\ | |
4266 // can't truncate a device\ | |
4267 if (FS.isChrdev(node.mode)) {\ | |
4268 flags &= ~1024;\ | |
4269 }\ | |
4270 // check permissions\ | |
4271 var err = FS.mayOpen(node, flags);\ | |
4272 if (err) {\ | |
4273 throw new FS.ErrnoError(err);\ | |
4274 }\ | |
4275 // do truncation if necessary\ | |
4276 if ((flags & 1024)) {\ | |
4277 FS.truncate(node, 0);\ | |
4278 }\ | |
4279 // register the stream with the filesystem\ | |
4280 var stream = FS.createStream({\ | |
4281 path: path,\ | |
4282 node: node,\ | |
4283 flags: flags,\ | |
4284 seekable: true,\ | |
4285 position: 0,\ | |
4286 stream_ops: node.stream_ops,\ | |
4287 // used by the file family libc calls (fopen, fwrite, ferror, etc.)\ | |
4288 ungotten: [],\ | |
4289 error: false\ | |
4290 }, fd_start, fd_end);\ | |
4291 // call the new stream's open function\ | |
4292 if (stream.stream_ops.open) {\ | |
4293 stream.stream_ops.open(stream);\ | |
4294 }\ | |
4295 return stream;\ | |
4296 },close:function (stream) {\ | |
4297 try {\ | |
4298 if (stream.stream_ops.close) {\ | |
4299 stream.stream_ops.close(stream);\ | |
4300 }\ | |
4301 } catch (e) {\ | |
4302 throw e;\ | |
4303 } finally {\ | |
4304 FS.closeStream(stream.fd);\ | |
4305 }\ | |
4306 },llseek:function (stream, offset, whence) {\ | |
4307 if (!stream.seekable || !stream.stream_ops.llseek) {\ | |
4308 throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\ | |
4309 }\ | |
4310 return stream.stream_ops.llseek(stream, offset, whence);\ | |
4311 },read:function (stream, buffer, offset, length, position) {\ | |
4312 if (length < 0 || position < 0) {\ | |
4313 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4314 }\ | |
4315 if ((stream.flags & 3) === 1) {\ | |
4316 throw new FS.ErrnoError(ERRNO_CODES.EBADF);\ | |
4317 }\ | |
4318 if (FS.isDir(stream.node.mode)) {\ | |
4319 throw new FS.ErrnoError(ERRNO_CODES.EISDIR);\ | |
4320 }\ | |
4321 if (!stream.stream_ops.read) {\ | |
4322 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4323 }\ | |
4324 var seeking = true;\ | |
4325 if (typeof position === 'undefined') {\ | |
4326 position = stream.position;\ | |
4327 seeking = false;\ | |
4328 } else if (!stream.seekable) {\ | |
4329 throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\ | |
4330 }\ | |
4331 var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\ | |
4332 if (!seeking) stream.position += bytesRead;\ | |
4333 return bytesRead;\ | |
4334 },write:function (stream, buffer, offset, length, position, canOwn) {\ | |
4335 if (length < 0 || position < 0) {\ | |
4336 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4337 }\ | |
4338 if ((stream.flags & 3) === 0) {\ | |
4339 throw new FS.ErrnoError(ERRNO_CODES.EBADF);\ | |
4340 }\ | |
4341 if (FS.isDir(stream.node.mode)) {\ | |
4342 throw new FS.ErrnoError(ERRNO_CODES.EISDIR);\ | |
4343 }\ | |
4344 if (!stream.stream_ops.write) {\ | |
4345 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4346 }\ | |
4347 var seeking = true;\ | |
4348 if (typeof position === 'undefined') {\ | |
4349 position = stream.position;\ | |
4350 seeking = false;\ | |
4351 } else if (!stream.seekable) {\ | |
4352 throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\ | |
4353 }\ | |
4354 if (stream.flags & 8) {\ | |
4355 // seek to the end before writing in append mode\ | |
4356 FS.llseek(stream, 0, 2);\ | |
4357 }\ | |
4358 var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\ | |
4359 if (!seeking) stream.position += bytesWritten;\ | |
4360 return bytesWritten;\ | |
4361 },allocate:function (stream, offset, length) {\ | |
4362 if (offset < 0 || length <= 0) {\ | |
4363 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
4364 }\ | |
4365 if ((stream.flags & 3) === 0) {\ | |
4366 throw new FS.ErrnoError(ERRNO_CODES.EBADF);\ | |
4367 }\ | |
4368 if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {\ | |
4369 throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\ | |
4370 }\ | |
4371 if (!stream.stream_ops.allocate) {\ | |
4372 throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);\ | |
4373 }\ | |
4374 stream.stream_ops.allocate(stream, offset, length);\ | |
4375 },mmap:function (stream, buffer, offset, length, position, prot, flags) {\ | |
4376 // TODO if PROT is PROT_WRITE, make sure we have write access\ | |
4377 if ((stream.flags & 3) === 1) {\ | |
4378 throw new FS.ErrnoError(ERRNO_CODES.EACCES);\ | |
4379 }\ | |
4380 if (!stream.stream_ops.mmap) {\ | |
4381 throw new FS.errnoError(ERRNO_CODES.ENODEV);\ | |
4382 }\ | |
4383 return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);\ | |
4384 },ioctl:function (stream, cmd, arg) {\ | |
4385 if (!stream.stream_ops.ioctl) {\ | |
4386 throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);\ | |
4387 }\ | |
4388 return stream.stream_ops.ioctl(stream, cmd, arg);\ | |
4389 },readFile:function (path, opts) {\ | |
4390 opts = opts || {};\ | |
4391 opts.flags = opts.flags || 'r';\ | |
4392 opts.encoding = opts.encoding || 'binary';\ | |
4393 var ret;\ | |
4394 var stream = FS.open(path, opts.flags);\ | |
4395 var stat = FS.stat(path);\ | |
4396 var length = stat.size;\ | |
4397 var buf = new Uint8Array(length);\ | |
4398 FS.read(stream, buf, 0, length, 0);\ | |
4399 if (opts.encoding === 'utf8') {\ | |
4400 ret = '';\ | |
4401 var utf8 = new Runtime.UTF8Processor();\ | |
4402 for (var i = 0; i < length; i++) {\ | |
4403 ret += utf8.processCChar(buf[i]);\ | |
4404 }\ | |
4405 } else if (opts.encoding === 'binary') {\ | |
4406 ret = buf;\ | |
4407 } else {\ | |
4408 throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\ | |
4409 }\ | |
4410 FS.close(stream);\ | |
4411 return ret;\ | |
4412 },writeFile:function (path, data, opts) {\ | |
4413 opts = opts || {};\ | |
4414 opts.flags = opts.flags || 'w';\ | |
4415 opts.encoding = opts.encoding || 'utf8';\ | |
4416 var stream = FS.open(path, opts.flags, opts.mode);\ | |
4417 if (opts.encoding === 'utf8') {\ | |
4418 var utf8 = new Runtime.UTF8Processor();\ | |
4419 var buf = new Uint8Array(utf8.processJSString(data));\ | |
4420 FS.write(stream, buf, 0, buf.length, 0);\ | |
4421 } else if (opts.encoding === 'binary') {\ | |
4422 FS.write(stream, data, 0, data.length, 0);\ | |
4423 } else {\ | |
4424 throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\ | |
4425 }\ | |
4426 FS.close(stream);\ | |
4427 },createDefaultDirectories:function () {\ | |
4428 FS.mkdir('/tmp');\ | |
4429 },createDefaultDevices:function () {\ | |
4430 // create /dev\ | |
4431 FS.mkdir('/dev');\ | |
4432 // setup /dev/null\ | |
4433 FS.registerDevice(FS.makedev(1, 3), {\ | |
4434 read: function() { return 0; },\ | |
4435 write: function() { return 0; }\ | |
4436 });\ | |
4437 FS.mkdev('/dev/null', FS.makedev(1, 3));\ | |
4438 // setup /dev/tty and /dev/tty1\ | |
4439 // stderr needs to print output using Module['printErr']\ | |
4440 // so we register a second tty just for it.\ | |
4441 TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\ | |
4442 TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\ | |
4443 FS.mkdev('/dev/tty', FS.makedev(5, 0));\ | |
4444 FS.mkdev('/dev/tty1', FS.makedev(6, 0));\ | |
4445 // we're not going to emulate the actual shm device,\ | |
4446 // just create the tmp dirs that reside in it commonly\ | |
4447 FS.mkdir('/dev/shm');\ | |
4448 FS.mkdir('/dev/shm/tmp');\ | |
4449 },createStandardStreams:function () {\ | |
4450 // TODO deprecate the old functionality of a single\ | |
4451 // input / output callback and that utilizes FS.createDevice\ | |
4452 // and instead require a unique set of stream ops\ | |
4453 // by default, we symlink the standard streams to the\ | |
4454 // default tty devices. however, if the standard streams\ | |
4455 // have been overwritten we create a unique device for\ | |
4456 // them instead.\ | |
4457 if (Module['stdin']) {\ | |
4458 FS.createDevice('/dev', 'stdin', Module['stdin']);\ | |
4459 } else {\ | |
4460 FS.symlink('/dev/tty', '/dev/stdin');\ | |
4461 }\ | |
4462 if (Module['stdout']) {\ | |
4463 FS.createDevice('/dev', 'stdout', null, Module['stdout']);\ | |
4464 } else {\ | |
4465 FS.symlink('/dev/tty', '/dev/stdout');\ | |
4466 }\ | |
4467 if (Module['stderr']) {\ | |
4468 FS.createDevice('/dev', 'stderr', null, Module['stderr']);\ | |
4469 } else {\ | |
4470 FS.symlink('/dev/tty1', '/dev/stderr');\ | |
4471 }\ | |
4472 // open default streams for the stdin, stdout and stderr devices\ | |
4473 var stdin = FS.open('/dev/stdin', 'r');\ | |
4474 HEAP32[((_stdin)>>2)]=stdin.fd;\ | |
4475 assert(stdin.fd === 1, 'invalid handle for stdin (' + stdin.fd + ')');\ | |
4476 var stdout = FS.open('/dev/stdout', 'w');\ | |
4477 HEAP32[((_stdout)>>2)]=stdout.fd;\ | |
4478 assert(stdout.fd === 2, 'invalid handle for stdout (' + stdout.fd + ')');\ | |
4479 var stderr = FS.open('/dev/stderr', 'w');\ | |
4480 HEAP32[((_stderr)>>2)]=stderr.fd;\ | |
4481 assert(stderr.fd === 3, 'invalid handle for stderr (' + stderr.fd + ')');\ | |
4482 },staticInit:function () {\ | |
4483 FS.nameTable = new Array(4096);\ | |
4484 FS.root = FS.createNode(null, '/', 0040000 | 0777, 0);\ | |
4485 FS.mount(MEMFS, {}, '/');\ | |
4486 FS.createDefaultDirectories();\ | |
4487 FS.createDefaultDevices();\ | |
4488 },init:function (input, output, error) {\ | |
4489 assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');\ | |
4490 FS.init.initialized = true;\ | |
4491 // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here\ | |
4492 Module['stdin'] = input || Module['stdin'];\ | |
4493 Module['stdout'] = output || Module['stdout'];\ | |
4494 Module['stderr'] = error || Module['stderr'];\ | |
4495 FS.createStandardStreams();\ | |
4496 },quit:function () {\ | |
4497 FS.init.initialized = false;\ | |
4498 for (var i = 0; i < FS.streams.length; i++) {\ | |
4499 var stream = FS.streams[i];\ | |
4500 if (!stream) {\ | |
4501 continue;\ | |
4502 }\ | |
4503 FS.close(stream);\ | |
4504 }\ | |
4505 },getMode:function (canRead, canWrite) {\ | |
4506 var mode = 0;\ | |
4507 if (canRead) mode |= 292 | 73;\ | |
4508 if (canWrite) mode |= 146;\ | |
4509 return mode;\ | |
4510 },joinPath:function (parts, forceRelative) {\ | |
4511 var path = PATH.join.apply(null, parts);\ | |
4512 if (forceRelative && path[0] == '/') path = path.substr(1);\ | |
4513 return path;\ | |
4514 },absolutePath:function (relative, base) {\ | |
4515 return PATH.resolve(base, relative);\ | |
4516 },standardizePath:function (path) {\ | |
4517 return PATH.normalize(path);\ | |
4518 },findObject:function (path, dontResolveLastLink) {\ | |
4519 var ret = FS.analyzePath(path, dontResolveLastLink);\ | |
4520 if (ret.exists) {\ | |
4521 return ret.object;\ | |
4522 } else {\ | |
4523 ___setErrNo(ret.error);\ | |
4524 return null;\ | |
4525 }\ | |
4526 },analyzePath:function (path, dontResolveLastLink) {\ | |
4527 // operate from within the context of the symlink's target\ | |
4528 try {\ | |
4529 var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\ | |
4530 path = lookup.path;\ | |
4531 } catch (e) {\ | |
4532 }\ | |
4533 var ret = {\ | |
4534 isRoot: false, exists: false, error: 0, name: null, path: null, object: null,\ | |
4535 parentExists: false, parentPath: null, parentObject: null\ | |
4536 };\ | |
4537 try {\ | |
4538 var lookup = FS.lookupPath(path, { parent: true });\ | |
4539 ret.parentExists = true;\ | |
4540 ret.parentPath = lookup.path;\ | |
4541 ret.parentObject = lookup.node;\ | |
4542 ret.name = PATH.basename(path);\ | |
4543 lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\ | |
4544 ret.exists = true;\ | |
4545 ret.path = lookup.path;\ | |
4546 ret.object = lookup.node;\ | |
4547 ret.name = lookup.node.name;\ | |
4548 ret.isRoot = lookup.path === '/';\ | |
4549 } catch (e) {\ | |
4550 ret.error = e.errno;\ | |
4551 };\ | |
4552 return ret;\ | |
4553 },createFolder:function (parent, name, canRead, canWrite) {\ | |
4554 var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);\ | |
4555 var mode = FS.getMode(canRead, canWrite);\ | |
4556 return FS.mkdir(path, mode);\ | |
4557 },createPath:function (parent, path, canRead, canWrite) {\ | |
4558 parent = typeof parent === 'string' ? parent : FS.getPath(parent);\ | |
4559 var parts = path.split('/').reverse();\ | |
4560 while (parts.length) {\ | |
4561 var part = parts.pop();\ | |
4562 if (!part) continue;\ | |
4563 var current = PATH.join(parent, part);\ | |
4564 try {\ | |
4565 FS.mkdir(current);\ | |
4566 } catch (e) {\ | |
4567 // ignore EEXIST\ | |
4568 }\ | |
4569 parent = current;\ | |
4570 }\ | |
4571 return current;\ | |
4572 },createFile:function (parent, name, properties, canRead, canWrite) {\ | |
4573 var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);\ | |
4574 var mode = FS.getMode(canRead, canWrite);\ | |
4575 return FS.create(path, mode);\ | |
4576 },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {\ | |
4577 var path = name ? PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;\ | |
4578 var mode = FS.getMode(canRead, canWrite);\ | |
4579 var node = FS.create(path, mode);\ | |
4580 if (data) {\ | |
4581 if (typeof data === 'string') {\ | |
4582 var arr = new Array(data.length);\ | |
4583 for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\ | |
4584 data = arr;\ | |
4585 }\ | |
4586 // make sure we can write to the file\ | |
4587 FS.chmod(path, mode | 146);\ | |
4588 var stream = FS.open(path, 'w');\ | |
4589 FS.write(stream, data, 0, data.length, 0, canOwn);\ | |
4590 FS.close(stream);\ | |
4591 FS.chmod(path, mode);\ | |
4592 }\ | |
4593 return node;\ | |
4594 },createDevice:function (parent, name, input, output) {\ | |
4595 var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);\ | |
4596 var mode = FS.getMode(!!input, !!output);\ | |
4597 if (!FS.createDevice.major) FS.createDevice.major = 64;\ | |
4598 var dev = FS.makedev(FS.createDevice.major++, 0);\ | |
4599 // Create a fake device that a set of stream ops to emulate\ | |
4600 // the old behavior.\ | |
4601 FS.registerDevice(dev, {\ | |
4602 open: function(stream) {\ | |
4603 stream.seekable = false;\ | |
4604 },\ | |
4605 close: function(stream) {\ | |
4606 // flush any pending line data\ | |
4607 if (output && output.buffer && output.buffer.length) {\ | |
4608 output(10);\ | |
4609 }\ | |
4610 },\ | |
4611 read: function(stream, buffer, offset, length, pos /* ignored */) {\ | |
4612 var bytesRead = 0;\ | |
4613 for (var i = 0; i < length; i++) {\ | |
4614 var result;\ | |
4615 try {\ | |
4616 result = input();\ | |
4617 } catch (e) {\ | |
4618 throw new FS.ErrnoError(ERRNO_CODES.EIO);\ | |
4619 }\ | |
4620 if (result === undefined && bytesRead === 0) {\ | |
4621 throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\ | |
4622 }\ | |
4623 if (result === null || result === undefined) break;\ | |
4624 bytesRead++;\ | |
4625 buffer[offset+i] = result;\ | |
4626 }\ | |
4627 if (bytesRead) {\ | |
4628 stream.node.timestamp = Date.now();\ | |
4629 }\ | |
4630 return bytesRead;\ | |
4631 },\ | |
4632 write: function(stream, buffer, offset, length, pos) {\ | |
4633 for (var i = 0; i < length; i++) {\ | |
4634 try {\ | |
4635 output(buffer[offset+i]);\ | |
4636 } catch (e) {\ | |
4637 throw new FS.ErrnoError(ERRNO_CODES.EIO);\ | |
4638 }\ | |
4639 }\ | |
4640 if (length) {\ | |
4641 stream.node.timestamp = Date.now();\ | |
4642 }\ | |
4643 return i;\ | |
4644 }\ | |
4645 });\ | |
4646 return FS.mkdev(path, mode, dev);\ | |
4647 },createLink:function (parent, name, target, canRead, canWrite) {\ | |
4648 var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name);\ | |
4649 return FS.symlink(target, path);\ | |
4650 },forceLoadFile:function (obj) {\ | |
4651 if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\ | |
4652 var success = true;\ | |
4653 if (typeof XMLHttpRequest !== 'undefined') {\ | |
4654 throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\ | |
4655 } else if (Module['read']) {\ | |
4656 // Command-line.\ | |
4657 try {\ | |
4658 // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as\ | |
4659 // read() will try to parse UTF8.\ | |
4660 obj.contents = intArrayFromString(Module['read'](obj.url), true);\ | |
4661 } catch (e) {\ | |
4662 success = false;\ | |
4663 }\ | |
4664 } else {\ | |
4665 throw new Error('Cannot load without read() or XMLHttpRequest.');\ | |
4666 }\ | |
4667 if (!success) ___setErrNo(ERRNO_CODES.EIO);\ | |
4668 return success;\ | |
4669 },createLazyFile:function (parent, name, url, canRead, canWrite) {\ | |
4670 if (typeof XMLHttpRequest !== 'undefined') {\ | |
4671 if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';\ | |
4672 // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.\ | |
4673 var LazyUint8Array = function() {\ | |
4674 this.lengthKnown = false;\ | |
4675 this.chunks = []; // Loaded chunks. Index is the chunk number\ | |
4676 }\ | |
4677 LazyUint8Array.prototype.get = function(idx) {\ | |
4678 if (idx > this.length-1 || idx < 0) {\ | |
4679 return undefined;\ | |
4680 }\ | |
4681 var chunkOffset = idx % this.chunkSize;\ | |
4682 var chunkNum = Math.floor(idx / this.chunkSize);\ | |
4683 return this.getter(chunkNum)[chunkOffset];\ | |
4684 }\ | |
4685 LazyUint8Array.prototype.setDataGetter = function(getter) {\ | |
4686 this.getter = getter;\ | |
4687 }\ | |
4688 LazyUint8Array.prototype.cacheLength = function() {\ | |
4689 // Find length\ | |
4690 var xhr = new XMLHttpRequest();\ | |
4691 xhr.open('HEAD', url, false);\ | |
4692 xhr.send(null);\ | |
4693 if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\ | |
4694 var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\ | |
4695 var header;\ | |
4696 var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\ | |
4697 var chunkSize = 1024*1024; // Chunk size in bytes\ | |
4698 if (!hasByteServing) chunkSize = datalength;\ | |
4699 // Function to get a range from the remote URL.\ | |
4700 var doXHR = (function(from, to) {\ | |
4701 if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\ | |
4702 if (to > datalength-1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\ | |
4703 // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.\ | |
4704 var xhr = new XMLHttpRequest();\ | |
4705 xhr.open('GET', url, false);\ | |
4706 if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\ | |
4707 // Some hints to the browser that we want binary data.\ | |
4708 if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';\ | |
4709 if (xhr.overrideMimeType) {\ | |
4710 xhr.overrideMimeType('text/plain; charset=x-user-defined');\ | |
4711 }\ | |
4712 xhr.send(null);\ | |
4713 if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\ | |
4714 if (xhr.response !== undefined) {\ | |
4715 return new Uint8Array(xhr.response || []);\ | |
4716 } else {\ | |
4717 return intArrayFromString(xhr.responseText || '', true);\ | |
4718 }\ | |
4719 });\ | |
4720 var lazyArray = this;\ | |
4721 lazyArray.setDataGetter(function(chunkNum) {\ | |
4722 var start = chunkNum * chunkSize;\ | |
4723 var end = (chunkNum+1) * chunkSize - 1; // including this byte\ | |
4724 end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block\ | |
4725 if (typeof(lazyArray.chunks[chunkNum]) === \"undefined\") {\ | |
4726 lazyArray.chunks[chunkNum] = doXHR(start, end);\ | |
4727 }\ | |
4728 if (typeof(lazyArray.chunks[chunkNum]) === \"undefined\") throw new Error(\"doXHR failed!\");\ | |
4729 return lazyArray.chunks[chunkNum];\ | |
4730 });\ | |
4731 this._length = datalength;\ | |
4732 this._chunkSize = chunkSize;\ | |
4733 this.lengthKnown = true;\ | |
4734 }\ | |
4735 var lazyArray = new LazyUint8Array();\ | |
4736 Object.defineProperty(lazyArray, \"length\", {\ | |
4737 get: function() {\ | |
4738 if(!this.lengthKnown) {\ | |
4739 this.cacheLength();\ | |
4740 }\ | |
4741 return this._length;\ | |
4742 }\ | |
4743 });\ | |
4744 Object.defineProperty(lazyArray, \"chunkSize\", {\ | |
4745 get: function() {\ | |
4746 if(!this.lengthKnown) {\ | |
4747 this.cacheLength();\ | |
4748 }\ | |
4749 return this._chunkSize;\ | |
4750 }\ | |
4751 });\ | |
4752 var properties = { isDevice: false, contents: lazyArray };\ | |
4753 } else {\ | |
4754 var properties = { isDevice: false, url: url };\ | |
4755 }\ | |
4756 var node = FS.createFile(parent, name, properties, canRead, canWrite);\ | |
4757 // This is a total hack, but I want to get this lazy file code out of the\ | |
4758 // core of MEMFS. If we want to keep this lazy file concept I feel it should\ | |
4759 // be its own thin LAZYFS proxying calls to MEMFS.\ | |
4760 if (properties.contents) {\ | |
4761 node.contents = properties.contents;\ | |
4762 } else if (properties.url) {\ | |
4763 node.contents = null;\ | |
4764 node.url = properties.url;\ | |
4765 }\ | |
4766 // override each stream op with one that tries to force load the lazy file first\ | |
4767 var stream_ops = {};\ | |
4768 var keys = Object.keys(node.stream_ops);\ | |
4769 keys.forEach(function(key) {\ | |
4770 var fn = node.stream_ops[key];\ | |
4771 stream_ops[key] = function() {\ | |
4772 if (!FS.forceLoadFile(node)) {\ | |
4773 throw new FS.ErrnoError(ERRNO_CODES.EIO);\ | |
4774 }\ | |
4775 return fn.apply(null, arguments);\ | |
4776 };\ | |
4777 });\ | |
4778 // use a custom read function\ | |
4779 stream_ops.read = function(stream, buffer, offset, length, position) {\ | |
4780 if (!FS.forceLoadFile(node)) {\ | |
4781 throw new FS.ErrnoError(ERRNO_CODES.EIO);\ | |
4782 }\ | |
4783 var contents = stream.node.contents;\ | |
4784 var size = Math.min(contents.length - position, length);\ | |
4785 if (contents.slice) { // normal array\ | |
4786 for (var i = 0; i < size; i++) {\ | |
4787 buffer[offset + i] = contents[position + i];\ | |
4788 }\ | |
4789 } else {\ | |
4790 for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR\ | |
4791 buffer[offset + i] = contents.get(position + i);\ | |
4792 }\ | |
4793 }\ | |
4794 return size;\ | |
4795 };\ | |
4796 node.stream_ops = stream_ops;\ | |
4797 return node;\ | |
4798 },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {\ | |
4799 Browser.init();\ | |
4800 // TODO we should allow people to just pass in a complete filename instead\ | |
4801 // of parent and name being that we just join them anyways\ | |
4802 var fullname = name ? PATH.resolve(PATH.join(parent, name)) : parent;\ | |
4803 function processData(byteArray) {\ | |
4804 function finish(byteArray) {\ | |
4805 if (!dontCreateFile) {\ | |
4806 FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\ | |
4807 }\ | |
4808 if (onload) onload();\ | |
4809 removeRunDependency('cp ' + fullname);\ | |
4810 }\ | |
4811 var handled = false;\ | |
4812 Module['preloadPlugins'].forEach(function(plugin) {\ | |
4813 if (handled) return;\ | |
4814 if (plugin['canHandle'](fullname)) {\ | |
4815 plugin['handle'](byteArray, fullname, finish, function() {\ | |
4816 if (onerror) onerror();\ | |
4817 removeRunDependency('cp ' + fullname);\ | |
4818 });\ | |
4819 handled = true;\ | |
4820 }\ | |
4821 });\ | |
4822 if (!handled) finish(byteArray);\ | |
4823 }\ | |
4824 addRunDependency('cp ' + fullname);\ | |
4825 if (typeof url == 'string') {\ | |
4826 Browser.asyncLoad(url, function(byteArray) {\ | |
4827 processData(byteArray);\ | |
4828 }, onerror);\ | |
4829 } else {\ | |
4830 processData(url);\ | |
4831 }\ | |
4832 },indexedDB:function () {\ | |
4833 return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\ | |
4834 },DB_NAME:function () {\ | |
4835 return 'EM_FS_' + window.location.pathname;\ | |
4836 },DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:function (paths, onload, onerror) {\ | |
4837 onload = onload || function(){};\ | |
4838 onerror = onerror || function(){};\ | |
4839 var indexedDB = FS.indexedDB();\ | |
4840 try {\ | |
4841 var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\ | |
4842 } catch (e) {\ | |
4843 return onerror(e);\ | |
4844 }\ | |
4845 openRequest.onupgradeneeded = function() {\ | |
4846 console.log('creating db');\ | |
4847 var db = openRequest.result;\ | |
4848 db.createObjectStore(FS.DB_STORE_NAME);\ | |
4849 };\ | |
4850 openRequest.onsuccess = function() {\ | |
4851 var db = openRequest.result;\ | |
4852 var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');\ | |
4853 var files = transaction.objectStore(FS.DB_STORE_NAME);\ | |
4854 var ok = 0, fail = 0, total = paths.length;\ | |
4855 function finish() {\ | |
4856 if (fail == 0) onload(); else onerror();\ | |
4857 }\ | |
4858 paths.forEach(function(path) {\ | |
4859 var putRequest = files.put(FS.analyzePath(path).object.contents, path);\ | |
4860 putRequest.onsuccess = function() { ok++; if (ok + fail == total) finish() };\ | |
4861 putRequest.onerror = function() { fail++; if (ok + fail == total) finish() };\ | |
4862 });\ | |
4863 transaction.onerror = onerror;\ | |
4864 };\ | |
4865 openRequest.onerror = onerror;\ | |
4866 },loadFilesFromDB:function (paths, onload, onerror) {\ | |
4867 onload = onload || function(){};\ | |
4868 onerror = onerror || function(){};\ | |
4869 var indexedDB = FS.indexedDB();\ | |
4870 try {\ | |
4871 var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\ | |
4872 } catch (e) {\ | |
4873 return onerror(e);\ | |
4874 }\ | |
4875 openRequest.onupgradeneeded = onerror; // no database to load from\ | |
4876 openRequest.onsuccess = function() {\ | |
4877 var db = openRequest.result;\ | |
4878 try {\ | |
4879 var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');\ | |
4880 } catch(e) {\ | |
4881 onerror(e);\ | |
4882 return;\ | |
4883 }\ | |
4884 var files = transaction.objectStore(FS.DB_STORE_NAME);\ | |
4885 var ok = 0, fail = 0, total = paths.length;\ | |
4886 function finish() {\ | |
4887 if (fail == 0) onload(); else onerror();\ | |
4888 }\ | |
4889 paths.forEach(function(path) {\ | |
4890 var getRequest = files.get(path);\ | |
4891 getRequest.onsuccess = function() {\ | |
4892 if (FS.analyzePath(path).exists) {\ | |
4893 FS.unlink(path);\ | |
4894 }\ | |
4895 FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\ | |
4896 ok++;\ | |
4897 if (ok + fail == total) finish();\ | |
4898 };\ | |
4899 getRequest.onerror = function() { fail++; if (ok + fail == total) finish() };\ | |
4900 });\ | |
4901 transaction.onerror = onerror;\ | |
4902 };\ | |
4903 openRequest.onerror = onerror;\ | |
4904 }};\ | |
4905 var SOCKFS={mount:function (mount) {\ | |
4906 return FS.createNode(null, '/', 0040000 | 0777, 0);\ | |
4907 },nextname:function () {\ | |
4908 if (!SOCKFS.nextname.current) {\ | |
4909 SOCKFS.nextname.current = 0;\ | |
4910 }\ | |
4911 return 'socket[' + (SOCKFS.nextname.current++) + ']';\ | |
4912 },createSocket:function (family, type, protocol) {\ | |
4913 var streaming = type == 1;\ | |
4914 if (protocol) {\ | |
4915 assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp\ | |
4916 }\ | |
4917 // create our internal socket structure\ | |
4918 var sock = {\ | |
4919 family: family,\ | |
4920 type: type,\ | |
4921 protocol: protocol,\ | |
4922 server: null,\ | |
4923 peers: {},\ | |
4924 pending: [],\ | |
4925 recv_queue: [],\ | |
4926 sock_ops: SOCKFS.websocket_sock_ops\ | |
4927 };\ | |
4928 // create the filesystem node to store the socket structure\ | |
4929 var name = SOCKFS.nextname();\ | |
4930 var node = FS.createNode(SOCKFS.root, name, 0140000, 0);\ | |
4931 node.sock = sock;\ | |
4932 // and the wrapping stream that enables library functions such\ | |
4933 // as read and write to indirectly interact with the socket\ | |
4934 var stream = FS.createStream({\ | |
4935 path: name,\ | |
4936 node: node,\ | |
4937 flags: FS.modeStringToFlags('r+'),\ | |
4938 seekable: false,\ | |
4939 stream_ops: SOCKFS.stream_ops\ | |
4940 });\ | |
4941 // map the new stream to the socket structure (sockets have a 1:1\ | |
4942 // relationship with a stream)\ | |
4943 sock.stream = stream;\ | |
4944 return sock;\ | |
4945 },getSocket:function (fd) {\ | |
4946 var stream = FS.getStream(fd);\ | |
4947 if (!stream || !FS.isSocket(stream.node.mode)) {\ | |
4948 return null;\ | |
4949 }\ | |
4950 return stream.node.sock;\ | |
4951 },stream_ops:{poll:function (stream) {\ | |
4952 var sock = stream.node.sock;\ | |
4953 return sock.sock_ops.poll(sock);\ | |
4954 },ioctl:function (stream, request, varargs) {\ | |
4955 var sock = stream.node.sock;\ | |
4956 return sock.sock_ops.ioctl(sock, request, varargs);\ | |
4957 },read:function (stream, buffer, offset, length, position /* ignored */) {\ | |
4958 var sock = stream.node.sock;\ | |
4959 var msg = sock.sock_ops.recvmsg(sock, length);\ | |
4960 if (!msg) {\ | |
4961 // socket is closed\ | |
4962 return 0;\ | |
4963 }\ | |
4964 buffer.set(msg.buffer, offset);\ | |
4965 return msg.buffer.length;\ | |
4966 },write:function (stream, buffer, offset, length, position /* ignored */) {\ | |
4967 var sock = stream.node.sock;\ | |
4968 return sock.sock_ops.sendmsg(sock, buffer, offset, length);\ | |
4969 },close:function (stream) {\ | |
4970 var sock = stream.node.sock;\ | |
4971 sock.sock_ops.close(sock);\ | |
4972 }},websocket_sock_ops:{createPeer:function (sock, addr, port) {\ | |
4973 var ws;\ | |
4974 if (typeof addr === 'object') {\ | |
4975 ws = addr;\ | |
4976 addr = null;\ | |
4977 port = null;\ | |
4978 }\ | |
4979 if (ws) {\ | |
4980 // for sockets that've already connected (e.g. we're the server)\ | |
4981 // we can inspect the _socket property for the address\ | |
4982 if (ws._socket) {\ | |
4983 addr = ws._socket.remoteAddress;\ | |
4984 port = ws._socket.remotePort;\ | |
4985 }\ | |
4986 // if we're just now initializing a connection to the remote,\ | |
4987 // inspect the url property\ | |
4988 else {\ | |
4989 var result = /ws[s]?:\\/\\/([^:]+):(\\d+)/.exec(ws.url);\ | |
4990 if (!result) {\ | |
4991 throw new Error('WebSocket URL must be in the format ws(s)://address:port');\ | |
4992 }\ | |
4993 addr = result[1];\ | |
4994 port = parseInt(result[2], 10);\ | |
4995 }\ | |
4996 } else {\ | |
4997 // create the actual websocket object and connect\ | |
4998 try {\ | |
4999 var url = 'ws://' + addr + ':' + port;\ | |
5000 // the node ws library API is slightly different than the browser's\ | |
5001 var opts = ENVIRONMENT_IS_NODE ? {} : ['binary'];\ | |
5002 ws = new WebSocket(url, opts);\ | |
5003 ws.binaryType = 'arraybuffer';\ | |
5004 } catch (e) {\ | |
5005 throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH);\ | |
5006 }\ | |
5007 }\ | |
5008 var peer = {\ | |
5009 addr: addr,\ | |
5010 port: port,\ | |
5011 socket: ws,\ | |
5012 dgram_send_queue: []\ | |
5013 };\ | |
5014 SOCKFS.websocket_sock_ops.addPeer(sock, peer);\ | |
5015 SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);\ | |
5016 // if this is a bound dgram socket, send the port number first to allow\ | |
5017 // us to override the ephemeral port reported to us by remotePort on the\ | |
5018 // remote end.\ | |
5019 if (sock.type === 2 && typeof sock.sport !== 'undefined') {\ | |
5020 peer.dgram_send_queue.push(new Uint8Array([\ | |
5021 255, 255, 255, 255,\ | |
5022 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0),\ | |
5023 ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff)\ | |
5024 ]));\ | |
5025 }\ | |
5026 return peer;\ | |
5027 },getPeer:function (sock, addr, port) {\ | |
5028 return sock.peers[addr + ':' + port];\ | |
5029 },addPeer:function (sock, peer) {\ | |
5030 sock.peers[peer.addr + ':' + peer.port] = peer;\ | |
5031 },removePeer:function (sock, peer) {\ | |
5032 delete sock.peers[peer.addr + ':' + peer.port];\ | |
5033 },handlePeerEvents:function (sock, peer) {\ | |
5034 var first = true;\ | |
5035 var handleOpen = function () {\ | |
5036 try {\ | |
5037 var queued = peer.dgram_send_queue.shift();\ | |
5038 while (queued) {\ | |
5039 peer.socket.send(queued);\ | |
5040 queued = peer.dgram_send_queue.shift();\ | |
5041 }\ | |
5042 } catch (e) {\ | |
5043 // not much we can do here in the way of proper error handling as we've already\ | |
5044 // lied and said this data was sent. shut it down.\ | |
5045 peer.socket.close();\ | |
5046 }\ | |
5047 };\ | |
5048 var handleMessage = function(data) {\ | |
5049 assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer\ | |
5050 data = new Uint8Array(data); // make a typed array view on the array buffer\ | |
5051 // if this is the port message, override the peer's port with it\ | |
5052 var wasfirst = first;\ | |
5053 first = false;\ | |
5054 if (wasfirst &&\ | |
5055 data.length === 10 &&\ | |
5056 data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 &&\ | |
5057 data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) {\ | |
5058 // update the peer's port and it's key in the peer map\ | |
5059 var newport = ((data[8] << 8) | data[9]);\ | |
5060 SOCKFS.websocket_sock_ops.removePeer(sock, peer);\ | |
5061 peer.port = newport;\ | |
5062 SOCKFS.websocket_sock_ops.addPeer(sock, peer);\ | |
5063 return;\ | |
5064 }\ | |
5065 sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data });\ | |
5066 };\ | |
5067 if (ENVIRONMENT_IS_NODE) {\ | |
5068 peer.socket.on('open', handleOpen);\ | |
5069 peer.socket.on('message', function(data, flags) {\ | |
5070 if (!flags.binary) {\ | |
5071 return;\ | |
5072 }\ | |
5073 handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer\ | |
5074 });\ | |
5075 peer.socket.on('error', function() {\ | |
5076 // don't throw\ | |
5077 });\ | |
5078 } else {\ | |
5079 peer.socket.onopen = handleOpen;\ | |
5080 peer.socket.onmessage = function(event) {\ | |
5081 handleMessage(event.data);\ | |
5082 };\ | |
5083 }\ | |
5084 },poll:function (sock) {\ | |
5085 if (sock.type === 1 && sock.server) {\ | |
5086 // listen sockets should only say they're available for reading\ | |
5087 // if there are pending clients.\ | |
5088 return sock.pending.length ? (0 /* XXX missing C define POLLRDNORM */ | 1) : 0;\ | |
5089 }\ | |
5090 var mask = 0;\ | |
5091 var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets\ | |
5092 SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) :\ | |
5093 null;\ | |
5094 if (sock.recv_queue.length ||\ | |
5095 !dest || // connection-less sockets are always ready to read\ | |
5096 (dest && dest.socket.readyState === dest.socket.CLOSING) ||\ | |
5097 (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed\ | |
5098 mask |= (0 /* XXX missing C define POLLRDNORM */ | 1);\ | |
5099 }\ | |
5100 if (!dest || // connection-less sockets are always ready to write\ | |
5101 (dest && dest.socket.readyState === dest.socket.OPEN)) {\ | |
5102 mask |= 2;\ | |
5103 }\ | |
5104 if ((dest && dest.socket.readyState === dest.socket.CLOSING) ||\ | |
5105 (dest && dest.socket.readyState === dest.socket.CLOSED)) {\ | |
5106 mask |= 16;\ | |
5107 }\ | |
5108 return mask;\ | |
5109 },ioctl:function (sock, request, arg) {\ | |
5110 switch (request) {\ | |
5111 case 1:\ | |
5112 var bytes = 0;\ | |
5113 if (sock.recv_queue.length) {\ | |
5114 bytes = sock.recv_queue[0].data.length;\ | |
5115 }\ | |
5116 HEAP32[((arg)>>2)]=bytes;\ | |
5117 return 0;\ | |
5118 default:\ | |
5119 return ERRNO_CODES.EINVAL;\ | |
5120 }\ | |
5121 },close:function (sock) {\ | |
5122 // if we've spawned a listen server, close it\ | |
5123 if (sock.server) {\ | |
5124 try {\ | |
5125 sock.server.close();\ | |
5126 } catch (e) {\ | |
5127 }\ | |
5128 sock.server = null;\ | |
5129 }\ | |
5130 // close any peer connections\ | |
5131 var peers = Object.keys(sock.peers);\ | |
5132 for (var i = 0; i < peers.length; i++) {\ | |
5133 var peer = sock.peers[peers[i]];\ | |
5134 try {\ | |
5135 peer.socket.close();\ | |
5136 } catch (e) {\ | |
5137 }\ | |
5138 SOCKFS.websocket_sock_ops.removePeer(sock, peer);\ | |
5139 }\ | |
5140 return 0;\ | |
5141 },bind:function (sock, addr, port) {\ | |
5142 if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') {\ | |
5143 throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound\ | |
5144 }\ | |
5145 sock.saddr = addr;\ | |
5146 sock.sport = port || _mkport();\ | |
5147 // in order to emulate dgram sockets, we need to launch a listen server when\ | |
5148 // binding on a connection-less socket\ | |
5149 // note: this is only required on the server side\ | |
5150 if (sock.type === 2) {\ | |
5151 // close the existing server if it exists\ | |
5152 if (sock.server) {\ | |
5153 sock.server.close();\ | |
5154 sock.server = null;\ | |
5155 }\ | |
5156 // swallow error operation not supported error that occurs when binding in the\ | |
5157 // browser where this isn't supported\ | |
5158 try {\ | |
5159 sock.sock_ops.listen(sock, 0);\ | |
5160 } catch (e) {\ | |
5161 if (!(e instanceof FS.ErrnoError)) throw e;\ | |
5162 if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e;\ | |
5163 }\ | |
5164 }\ | |
5165 },connect:function (sock, addr, port) {\ | |
5166 if (sock.server) {\ | |
5167 throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP);\ | |
5168 }\ | |
5169 // TODO autobind\ | |
5170 // if (!sock.addr && sock.type == 2) {\ | |
5171 // }\ | |
5172 // early out if we're already connected / in the middle of connecting\ | |
5173 if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') {\ | |
5174 var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\ | |
5175 if (dest) {\ | |
5176 if (dest.socket.readyState === dest.socket.CONNECTING) {\ | |
5177 throw new FS.ErrnoError(ERRNO_CODES.EALREADY);\ | |
5178 } else {\ | |
5179 throw new FS.ErrnoError(ERRNO_CODES.EISCONN);\ | |
5180 }\ | |
5181 }\ | |
5182 }\ | |
5183 // add the socket to our peer list and set our\ | |
5184 // destination address / port to match\ | |
5185 var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);\ | |
5186 sock.daddr = peer.addr;\ | |
5187 sock.dport = peer.port;\ | |
5188 // always \"fail\" in non-blocking mode\ | |
5189 throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS);\ | |
5190 },listen:function (sock, backlog) {\ | |
5191 if (!ENVIRONMENT_IS_NODE) {\ | |
5192 throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);\ | |
5193 }\ | |
5194 if (sock.server) {\ | |
5195 throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening\ | |
5196 }\ | |
5197 var WebSocketServer = require('ws').Server;\ | |
5198 var host = sock.saddr;\ | |
5199 sock.server = new WebSocketServer({\ | |
5200 host: host,\ | |
5201 port: sock.sport\ | |
5202 // TODO support backlog\ | |
5203 });\ | |
5204 sock.server.on('connection', function(ws) {\ | |
5205 if (sock.type === 1) {\ | |
5206 var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);\ | |
5207 // create a peer on the new socket\ | |
5208 var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);\ | |
5209 newsock.daddr = peer.addr;\ | |
5210 newsock.dport = peer.port;\ | |
5211 // push to queue for accept to pick up\ | |
5212 sock.pending.push(newsock);\ | |
5213 } else {\ | |
5214 // create a peer on the listen socket so calling sendto\ | |
5215 // with the listen socket and an address will resolve\ | |
5216 // to the correct client\ | |
5217 SOCKFS.websocket_sock_ops.createPeer(sock, ws);\ | |
5218 }\ | |
5219 });\ | |
5220 sock.server.on('closed', function() {\ | |
5221 sock.server = null;\ | |
5222 });\ | |
5223 sock.server.on('error', function() {\ | |
5224 // don't throw\ | |
5225 });\ | |
5226 },accept:function (listensock) {\ | |
5227 if (!listensock.server) {\ | |
5228 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
5229 }\ | |
5230 var newsock = listensock.pending.shift();\ | |
5231 newsock.stream.flags = listensock.stream.flags;\ | |
5232 return newsock;\ | |
5233 },getname:function (sock, peer) {\ | |
5234 var addr, port;\ | |
5235 if (peer) {\ | |
5236 if (sock.daddr === undefined || sock.dport === undefined) {\ | |
5237 throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);\ | |
5238 }\ | |
5239 addr = sock.daddr;\ | |
5240 port = sock.dport;\ | |
5241 } else {\ | |
5242 // TODO saddr and sport will be set for bind()'d UDP sockets, but what\ | |
5243 // should we be returning for TCP sockets that've been connect()'d?\ | |
5244 addr = sock.saddr || 0;\ | |
5245 port = sock.sport || 0;\ | |
5246 }\ | |
5247 return { addr: addr, port: port };\ | |
5248 },sendmsg:function (sock, buffer, offset, length, addr, port) {\ | |
5249 if (sock.type === 2) {\ | |
5250 // connection-less sockets will honor the message address,\ | |
5251 // and otherwise fall back to the bound destination address\ | |
5252 if (addr === undefined || port === undefined) {\ | |
5253 addr = sock.daddr;\ | |
5254 port = sock.dport;\ | |
5255 }\ | |
5256 // if there was no address to fall back to, error out\ | |
5257 if (addr === undefined || port === undefined) {\ | |
5258 throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ);\ | |
5259 }\ | |
5260 } else {\ | |
5261 // connection-based sockets will only use the bound\ | |
5262 addr = sock.daddr;\ | |
5263 port = sock.dport;\ | |
5264 }\ | |
5265 // find the peer for the destination address\ | |
5266 var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port);\ | |
5267 // early out if not connected with a connection-based socket\ | |
5268 if (sock.type === 1) {\ | |
5269 if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\ | |
5270 throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);\ | |
5271 } else if (dest.socket.readyState === dest.socket.CONNECTING) {\ | |
5272 throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\ | |
5273 }\ | |
5274 }\ | |
5275 // create a copy of the incoming data to send, as the WebSocket API\ | |
5276 // doesn't work entirely with an ArrayBufferView, it'll just send\ | |
5277 // the entire underlying buffer\ | |
5278 var data;\ | |
5279 if (buffer instanceof Array || buffer instanceof ArrayBuffer) {\ | |
5280 data = buffer.slice(offset, offset + length);\ | |
5281 } else { // ArrayBufferView\ | |
5282 data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length);\ | |
5283 }\ | |
5284 // if we're emulating a connection-less dgram socket and don't have\ | |
5285 // a cached connection, queue the buffer to send upon connect and\ | |
5286 // lie, saying the data was sent now.\ | |
5287 if (sock.type === 2) {\ | |
5288 if (!dest || dest.socket.readyState !== dest.socket.OPEN) {\ | |
5289 // if we're not connected, open a new connection\ | |
5290 if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\ | |
5291 dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);\ | |
5292 }\ | |
5293 dest.dgram_send_queue.push(data);\ | |
5294 return length;\ | |
5295 }\ | |
5296 }\ | |
5297 try {\ | |
5298 // send the actual data\ | |
5299 dest.socket.send(data);\ | |
5300 return length;\ | |
5301 } catch (e) {\ | |
5302 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\ | |
5303 }\ | |
5304 },recvmsg:function (sock, length) {\ | |
5305 // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html\ | |
5306 if (sock.type === 1 && sock.server) {\ | |
5307 // tcp servers should not be recv()'ing on the listen socket\ | |
5308 throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);\ | |
5309 }\ | |
5310 var queued = sock.recv_queue.shift();\ | |
5311 if (!queued) {\ | |
5312 if (sock.type === 1) {\ | |
5313 var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\ | |
5314 if (!dest) {\ | |
5315 // if we have a destination address but are not connected, error out\ | |
5316 throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);\ | |
5317 }\ | |
5318 else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\ | |
5319 // return null if the socket has closed\ | |
5320 return null;\ | |
5321 }\ | |
5322 else {\ | |
5323 // else, our socket is in a valid state but truly has nothing available\ | |
5324 throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\ | |
5325 }\ | |
5326 } else {\ | |
5327 throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\ | |
5328 }\ | |
5329 }\ | |
5330 // queued.data will be an ArrayBuffer if it's unadulterated, but if it's\ | |
5331 // requeued TCP data it'll be an ArrayBufferView\ | |
5332 var queuedLength = queued.data.byteLength || queued.data.length;\ | |
5333 var queuedOffset = queued.data.byteOffset || 0;\ | |
5334 var queuedBuffer = queued.data.buffer || queued.data;\ | |
5335 var bytesRead = Math.min(length, queuedLength);\ | |
5336 var res = {\ | |
5337 buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead),\ | |
5338 addr: queued.addr,\ | |
5339 port: queued.port\ | |
5340 };\ | |
5341 // push back any unread data for TCP connections\ | |
5342 if (sock.type === 1 && bytesRead < queuedLength) {\ | |
5343 var bytesRemaining = queuedLength - bytesRead;\ | |
5344 queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);\ | |
5345 sock.recv_queue.unshift(queued);\ | |
5346 }\ | |
5347 return res;\ | |
5348 }}};function _send(fd, buf, len, flags) {\ | |
5349 var sock = SOCKFS.getSocket(fd);\ | |
5350 if (!sock) {\ | |
5351 ___setErrNo(ERRNO_CODES.EBADF);\ | |
5352 return -1;\ | |
5353 }\ | |
5354 // TODO honor flags\ | |
5355 return _write(fd, buf, len);\ | |
5356 }\ | |
5357 function _pwrite(fildes, buf, nbyte, offset) {\ | |
5358 // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset);\ | |
5359 // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html\ | |
5360 var stream = FS.getStream(fildes);\ | |
5361 if (!stream) {\ | |
5362 ___setErrNo(ERRNO_CODES.EBADF);\ | |
5363 return -1;\ | |
5364 }\ | |
5365 try {\ | |
5366 var slab = HEAP8;\ | |
5367 return FS.write(stream, slab, buf, nbyte, offset);\ | |
5368 } catch (e) {\ | |
5369 FS.handleFSError(e);\ | |
5370 return -1;\ | |
5371 }\ | |
5372 }function _write(fildes, buf, nbyte) {\ | |
5373 // ssize_t write(int fildes, const void *buf, size_t nbyte);\ | |
5374 // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html\ | |
5375 var stream = FS.getStream(fildes);\ | |
5376 if (!stream) {\ | |
5377 ___setErrNo(ERRNO_CODES.EBADF);\ | |
5378 return -1;\ | |
5379 }\ | |
5380 try {\ | |
5381 var slab = HEAP8;\ | |
5382 return FS.write(stream, slab, buf, nbyte);\ | |
5383 } catch (e) {\ | |
5384 FS.handleFSError(e);\ | |
5385 return -1;\ | |
5386 }\ | |
5387 }function _fputc(c, stream) {\ | |
5388 // int fputc(int c, FILE *stream);\ | |
5389 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html\ | |
5390 var chr = unSign(c & 0xFF);\ | |
5391 HEAP8[((_fputc.ret)|0)]=chr\ | |
5392 var ret = _write(stream, _fputc.ret, 1);\ | |
5393 if (ret == -1) {\ | |
5394 var streamObj = FS.getStream(stream);\ | |
5395 if (streamObj) streamObj.error = true;\ | |
5396 return -1;\ | |
5397 } else {\ | |
5398 return chr;\ | |
5399 }\ | |
5400 }function _putchar(c) {\ | |
5401 // int putchar(int c);\ | |
5402 // http://pubs.opengroup.org/onlinepubs/000095399/functions/putchar.html\ | |
5403 return _fputc(c, HEAP32[((_stdout)>>2)]);\ | |
5404 } \ | |
5405 Module[\"_saveSetjmp\"] = _saveSetjmp;\ | |
5406 Module[\"_testSetjmp\"] = _testSetjmp;function _longjmp(env, value) {\ | |
5407 asm['setThrew'](env, value || 1);\ | |
5408 throw 'longjmp';\ | |
5409 }\ | |
5410 function __exit(status) {\ | |
5411 // void _exit(int status);\ | |
5412 // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html\ | |
5413 Module.print('exit(' + status + ') called');\ | |
5414 Module['exit'](status);\ | |
5415 }function _exit(status) {\ | |
5416 __exit(status);\ | |
5417 }\ | |
5418 var _setjmp=undefined;\ | |
5419 Module[\"_memset\"] = _memset;var _llvm_memset_p0i8_i64=_memset;\ | |
5420 function _iscntrl(chr) {\ | |
5421 return (0 <= chr && chr <= 0x1F) || chr === 0x7F;\ | |
5422 }\ | |
5423 function _isspace(chr) {\ | |
5424 return (chr == 32) || (chr >= 9 && chr <= 13);\ | |
5425 }\ | |
5426 function _isalpha(chr) {\ | |
5427 return (chr >= 97 && chr <= 122) ||\ | |
5428 (chr >= 65 && chr <= 90);\ | |
5429 }\ | |
5430 function _isalnum(chr) {\ | |
5431 return (chr >= 48 && chr <= 57) ||\ | |
5432 (chr >= 97 && chr <= 122) ||\ | |
5433 (chr >= 65 && chr <= 90);\ | |
5434 }\ | |
5435 function _localeconv() {\ | |
5436 // %struct.timeval = type { char* decimal point, other stuff... }\ | |
5437 // var indexes = Runtime.calculateStructAlignment({ fields: ['i32', 'i32'] });\ | |
5438 var me = _localeconv;\ | |
5439 if (!me.ret) {\ | |
5440 me.ret = allocate([allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL)], 'i8*', ALLOC_NORMAL); // just decimal point, for now\ | |
5441 }\ | |
5442 return me.ret;\ | |
5443 }\ | |
5444 function _memchr(ptr, chr, num) {\ | |
5445 chr = unSign(chr);\ | |
5446 for (var i = 0; i < num; i++) {\ | |
5447 if (HEAP8[(ptr)] == chr) return ptr;\ | |
5448 ptr++;\ | |
5449 }\ | |
5450 return 0;\ | |
5451 }\ | |
5452 function __parseInt(str, endptr, base, min, max, bits, unsign) {\ | |
5453 // Skip space.\ | |
5454 while (_isspace(HEAP8[(str)])) str++;\ | |
5455 // Check for a plus/minus sign.\ | |
5456 var multiplier = 1;\ | |
5457 if (HEAP8[(str)] == 45) {\ | |
5458 multiplier = -1;\ | |
5459 str++;\ | |
5460 } else if (HEAP8[(str)] == 43) {\ | |
5461 str++;\ | |
5462 }\ | |
5463 // Find base.\ | |
5464 var finalBase = base;\ | |
5465 if (!finalBase) {\ | |
5466 if (HEAP8[(str)] == 48) {\ | |
5467 if (HEAP8[((str+1)|0)] == 120 ||\ | |
5468 HEAP8[((str+1)|0)] == 88) {\ | |
5469 finalBase = 16;\ | |
5470 str += 2;\ | |
5471 } else {\ | |
5472 finalBase = 8;\ | |
5473 str++;\ | |
5474 }\ | |
5475 }\ | |
5476 } else if (finalBase==16) {\ | |
5477 if (HEAP8[(str)] == 48) {\ | |
5478 if (HEAP8[((str+1)|0)] == 120 ||\ | |
5479 HEAP8[((str+1)|0)] == 88) {\ | |
5480 str += 2;\ | |
5481 }\ | |
5482 }\ | |
5483 }\ | |
5484 if (!finalBase) finalBase = 10;\ | |
5485 // Get digits.\ | |
5486 var chr;\ | |
5487 var ret = 0;\ | |
5488 while ((chr = HEAP8[(str)]) != 0) {\ | |
5489 var digit = parseInt(String.fromCharCode(chr), finalBase);\ | |
5490 if (isNaN(digit)) {\ | |
5491 break;\ | |
5492 } else {\ | |
5493 ret = ret * finalBase + digit;\ | |
5494 str++;\ | |
5495 }\ | |
5496 }\ | |
5497 // Apply sign.\ | |
5498 ret *= multiplier;\ | |
5499 // Set end pointer.\ | |
5500 if (endptr) {\ | |
5501 HEAP32[((endptr)>>2)]=str\ | |
5502 }\ | |
5503 // Unsign if needed.\ | |
5504 if (unsign) {\ | |
5505 if (Math.abs(ret) > max) {\ | |
5506 ret = max;\ | |
5507 ___setErrNo(ERRNO_CODES.ERANGE);\ | |
5508 } else {\ | |
5509 ret = unSign(ret, bits);\ | |
5510 }\ | |
5511 }\ | |
5512 // Validate range.\ | |
5513 if (ret > max || ret < min) {\ | |
5514 ret = ret > max ? max : min;\ | |
5515 ___setErrNo(ERRNO_CODES.ERANGE);\ | |
5516 }\ | |
5517 if (bits == 64) {\ | |
5518 return ((asm[\"setTempRet0\"]((tempDouble=ret,(+(Math.abs(tempDouble))) >= (+(1)) ? (tempDouble > (+(0)) ? ((Math.min((+(Math.floor((tempDouble)/(+(4294967296))))), (+(4294967295))))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+(4294967296)))))))>>>0) : 0)),ret>>>0)|0);\ | |
5519 }\ | |
5520 return ret;\ | |
5521 }function _strtoul(str, endptr, base) {\ | |
5522 return __parseInt(str, endptr, base, 0, 4294967295, 32, true); // ULONG_MAX.\ | |
5523 }\ | |
5524 function __reallyNegative(x) {\ | |
5525 return x < 0 || (x === 0 && (1/x) === -Infinity);\ | |
5526 }function __formatString(format, varargs) {\ | |
5527 var textIndex = format;\ | |
5528 var argIndex = 0;\ | |
5529 function getNextArg(type) {\ | |
5530 // NOTE: Explicitly ignoring type safety. Otherwise this fails:\ | |
5531 // int x = 4; printf(\"%c\\n\", (char)x);\ | |
5532 var ret;\ | |
5533 if (type === 'double') {\ | |
5534 ret = HEAPF64[(((varargs)+(argIndex))>>3)];\ | |
5535 } else if (type == 'i64') {\ | |
5536 ret = [HEAP32[(((varargs)+(argIndex))>>2)],\ | |
5537 HEAP32[(((varargs)+(argIndex+8))>>2)]];\ | |
5538 argIndex += 8; // each 32-bit chunk is in a 64-bit block\ | |
5539 } else {\ | |
5540 type = 'i32'; // varargs are always i32, i64, or double\ | |
5541 ret = HEAP32[(((varargs)+(argIndex))>>2)];\ | |
5542 }\ | |
5543 argIndex += Math.max(Runtime.getNativeFieldSize(type), Runtime.getAlignSize(type, null, true));\ | |
5544 return ret;\ | |
5545 }\ | |
5546 var ret = [];\ | |
5547 var curr, next, currArg;\ | |
5548 while(1) {\ | |
5549 var startTextIndex = textIndex;\ | |
5550 curr = HEAP8[(textIndex)];\ | |
5551 if (curr === 0) break;\ | |
5552 next = HEAP8[((textIndex+1)|0)];\ | |
5553 if (curr == 37) {\ | |
5554 // Handle flags.\ | |
5555 var flagAlwaysSigned = false;\ | |
5556 var flagLeftAlign = false;\ | |
5557 var flagAlternative = false;\ | |
5558 var flagZeroPad = false;\ | |
5559 flagsLoop: while (1) {\ | |
5560 switch (next) {\ | |
5561 case 43:\ | |
5562 flagAlwaysSigned = true;\ | |
5563 break;\ | |
5564 case 45:\ | |
5565 flagLeftAlign = true;\ | |
5566 break;\ | |
5567 case 35:\ | |
5568 flagAlternative = true;\ | |
5569 break;\ | |
5570 case 48:\ | |
5571 if (flagZeroPad) {\ | |
5572 break flagsLoop;\ | |
5573 } else {\ | |
5574 flagZeroPad = true;\ | |
5575 break;\ | |
5576 }\ | |
5577 default:\ | |
5578 break flagsLoop;\ | |
5579 }\ | |
5580 textIndex++;\ | |
5581 next = HEAP8[((textIndex+1)|0)];\ | |
5582 }\ | |
5583 // Handle width.\ | |
5584 var width = 0;\ | |
5585 if (next == 42) {\ | |
5586 width = getNextArg('i32');\ | |
5587 textIndex++;\ | |
5588 next = HEAP8[((textIndex+1)|0)];\ | |
5589 } else {\ | |
5590 while (next >= 48 && next <= 57) {\ | |
5591 width = width * 10 + (next - 48);\ | |
5592 textIndex++;\ | |
5593 next = HEAP8[((textIndex+1)|0)];\ | |
5594 }\ | |
5595 }\ | |
5596 // Handle precision.\ | |
5597 var precisionSet = false;\ | |
5598 if (next == 46) {\ | |
5599 var precision = 0;\ | |
5600 precisionSet = true;\ | |
5601 textIndex++;\ | |
5602 next = HEAP8[((textIndex+1)|0)];\ | |
5603 if (next == 42) {\ | |
5604 precision = getNextArg('i32');\ | |
5605 textIndex++;\ | |
5606 } else {\ | |
5607 while(1) {\ | |
5608 var precisionChr = HEAP8[((textIndex+1)|0)];\ | |
5609 if (precisionChr < 48 ||\ | |
5610 precisionChr > 57) break;\ | |
5611 precision = precision * 10 + (precisionChr - 48);\ | |
5612 textIndex++;\ | |
5613 }\ | |
5614 }\ | |
5615 next = HEAP8[((textIndex+1)|0)];\ | |
5616 } else {\ | |
5617 var precision = 6; // Standard default.\ | |
5618 }\ | |
5619 // Handle integer sizes. WARNING: These assume a 32-bit architecture!\ | |
5620 var argSize;\ | |
5621 switch (String.fromCharCode(next)) {\ | |
5622 case 'h':\ | |
5623 var nextNext = HEAP8[((textIndex+2)|0)];\ | |
5624 if (nextNext == 104) {\ | |
5625 textIndex++;\ | |
5626 argSize = 1; // char (actually i32 in varargs)\ | |
5627 } else {\ | |
5628 argSize = 2; // short (actually i32 in varargs)\ | |
5629 }\ | |
5630 break;\ | |
5631 case 'l':\ | |
5632 var nextNext = HEAP8[((textIndex+2)|0)];\ | |
5633 if (nextNext == 108) {\ | |
5634 textIndex++;\ | |
5635 argSize = 8; // long long\ | |
5636 } else {\ | |
5637 argSize = 4; // long\ | |
5638 }\ | |
5639 break;\ | |
5640 case 'L': // long long\ | |
5641 case 'q': // int64_t\ | |
5642 case 'j': // intmax_t\ | |
5643 argSize = 8;\ | |
5644 break;\ | |
5645 case 'z': // size_t\ | |
5646 case 't': // ptrdiff_t\ | |
5647 case 'I': // signed ptrdiff_t or unsigned size_t\ | |
5648 argSize = 4;\ | |
5649 break;\ | |
5650 default:\ | |
5651 argSize = null;\ | |
5652 }\ | |
5653 if (argSize) textIndex++;\ | |
5654 next = HEAP8[((textIndex+1)|0)];\ | |
5655 // Handle type specifier.\ | |
5656 switch (String.fromCharCode(next)) {\ | |
5657 case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': {\ | |
5658 // Integer.\ | |
5659 var signed = next == 100 || next == 105;\ | |
5660 argSize = argSize || 4;\ | |
5661 var currArg = getNextArg('i' + (argSize * 8));\ | |
5662 var origArg = currArg;\ | |
5663 var argText;\ | |
5664 // Flatten i64-1 [low, high] into a (slightly rounded) double\ | |
5665 if (argSize == 8) {\ | |
5666 currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117);\ | |
5667 }\ | |
5668 // Truncate to requested size.\ | |
5669 if (argSize <= 4) {\ | |
5670 var limit = Math.pow(256, argSize) - 1;\ | |
5671 currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8);\ | |
5672 }\ | |
5673 // Format the number.\ | |
5674 var currAbsArg = Math.abs(currArg);\ | |
5675 var prefix = '';\ | |
5676 if (next == 100 || next == 105) {\ | |
5677 if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else\ | |
5678 argText = reSign(currArg, 8 * argSize, 1).toString(10);\ | |
5679 } else if (next == 117) {\ | |
5680 if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else\ | |
5681 argText = unSign(currArg, 8 * argSize, 1).toString(10);\ | |
5682 currArg = Math.abs(currArg);\ | |
5683 } else if (next == 111) {\ | |
5684 argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8);\ | |
5685 } else if (next == 120 || next == 88) {\ | |
5686 prefix = (flagAlternative && currArg != 0) ? '0x' : '';\ | |
5687 if (argSize == 8 && i64Math) {\ | |
5688 if (origArg[1]) {\ | |
5689 argText = (origArg[1]>>>0).toString(16);\ | |
5690 var lower = (origArg[0]>>>0).toString(16);\ | |
5691 while (lower.length < 8) lower = '0' + lower;\ | |
5692 argText += lower;\ | |
5693 } else {\ | |
5694 argText = (origArg[0]>>>0).toString(16);\ | |
5695 }\ | |
5696 } else\ | |
5697 if (currArg < 0) {\ | |
5698 // Represent negative numbers in hex as 2's complement.\ | |
5699 currArg = -currArg;\ | |
5700 argText = (currAbsArg - 1).toString(16);\ | |
5701 var buffer = [];\ | |
5702 for (var i = 0; i < argText.length; i++) {\ | |
5703 buffer.push((0xF - parseInt(argText[i], 16)).toString(16));\ | |
5704 }\ | |
5705 argText = buffer.join('');\ | |
5706 while (argText.length < argSize * 2) argText = 'f' + argText;\ | |
5707 } else {\ | |
5708 argText = currAbsArg.toString(16);\ | |
5709 }\ | |
5710 if (next == 88) {\ | |
5711 prefix = prefix.toUpperCase();\ | |
5712 argText = argText.toUpperCase();\ | |
5713 }\ | |
5714 } else if (next == 112) {\ | |
5715 if (currAbsArg === 0) {\ | |
5716 argText = '(nil)';\ | |
5717 } else {\ | |
5718 prefix = '0x';\ | |
5719 argText = currAbsArg.toString(16);\ | |
5720 }\ | |
5721 }\ | |
5722 if (precisionSet) {\ | |
5723 while (argText.length < precision) {\ | |
5724 argText = '0' + argText;\ | |
5725 }\ | |
5726 }\ | |
5727 // Add sign if needed\ | |
5728 if (flagAlwaysSigned) {\ | |
5729 if (currArg < 0) {\ | |
5730 prefix = '-' + prefix;\ | |
5731 } else {\ | |
5732 prefix = '+' + prefix;\ | |
5733 }\ | |
5734 }\ | |
5735 // Add padding.\ | |
5736 while (prefix.length + argText.length < width) {\ | |
5737 if (flagLeftAlign) {\ | |
5738 argText += ' ';\ | |
5739 } else {\ | |
5740 if (flagZeroPad) {\ | |
5741 argText = '0' + argText;\ | |
5742 } else {\ | |
5743 prefix = ' ' + prefix;\ | |
5744 }\ | |
5745 }\ | |
5746 }\ | |
5747 // Insert the result into the buffer.\ | |
5748 argText = prefix + argText;\ | |
5749 argText.split('').forEach(function(chr) {\ | |
5750 ret.push(chr.charCodeAt(0));\ | |
5751 });\ | |
5752 break;\ | |
5753 }\ | |
5754 case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': {\ | |
5755 // Float.\ | |
5756 var currArg = getNextArg('double');\ | |
5757 var argText;\ | |
5758 if (isNaN(currArg)) {\ | |
5759 argText = 'nan';\ | |
5760 flagZeroPad = false;\ | |
5761 } else if (!isFinite(currArg)) {\ | |
5762 argText = (currArg < 0 ? '-' : '') + 'inf';\ | |
5763 flagZeroPad = false;\ | |
5764 } else {\ | |
5765 var isGeneral = false;\ | |
5766 var effectivePrecision = Math.min(precision, 20);\ | |
5767 // Convert g/G to f/F or e/E, as per:\ | |
5768 // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html\ | |
5769 if (next == 103 || next == 71) {\ | |
5770 isGeneral = true;\ | |
5771 precision = precision || 1;\ | |
5772 var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10);\ | |
5773 if (precision > exponent && exponent >= -4) {\ | |
5774 next = ((next == 103) ? 'f' : 'F').charCodeAt(0);\ | |
5775 precision -= exponent + 1;\ | |
5776 } else {\ | |
5777 next = ((next == 103) ? 'e' : 'E').charCodeAt(0);\ | |
5778 precision--;\ | |
5779 }\ | |
5780 effectivePrecision = Math.min(precision, 20);\ | |
5781 }\ | |
5782 if (next == 101 || next == 69) {\ | |
5783 argText = currArg.toExponential(effectivePrecision);\ | |
5784 // Make sure the exponent has at least 2 digits.\ | |
5785 if (/[eE][-+]\\d$/.test(argText)) {\ | |
5786 argText = argText.slice(0, -1) + '0' + argText.slice(-1);\ | |
5787 }\ | |
5788 } else if (next == 102 || next == 70) {\ | |
5789 argText = currArg.toFixed(effectivePrecision);\ | |
5790 if (currArg === 0 && __reallyNegative(currArg)) {\ | |
5791 argText = '-' + argText;\ | |
5792 }\ | |
5793 }\ | |
5794 var parts = argText.split('e');\ | |
5795 if (isGeneral && !flagAlternative) {\ | |
5796 // Discard trailing zeros and periods.\ | |
5797 while (parts[0].length > 1 && parts[0].indexOf('.') != -1 &&\ | |
5798 (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) {\ | |
5799 parts[0] = parts[0].slice(0, -1);\ | |
5800 }\ | |
5801 } else {\ | |
5802 // Make sure we have a period in alternative mode.\ | |
5803 if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.';\ | |
5804 // Zero pad until required precision.\ | |
5805 while (precision > effectivePrecision++) parts[0] += '0';\ | |
5806 }\ | |
5807 argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : '');\ | |
5808 // Capitalize 'E' if needed.\ | |
5809 if (next == 69) argText = argText.toUpperCase();\ | |
5810 // Add sign.\ | |
5811 if (flagAlwaysSigned && currArg >= 0) {\ | |
5812 argText = '+' + argText;\ | |
5813 }\ | |
5814 }\ | |
5815 // Add padding.\ | |
5816 while (argText.length < width) {\ | |
5817 if (flagLeftAlign) {\ | |
5818 argText += ' ';\ | |
5819 } else {\ | |
5820 if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) {\ | |
5821 argText = argText[0] + '0' + argText.slice(1);\ | |
5822 } else {\ | |
5823 argText = (flagZeroPad ? '0' : ' ') + argText;\ | |
5824 }\ | |
5825 }\ | |
5826 }\ | |
5827 // Adjust case.\ | |
5828 if (next < 97) argText = argText.toUpperCase();\ | |
5829 // Insert the result into the buffer.\ | |
5830 argText.split('').forEach(function(chr) {\ | |
5831 ret.push(chr.charCodeAt(0));\ | |
5832 });\ | |
5833 break;\ | |
5834 }\ | |
5835 case 's': {\ | |
5836 // String.\ | |
5837 var arg = getNextArg('i8*');\ | |
5838 var argLength = arg ? _strlen(arg) : '(null)'.length;\ | |
5839 if (precisionSet) argLength = Math.min(argLength, precision);\ | |
5840 if (!flagLeftAlign) {\ | |
5841 while (argLength < width--) {\ | |
5842 ret.push(32);\ | |
5843 }\ | |
5844 }\ | |
5845 if (arg) {\ | |
5846 for (var i = 0; i < argLength; i++) {\ | |
5847 ret.push(HEAPU8[((arg++)|0)]);\ | |
5848 }\ | |
5849 } else {\ | |
5850 ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true));\ | |
5851 }\ | |
5852 if (flagLeftAlign) {\ | |
5853 while (argLength < width--) {\ | |
5854 ret.push(32);\ | |
5855 }\ | |
5856 }\ | |
5857 break;\ | |
5858 }\ | |
5859 case 'c': {\ | |
5860 // Character.\ | |
5861 if (flagLeftAlign) ret.push(getNextArg('i8'));\ | |
5862 while (--width > 0) {\ | |
5863 ret.push(32);\ | |
5864 }\ | |
5865 if (!flagLeftAlign) ret.push(getNextArg('i8'));\ | |
5866 break;\ | |
5867 }\ | |
5868 case 'n': {\ | |
5869 // Write the length written so far to the next parameter.\ | |
5870 var ptr = getNextArg('i32*');\ | |
5871 HEAP32[((ptr)>>2)]=ret.length\ | |
5872 break;\ | |
5873 }\ | |
5874 case '%': {\ | |
5875 // Literal percent sign.\ | |
5876 ret.push(curr);\ | |
5877 break;\ | |
5878 }\ | |
5879 default: {\ | |
5880 // Unknown specifiers remain untouched.\ | |
5881 for (var i = startTextIndex; i < textIndex + 2; i++) {\ | |
5882 ret.push(HEAP8[(i)]);\ | |
5883 }\ | |
5884 }\ | |
5885 }\ | |
5886 textIndex += 2;\ | |
5887 // TODO: Support a/A (hex float) and m (last error) specifiers.\ | |
5888 // TODO: Support %1${specifier} for arg selection.\ | |
5889 } else {\ | |
5890 ret.push(curr);\ | |
5891 textIndex += 1;\ | |
5892 }\ | |
5893 }\ | |
5894 return ret;\ | |
5895 }function _snprintf(s, n, format, varargs) {\ | |
5896 // int snprintf(char *restrict s, size_t n, const char *restrict format, ...);\ | |
5897 // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html\ | |
5898 var result = __formatString(format, varargs);\ | |
5899 var limit = (n === undefined) ? result.length\ | |
5900 : Math.min(result.length, Math.max(n - 1, 0));\ | |
5901 if (s < 0) {\ | |
5902 s = -s;\ | |
5903 var buf = _malloc(limit+1);\ | |
5904 HEAP32[((s)>>2)]=buf;\ | |
5905 s = buf;\ | |
5906 }\ | |
5907 for (var i = 0; i < limit; i++) {\ | |
5908 HEAP8[(((s)+(i))|0)]=result[i];\ | |
5909 }\ | |
5910 if (limit < n || (n === undefined)) HEAP8[(((s)+(i))|0)]=0;\ | |
5911 return result.length;\ | |
5912 }function _sprintf(s, format, varargs) {\ | |
5913 // int sprintf(char *restrict s, const char *restrict format, ...);\ | |
5914 // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html\ | |
5915 return _snprintf(s, undefined, format, varargs);\ | |
5916 }\ | |
5917 Module[\"_strncpy\"] = _strncpy;\ | |
5918 Module[\"_strcat\"] = _strcat;\ | |
5919 function _strcspn(pstr, pset) {\ | |
5920 var str = pstr, set, strcurr, setcurr;\ | |
5921 while (1) {\ | |
5922 strcurr = HEAP8[(str)];\ | |
5923 if (!strcurr) return str - pstr;\ | |
5924 set = pset;\ | |
5925 while (1) {\ | |
5926 setcurr = HEAP8[(set)];\ | |
5927 if (!setcurr || setcurr == strcurr) break;\ | |
5928 set++;\ | |
5929 }\ | |
5930 if (setcurr) return str - pstr;\ | |
5931 str++;\ | |
5932 }\ | |
5933 }\ | |
5934 function _strncat(pdest, psrc, num) {\ | |
5935 var len = _strlen(pdest);\ | |
5936 var i = 0;\ | |
5937 while(1) {\ | |
5938 HEAP8[((pdest+len+i)|0)]=HEAP8[((psrc+i)|0)];\ | |
5939 if (HEAP8[(((pdest)+(len+i))|0)] == 0) break;\ | |
5940 i ++;\ | |
5941 if (i == num) {\ | |
5942 HEAP8[(((pdest)+(len+i))|0)]=0\ | |
5943 break;\ | |
5944 }\ | |
5945 }\ | |
5946 return pdest;\ | |
5947 }\ | |
5948 var _llvm_memset_p0i8_i32=_memset;\ | |
5949 Module[\"_memcmp\"] = _memcmp;\ | |
5950 function _strncmp(px, py, n) {\ | |
5951 var i = 0;\ | |
5952 while (i < n) {\ | |
5953 var x = HEAPU8[(((px)+(i))|0)];\ | |
5954 var y = HEAPU8[(((py)+(i))|0)];\ | |
5955 if (x == y && x == 0) return 0;\ | |
5956 if (x == 0) return -1;\ | |
5957 if (y == 0) return 1;\ | |
5958 if (x == y) {\ | |
5959 i ++;\ | |
5960 continue;\ | |
5961 } else {\ | |
5962 return x > y ? 1 : -1;\ | |
5963 }\ | |
5964 }\ | |
5965 return 0;\ | |
5966 }function _strcmp(px, py) {\ | |
5967 return _strncmp(px, py, TOTAL_MEMORY);\ | |
5968 }var _strcoll=_strcmp;\ | |
5969 function _strstr(ptr1, ptr2) {\ | |
5970 var check = 0, start;\ | |
5971 do {\ | |
5972 if (!check) {\ | |
5973 start = ptr1;\ | |
5974 check = ptr2;\ | |
5975 }\ | |
5976 var curr1 = HEAP8[((ptr1++)|0)];\ | |
5977 var curr2 = HEAP8[((check++)|0)];\ | |
5978 if (curr2 == 0) return start;\ | |
5979 if (curr2 != curr1) {\ | |
5980 // rewind to one character after start, to find ez in eeez\ | |
5981 ptr1 = start + 1;\ | |
5982 check = 0;\ | |
5983 }\ | |
5984 } while (curr1);\ | |
5985 return 0;\ | |
5986 }\ | |
5987 var ___dirent_struct_layout={__size__:1040,d_ino:0,d_name:4,d_off:1028,d_reclen:1032,d_type:1036};function _open(path, oflag, varargs) {\ | |
5988 // int open(const char *path, int oflag, ...);\ | |
5989 // http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html\ | |
5990 var mode = HEAP32[((varargs)>>2)];\ | |
5991 path = Pointer_stringify(path);\ | |
5992 try {\ | |
5993 var stream = FS.open(path, oflag, mode);\ | |
5994 return stream.fd;\ | |
5995 } catch (e) {\ | |
5996 FS.handleFSError(e);\ | |
5997 return -1;\ | |
5998 }\ | |
5999 }function _fopen(filename, mode) {\ | |
6000 // FILE *fopen(const char *restrict filename, const char *restrict mode);\ | |
6001 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html\ | |
6002 var flags;\ | |
6003 mode = Pointer_stringify(mode);\ | |
6004 if (mode[0] == 'r') {\ | |
6005 if (mode.indexOf('+') != -1) {\ | |
6006 flags = 2;\ | |
6007 } else {\ | |
6008 flags = 0;\ | |
6009 }\ | |
6010 } else if (mode[0] == 'w') {\ | |
6011 if (mode.indexOf('+') != -1) {\ | |
6012 flags = 2;\ | |
6013 } else {\ | |
6014 flags = 1;\ | |
6015 }\ | |
6016 flags |= 512;\ | |
6017 flags |= 1024;\ | |
6018 } else if (mode[0] == 'a') {\ | |
6019 if (mode.indexOf('+') != -1) {\ | |
6020 flags = 2;\ | |
6021 } else {\ | |
6022 flags = 1;\ | |
6023 }\ | |
6024 flags |= 512;\ | |
6025 flags |= 8;\ | |
6026 } else {\ | |
6027 ___setErrNo(ERRNO_CODES.EINVAL);\ | |
6028 return 0;\ | |
6029 }\ | |
6030 var ret = _open(filename, flags, allocate([0x1FF, 0, 0, 0], 'i32', ALLOC_STACK)); // All creation permissions.\ | |
6031 return (ret == -1) ? 0 : ret;\ | |
6032 }\ | |
6033 function _recv(fd, buf, len, flags) {\ | |
6034 var sock = SOCKFS.getSocket(fd);\ | |
6035 if (!sock) {\ | |
6036 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6037 return -1;\ | |
6038 }\ | |
6039 // TODO honor flags\ | |
6040 return _read(fd, buf, len);\ | |
6041 }\ | |
6042 function _pread(fildes, buf, nbyte, offset) {\ | |
6043 // ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);\ | |
6044 // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html\ | |
6045 var stream = FS.getStream(fildes);\ | |
6046 if (!stream) {\ | |
6047 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6048 return -1;\ | |
6049 }\ | |
6050 try {\ | |
6051 var slab = HEAP8;\ | |
6052 return FS.read(stream, slab, buf, nbyte, offset);\ | |
6053 } catch (e) {\ | |
6054 FS.handleFSError(e);\ | |
6055 return -1;\ | |
6056 }\ | |
6057 }function _read(fildes, buf, nbyte) {\ | |
6058 // ssize_t read(int fildes, void *buf, size_t nbyte);\ | |
6059 // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html\ | |
6060 var stream = FS.getStream(fildes);\ | |
6061 if (!stream) {\ | |
6062 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6063 return -1;\ | |
6064 }\ | |
6065 try {\ | |
6066 var slab = HEAP8;\ | |
6067 return FS.read(stream, slab, buf, nbyte);\ | |
6068 } catch (e) {\ | |
6069 FS.handleFSError(e);\ | |
6070 return -1;\ | |
6071 }\ | |
6072 }function _fread(ptr, size, nitems, stream) {\ | |
6073 // size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);\ | |
6074 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html\ | |
6075 var bytesToRead = nitems * size;\ | |
6076 if (bytesToRead == 0) {\ | |
6077 return 0;\ | |
6078 }\ | |
6079 var bytesRead = 0;\ | |
6080 var streamObj = FS.getStream(stream);\ | |
6081 while (streamObj.ungotten.length && bytesToRead > 0) {\ | |
6082 HEAP8[((ptr++)|0)]=streamObj.ungotten.pop()\ | |
6083 bytesToRead--;\ | |
6084 bytesRead++;\ | |
6085 }\ | |
6086 var err = _read(stream, ptr, bytesToRead);\ | |
6087 if (err == -1) {\ | |
6088 if (streamObj) streamObj.error = true;\ | |
6089 return 0;\ | |
6090 }\ | |
6091 bytesRead += err;\ | |
6092 if (bytesRead < bytesToRead) streamObj.eof = true;\ | |
6093 return Math.floor(bytesRead / size);\ | |
6094 }function _fgetc(stream) {\ | |
6095 // int fgetc(FILE *stream);\ | |
6096 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgetc.html\ | |
6097 var streamObj = FS.getStream(stream);\ | |
6098 if (!streamObj) return -1;\ | |
6099 if (streamObj.eof || streamObj.error) return -1;\ | |
6100 var ret = _fread(_fgetc.ret, 1, 1, stream);\ | |
6101 if (ret == 0) {\ | |
6102 return -1;\ | |
6103 } else if (ret == -1) {\ | |
6104 streamObj.error = true;\ | |
6105 return -1;\ | |
6106 } else {\ | |
6107 return HEAPU8[((_fgetc.ret)|0)];\ | |
6108 }\ | |
6109 }var _getc=_fgetc;\ | |
6110 function _close(fildes) {\ | |
6111 // int close(int fildes);\ | |
6112 // http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html\ | |
6113 var stream = FS.getStream(fildes);\ | |
6114 if (!stream) {\ | |
6115 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6116 return -1;\ | |
6117 }\ | |
6118 try {\ | |
6119 FS.close(stream);\ | |
6120 return 0;\ | |
6121 } catch (e) {\ | |
6122 FS.handleFSError(e);\ | |
6123 return -1;\ | |
6124 }\ | |
6125 }\ | |
6126 function _fsync(fildes) {\ | |
6127 // int fsync(int fildes);\ | |
6128 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html\ | |
6129 var stream = FS.getStream(fildes);\ | |
6130 if (stream) {\ | |
6131 // We write directly to the file system, so there's nothing to do here.\ | |
6132 return 0;\ | |
6133 } else {\ | |
6134 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6135 return -1;\ | |
6136 }\ | |
6137 }function _fclose(stream) {\ | |
6138 // int fclose(FILE *stream);\ | |
6139 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html\ | |
6140 _fsync(stream);\ | |
6141 return _close(stream);\ | |
6142 }function _freopen(filename, mode, stream) {\ | |
6143 // FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *restrict stream);\ | |
6144 // http://pubs.opengroup.org/onlinepubs/000095399/functions/freopen.html\ | |
6145 if (!filename) {\ | |
6146 var streamObj = FS.getStream(stream);\ | |
6147 if (!streamObj) {\ | |
6148 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6149 return 0;\ | |
6150 }\ | |
6151 if (_freopen.buffer) _free(_freopen.buffer);\ | |
6152 filename = intArrayFromString(streamObj.path);\ | |
6153 filename = allocate(filename, 'i8', ALLOC_NORMAL);\ | |
6154 }\ | |
6155 _fclose(stream);\ | |
6156 return _fopen(filename, mode);\ | |
6157 }\ | |
6158 function _ungetc(c, stream) {\ | |
6159 // int ungetc(int c, FILE *stream);\ | |
6160 // http://pubs.opengroup.org/onlinepubs/000095399/functions/ungetc.html\ | |
6161 stream = FS.getStream(stream);\ | |
6162 if (!stream) {\ | |
6163 return -1;\ | |
6164 }\ | |
6165 if (c === -1) {\ | |
6166 // do nothing for EOF character\ | |
6167 return c;\ | |
6168 }\ | |
6169 c = unSign(c & 0xFF);\ | |
6170 stream.ungotten.push(c);\ | |
6171 stream.eof = false;\ | |
6172 return c;\ | |
6173 }\ | |
6174 function _ferror(stream) {\ | |
6175 // int ferror(FILE *stream);\ | |
6176 // http://pubs.opengroup.org/onlinepubs/000095399/functions/ferror.html\ | |
6177 stream = FS.getStream(stream);\ | |
6178 return Number(stream && stream.error);\ | |
6179 }\ | |
6180 function _fwrite(ptr, size, nitems, stream) {\ | |
6181 // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);\ | |
6182 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html\ | |
6183 var bytesToWrite = nitems * size;\ | |
6184 if (bytesToWrite == 0) return 0;\ | |
6185 var bytesWritten = _write(stream, ptr, bytesToWrite);\ | |
6186 if (bytesWritten == -1) {\ | |
6187 var streamObj = FS.getStream(stream);\ | |
6188 if (streamObj) streamObj.error = true;\ | |
6189 return 0;\ | |
6190 } else {\ | |
6191 return Math.floor(bytesWritten / size);\ | |
6192 }\ | |
6193 }function _fprintf(stream, format, varargs) {\ | |
6194 // int fprintf(FILE *restrict stream, const char *restrict format, ...);\ | |
6195 // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html\ | |
6196 var result = __formatString(format, varargs);\ | |
6197 var stack = Runtime.stackSave();\ | |
6198 var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream);\ | |
6199 Runtime.stackRestore(stack);\ | |
6200 return ret;\ | |
6201 }\ | |
6202 function _feof(stream) {\ | |
6203 // int feof(FILE *stream);\ | |
6204 // http://pubs.opengroup.org/onlinepubs/000095399/functions/feof.html\ | |
6205 stream = FS.getStream(stream);\ | |
6206 return Number(stream && stream.eof);\ | |
6207 }\ | |
6208 function _strerror_r(errnum, strerrbuf, buflen) {\ | |
6209 if (errnum in ERRNO_MESSAGES) {\ | |
6210 if (ERRNO_MESSAGES[errnum].length > buflen - 1) {\ | |
6211 return ___setErrNo(ERRNO_CODES.ERANGE);\ | |
6212 } else {\ | |
6213 var msg = ERRNO_MESSAGES[errnum];\ | |
6214 for (var i = 0; i < msg.length; i++) {\ | |
6215 HEAP8[(((strerrbuf)+(i))|0)]=msg.charCodeAt(i)\ | |
6216 }\ | |
6217 HEAP8[(((strerrbuf)+(i))|0)]=0\ | |
6218 return 0;\ | |
6219 }\ | |
6220 } else {\ | |
6221 return ___setErrNo(ERRNO_CODES.EINVAL);\ | |
6222 }\ | |
6223 }function _strerror(errnum) {\ | |
6224 if (!_strerror.buffer) _strerror.buffer = _malloc(256);\ | |
6225 _strerror_r(errnum, _strerror.buffer, 256);\ | |
6226 return _strerror.buffer;\ | |
6227 }\ | |
6228 function ___errno_location() {\ | |
6229 return ___errno_state;\ | |
6230 }var ___errno=___errno_location;\ | |
6231 function _fputs(s, stream) {\ | |
6232 // int fputs(const char *restrict s, FILE *restrict stream);\ | |
6233 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html\ | |
6234 return _write(stream, s, _strlen(s));\ | |
6235 }\ | |
6236 function _fgets(s, n, stream) {\ | |
6237 // char *fgets(char *restrict s, int n, FILE *restrict stream);\ | |
6238 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgets.html\ | |
6239 var streamObj = FS.getStream(stream);\ | |
6240 if (!streamObj) return 0;\ | |
6241 if (streamObj.error || streamObj.eof) return 0;\ | |
6242 var byte_;\ | |
6243 for (var i = 0; i < n - 1 && byte_ != 10; i++) {\ | |
6244 byte_ = _fgetc(stream);\ | |
6245 if (byte_ == -1) {\ | |
6246 if (streamObj.error || (streamObj.eof && i == 0)) return 0;\ | |
6247 else if (streamObj.eof) break;\ | |
6248 }\ | |
6249 HEAP8[(((s)+(i))|0)]=byte_\ | |
6250 }\ | |
6251 HEAP8[(((s)+(i))|0)]=0\ | |
6252 return s;\ | |
6253 }\ | |
6254 function _tmpnam(s, dir, prefix) {\ | |
6255 // char *tmpnam(char *s);\ | |
6256 // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpnam.html\ | |
6257 // NOTE: The dir and prefix arguments are for internal use only.\ | |
6258 var folder = FS.findObject(dir || '/tmp');\ | |
6259 if (!folder || !folder.isFolder) {\ | |
6260 dir = '/tmp';\ | |
6261 folder = FS.findObject(dir);\ | |
6262 if (!folder || !folder.isFolder) return 0;\ | |
6263 }\ | |
6264 var name = prefix || 'file';\ | |
6265 do {\ | |
6266 name += String.fromCharCode(65 + Math.floor(Math.random() * 25));\ | |
6267 } while (name in folder.contents);\ | |
6268 var result = dir + '/' + name;\ | |
6269 if (!_tmpnam.buffer) _tmpnam.buffer = _malloc(256);\ | |
6270 if (!s) s = _tmpnam.buffer;\ | |
6271 for (var i = 0; i < result.length; i++) {\ | |
6272 HEAP8[(((s)+(i))|0)]=result.charCodeAt(i);\ | |
6273 }\ | |
6274 HEAP8[(((s)+(i))|0)]=0;\ | |
6275 return s;\ | |
6276 }function _tmpfile() {\ | |
6277 // FILE *tmpfile(void);\ | |
6278 // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpfile.html\ | |
6279 // TODO: Delete the created file on closing.\ | |
6280 if (_tmpfile.mode) {\ | |
6281 _tmpfile.mode = allocate(intArrayFromString('w+'), 'i8', ALLOC_NORMAL);\ | |
6282 }\ | |
6283 return _fopen(_tmpnam(0), _tmpfile.mode);\ | |
6284 }\ | |
6285 function _clearerr(stream) {\ | |
6286 // void clearerr(FILE *stream);\ | |
6287 // http://pubs.opengroup.org/onlinepubs/000095399/functions/clearerr.html\ | |
6288 stream = FS.getStream(stream);\ | |
6289 if (!stream) {\ | |
6290 return;\ | |
6291 }\ | |
6292 stream.eof = false;\ | |
6293 stream.error = false;\ | |
6294 }\ | |
6295 function __isFloat(text) {\ | |
6296 return !!(/^[+-]?[0-9]*\\.?[0-9]+([eE][+-]?[0-9]+)?$/.exec(text));\ | |
6297 }function __scanString(format, get, unget, varargs) {\ | |
6298 if (!__scanString.whiteSpace) {\ | |
6299 __scanString.whiteSpace = {};\ | |
6300 __scanString.whiteSpace[32] = 1;\ | |
6301 __scanString.whiteSpace[9] = 1;\ | |
6302 __scanString.whiteSpace[10] = 1;\ | |
6303 __scanString.whiteSpace[11] = 1;\ | |
6304 __scanString.whiteSpace[12] = 1;\ | |
6305 __scanString.whiteSpace[13] = 1;\ | |
6306 __scanString.whiteSpace[' '] = 1;\ | |
6307 __scanString.whiteSpace['\\t'] = 1;\ | |
6308 __scanString.whiteSpace['\\n'] = 1;\ | |
6309 __scanString.whiteSpace['\\v'] = 1;\ | |
6310 __scanString.whiteSpace['\\f'] = 1;\ | |
6311 __scanString.whiteSpace['\\r'] = 1;\ | |
6312 }\ | |
6313 // Supports %x, %4x, %d.%d, %lld, %s, %f, %lf.\ | |
6314 // TODO: Support all format specifiers.\ | |
6315 format = Pointer_stringify(format);\ | |
6316 var soFar = 0;\ | |
6317 if (format.indexOf('%n') >= 0) {\ | |
6318 // need to track soFar\ | |
6319 var _get = get;\ | |
6320 get = function() {\ | |
6321 soFar++;\ | |
6322 return _get();\ | |
6323 }\ | |
6324 var _unget = unget;\ | |
6325 unget = function() {\ | |
6326 soFar--;\ | |
6327 return _unget();\ | |
6328 }\ | |
6329 }\ | |
6330 var formatIndex = 0;\ | |
6331 var argsi = 0;\ | |
6332 var fields = 0;\ | |
6333 var argIndex = 0;\ | |
6334 var next;\ | |
6335 mainLoop:\ | |
6336 for (var formatIndex = 0; formatIndex < format.length;) {\ | |
6337 if (format[formatIndex] === '%' && format[formatIndex+1] == 'n') {\ | |
6338 var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];\ | |
6339 argIndex += Runtime.getAlignSize('void*', null, true);\ | |
6340 HEAP32[((argPtr)>>2)]=soFar;\ | |
6341 formatIndex += 2;\ | |
6342 continue;\ | |
6343 }\ | |
6344 if (format[formatIndex] === '%') {\ | |
6345 var nextC = format.indexOf('c', formatIndex+1);\ | |
6346 if (nextC > 0) {\ | |
6347 var maxx = 1;\ | |
6348 if (nextC > formatIndex+1) {\ | |
6349 var sub = format.substring(formatIndex+1, nextC)\ | |
6350 maxx = parseInt(sub);\ | |
6351 if (maxx != sub) maxx = 0;\ | |
6352 }\ | |
6353 if (maxx) {\ | |
6354 var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];\ | |
6355 argIndex += Runtime.getAlignSize('void*', null, true);\ | |
6356 fields++;\ | |
6357 for (var i = 0; i < maxx; i++) {\ | |
6358 next = get();\ | |
6359 HEAP8[((argPtr++)|0)]=next;\ | |
6360 }\ | |
6361 formatIndex += nextC - formatIndex + 1;\ | |
6362 continue;\ | |
6363 }\ | |
6364 }\ | |
6365 }\ | |
6366 // remove whitespace\ | |
6367 while (1) {\ | |
6368 next = get();\ | |
6369 if (next == 0) return fields;\ | |
6370 if (!(next in __scanString.whiteSpace)) break;\ | |
6371 }\ | |
6372 unget();\ | |
6373 if (format[formatIndex] === '%') {\ | |
6374 formatIndex++;\ | |
6375 var suppressAssignment = false;\ | |
6376 if (format[formatIndex] == '*') {\ | |
6377 suppressAssignment = true;\ | |
6378 formatIndex++;\ | |
6379 }\ | |
6380 var maxSpecifierStart = formatIndex;\ | |
6381 while (format[formatIndex].charCodeAt(0) >= 48 &&\ | |
6382 format[formatIndex].charCodeAt(0) <= 57) {\ | |
6383 formatIndex++;\ | |
6384 }\ | |
6385 var max_;\ | |
6386 if (formatIndex != maxSpecifierStart) {\ | |
6387 max_ = parseInt(format.slice(maxSpecifierStart, formatIndex), 10);\ | |
6388 }\ | |
6389 var long_ = false;\ | |
6390 var half = false;\ | |
6391 var longLong = false;\ | |
6392 if (format[formatIndex] == 'l') {\ | |
6393 long_ = true;\ | |
6394 formatIndex++;\ | |
6395 if (format[formatIndex] == 'l') {\ | |
6396 longLong = true;\ | |
6397 formatIndex++;\ | |
6398 }\ | |
6399 } else if (format[formatIndex] == 'h') {\ | |
6400 half = true;\ | |
6401 formatIndex++;\ | |
6402 }\ | |
6403 var type = format[formatIndex];\ | |
6404 formatIndex++;\ | |
6405 var curr = 0;\ | |
6406 var buffer = [];\ | |
6407 // Read characters according to the format. floats are trickier, they may be in an unfloat state in the middle, then be a valid float later\ | |
6408 if (type == 'f' || type == 'e' || type == 'g' ||\ | |
6409 type == 'F' || type == 'E' || type == 'G') {\ | |
6410 var last = 0;\ | |
6411 next = get();\ | |
6412 while (next > 0) {\ | |
6413 buffer.push(String.fromCharCode(next));\ | |
6414 if (__isFloat(buffer.join(''))) {\ | |
6415 last = buffer.length;\ | |
6416 }\ | |
6417 next = get();\ | |
6418 }\ | |
6419 for (var i = 0; i < buffer.length - last + 1; i++) {\ | |
6420 unget();\ | |
6421 }\ | |
6422 buffer.length = last;\ | |
6423 } else {\ | |
6424 next = get();\ | |
6425 var first = true;\ | |
6426 while ((curr < max_ || isNaN(max_)) && next > 0) {\ | |
6427 if (!(next in __scanString.whiteSpace) && // stop on whitespace\ | |
6428 (type == 's' ||\ | |
6429 ((type === 'd' || type == 'u' || type == 'i') && ((next >= 48 && next <= 57) ||\ | |
6430 (first && next == 45))) ||\ | |
6431 ((type === 'x' || type === 'X') && (next >= 48 && next <= 57 ||\ | |
6432 next >= 97 && next <= 102 ||\ | |
6433 next >= 65 && next <= 70))) &&\ | |
6434 (formatIndex >= format.length || next !== format[formatIndex].charCodeAt(0))) { // Stop when we read something that is coming up\ | |
6435 buffer.push(String.fromCharCode(next));\ | |
6436 next = get();\ | |
6437 curr++;\ | |
6438 first = false;\ | |
6439 } else {\ | |
6440 break;\ | |
6441 }\ | |
6442 }\ | |
6443 unget();\ | |
6444 }\ | |
6445 if (buffer.length === 0) return 0; // Failure.\ | |
6446 if (suppressAssignment) continue;\ | |
6447 var text = buffer.join('');\ | |
6448 var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];\ | |
6449 argIndex += Runtime.getAlignSize('void*', null, true);\ | |
6450 switch (type) {\ | |
6451 case 'd': case 'u': case 'i':\ | |
6452 if (half) {\ | |
6453 HEAP16[((argPtr)>>1)]=parseInt(text, 10);\ | |
6454 } else if (longLong) {\ | |
6455 (tempI64 = [parseInt(text, 10)>>>0,(tempDouble=parseInt(text, 10),(+(Math.abs(tempDouble))) >= (+(1)) ? (tempDouble > (+(0)) ? ((Math.min((+(Math.floor((tempDouble)/(+(4294967296))))), (+(4294967295))))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+(4294967296)))))))>>>0) : 0)],HEAP32[((argPtr)>>2)]=tempI64[0],HEAP32[(((argPtr)+(4))>>2)]=tempI64[1]);\ | |
6456 } else {\ | |
6457 HEAP32[((argPtr)>>2)]=parseInt(text, 10);\ | |
6458 }\ | |
6459 break;\ | |
6460 case 'X':\ | |
6461 case 'x':\ | |
6462 HEAP32[((argPtr)>>2)]=parseInt(text, 16)\ | |
6463 break;\ | |
6464 case 'F':\ | |
6465 case 'f':\ | |
6466 case 'E':\ | |
6467 case 'e':\ | |
6468 case 'G':\ | |
6469 case 'g':\ | |
6470 case 'E':\ | |
6471 // fallthrough intended\ | |
6472 if (long_) {\ | |
6473 HEAPF64[((argPtr)>>3)]=parseFloat(text)\ | |
6474 } else {\ | |
6475 HEAPF32[((argPtr)>>2)]=parseFloat(text)\ | |
6476 }\ | |
6477 break;\ | |
6478 case 's':\ | |
6479 var array = intArrayFromString(text);\ | |
6480 for (var j = 0; j < array.length; j++) {\ | |
6481 HEAP8[(((argPtr)+(j))|0)]=array[j]\ | |
6482 }\ | |
6483 break;\ | |
6484 }\ | |
6485 fields++;\ | |
6486 } else if (format[formatIndex] in __scanString.whiteSpace) {\ | |
6487 next = get();\ | |
6488 while (next in __scanString.whiteSpace) {\ | |
6489 if (next <= 0) break mainLoop; // End of input.\ | |
6490 next = get();\ | |
6491 }\ | |
6492 unget(next);\ | |
6493 formatIndex++;\ | |
6494 } else {\ | |
6495 // Not a specifier.\ | |
6496 next = get();\ | |
6497 if (format[formatIndex].charCodeAt(0) !== next) {\ | |
6498 unget(next);\ | |
6499 break mainLoop;\ | |
6500 }\ | |
6501 formatIndex++;\ | |
6502 }\ | |
6503 }\ | |
6504 return fields;\ | |
6505 }function _fscanf(stream, format, varargs) {\ | |
6506 // int fscanf(FILE *restrict stream, const char *restrict format, ... );\ | |
6507 // http://pubs.opengroup.org/onlinepubs/000095399/functions/scanf.html\ | |
6508 var streamObj = FS.getStream(stream);\ | |
6509 if (!streamObj) {\ | |
6510 return -1;\ | |
6511 }\ | |
6512 var buffer = [];\ | |
6513 var get = function() {\ | |
6514 var c = _fgetc(stream);\ | |
6515 buffer.push(c);\ | |
6516 return c;\ | |
6517 };\ | |
6518 var unget = function() {\ | |
6519 _ungetc(buffer.pop(), stream);\ | |
6520 };\ | |
6521 return __scanString(format, get, unget, varargs);\ | |
6522 }\ | |
6523 function _setvbuf(stream, buf, type, size) {\ | |
6524 // int setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size);\ | |
6525 // http://pubs.opengroup.org/onlinepubs/000095399/functions/setvbuf.html\ | |
6526 // TODO: Implement custom buffering.\ | |
6527 return 0;\ | |
6528 }\ | |
6529 function _lseek(fildes, offset, whence) {\ | |
6530 // off_t lseek(int fildes, off_t offset, int whence);\ | |
6531 // http://pubs.opengroup.org/onlinepubs/000095399/functions/lseek.html\ | |
6532 var stream = FS.getStream(fildes);\ | |
6533 if (!stream) {\ | |
6534 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6535 return -1;\ | |
6536 }\ | |
6537 try {\ | |
6538 return FS.llseek(stream, offset, whence);\ | |
6539 } catch (e) {\ | |
6540 FS.handleFSError(e);\ | |
6541 return -1;\ | |
6542 }\ | |
6543 }function _fseek(stream, offset, whence) {\ | |
6544 // int fseek(FILE *stream, long offset, int whence);\ | |
6545 // http://pubs.opengroup.org/onlinepubs/000095399/functions/fseek.html\ | |
6546 var ret = _lseek(stream, offset, whence);\ | |
6547 if (ret == -1) {\ | |
6548 return -1;\ | |
6549 }\ | |
6550 stream = FS.getStream(stream);\ | |
6551 stream.eof = false;\ | |
6552 return 0;\ | |
6553 }\ | |
6554 function _ftell(stream) {\ | |
6555 // long ftell(FILE *stream);\ | |
6556 // http://pubs.opengroup.org/onlinepubs/000095399/functions/ftell.html\ | |
6557 stream = FS.getStream(stream);\ | |
6558 if (!stream) {\ | |
6559 ___setErrNo(ERRNO_CODES.EBADF);\ | |
6560 return -1;\ | |
6561 }\ | |
6562 if (FS.isChrdev(stream.node.mode)) {\ | |
6563 ___setErrNo(ERRNO_CODES.ESPIPE);\ | |
6564 return -1;\ | |
6565 } else {\ | |
6566 return stream.position;\ | |
6567 }\ | |
6568 }\ | |
6569 var _tan=Math.tan;\ | |
6570 function _sinh(x) {\ | |
6571 var p = Math.pow(Math.E, x);\ | |
6572 return (p - (1 / p)) / 2;\ | |
6573 }\ | |
6574 function _cosh(x) {\ | |
6575 var p = Math.pow(Math.E, x);\ | |
6576 return (p + (1 / p)) / 2;\ | |
6577 }function _tanh(x) {\ | |
6578 return _sinh(x) / _cosh(x);\ | |
6579 }\ | |
6580 var _sqrt=Math.sqrt;\ | |
6581 var _sin=Math.sin;\ | |
6582 function _srand(seed) {}\ | |
6583 function _rand() {\ | |
6584 return Math.floor(Math.random()*0x80000000);\ | |
6585 }\ | |
6586 function _modf(x, intpart) {\ | |
6587 HEAPF64[((intpart)>>3)]=Math.floor(x)\ | |
6588 return x - HEAPF64[((intpart)>>3)];\ | |
6589 }\ | |
6590 var _log=Math.log;\ | |
6591 function _log10(x) {\ | |
6592 return Math.log(x) / Math.LN10;\ | |
6593 }\ | |
6594 function _ldexp(x, exp_) {\ | |
6595 return x * Math.pow(2, exp_);\ | |
6596 }\ | |
6597 function _frexp(x, exp_addr) {\ | |
6598 var sig = 0, exp_ = 0;\ | |
6599 if (x !== 0) {\ | |
6600 var sign = 1;\ | |
6601 if (x < 0) {\ | |
6602 x = -x;\ | |
6603 sign = -1;\ | |
6604 }\ | |
6605 var raw_exp = Math.log(x)/Math.log(2);\ | |
6606 exp_ = Math.ceil(raw_exp);\ | |
6607 if (exp_ === raw_exp) exp_ += 1;\ | |
6608 sig = sign*x/Math.pow(2, exp_);\ | |
6609 }\ | |
6610 HEAP32[((exp_addr)>>2)]=exp_\ | |
6611 return sig;\ | |
6612 }\ | |
6613 function _fmod(x, y) {\ | |
6614 return x % y;\ | |
6615 }\ | |
6616 var _exp=Math.exp;\ | |
6617 var _cos=Math.cos;\ | |
6618 var _ceil=Math.ceil;\ | |
6619 var _atan=Math.atan;\ | |
6620 var _atan2=Math.atan2;\ | |
6621 var _asin=Math.asin;\ | |
6622 var _acos=Math.acos;\ | |
6623 var _fabs=Math.abs;\ | |
6624 function _time(ptr) {\ | |
6625 var ret = Math.floor(Date.now()/1000);\ | |
6626 if (ptr) {\ | |
6627 HEAP32[((ptr)>>2)]=ret\ | |
6628 }\ | |
6629 return ret;\ | |
6630 }\ | |
6631 var ___tm_struct_layout={__size__:44,tm_sec:0,tm_min:4,tm_hour:8,tm_mday:12,tm_mon:16,tm_year:20,tm_wday:24,tm_yday:28,tm_isdst:32,tm_gmtoff:36,tm_zone:40};\ | |
6632 var __tzname=allocate(8, \"i32*\", ALLOC_STATIC);\ | |
6633 var __daylight=allocate(1, \"i32*\", ALLOC_STATIC);\ | |
6634 var __timezone=allocate(1, \"i32*\", ALLOC_STATIC);function _tzset() {\ | |
6635 // TODO: Use (malleable) environment variables instead of system settings.\ | |
6636 if (_tzset.called) return;\ | |
6637 _tzset.called = true;\ | |
6638 HEAP32[((__timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60\ | |
6639 var winter = new Date(2000, 0, 1);\ | |
6640 var summer = new Date(2000, 6, 1);\ | |
6641 HEAP32[((__daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset())\ | |
6642 var winterName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | winter.toString().match(/\\(([A-Z]+)\\)/)[1];\ | |
6643 var summerName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | summer.toString().match(/\\(([A-Z]+)\\)/)[1];\ | |
6644 var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);\ | |
6645 var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);\ | |
6646 HEAP32[((__tzname)>>2)]=winterNamePtr\ | |
6647 HEAP32[(((__tzname)+(4))>>2)]=summerNamePtr\ | |
6648 }function _mktime(tmPtr) {\ | |
6649 _tzset();\ | |
6650 var offsets = ___tm_struct_layout;\ | |
6651 var year = HEAP32[(((tmPtr)+(offsets.tm_year))>>2)];\ | |
6652 var timestamp = new Date(year >= 1900 ? year : year + 1900,\ | |
6653 HEAP32[(((tmPtr)+(offsets.tm_mon))>>2)],\ | |
6654 HEAP32[(((tmPtr)+(offsets.tm_mday))>>2)],\ | |
6655 HEAP32[(((tmPtr)+(offsets.tm_hour))>>2)],\ | |
6656 HEAP32[(((tmPtr)+(offsets.tm_min))>>2)],\ | |
6657 HEAP32[(((tmPtr)+(offsets.tm_sec))>>2)],\ | |
6658 0).getTime() / 1000;\ | |
6659 HEAP32[(((tmPtr)+(offsets.tm_wday))>>2)]=new Date(timestamp).getDay()\ | |
6660 var yday = Math.round((timestamp - (new Date(year, 0, 1)).getTime()) / (1000 * 60 * 60 * 24));\ | |
6661 HEAP32[(((tmPtr)+(offsets.tm_yday))>>2)]=yday\ | |
6662 return timestamp;\ | |
6663 }\ | |
6664 function _setlocale(category, locale) {\ | |
6665 if (!_setlocale.ret) _setlocale.ret = allocate([0], 'i8', ALLOC_NORMAL);\ | |
6666 return _setlocale.ret;\ | |
6667 }\ | |
6668 function _rename(old_path, new_path) {\ | |
6669 // int rename(const char *old, const char *new);\ | |
6670 // http://pubs.opengroup.org/onlinepubs/000095399/functions/rename.html\ | |
6671 old_path = Pointer_stringify(old_path);\ | |
6672 new_path = Pointer_stringify(new_path);\ | |
6673 try {\ | |
6674 FS.rename(old_path, new_path);\ | |
6675 return 0;\ | |
6676 } catch (e) {\ | |
6677 FS.handleFSError(e);\ | |
6678 return -1;\ | |
6679 }\ | |
6680 }\ | |
6681 function _unlink(path) {\ | |
6682 // int unlink(const char *path);\ | |
6683 // http://pubs.opengroup.org/onlinepubs/000095399/functions/unlink.html\ | |
6684 path = Pointer_stringify(path);\ | |
6685 try {\ | |
6686 FS.unlink(path);\ | |
6687 return 0;\ | |
6688 } catch (e) {\ | |
6689 FS.handleFSError(e);\ | |
6690 return -1;\ | |
6691 }\ | |
6692 }\ | |
6693 function _rmdir(path) {\ | |
6694 // int rmdir(const char *path);\ | |
6695 // http://pubs.opengroup.org/onlinepubs/000095399/functions/rmdir.html\ | |
6696 path = Pointer_stringify(path);\ | |
6697 try {\ | |
6698 FS.rmdir(path);\ | |
6699 return 0;\ | |
6700 } catch (e) {\ | |
6701 FS.handleFSError(e);\ | |
6702 return -1;\ | |
6703 }\ | |
6704 }function _remove(path) {\ | |
6705 // int remove(const char *path);\ | |
6706 // http://pubs.opengroup.org/onlinepubs/000095399/functions/remove.html\ | |
6707 var ret = _unlink(path);\ | |
6708 if (ret == -1) ret = _rmdir(path);\ | |
6709 return ret;\ | |
6710 }\ | |
6711 var _environ=allocate(1, \"i32*\", ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env) {\ | |
6712 // WARNING: Arbitrary limit!\ | |
6713 var MAX_ENV_VALUES = 64;\ | |
6714 var TOTAL_ENV_SIZE = 1024;\ | |
6715 // Statically allocate memory for the environment.\ | |
6716 var poolPtr;\ | |
6717 var envPtr;\ | |
6718 if (!___buildEnvironment.called) {\ | |
6719 ___buildEnvironment.called = true;\ | |
6720 // Set default values. Use string keys for Closure Compiler compatibility.\ | |
6721 ENV['USER'] = 'root';\ | |
6722 ENV['PATH'] = '/';\ | |
6723 ENV['PWD'] = '/';\ | |
6724 ENV['HOME'] = '/home/emscripten';\ | |
6725 ENV['LANG'] = 'en_US.UTF-8';\ | |
6726 ENV['_'] = './this.program';\ | |
6727 // Allocate memory.\ | |
6728 poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC);\ | |
6729 envPtr = allocate(MAX_ENV_VALUES * 4,\ | |
6730 'i8*', ALLOC_STATIC);\ | |
6731 HEAP32[((envPtr)>>2)]=poolPtr\ | |
6732 HEAP32[((_environ)>>2)]=envPtr;\ | |
6733 } else {\ | |
6734 envPtr = HEAP32[((_environ)>>2)];\ | |
6735 poolPtr = HEAP32[((envPtr)>>2)];\ | |
6736 }\ | |
6737 // Collect key=value lines.\ | |
6738 var strings = [];\ | |
6739 var totalSize = 0;\ | |
6740 for (var key in env) {\ | |
6741 if (typeof env[key] === 'string') {\ | |
6742 var line = key + '=' + env[key];\ | |
6743 strings.push(line);\ | |
6744 totalSize += line.length;\ | |
6745 }\ | |
6746 }\ | |
6747 if (totalSize > TOTAL_ENV_SIZE) {\ | |
6748 throw new Error('Environment size exceeded TOTAL_ENV_SIZE!');\ | |
6749 }\ | |
6750 // Make new.\ | |
6751 var ptrSize = 4;\ | |
6752 for (var i = 0; i < strings.length; i++) {\ | |
6753 var line = strings[i];\ | |
6754 for (var j = 0; j < line.length; j++) {\ | |
6755 HEAP8[(((poolPtr)+(j))|0)]=line.charCodeAt(j);\ | |
6756 }\ | |
6757 HEAP8[(((poolPtr)+(j))|0)]=0;\ | |
6758 HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;\ | |
6759 poolPtr += line.length + 1;\ | |
6760 }\ | |
6761 HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;\ | |
6762 }var ENV={};function _getenv(name) {\ | |
6763 // char *getenv(const char *name);\ | |
6764 // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html\ | |
6765 if (name === 0) return 0;\ | |
6766 name = Pointer_stringify(name);\ | |
6767 if (!ENV.hasOwnProperty(name)) return 0;\ | |
6768 if (_getenv.ret) _free(_getenv.ret);\ | |
6769 _getenv.ret = allocate(intArrayFromString(ENV[name]), 'i8', ALLOC_NORMAL);\ | |
6770 return _getenv.ret;\ | |
6771 }\ | |
6772 function _system(command) {\ | |
6773 // int system(const char *command);\ | |
6774 // http://pubs.opengroup.org/onlinepubs/000095399/functions/system.html\ | |
6775 // Can't call external programs.\ | |
6776 ___setErrNo(ERRNO_CODES.EAGAIN);\ | |
6777 return -1;\ | |
6778 }\ | |
6779 function _difftime(time1, time0) {\ | |
6780 return time1 - time0;\ | |
6781 }\ | |
6782 var ___tm_current=allocate(4*26, \"i8\", ALLOC_STATIC);\ | |
6783 var ___tm_timezone=allocate(intArrayFromString(\"GMT\"), \"i8\", ALLOC_STATIC);function _gmtime_r(time, tmPtr) {\ | |
6784 var date = new Date(HEAP32[((time)>>2)]*1000);\ | |
6785 var offsets = ___tm_struct_layout;\ | |
6786 HEAP32[(((tmPtr)+(offsets.tm_sec))>>2)]=date.getUTCSeconds()\ | |
6787 HEAP32[(((tmPtr)+(offsets.tm_min))>>2)]=date.getUTCMinutes()\ | |
6788 HEAP32[(((tmPtr)+(offsets.tm_hour))>>2)]=date.getUTCHours()\ | |
6789 HEAP32[(((tmPtr)+(offsets.tm_mday))>>2)]=date.getUTCDate()\ | |
6790 HEAP32[(((tmPtr)+(offsets.tm_mon))>>2)]=date.getUTCMonth()\ | |
6791 HEAP32[(((tmPtr)+(offsets.tm_year))>>2)]=date.getUTCFullYear()-1900\ | |
6792 HEAP32[(((tmPtr)+(offsets.tm_wday))>>2)]=date.getUTCDay()\ | |
6793 HEAP32[(((tmPtr)+(offsets.tm_gmtoff))>>2)]=0\ | |
6794 HEAP32[(((tmPtr)+(offsets.tm_isdst))>>2)]=0\ | |
6795 var start = new Date(date); // define date using UTC, start from Jan 01 00:00:00 UTC\ | |
6796 start.setUTCDate(1);\ | |
6797 start.setUTCMonth(0);\ | |
6798 start.setUTCHours(0);\ | |
6799 start.setUTCMinutes(0);\ | |
6800 start.setUTCSeconds(0);\ | |
6801 start.setUTCMilliseconds(0);\ | |
6802 var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24));\ | |
6803 HEAP32[(((tmPtr)+(offsets.tm_yday))>>2)]=yday\ | |
6804 HEAP32[(((tmPtr)+(offsets.tm_zone))>>2)]=___tm_timezone\ | |
6805 return tmPtr;\ | |
6806 }function _gmtime(time) {\ | |
6807 return _gmtime_r(time, ___tm_current);\ | |
6808 }\ | |
6809 function _localtime_r(time, tmPtr) {\ | |
6810 _tzset();\ | |
6811 var offsets = ___tm_struct_layout;\ | |
6812 var date = new Date(HEAP32[((time)>>2)]*1000);\ | |
6813 HEAP32[(((tmPtr)+(offsets.tm_sec))>>2)]=date.getSeconds()\ | |
6814 HEAP32[(((tmPtr)+(offsets.tm_min))>>2)]=date.getMinutes()\ | |
6815 HEAP32[(((tmPtr)+(offsets.tm_hour))>>2)]=date.getHours()\ | |
6816 HEAP32[(((tmPtr)+(offsets.tm_mday))>>2)]=date.getDate()\ | |
6817 HEAP32[(((tmPtr)+(offsets.tm_mon))>>2)]=date.getMonth()\ | |
6818 HEAP32[(((tmPtr)+(offsets.tm_year))>>2)]=date.getFullYear()-1900\ | |
6819 HEAP32[(((tmPtr)+(offsets.tm_wday))>>2)]=date.getDay()\ | |
6820 var start = new Date(date.getFullYear(), 0, 1);\ | |
6821 var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24));\ | |
6822 HEAP32[(((tmPtr)+(offsets.tm_yday))>>2)]=yday\ | |
6823 HEAP32[(((tmPtr)+(offsets.tm_gmtoff))>>2)]=start.getTimezoneOffset() * 60\ | |
6824 var dst = Number(start.getTimezoneOffset() != date.getTimezoneOffset());\ | |
6825 HEAP32[(((tmPtr)+(offsets.tm_isdst))>>2)]=dst\ | |
6826 HEAP32[(((tmPtr)+(offsets.tm_zone))>>2)]=___tm_timezone\ | |
6827 return tmPtr;\ | |
6828 }function _localtime(time) {\ | |
6829 return _localtime_r(time, ___tm_current);\ | |
6830 }\ | |
6831 function __isLeapYear(year) {\ | |
6832 return year%4 === 0 && (year%100 !== 0 || year%400 === 0);\ | |
6833 }\ | |
6834 function __arraySum(array, index) {\ | |
6835 var sum = 0;\ | |
6836 for (var i = 0; i <= index; sum += array[i++]);\ | |
6837 return sum;\ | |
6838 }\ | |
6839 var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];\ | |
6840 var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date, days) {\ | |
6841 var newDate = new Date(date.getTime());\ | |
6842 while(days > 0) {\ | |
6843 var leap = __isLeapYear(newDate.getFullYear());\ | |
6844 var currentMonth = newDate.getMonth();\ | |
6845 var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\ | |
6846 if (days > daysInCurrentMonth-newDate.getDate()) {\ | |
6847 // we spill over to next month\ | |
6848 days -= (daysInCurrentMonth-newDate.getDate()+1);\ | |
6849 newDate.setDate(1);\ | |
6850 if (currentMonth < 11) {\ | |
6851 newDate.setMonth(currentMonth+1)\ | |
6852 } else {\ | |
6853 newDate.setMonth(0);\ | |
6854 newDate.setFullYear(newDate.getFullYear()+1);\ | |
6855 }\ | |
6856 } else {\ | |
6857 // we stay in current month \ | |
6858 newDate.setDate(newDate.getDate()+days);\ | |
6859 return newDate;\ | |
6860 }\ | |
6861 }\ | |
6862 return newDate;\ | |
6863 }function _strftime(s, maxsize, format, tm) {\ | |
6864 // size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr);\ | |
6865 // http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html\ | |
6866 var date = {\ | |
6867 tm_sec: HEAP32[(((tm)+(___tm_struct_layout.tm_sec))>>2)],\ | |
6868 tm_min: HEAP32[(((tm)+(___tm_struct_layout.tm_min))>>2)],\ | |
6869 tm_hour: HEAP32[(((tm)+(___tm_struct_layout.tm_hour))>>2)],\ | |
6870 tm_mday: HEAP32[(((tm)+(___tm_struct_layout.tm_mday))>>2)],\ | |
6871 tm_mon: HEAP32[(((tm)+(___tm_struct_layout.tm_mon))>>2)],\ | |
6872 tm_year: HEAP32[(((tm)+(___tm_struct_layout.tm_year))>>2)],\ | |
6873 tm_wday: HEAP32[(((tm)+(___tm_struct_layout.tm_wday))>>2)],\ | |
6874 tm_yday: HEAP32[(((tm)+(___tm_struct_layout.tm_yday))>>2)],\ | |
6875 tm_isdst: HEAP32[(((tm)+(___tm_struct_layout.tm_isdst))>>2)]\ | |
6876 };\ | |
6877 var pattern = Pointer_stringify(format);\ | |
6878 // expand format\ | |
6879 var EXPANSION_RULES_1 = {\ | |
6880 '%c': '%a %b %d %H:%M:%S %Y', // Replaced by the locale's appropriate date and time representation - e.g., Mon Aug 3 14:02:01 2013\ | |
6881 '%D': '%m/%d/%y', // Equivalent to %m / %d / %y\ | |
6882 '%F': '%Y-%m-%d', // Equivalent to %Y - %m - %d\ | |
6883 '%h': '%b', // Equivalent to %b\ | |
6884 '%r': '%I:%M:%S %p', // Replaced by the time in a.m. and p.m. notation\ | |
6885 '%R': '%H:%M', // Replaced by the time in 24-hour notation\ | |
6886 '%T': '%H:%M:%S', // Replaced by the time\ | |
6887 '%x': '%m/%d/%y', // Replaced by the locale's appropriate date representation\ | |
6888 '%X': '%H:%M:%S', // Replaced by the locale's appropriate date representation\ | |
6889 };\ | |
6890 for (var rule in EXPANSION_RULES_1) {\ | |
6891 pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_1[rule]);\ | |
6892 }\ | |
6893 var WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\ | |
6894 var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\ | |
6895 var leadingSomething = function(value, digits, character) {\ | |
6896 var str = typeof value === 'number' ? value.toString() : (value || '');\ | |
6897 while (str.length < digits) {\ | |
6898 str = character[0]+str;\ | |
6899 }\ | |
6900 return str;\ | |
6901 };\ | |
6902 var leadingNulls = function(value, digits) {\ | |
6903 return leadingSomething(value, digits, '0');\ | |
6904 };\ | |
6905 var compareByDay = function(date1, date2) {\ | |
6906 var sgn = function(value) {\ | |
6907 return value < 0 ? -1 : (value > 0 ? 1 : 0);\ | |
6908 };\ | |
6909 var compare;\ | |
6910 if ((compare = sgn(date1.getFullYear()-date2.getFullYear())) === 0) {\ | |
6911 if ((compare = sgn(date1.getMonth()-date2.getMonth())) === 0) {\ | |
6912 compare = sgn(date1.getDate()-date2.getDate());\ | |
6913 }\ | |
6914 }\ | |
6915 return compare;\ | |
6916 };\ | |
6917 var getFirstWeekStartDate = function(janFourth) {\ | |
6918 switch (janFourth.getDay()) {\ | |
6919 case 0: // Sunday\ | |
6920 return new Date(janFourth.getFullYear()-1, 11, 29);\ | |
6921 case 1: // Monday\ | |
6922 return janFourth;\ | |
6923 case 2: // Tuesday\ | |
6924 return new Date(janFourth.getFullYear(), 0, 3);\ | |
6925 case 3: // Wednesday\ | |
6926 return new Date(janFourth.getFullYear(), 0, 2);\ | |
6927 case 4: // Thursday\ | |
6928 return new Date(janFourth.getFullYear(), 0, 1);\ | |
6929 case 5: // Friday\ | |
6930 return new Date(janFourth.getFullYear()-1, 11, 31);\ | |
6931 case 6: // Saturday\ | |
6932 return new Date(janFourth.getFullYear()-1, 11, 30);\ | |
6933 }\ | |
6934 };\ | |
6935 var getWeekBasedYear = function(date) {\ | |
6936 var thisDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday);\ | |
6937 var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\ | |
6938 var janFourthNextYear = new Date(thisDate.getFullYear()+1, 0, 4);\ | |
6939 var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\ | |
6940 var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\ | |
6941 if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\ | |
6942 // this date is after the start of the first week of this year\ | |
6943 if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\ | |
6944 return thisDate.getFullYear()+1;\ | |
6945 } else {\ | |
6946 return thisDate.getFullYear();\ | |
6947 }\ | |
6948 } else { \ | |
6949 return thisDate.getFullYear()-1;\ | |
6950 }\ | |
6951 };\ | |
6952 var EXPANSION_RULES_2 = {\ | |
6953 '%a': function(date) {\ | |
6954 return WEEKDAYS[date.tm_wday].substring(0,3);\ | |
6955 },\ | |
6956 '%A': function(date) {\ | |
6957 return WEEKDAYS[date.tm_wday];\ | |
6958 },\ | |
6959 '%b': function(date) {\ | |
6960 return MONTHS[date.tm_mon].substring(0,3);\ | |
6961 },\ | |
6962 '%B': function(date) {\ | |
6963 return MONTHS[date.tm_mon];\ | |
6964 },\ | |
6965 '%C': function(date) {\ | |
6966 var year = date.tm_year+1900;\ | |
6967 return leadingNulls(Math.floor(year/100),2);\ | |
6968 },\ | |
6969 '%d': function(date) {\ | |
6970 return leadingNulls(date.tm_mday, 2);\ | |
6971 },\ | |
6972 '%e': function(date) {\ | |
6973 return leadingSomething(date.tm_mday, 2, ' ');\ | |
6974 },\ | |
6975 '%g': function(date) {\ | |
6976 // %g, %G, and %V give values according to the ISO 8601:2000 standard week-based year. \ | |
6977 // In this system, weeks begin on a Monday and week 1 of the year is the week that includes \ | |
6978 // January 4th, which is also the week that includes the first Thursday of the year, and \ | |
6979 // is also the first week that contains at least four days in the year. \ | |
6980 // If the first Monday of January is the 2nd, 3rd, or 4th, the preceding days are part of \ | |
6981 // the last week of the preceding year; thus, for Saturday 2nd January 1999, \ | |
6982 // %G is replaced by 1998 and %V is replaced by 53. If December 29th, 30th, \ | |
6983 // or 31st is a Monday, it and any following days are part of week 1 of the following year. \ | |
6984 // Thus, for Tuesday 30th December 1997, %G is replaced by 1998 and %V is replaced by 01.\ | |
6985 return getWeekBasedYear(date).toString().substring(2);\ | |
6986 },\ | |
6987 '%G': function(date) {\ | |
6988 return getWeekBasedYear(date);\ | |
6989 },\ | |
6990 '%H': function(date) {\ | |
6991 return leadingNulls(date.tm_hour, 2);\ | |
6992 },\ | |
6993 '%I': function(date) {\ | |
6994 return leadingNulls(date.tm_hour < 13 ? date.tm_hour : date.tm_hour-12, 2);\ | |
6995 },\ | |
6996 '%j': function(date) {\ | |
6997 // Day of the year (001-366)\ | |
6998 return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon-1), 3);\ | |
6999 },\ | |
7000 '%m': function(date) {\ | |
7001 return leadingNulls(date.tm_mon+1, 2);\ | |
7002 },\ | |
7003 '%M': function(date) {\ | |
7004 return leadingNulls(date.tm_min, 2);\ | |
7005 },\ | |
7006 '%n': function() {\ | |
7007 return '\\n';\ | |
7008 },\ | |
7009 '%p': function(date) {\ | |
7010 if (date.tm_hour > 0 && date.tm_hour < 13) {\ | |
7011 return 'AM';\ | |
7012 } else {\ | |
7013 return 'PM';\ | |
7014 }\ | |
7015 },\ | |
7016 '%S': function(date) {\ | |
7017 return leadingNulls(date.tm_sec, 2);\ | |
7018 },\ | |
7019 '%t': function() {\ | |
7020 return '\\t';\ | |
7021 },\ | |
7022 '%u': function(date) {\ | |
7023 var day = new Date(date.tm_year+1900, date.tm_mon+1, date.tm_mday, 0, 0, 0, 0);\ | |
7024 return day.getDay() || 7;\ | |
7025 },\ | |
7026 '%U': function(date) {\ | |
7027 // Replaced by the week number of the year as a decimal number [00,53]. \ | |
7028 // The first Sunday of January is the first day of week 1; \ | |
7029 // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]\ | |
7030 var janFirst = new Date(date.tm_year+1900, 0, 1);\ | |
7031 var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7-janFirst.getDay());\ | |
7032 var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday);\ | |
7033 // is target date after the first Sunday?\ | |
7034 if (compareByDay(firstSunday, endDate) < 0) {\ | |
7035 // calculate difference in days between first Sunday and endDate\ | |
7036 var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31;\ | |
7037 var firstSundayUntilEndJanuary = 31-firstSunday.getDate();\ | |
7038 var days = firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();\ | |
7039 return leadingNulls(Math.ceil(days/7), 2);\ | |
7040 }\ | |
7041 return compareByDay(firstSunday, janFirst) === 0 ? '01': '00';\ | |
7042 },\ | |
7043 '%V': function(date) {\ | |
7044 // Replaced by the week number of the year (Monday as the first day of the week) \ | |
7045 // as a decimal number [01,53]. If the week containing 1 January has four \ | |
7046 // or more days in the new year, then it is considered week 1. \ | |
7047 // Otherwise, it is the last week of the previous year, and the next week is week 1. \ | |
7048 // Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday]\ | |
7049 var janFourthThisYear = new Date(date.tm_year+1900, 0, 4);\ | |
7050 var janFourthNextYear = new Date(date.tm_year+1901, 0, 4);\ | |
7051 var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\ | |
7052 var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\ | |
7053 var endDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday);\ | |
7054 if (compareByDay(endDate, firstWeekStartThisYear) < 0) {\ | |
7055 // if given date is before this years first week, then it belongs to the 53rd week of last year\ | |
7056 return '53';\ | |
7057 } \ | |
7058 if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {\ | |
7059 // if given date is after next years first week, then it belongs to the 01th week of next year\ | |
7060 return '01';\ | |
7061 }\ | |
7062 // given date is in between CW 01..53 of this calendar year\ | |
7063 var daysDifference;\ | |
7064 if (firstWeekStartThisYear.getFullYear() < date.tm_year+1900) {\ | |
7065 // first CW of this year starts last year\ | |
7066 daysDifference = date.tm_yday+32-firstWeekStartThisYear.getDate()\ | |
7067 } else {\ | |
7068 // first CW of this year starts this year\ | |
7069 daysDifference = date.tm_yday+1-firstWeekStartThisYear.getDate();\ | |
7070 }\ | |
7071 return leadingNulls(Math.ceil(daysDifference/7), 2);\ | |
7072 },\ | |
7073 '%w': function(date) {\ | |
7074 var day = new Date(date.tm_year+1900, date.tm_mon+1, date.tm_mday, 0, 0, 0, 0);\ | |
7075 return day.getDay();\ | |
7076 },\ | |
7077 '%W': function(date) {\ | |
7078 // Replaced by the week number of the year as a decimal number [00,53]. \ | |
7079 // The first Monday of January is the first day of week 1; \ | |
7080 // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]\ | |
7081 var janFirst = new Date(date.tm_year, 0, 1);\ | |
7082 var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7-janFirst.getDay()+1);\ | |
7083 var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday);\ | |
7084 // is target date after the first Monday?\ | |
7085 if (compareByDay(firstMonday, endDate) < 0) {\ | |
7086 var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31;\ | |
7087 var firstMondayUntilEndJanuary = 31-firstMonday.getDate();\ | |
7088 var days = firstMondayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();\ | |
7089 return leadingNulls(Math.ceil(days/7), 2);\ | |
7090 }\ | |
7091 return compareByDay(firstMonday, janFirst) === 0 ? '01': '00';\ | |
7092 },\ | |
7093 '%y': function(date) {\ | |
7094 // Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year]\ | |
7095 return (date.tm_year+1900).toString().substring(2);\ | |
7096 },\ | |
7097 '%Y': function(date) {\ | |
7098 // Replaced by the year as a decimal number (for example, 1997). [ tm_year]\ | |
7099 return date.tm_year+1900;\ | |
7100 },\ | |
7101 '%z': function(date) {\ | |
7102 // Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm ),\ | |
7103 // or by no characters if no timezone is determinable. \ | |
7104 // For example, \"-0430\" means 4 hours 30 minutes behind UTC (west of Greenwich). \ | |
7105 // If tm_isdst is zero, the standard time offset is used. \ | |
7106 // If tm_isdst is greater than zero, the daylight savings time offset is used. \ | |
7107 // If tm_isdst is negative, no characters are returned. \ | |
7108 // FIXME: we cannot determine time zone (or can we?)\ | |
7109 return '';\ | |
7110 },\ | |
7111 '%Z': function(date) {\ | |
7112 // Replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. [ tm_isdst]\ | |
7113 // FIXME: we cannot determine time zone (or can we?)\ | |
7114 return '';\ | |
7115 },\ | |
7116 '%%': function() {\ | |
7117 return '%';\ | |
7118 }\ | |
7119 };\ | |
7120 for (var rule in EXPANSION_RULES_2) {\ | |
7121 if (pattern.indexOf(rule) >= 0) {\ | |
7122 pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_2[rule](date));\ | |
7123 }\ | |
7124 }\ | |
7125 var bytes = intArrayFromString(pattern, false);\ | |
7126 if (bytes.length > maxsize) {\ | |
7127 return 0;\ | |
7128 } \ | |
7129 writeArrayToMemory(bytes, s);\ | |
7130 return bytes.length-1;\ | |
7131 }\ | |
7132 function _clock() {\ | |
7133 if (_clock.start === undefined) _clock.start = Date.now();\ | |
7134 return Math.floor((Date.now() - _clock.start) * (1000/1000));\ | |
7135 }\ | |
7136 function _toupper(chr) {\ | |
7137 if (chr >= 97 && chr <= 122) {\ | |
7138 return chr - 97 + 65;\ | |
7139 } else {\ | |
7140 return chr;\ | |
7141 }\ | |
7142 }\ | |
7143 function _strpbrk(ptr1, ptr2) {\ | |
7144 var curr;\ | |
7145 var searchSet = {};\ | |
7146 while (1) {\ | |
7147 var curr = HEAP8[((ptr2++)|0)];\ | |
7148 if (!curr) break;\ | |
7149 searchSet[curr] = 1;\ | |
7150 }\ | |
7151 while (1) {\ | |
7152 curr = HEAP8[(ptr1)];\ | |
7153 if (!curr) break;\ | |
7154 if (curr in searchSet) return ptr1;\ | |
7155 ptr1++;\ | |
7156 }\ | |
7157 return 0;\ | |
7158 }\ | |
7159 Module[\"_tolower\"] = _tolower;\ | |
7160 function _islower(chr) {\ | |
7161 return chr >= 97 && chr <= 122;\ | |
7162 }\ | |
7163 function _ispunct(chr) {\ | |
7164 return (chr >= 33 && chr <= 47) ||\ | |
7165 (chr >= 58 && chr <= 64) ||\ | |
7166 (chr >= 91 && chr <= 96) ||\ | |
7167 (chr >= 123 && chr <= 126);\ | |
7168 }\ | |
7169 function _isupper(chr) {\ | |
7170 return chr >= 65 && chr <= 90;\ | |
7171 }\ | |
7172 function _isxdigit(chr) {\ | |
7173 return (chr >= 48 && chr <= 57) ||\ | |
7174 (chr >= 97 && chr <= 102) ||\ | |
7175 (chr >= 65 && chr <= 70);\ | |
7176 }\ | |
7177 function _strrchr(ptr, chr) {\ | |
7178 var ptr2 = ptr + _strlen(ptr);\ | |
7179 do {\ | |
7180 if (HEAP8[(ptr2)] == chr) return ptr2;\ | |
7181 ptr2--;\ | |
7182 } while (ptr2 >= ptr);\ | |
7183 return 0;\ | |
7184 }\ | |
7185 function _abort() {\ | |
7186 Module['abort']();\ | |
7187 }\ | |
7188 function _sbrk(bytes) {\ | |
7189 // Implement a Linux-like 'memory area' for our 'process'.\ | |
7190 // Changes the size of the memory area by |bytes|; returns the\ | |
7191 // address of the previous top ('break') of the memory area\ | |
7192 // We control the \"dynamic\" memory - DYNAMIC_BASE to DYNAMICTOP\ | |
7193 var self = _sbrk;\ | |
7194 if (!self.called) {\ | |
7195 DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned\ | |
7196 self.called = true;\ | |
7197 assert(Runtime.dynamicAlloc);\ | |
7198 self.alloc = Runtime.dynamicAlloc;\ | |
7199 Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };\ | |
7200 }\ | |
7201 var ret = DYNAMICTOP;\ | |
7202 if (bytes != 0) self.alloc(bytes);\ | |
7203 return ret; // Previous break location.\ | |
7204 }\ | |
7205 function _sysconf(name) {\ | |
7206 // long sysconf(int name);\ | |
7207 // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html\ | |
7208 switch(name) {\ | |
7209 case 8: return PAGE_SIZE;\ | |
7210 case 54:\ | |
7211 case 56:\ | |
7212 case 21:\ | |
7213 case 61:\ | |
7214 case 63:\ | |
7215 case 22:\ | |
7216 case 67:\ | |
7217 case 23:\ | |
7218 case 24:\ | |
7219 case 25:\ | |
7220 case 26:\ | |
7221 case 27:\ | |
7222 case 69:\ | |
7223 case 28:\ | |
7224 case 101:\ | |
7225 case 70:\ | |
7226 case 71:\ | |
7227 case 29:\ | |
7228 case 30:\ | |
7229 case 199:\ | |
7230 case 75:\ | |
7231 case 76:\ | |
7232 case 32:\ | |
7233 case 43:\ | |
7234 case 44:\ | |
7235 case 80:\ | |
7236 case 46:\ | |
7237 case 47:\ | |
7238 case 45:\ | |
7239 case 48:\ | |
7240 case 49:\ | |
7241 case 42:\ | |
7242 case 82:\ | |
7243 case 33:\ | |
7244 case 7:\ | |
7245 case 108:\ | |
7246 case 109:\ | |
7247 case 107:\ | |
7248 case 112:\ | |
7249 case 119:\ | |
7250 case 121:\ | |
7251 return 200809;\ | |
7252 case 13:\ | |
7253 case 104:\ | |
7254 case 94:\ | |
7255 case 95:\ | |
7256 case 34:\ | |
7257 case 35:\ | |
7258 case 77:\ | |
7259 case 81:\ | |
7260 case 83:\ | |
7261 case 84:\ | |
7262 case 85:\ | |
7263 case 86:\ | |
7264 case 87:\ | |
7265 case 88:\ | |
7266 case 89:\ | |
7267 case 90:\ | |
7268 case 91:\ | |
7269 case 94:\ | |
7270 case 95:\ | |
7271 case 110:\ | |
7272 case 111:\ | |
7273 case 113:\ | |
7274 case 114:\ | |
7275 case 115:\ | |
7276 case 116:\ | |
7277 case 117:\ | |
7278 case 118:\ | |
7279 case 120:\ | |
7280 case 40:\ | |
7281 case 16:\ | |
7282 case 79:\ | |
7283 case 19:\ | |
7284 return -1;\ | |
7285 case 92:\ | |
7286 case 93:\ | |
7287 case 5:\ | |
7288 case 72:\ | |
7289 case 6:\ | |
7290 case 74:\ | |
7291 case 92:\ | |
7292 case 93:\ | |
7293 case 96:\ | |
7294 case 97:\ | |
7295 case 98:\ | |
7296 case 99:\ | |
7297 case 102:\ | |
7298 case 103:\ | |
7299 case 105:\ | |
7300 return 1;\ | |
7301 case 38:\ | |
7302 case 66:\ | |
7303 case 50:\ | |
7304 case 51:\ | |
7305 case 4:\ | |
7306 return 1024;\ | |
7307 case 15:\ | |
7308 case 64:\ | |
7309 case 41:\ | |
7310 return 32;\ | |
7311 case 55:\ | |
7312 case 37:\ | |
7313 case 17:\ | |
7314 return 2147483647;\ | |
7315 case 18:\ | |
7316 case 1:\ | |
7317 return 47839;\ | |
7318 case 59:\ | |
7319 case 57:\ | |
7320 return 99;\ | |
7321 case 68:\ | |
7322 case 58:\ | |
7323 return 2048;\ | |
7324 case 0: return 2097152;\ | |
7325 case 3: return 65536;\ | |
7326 case 14: return 32768;\ | |
7327 case 73: return 32767;\ | |
7328 case 39: return 16384;\ | |
7329 case 60: return 1000;\ | |
7330 case 106: return 700;\ | |
7331 case 52: return 256;\ | |
7332 case 62: return 255;\ | |
7333 case 2: return 100;\ | |
7334 case 65: return 64;\ | |
7335 case 36: return 20;\ | |
7336 case 100: return 16;\ | |
7337 case 20: return 6;\ | |
7338 case 53: return 4;\ | |
7339 case 10: return 1;\ | |
7340 }\ | |
7341 ___setErrNo(ERRNO_CODES.EINVAL);\ | |
7342 return -1;\ | |
7343 }\ | |
7344 var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () {\ | |
7345 Browser.mainLoop.shouldPause = true;\ | |
7346 },resume:function () {\ | |
7347 if (Browser.mainLoop.paused) {\ | |
7348 Browser.mainLoop.paused = false;\ | |
7349 Browser.mainLoop.scheduler();\ | |
7350 }\ | |
7351 Browser.mainLoop.shouldPause = false;\ | |
7352 },updateStatus:function () {\ | |
7353 if (Module['setStatus']) {\ | |
7354 var message = Module['statusMessage'] || 'Please wait...';\ | |
7355 var remaining = Browser.mainLoop.remainingBlockers;\ | |
7356 var expected = Browser.mainLoop.expectedBlockers;\ | |
7357 if (remaining) {\ | |
7358 if (remaining < expected) {\ | |
7359 Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');\ | |
7360 } else {\ | |
7361 Module['setStatus'](message);\ | |
7362 }\ | |
7363 } else {\ | |
7364 Module['setStatus']('');\ | |
7365 }\ | |
7366 }\ | |
7367 }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {\ | |
7368 if (!Module[\"preloadPlugins\"]) Module[\"preloadPlugins\"] = []; // needs to exist even in workers\ | |
7369 if (Browser.initted || ENVIRONMENT_IS_WORKER) return;\ | |
7370 Browser.initted = true;\ | |
7371 try {\ | |
7372 new Blob();\ | |
7373 Browser.hasBlobConstructor = true;\ | |
7374 } catch(e) {\ | |
7375 Browser.hasBlobConstructor = false;\ | |
7376 console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\");\ | |
7377 }\ | |
7378 Browser.BlobBuilder = typeof MozBlobBuilder != \"undefined\" ? MozBlobBuilder : (typeof WebKitBlobBuilder != \"undefined\" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log(\"warning: no BlobBuilder\") : null));\ | |
7379 Browser.URLObject = typeof window != \"undefined\" ? (window.URL ? window.URL : window.webkitURL) : undefined;\ | |
7380 if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {\ | |
7381 console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\");\ | |
7382 Module.noImageDecoding = true;\ | |
7383 }\ | |
7384 // Support for plugins that can process preloaded files. You can add more of these to\ | |
7385 // your app by creating and appending to Module.preloadPlugins.\ | |
7386 //\ | |
7387 // Each plugin is asked if it can handle a file based on the file's name. If it can,\ | |
7388 // it is given the file's raw data. When it is done, it calls a callback with the file's\ | |
7389 // (possibly modified) data. For example, a plugin might decompress a file, or it\ | |
7390 // might create some side data structure for use later (like an Image element, etc.).\ | |
7391 var imagePlugin = {};\ | |
7392 imagePlugin['canHandle'] = function(name) {\ | |
7393 return !Module.noImageDecoding && /\\.(jpg|jpeg|png|bmp)$/i.test(name);\ | |
7394 };\ | |
7395 imagePlugin['handle'] = function(byteArray, name, onload, onerror) {\ | |
7396 var b = null;\ | |
7397 if (Browser.hasBlobConstructor) {\ | |
7398 try {\ | |
7399 b = new Blob([byteArray], { type: Browser.getMimetype(name) });\ | |
7400 if (b.size !== byteArray.length) { // Safari bug #118630\ | |
7401 // Safari's Blob can only take an ArrayBuffer\ | |
7402 b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });\ | |
7403 }\ | |
7404 } catch(e) {\ | |
7405 Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');\ | |
7406 }\ | |
7407 }\ | |
7408 if (!b) {\ | |
7409 var bb = new Browser.BlobBuilder();\ | |
7410 bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range\ | |
7411 b = bb.getBlob();\ | |
7412 }\ | |
7413 var url = Browser.URLObject.createObjectURL(b);\ | |
7414 var img = new Image();\ | |
7415 img.onload = function() {\ | |
7416 assert(img.complete, 'Image ' + name + ' could not be decoded');\ | |
7417 var canvas = document.createElement('canvas');\ | |
7418 canvas.width = img.width;\ | |
7419 canvas.height = img.height;\ | |
7420 var ctx = canvas.getContext('2d');\ | |
7421 ctx.drawImage(img, 0, 0);\ | |
7422 Module[\"preloadedImages\"][name] = canvas;\ | |
7423 Browser.URLObject.revokeObjectURL(url);\ | |
7424 if (onload) onload(byteArray);\ | |
7425 };\ | |
7426 img.onerror = function(event) {\ | |
7427 console.log('Image ' + url + ' could not be decoded');\ | |
7428 if (onerror) onerror();\ | |
7429 };\ | |
7430 img.src = url;\ | |
7431 };\ | |
7432 Module['preloadPlugins'].push(imagePlugin);\ | |
7433 var audioPlugin = {};\ | |
7434 audioPlugin['canHandle'] = function(name) {\ | |
7435 return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };\ | |
7436 };\ | |
7437 audioPlugin['handle'] = function(byteArray, name, onload, onerror) {\ | |
7438 var done = false;\ | |
7439 function finish(audio) {\ | |
7440 if (done) return;\ | |
7441 done = true;\ | |
7442 Module[\"preloadedAudios\"][name] = audio;\ | |
7443 if (onload) onload(byteArray);\ | |
7444 }\ | |
7445 function fail() {\ | |
7446 if (done) return;\ | |
7447 done = true;\ | |
7448 Module[\"preloadedAudios\"][name] = new Audio(); // empty shim\ | |
7449 if (onerror) onerror();\ | |
7450 }\ | |
7451 if (Browser.hasBlobConstructor) {\ | |
7452 try {\ | |
7453 var b = new Blob([byteArray], { type: Browser.getMimetype(name) });\ | |
7454 } catch(e) {\ | |
7455 return fail();\ | |
7456 }\ | |
7457 var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!\ | |
7458 var audio = new Audio();\ | |
7459 audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926\ | |
7460 audio.onerror = function(event) {\ | |
7461 if (done) return;\ | |
7462 console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');\ | |
7463 function encode64(data) {\ | |
7464 var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\ | |
7465 var PAD = '=';\ | |
7466 var ret = '';\ | |
7467 var leftchar = 0;\ | |
7468 var leftbits = 0;\ | |
7469 for (var i = 0; i < data.length; i++) {\ | |
7470 leftchar = (leftchar << 8) | data[i];\ | |
7471 leftbits += 8;\ | |
7472 while (leftbits >= 6) {\ | |
7473 var curr = (leftchar >> (leftbits-6)) & 0x3f;\ | |
7474 leftbits -= 6;\ | |
7475 ret += BASE[curr];\ | |
7476 }\ | |
7477 }\ | |
7478 if (leftbits == 2) {\ | |
7479 ret += BASE[(leftchar&3) << 4];\ | |
7480 ret += PAD + PAD;\ | |
7481 } else if (leftbits == 4) {\ | |
7482 ret += BASE[(leftchar&0xf) << 2];\ | |
7483 ret += PAD;\ | |
7484 }\ | |
7485 return ret;\ | |
7486 }\ | |
7487 audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);\ | |
7488 finish(audio); // we don't wait for confirmation this worked - but it's worth trying\ | |
7489 };\ | |
7490 audio.src = url;\ | |
7491 // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror\ | |
7492 Browser.safeSetTimeout(function() {\ | |
7493 finish(audio); // try to use it even though it is not necessarily ready to play\ | |
7494 }, 10000);\ | |
7495 } else {\ | |
7496 return fail();\ | |
7497 }\ | |
7498 };\ | |
7499 Module['preloadPlugins'].push(audioPlugin);\ | |
7500 // Canvas event setup\ | |
7501 var canvas = Module['canvas'];\ | |
7502 canvas.requestPointerLock = canvas['requestPointerLock'] ||\ | |
7503 canvas['mozRequestPointerLock'] ||\ | |
7504 canvas['webkitRequestPointerLock'];\ | |
7505 canvas.exitPointerLock = document['exitPointerLock'] ||\ | |
7506 document['mozExitPointerLock'] ||\ | |
7507 document['webkitExitPointerLock'] ||\ | |
7508 function(){}; // no-op if function does not exist\ | |
7509 canvas.exitPointerLock = canvas.exitPointerLock.bind(document);\ | |
7510 function pointerLockChange() {\ | |
7511 Browser.pointerLock = document['pointerLockElement'] === canvas ||\ | |
7512 document['mozPointerLockElement'] === canvas ||\ | |
7513 document['webkitPointerLockElement'] === canvas;\ | |
7514 }\ | |
7515 document.addEventListener('pointerlockchange', pointerLockChange, false);\ | |
7516 document.addEventListener('mozpointerlockchange', pointerLockChange, false);\ | |
7517 document.addEventListener('webkitpointerlockchange', pointerLockChange, false);\ | |
7518 if (Module['elementPointerLock']) {\ | |
7519 canvas.addEventListener(\"click\", function(ev) {\ | |
7520 if (!Browser.pointerLock && canvas.requestPointerLock) {\ | |
7521 canvas.requestPointerLock();\ | |
7522 ev.preventDefault();\ | |
7523 }\ | |
7524 }, false);\ | |
7525 }\ | |
7526 },createContext:function (canvas, useWebGL, setInModule) {\ | |
7527 var ctx;\ | |
7528 try {\ | |
7529 if (useWebGL) {\ | |
7530 ctx = canvas.getContext('experimental-webgl', {\ | |
7531 alpha: false\ | |
7532 });\ | |
7533 } else {\ | |
7534 ctx = canvas.getContext('2d');\ | |
7535 }\ | |
7536 if (!ctx) throw ':(';\ | |
7537 } catch (e) {\ | |
7538 Module.print('Could not create canvas - ' + e);\ | |
7539 return null;\ | |
7540 }\ | |
7541 if (useWebGL) {\ | |
7542 // Set the background of the WebGL canvas to black\ | |
7543 canvas.style.backgroundColor = \"black\";\ | |
7544 // Warn on context loss\ | |
7545 canvas.addEventListener('webglcontextlost', function(event) {\ | |
7546 alert('WebGL context lost. You will need to reload the page.');\ | |
7547 }, false);\ | |
7548 }\ | |
7549 if (setInModule) {\ | |
7550 Module.ctx = ctx;\ | |
7551 Module.useWebGL = useWebGL;\ | |
7552 Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });\ | |
7553 Browser.init();\ | |
7554 }\ | |
7555 return ctx;\ | |
7556 },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {\ | |
7557 Browser.lockPointer = lockPointer;\ | |
7558 Browser.resizeCanvas = resizeCanvas;\ | |
7559 if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;\ | |
7560 if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;\ | |
7561 var canvas = Module['canvas'];\ | |
7562 function fullScreenChange() {\ | |
7563 Browser.isFullScreen = false;\ | |
7564 if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||\ | |
7565 document['mozFullScreenElement'] || document['mozFullscreenElement'] ||\ | |
7566 document['fullScreenElement'] || document['fullscreenElement']) === canvas) {\ | |
7567 canvas.cancelFullScreen = document['cancelFullScreen'] ||\ | |
7568 document['mozCancelFullScreen'] ||\ | |
7569 document['webkitCancelFullScreen'];\ | |
7570 canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);\ | |
7571 if (Browser.lockPointer) canvas.requestPointerLock();\ | |
7572 Browser.isFullScreen = true;\ | |
7573 if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();\ | |
7574 } else if (Browser.resizeCanvas){\ | |
7575 Browser.setWindowedCanvasSize();\ | |
7576 }\ | |
7577 if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);\ | |
7578 }\ | |
7579 if (!Browser.fullScreenHandlersInstalled) {\ | |
7580 Browser.fullScreenHandlersInstalled = true;\ | |
7581 document.addEventListener('fullscreenchange', fullScreenChange, false);\ | |
7582 document.addEventListener('mozfullscreenchange', fullScreenChange, false);\ | |
7583 document.addEventListener('webkitfullscreenchange', fullScreenChange, false);\ | |
7584 }\ | |
7585 canvas.requestFullScreen = canvas['requestFullScreen'] ||\ | |
7586 canvas['mozRequestFullScreen'] ||\ | |
7587 (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);\ | |
7588 canvas.requestFullScreen();\ | |
7589 },requestAnimationFrame:function (func) {\ | |
7590 if (!window.requestAnimationFrame) {\ | |
7591 window.requestAnimationFrame = window['requestAnimationFrame'] ||\ | |
7592 window['mozRequestAnimationFrame'] ||\ | |
7593 window['webkitRequestAnimationFrame'] ||\ | |
7594 window['msRequestAnimationFrame'] ||\ | |
7595 window['oRequestAnimationFrame'] ||\ | |
7596 window['setTimeout'];\ | |
7597 }\ | |
7598 window.requestAnimationFrame(func);\ | |
7599 },safeCallback:function (func) {\ | |
7600 return function() {\ | |
7601 if (!ABORT) return func.apply(null, arguments);\ | |
7602 };\ | |
7603 },safeRequestAnimationFrame:function (func) {\ | |
7604 return Browser.requestAnimationFrame(function() {\ | |
7605 if (!ABORT) func();\ | |
7606 });\ | |
7607 },safeSetTimeout:function (func, timeout) {\ | |
7608 return setTimeout(function() {\ | |
7609 if (!ABORT) func();\ | |
7610 }, timeout);\ | |
7611 },safeSetInterval:function (func, timeout) {\ | |
7612 return setInterval(function() {\ | |
7613 if (!ABORT) func();\ | |
7614 }, timeout);\ | |
7615 },getMimetype:function (name) {\ | |
7616 return {\ | |
7617 'jpg': 'image/jpeg',\ | |
7618 'jpeg': 'image/jpeg',\ | |
7619 'png': 'image/png',\ | |
7620 'bmp': 'image/bmp',\ | |
7621 'ogg': 'audio/ogg',\ | |
7622 'wav': 'audio/wav',\ | |
7623 'mp3': 'audio/mpeg'\ | |
7624 }[name.substr(name.lastIndexOf('.')+1)];\ | |
7625 },getUserMedia:function (func) {\ | |
7626 if(!window.getUserMedia) {\ | |
7627 window.getUserMedia = navigator['getUserMedia'] ||\ | |
7628 navigator['mozGetUserMedia'];\ | |
7629 }\ | |
7630 window.getUserMedia(func);\ | |
7631 },getMovementX:function (event) {\ | |
7632 return event['movementX'] ||\ | |
7633 event['mozMovementX'] ||\ | |
7634 event['webkitMovementX'] ||\ | |
7635 0;\ | |
7636 },getMovementY:function (event) {\ | |
7637 return event['movementY'] ||\ | |
7638 event['mozMovementY'] ||\ | |
7639 event['webkitMovementY'] ||\ | |
7640 0;\ | |
7641 },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup\ | |
7642 if (Browser.pointerLock) {\ | |
7643 // When the pointer is locked, calculate the coordinates\ | |
7644 // based on the movement of the mouse.\ | |
7645 // Workaround for Firefox bug 764498\ | |
7646 if (event.type != 'mousemove' &&\ | |
7647 ('mozMovementX' in event)) {\ | |
7648 Browser.mouseMovementX = Browser.mouseMovementY = 0;\ | |
7649 } else {\ | |
7650 Browser.mouseMovementX = Browser.getMovementX(event);\ | |
7651 Browser.mouseMovementY = Browser.getMovementY(event);\ | |
7652 }\ | |
7653 // check if SDL is available\ | |
7654 if (typeof SDL != \"undefined\") {\ | |
7655 Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;\ | |
7656 Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;\ | |
7657 } else {\ | |
7658 // just add the mouse delta to the current absolut mouse position\ | |
7659 // FIXME: ideally this should be clamped against the canvas size and zero\ | |
7660 Browser.mouseX += Browser.mouseMovementX;\ | |
7661 Browser.mouseY += Browser.mouseMovementY;\ | |
7662 } \ | |
7663 } else {\ | |
7664 // Otherwise, calculate the movement based on the changes\ | |
7665 // in the coordinates.\ | |
7666 var rect = Module[\"canvas\"].getBoundingClientRect();\ | |
7667 var x, y;\ | |
7668 if (event.type == 'touchstart' ||\ | |
7669 event.type == 'touchend' ||\ | |
7670 event.type == 'touchmove') {\ | |
7671 var t = event.touches.item(0);\ | |
7672 if (t) {\ | |
7673 x = t.pageX - (window.scrollX + rect.left);\ | |
7674 y = t.pageY - (window.scrollY + rect.top);\ | |
7675 } else {\ | |
7676 return;\ | |
7677 }\ | |
7678 } else {\ | |
7679 x = event.pageX - (window.scrollX + rect.left);\ | |
7680 y = event.pageY - (window.scrollY + rect.top);\ | |
7681 }\ | |
7682 // the canvas might be CSS-scaled compared to its backbuffer;\ | |
7683 // SDL-using content will want mouse coordinates in terms\ | |
7684 // of backbuffer units.\ | |
7685 var cw = Module[\"canvas\"].width;\ | |
7686 var ch = Module[\"canvas\"].height;\ | |
7687 x = x * (cw / rect.width);\ | |
7688 y = y * (ch / rect.height);\ | |
7689 Browser.mouseMovementX = x - Browser.mouseX;\ | |
7690 Browser.mouseMovementY = y - Browser.mouseY;\ | |
7691 Browser.mouseX = x;\ | |
7692 Browser.mouseY = y;\ | |
7693 }\ | |
7694 },xhrLoad:function (url, onload, onerror) {\ | |
7695 var xhr = new XMLHttpRequest();\ | |
7696 xhr.open('GET', url, true);\ | |
7697 xhr.responseType = 'arraybuffer';\ | |
7698 xhr.onload = function() {\ | |
7699 if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0\ | |
7700 onload(xhr.response);\ | |
7701 } else {\ | |
7702 onerror();\ | |
7703 }\ | |
7704 };\ | |
7705 xhr.onerror = onerror;\ | |
7706 xhr.send(null);\ | |
7707 },asyncLoad:function (url, onload, onerror, noRunDep) {\ | |
7708 Browser.xhrLoad(url, function(arrayBuffer) {\ | |
7709 assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\ | |
7710 onload(new Uint8Array(arrayBuffer));\ | |
7711 if (!noRunDep) removeRunDependency('al ' + url);\ | |
7712 }, function(event) {\ | |
7713 if (onerror) {\ | |
7714 onerror();\ | |
7715 } else {\ | |
7716 throw 'Loading data file \"' + url + '\" failed.';\ | |
7717 }\ | |
7718 });\ | |
7719 if (!noRunDep) addRunDependency('al ' + url);\ | |
7720 },resizeListeners:[],updateResizeListeners:function () {\ | |
7721 var canvas = Module['canvas'];\ | |
7722 Browser.resizeListeners.forEach(function(listener) {\ | |
7723 listener(canvas.width, canvas.height);\ | |
7724 });\ | |
7725 },setCanvasSize:function (width, height, noUpdates) {\ | |
7726 var canvas = Module['canvas'];\ | |
7727 canvas.width = width;\ | |
7728 canvas.height = height;\ | |
7729 if (!noUpdates) Browser.updateResizeListeners();\ | |
7730 },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {\ | |
7731 var canvas = Module['canvas'];\ | |
7732 this.windowedWidth = canvas.width;\ | |
7733 this.windowedHeight = canvas.height;\ | |
7734 canvas.width = screen.width;\ | |
7735 canvas.height = screen.height;\ | |
7736 // check if SDL is available \ | |
7737 if (typeof SDL != \"undefined\") {\ | |
7738 var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];\ | |
7739 flags = flags | 0x00800000; // set SDL_FULLSCREEN flag\ | |
7740 HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags\ | |
7741 }\ | |
7742 Browser.updateResizeListeners();\ | |
7743 },setWindowedCanvasSize:function () {\ | |
7744 var canvas = Module['canvas'];\ | |
7745 canvas.width = this.windowedWidth;\ | |
7746 canvas.height = this.windowedHeight;\ | |
7747 // check if SDL is available \ | |
7748 if (typeof SDL != \"undefined\") {\ | |
7749 var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];\ | |
7750 flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag\ | |
7751 HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags\ | |
7752 }\ | |
7753 Browser.updateResizeListeners();\ | |
7754 }};\ | |
7755 _fputc.ret = allocate([0], \"i8\", ALLOC_STATIC);\ | |
7756 FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module[\"FS_createFolder\"] = FS.createFolder;Module[\"FS_createPath\"] = FS.createPath;Module[\"FS_createDataFile\"] = FS.createDataFile;Module[\"FS_createPreloadedFile\"] = FS.createPreloadedFile;Module[\"FS_createLazyFile\"] = FS.createLazyFile;Module[\"FS_createLink\"] = FS.createLink;Module[\"FS_createDevice\"] = FS.createDevice;\ | |
7757 ___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0;\ | |
7758 __ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor();\ | |
7759 __ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } });\ | |
7760 _fgetc.ret = allocate([0], \"i8\", ALLOC_STATIC);\ | |
7761 ___buildEnvironment(ENV);\ | |
7762 Module[\"requestFullScreen\"] = function(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };\ | |
7763 Module[\"requestAnimationFrame\"] = function(func) { Browser.requestAnimationFrame(func) };\ | |
7764 Module[\"setCanvasSize\"] = function(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };\ | |
7765 Module[\"pauseMainLoop\"] = function() { Browser.mainLoop.pause() };\ | |
7766 Module[\"resumeMainLoop\"] = function() { Browser.mainLoop.resume() };\ | |
7767 Module[\"getUserMedia\"] = function() { Browser.getUserMedia() }\ | |
7768 STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);\ | |
7769 staticSealed = true; // seal the static portion of memory\ | |
7770 STACK_MAX = STACK_BASE + 5242880;\ | |
7771 DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);\ | |
7772 assert(DYNAMIC_BASE < TOTAL_MEMORY); // Stack must fit in TOTAL_MEMORY; allocations from here on may enlarge TOTAL_MEMORY\ | |
7773 var Math_min = Math.min;\ | |
7774 function invoke_ii(index,a1) {\ | |
7775 try {\ | |
7776 return Module[\"dynCall_ii\"](index,a1);\ | |
7777 } catch(e) {\ | |
7778 if (typeof e !== 'number' && e !== 'longjmp') throw e;\ | |
7779 asm[\"setThrew\"](1, 0);\ | |
7780 }\ | |
7781 }\ | |
7782 function invoke_vi(index,a1) {\ | |
7783 try {\ | |
7784 Module[\"dynCall_vi\"](index,a1);\ | |
7785 } catch(e) {\ | |
7786 if (typeof e !== 'number' && e !== 'longjmp') throw e;\ | |
7787 asm[\"setThrew\"](1, 0);\ | |
7788 }\ | |
7789 }\ | |
7790 function invoke_vii(index,a1,a2) {\ | |
7791 try {\ | |
7792 Module[\"dynCall_vii\"](index,a1,a2);\ | |
7793 } catch(e) {\ | |
7794 if (typeof e !== 'number' && e !== 'longjmp') throw e;\ | |
7795 asm[\"setThrew\"](1, 0);\ | |
7796 }\ | |
7797 }\ | |
7798 function invoke_iiiii(index,a1,a2,a3,a4) {\ | |
7799 try {\ | |
7800 return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4);\ | |
7801 } catch(e) {\ | |
7802 if (typeof e !== 'number' && e !== 'longjmp') throw e;\ | |
7803 asm[\"setThrew\"](1, 0);\ | |
7804 }\ | |
7805 }\ | |
7806 function invoke_iiii(index,a1,a2,a3) {\ | |
7807 try {\ | |
7808 return Module[\"dynCall_iiii\"](index,a1,a2,a3);\ | |
7809 } catch(e) {\ | |
7810 if (typeof e !== 'number' && e !== 'longjmp') throw e;\ | |
7811 asm[\"setThrew\"](1, 0);\ | |
7812 }\ | |
7813 }\ | |
7814 function invoke_v(index) {\ | |
7815 try {\ | |
7816 Module[\"dynCall_v\"](index);\ | |
7817 } catch(e) {\ | |
7818 if (typeof e !== 'number' && e !== 'longjmp') throw e;\ | |
7819 asm[\"setThrew\"](1, 0);\ | |
7820 }\ | |
7821 }\ | |
7822 function invoke_iii(index,a1,a2) {\ | |
7823 try {\ | |
7824 return Module[\"dynCall_iii\"](index,a1,a2);\ | |
7825 } catch(e) {\ | |
7826 if (typeof e !== 'number' && e !== 'longjmp') throw e;\ | |
7827 asm[\"setThrew\"](1, 0);\ | |
7828 }\ | |
7829 }\ | |
7830 function asmPrintInt(x, y) {\ | |
7831 Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack);\ | |
7832 }\ | |
7833 function asmPrintFloat(x, y) {\ | |
7834 Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack);\ | |
7835 }\ | |
7836 // EMSCRIPTEN_START_ASM\ | |
7837 var asm=(function(global,env,buffer){\"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env._stdin|0;var n=env._stderr|0;var o=env._stdout|0;var p=+env.NaN;var q=+env.Infinity;var r=0;var s=0;var t=0;var u=0;var v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0.0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=0;var O=global.Math.floor;var P=global.Math.abs;var Q=global.Math.sqrt;var R=global.Math.pow;var S=global.Math.cos;var T=global.Math.sin;var U=global.Math.tan;var V=global.Math.acos;var W=global.Math.asin;var X=global.Math.atan;var Y=global.Math.atan2;var Z=global.Math.exp;var _=global.Math.log;var $=global.Math.ceil;var aa=global.Math.imul;var ab=env.abort;var ac=env.assert;var ad=env.asmPrintInt;var ae=env.asmPrintFloat;var af=env.min;var ag=env.jsCall;var ah=env.invoke_ii;var ai=env.invoke_vi;var aj=env.invoke_vii;var ak=env.invoke_iiiii;var al=env.invoke_iiii;var am=env.invoke_v;var an=env.invoke_iii;var ao=env._llvm_lifetime_end;var ap=env._lseek;var aq=env.__scanString;var ar=env._fclose;var as=env._strtoul;var at=env.__isFloat;var au=env._fflush;var av=env._fputc;var aw=env._fwrite;var ax=env._strncmp;var ay=env._send;var az=env._fputs;var aA=env._tmpnam;var aB=env._isspace;var aC=env._localtime;var aD=env._read;var aE=env._ceil;var aF=env._strstr;var aG=env._fsync;var aH=env._fscanf;var aI=env._fmod;var aJ=env._remove;var aK=env._modf;var aL=env._strcmp;var aM=env._memchr;var aN=env._llvm_va_end;var aO=env._tmpfile;var aP=env._snprintf;var aQ=env._fgetc;var aR=env._cosh;var aS=env._fgets;var aT=env._close;var aU=env._strchr;var aV=env._asin;var aW=env._clock;var aX=env.___setErrNo;var aY=env._isxdigit;var aZ=env._ftell;var a_=env._exit;var a$=env._sprintf;var a0=env._strrchr;var a1=env._freopen;var a2=env._strcspn;var a3=env.__isLeapYear;var a4=env._ferror;var a5=env._gmtime;var a6=env._localtime_r;var a7=env._sinh;var a8=env._recv;var a9=env._cos;var ba=env._putchar;var bb=env._islower;var bc=env.__exit;var bd=env._isupper;var be=env._strftime;var bf=env._rand;var bg=env._tzset;var bh=env._setlocale;var bi=env._ldexp;var bj=env._toupper;var bk=env._pread;var bl=env._fopen;var bm=env._open;var bn=env._frexp;var bo=env.__arraySum;var bp=env._log;var bq=env._isalnum;var br=env._mktime;var bs=env._system;var bt=env._isalpha;var bu=env._rmdir;var bv=env._log10;var bw=env._fread;var bx=env.__reallyNegative;var by=env.__formatString;var bz=env._getenv;var bA=env._llvm_pow_f64;var bB=env._sbrk;var bC=env._tanh;var bD=env._localeconv;var bE=env.___errno_location;var bF=env._strerror;var bG=env._llvm_lifetime_start;var bH=env.__parseInt;var bI=env._ungetc;var bJ=env._rename;var bK=env._sysconf;var bL=env._srand;var bM=env._abort;var bN=env._fprintf;var bO=env._tan;var bP=env.___buildEnvironment;var bQ=env._feof;var bR=env.__addDays;var bS=env._strncat;var bT=env._gmtime_r;var bU=env._ispunct;var bV=env._clearerr;var bW=env._fabs;var bX=env._floor;var bY=env._fseek;var bZ=env._sqrt;var b_=env._write;var b$=env._sin;var b0=env._longjmp;var b1=env._atan;var b2=env._strpbrk;var b3=env._unlink;var b4=env._acos;var b5=env._pwrite;var b6=env._strerror_r;var b7=env._difftime;var b8=env._iscntrl;var b9=env._atan2;var ca=env._exp;var cb=env._time;var cc=env._setvbuf;\ | |
7838 // EMSCRIPTEN_START_FUNCS\ | |
7839 function ck(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+7>>3<<3;return b|0}function cl(){return i|0}function cm(a){a=a|0;i=a}function cn(a,b){a=a|0;b=b|0;if((r|0)==0){r=a;s=b}}function co(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0]}function cp(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0];a[k+4|0]=a[b+4|0];a[k+5|0]=a[b+5|0];a[k+6|0]=a[b+6|0];a[k+7|0]=a[b+7|0]}function cq(a){a=a|0;E=a}function cr(a){a=a|0;F=a}function cs(a){a=a|0;G=a}function ct(a){a=a|0;H=a}function cu(a){a=a|0;I=a}function cv(a){a=a|0;J=a}function cw(a){a=a|0;K=a}function cx(a){a=a|0;L=a}function cy(a){a=a|0;M=a}function cz(a){a=a|0;N=a}function cA(){}function cB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+8|0;a=c[d>>2]|0;e=b;f=a;g=c[e+4>>2]|0;c[f>>2]=c[e>>2];c[f+4>>2]=g;c[a+8>>2]=c[b+8>>2];c[d>>2]=(c[d>>2]|0)+16;return}function cC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if((a|0)==(b|0)){return}e=a+8|0;a=(c[e>>2]|0)+(-d<<4)|0;c[e>>2]=a;if((d|0)<=0){return}f=b+8|0;b=0;g=a;while(1){a=c[f>>2]|0;c[f>>2]=a+16;h=g+(b<<4)|0;i=a;j=c[h+4>>2]|0;c[i>>2]=c[h>>2];c[i+4>>2]=j;c[a+8>>2]=c[g+(b<<4)+8>>2];a=b+1|0;if((a|0)>=(d|0)){break}b=a;g=c[e>>2]|0}return}function cD(a,c){a=a|0;c=c|0;b[c+52>>1]=b[a+52>>1]|0;return}function cE(a,b){a=a|0;b=b|0;var d=0;d=(c[a+16>>2]|0)+88|0;a=c[d>>2]|0;c[d>>2]=b;return a|0}function cF(a){a=a|0;return(c[a+8>>2]|0)-(c[a+12>>2]|0)>>4|0}function cG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if((b|0)<=-1){d=a+8|0;c[d>>2]=(c[d>>2]|0)+(b+1<<4);return}d=a+8|0;e=c[d>>2]|0;f=a+12|0;a=(c[f>>2]|0)+(b<<4)|0;if(e>>>0<a>>>0){g=e;while(1){c[d>>2]=g+16;c[g+8>>2]=0;e=c[d>>2]|0;h=(c[f>>2]|0)+(b<<4)|0;if(e>>>0<h>>>0){g=e}else{i=h;break}}}else{i=a}c[d>>2]=i;return}function cH(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=f+16|0;g=a+8|0;a=c[g>>2]|0;if(b>>>0<a>>>0){h=f;i=b}else{j=a;k=j-16|0;c[g>>2]=k;return}while(1){a=i;b=h;f=c[a+4>>2]|0;c[b>>2]=c[a>>2];c[b+4>>2]=f;c[h+8>>2]=c[h+24>>2];f=i+16|0;b=c[g>>2]|0;if(f>>>0<b>>>0){h=i;i=f}else{j=b;break}}k=j-16|0;c[g>>2]=k;return}function cI(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=a+8|0;a=c[b>>2]|0;if(a>>>0>f>>>0){h=a}else{i=a;j=i;k=f;l=j|0;m=c[l>>2]|0;n=j+4|0;o=c[n>>2]|0;p=k|0;c[p>>2]=m;q=k+4|0;c[q>>2]=o;r=i+8|0;s=c[r>>2]|0;t=f+8|0;c[t>>2]=s;return}while(1){a=h-16|0;g=a;e=h;u=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=u;c[h+8>>2]=c[h-16+8>>2];if(a>>>0>f>>>0){h=a}else{break}}i=c[b>>2]|0;j=i;k=f;l=j|0;m=c[l>>2]|0;n=j+4|0;o=c[n>>2]|0;p=k|0;c[p>>2]=m;q=k+4|0;c[q>>2]=o;r=i+8|0;s=c[r>>2]|0;t=f+8|0;c[t>>2]=s;return}function cJ(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=a+8|0;a=c[b>>2]|0;g=f;e=a;h=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=h;c[a+8>>2]=c[f+8>>2];c[b>>2]=(c[b>>2]|0)+16;return}function cK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){h=-1;return h|0}else{f=e+24+(g-1<<4)|0;break}}}}while(0);if((f|0)==1032){h=-1;return h|0}h=c[f+8>>2]|0;return h|0}function cL(a,b){a=a|0;b=b|0;var d=0;if((b|0)==-1){d=10432}else{d=c[872+(b<<2)>>2]|0}return d|0}function cM(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;do{if((e|0)>0){f=(c[b+12>>2]|0)+(e-1<<4)|0;g=f>>>0<(c[b+8>>2]|0)>>>0?f:1032}else{if((e|0)>-1e4){g=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-1e4|0)){g=(c[b+16>>2]|0)+96|0;break}else if((e|0)==(-10001|0)){f=b+88|0;c[f>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;g=f;break}else if((e|0)==(-10002|0)){g=b+72|0;break}else{f=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[f+7|0]|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);if((c[g+8>>2]|0)!=6){i=0;return i|0}i=(a[(c[g>>2]|0)+6|0]|0)!=0|0;return i|0}function cN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((b|0)>8e3){d=0;return d|0}e=a+8|0;f=c[e>>2]|0;g=f;if(((g-(c[a+12>>2]|0)>>4)+b|0)>8e3){d=0;return d|0}if((b|0)<=0){d=1;return d|0}if(((c[a+28>>2]|0)-g|0)>(b<<4|0)){h=f}else{eA(a,b);h=c[e>>2]|0}e=(c[a+20>>2]|0)+8|0;a=h+(b<<4)|0;if((c[e>>2]|0)>>>0>=a>>>0){d=1;return d|0}c[e>>2]=a;d=1;return d|0}function cO(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;if((c[b+68>>2]|0)>>>0>=(c[b+64>>2]|0)>>>0){e1(a)}b=fT(a)|0;d=a+8|0;a=c[d>>2]|0;c[a>>2]=b;c[a+8>>2]=8;c[d>>2]=(c[d>>2]|0)+16;return b|0}function cP(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;g=(e|0)==-10001;do{if(g){h=c[b+20>>2]|0;if((h|0)!=(c[b+40>>2]|0)){j=h;k=124;break}es(b,10448,(h=i,i=i+1|0,i=i+7>>3<<3,c[h>>2]=0,h)|0);i=h;k=117}else{k=117}}while(0);do{if((k|0)==117){if((e|0)>0){h=(c[b+12>>2]|0)+(e-1<<4)|0;l=h>>>0<(c[b+8>>2]|0)>>>0?h:1032;break}if((e|0)>-1e4){l=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-1e4|0)){l=(c[b+16>>2]|0)+96|0;break}else if((e|0)==(-10001|0)){j=c[b+20>>2]|0;k=124;break}else if((e|0)==(-10002|0)){l=b+72|0;break}else{h=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;m=-10002-e|0;if((m|0)>(d[h+7|0]|0|0)){l=1032;break}l=h+24+(m-1<<4)|0;break}}}while(0);if((k|0)==124){k=b+88|0;c[k>>2]=c[(c[c[j+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;l=k}do{if(g){k=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;j=b+8|0;c[k+12>>2]=c[(c[j>>2]|0)-16>>2];m=c[j>>2]|0;if((c[m-16+8>>2]|0)<=3){break}j=c[m-16>>2]|0;if((a[j+5|0]&3)==0){break}if((a[k+5|0]&4)==0){break}e7(b,k,j)}else{j=b+8|0;k=c[j>>2]|0;m=k-16|0;h=l;n=c[m+4>>2]|0;c[h>>2]=c[m>>2];c[h+4>>2]=n;c[l+8>>2]=c[k-16+8>>2];if((e|0)>=-10002){break}k=c[j>>2]|0;if((c[k-16+8>>2]|0)<=3){break}j=c[k-16>>2]|0;if((a[j+5|0]&3)==0){break}k=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;if((a[k+5|0]&4)==0){break}e7(b,k,j)}}while(0);e=b+8|0;c[e>>2]=(c[e>>2]|0)-16;i=f;return}function cQ(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032;g=149}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;g=149;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;g=149;break}else if((b|0)==(-10002|0)){f=a+72|0;g=149;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;g=149;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-b|0;if((h|0)>(d[e+7|0]|0|0)){i=-1;break}f=e+24+(h-1<<4)|0;g=149;break}}}while(0);do{if((g|0)==149){if((f|0)==1032){i=-1;break}b=c[f+8>>2]|0;if((b|0)==4){j=1}else{i=b;break}return j|0}}while(0);j=(i|0)==3|0;return j|0}function cR(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=c[f+8>>2]|0;if((b|0)==7){h=1;return h|0}h=(b|0)==2|0;return h|0}function cS(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+16|0;f=e|0;do{if((b|0)>0){g=(c[a+12>>2]|0)+(b-1<<4)|0;h=g>>>0<(c[a+8>>2]|0)>>>0?g:1032}else{if((b|0)>-1e4){h=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){g=a+88|0;c[g>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;h=g;break}else if((b|0)==(-1e4|0)){h=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10002|0)){h=a+72|0;break}else{g=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;j=-10002-b|0;if((j|0)>(d[g+7|0]|0|0)){h=1032;break}h=g+24+(j-1<<4)|0;break}}}while(0);if((c[h+8>>2]|0)==3){k=1;i=e;return k|0}k=(gk(h,f)|0)!=0|0;i=e;return k|0}function cT(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;do{if((b|0)>0){f=(c[a+12>>2]|0)+(b-1<<4)|0;g=f>>>0<(c[a+8>>2]|0)>>>0?f:1032}else{if((b|0)>-1e4){g=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10002|0)){g=a+72|0;break}else if((b|0)==(-10001|0)){f=a+88|0;c[f>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;g=f;break}else if((b|0)==(-1e4|0)){g=(c[a+16>>2]|0)+96|0;break}else{f=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-b|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);do{if((e|0)>0){b=(c[a+12>>2]|0)+(e-1<<4)|0;i=b>>>0<(c[a+8>>2]|0)>>>0?b:1032}else{if((e|0)>-1e4){i=(c[a+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10001|0)){b=a+88|0;c[b>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;i=b;break}else if((e|0)==(-10002|0)){i=a+72|0;break}else if((e|0)==(-1e4|0)){i=(c[a+16>>2]|0)+96|0;break}else{b=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[b+7|0]|0|0)){j=0;return j|0}else{i=b+24+(h-1<<4)|0;break}}}}while(0);if((g|0)==1032|(i|0)==1032){j=0;return j|0}j=fr(g,i)|0;return j|0}function cU(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;do{if((b|0)>0){f=(c[a+12>>2]|0)+(b-1<<4)|0;g=f>>>0<(c[a+8>>2]|0)>>>0?f:1032}else{if((b|0)>-1e4){g=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10002|0)){g=a+72|0;break}else if((b|0)==(-1e4|0)){g=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){f=a+88|0;c[f>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;g=f;break}else{f=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-b|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);do{if((e|0)>0){b=(c[a+12>>2]|0)+(e-1<<4)|0;i=b>>>0<(c[a+8>>2]|0)>>>0?b:1032}else{if((e|0)>-1e4){i=(c[a+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10001|0)){b=a+88|0;c[b>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;i=b;break}else if((e|0)==(-10002|0)){i=a+72|0;break}else if((e|0)==(-1e4|0)){i=(c[a+16>>2]|0)+96|0;break}else{b=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[b+7|0]|0|0)){j=0;return j|0}else{i=b+24+(h-1<<4)|0;break}}}}while(0);if((g|0)==1032|(i|0)==1032){j=0;return j|0}if((c[g+8>>2]|0)!=(c[i+8>>2]|0)){j=0;return j|0}j=(gp(a,g,i)|0)!=0|0;return j|0}function cV(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;do{if((b|0)>0){f=(c[a+12>>2]|0)+(b-1<<4)|0;g=f>>>0<(c[a+8>>2]|0)>>>0?f:1032}else{if((b|0)>-1e4){g=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10002|0)){g=a+72|0;break}else if((b|0)==(-10001|0)){f=a+88|0;c[f>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;g=f;break}else if((b|0)==(-1e4|0)){g=(c[a+16>>2]|0)+96|0;break}else{f=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-b|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);do{if((e|0)>0){b=(c[a+12>>2]|0)+(e-1<<4)|0;i=b>>>0<(c[a+8>>2]|0)>>>0?b:1032}else{if((e|0)>-1e4){i=(c[a+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10001|0)){b=a+88|0;c[b>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;i=b;break}else if((e|0)==(-10002|0)){i=a+72|0;break}else if((e|0)==(-1e4|0)){i=(c[a+16>>2]|0)+96|0;break}else{b=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[b+7|0]|0|0)){j=0;return j|0}else{i=b+24+(h-1<<4)|0;break}}}}while(0);if((g|0)==1032|(i|0)==1032){j=0;return j|0}j=go(a,g,i)|0;return j|0}function cW(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0.0;e=i;i=i+16|0;f=e|0;do{if((b|0)>0){g=(c[a+12>>2]|0)+(b-1<<4)|0;j=g>>>0<(c[a+8>>2]|0)>>>0?g:1032}else{if((b|0)>-1e4){j=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){g=a+88|0;c[g>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;j=g;break}else if((b|0)==(-10002|0)){j=a+72|0;break}else if((b|0)==(-1e4|0)){j=(c[a+16>>2]|0)+96|0;break}else{g=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;k=-10002-b|0;if((k|0)>(d[g+7|0]|0|0)){j=1032;break}j=g+24+(k-1<<4)|0;break}}}while(0);do{if((c[j+8>>2]|0)==3){l=j}else{b=gk(j,f)|0;if((b|0)==0){m=0.0}else{l=b;break}i=e;return+m}}while(0);m=+h[l>>3];i=e;return+m}function cX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=c[f+8>>2]|0;if((b|0)==0){h=0;return h|0}if((b|0)!=1){h=1;return h|0}h=(c[f>>2]|0)!=0|0;return h|0}function cY(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;do{if((e|0)>0){f=(c[b+12>>2]|0)+(e-1<<4)|0;g=f>>>0<(c[b+8>>2]|0)>>>0?f:1032}else{if((e|0)>-1e4){g=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10001|0)){f=b+88|0;c[f>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;g=f;break}else if((e|0)==(-1e4|0)){g=(c[b+16>>2]|0)+96|0;break}else if((e|0)==(-10002|0)){g=b+72|0;break}else{f=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[f+7|0]|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);if((c[g+8>>2]|0)!=6){i=0;return i|0}e=c[g>>2]|0;if((a[e+6|0]|0)==0){i=0;return i|0}i=c[e+16>>2]|0;return i|0}function cZ(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=c[f+8>>2]|0;if((b|0)==7){h=(c[f>>2]|0)+24|0;return h|0}else if((b|0)==2){h=c[f>>2]|0;return h|0}else{h=0;return h|0}return 0}function c_(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);if((c[f+8>>2]|0)!=8){h=0;return h|0}h=c[f>>2]|0;return h|0}function c$(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;e=i;i=i+16|0;f=e|0;do{if((b|0)>0){g=(c[a+12>>2]|0)+(b-1<<4)|0;j=g>>>0<(c[a+8>>2]|0)>>>0?g:1032}else{if((b|0)>-1e4){j=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10002|0)){j=a+72|0;break}else if((b|0)==(-1e4|0)){j=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){g=a+88|0;c[g>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;j=g;break}else{g=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;k=-10002-b|0;if((k|0)>(d[g+7|0]|0|0)){j=1032;break}j=g+24+(k-1<<4)|0;break}}}while(0);do{if((c[j+8>>2]|0)==3){l=j}else{b=gk(j,f)|0;if((b|0)==0){m=0}else{l=b;break}i=e;return m|0}}while(0);m=~~+h[l>>3];i=e;return m|0}function c0(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=(b|0)>0;do{if(f){g=(c[a+12>>2]|0)+(b-1<<4)|0;h=g>>>0<(c[a+8>>2]|0)>>>0?g:1032}else{if((b|0)>-1e4){h=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){g=a+88|0;c[g>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;h=g;break}else if((b|0)==(-1e4|0)){h=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10002|0)){h=a+72|0;break}else{g=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;i=-10002-b|0;if((i|0)>(d[g+7|0]|0|0)){h=1032;break}h=g+24+(i-1<<4)|0;break}}}while(0);do{if((c[h+8>>2]|0)==4){j=h}else{if((gl(a,h)|0)==0){if((e|0)==0){k=0;return k|0}c[e>>2]=0;k=0;return k|0}i=a+16|0;g=c[i>>2]|0;if((c[g+68>>2]|0)>>>0>=(c[g+64>>2]|0)>>>0){e1(a)}if(f){g=(c[a+12>>2]|0)+(b-1<<4)|0;j=g>>>0<(c[a+8>>2]|0)>>>0?g:1032;break}if((b|0)>-1e4){j=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){j=(c[i>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){i=a+88|0;c[i>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;j=i;break}else if((b|0)==(-10002|0)){j=a+72|0;break}else{i=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[i+7|0]|0|0)){j=1032;break}j=i+24+(g-1<<4)|0;break}}}while(0);b=j;if((e|0)!=0){c[e>>2]=c[(c[b>>2]|0)+12>>2]}k=(c[b>>2]|0)+16|0;return k|0}function c1(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=c[f+8>>2]|0;if((b|0)==4){h=c[(c[f>>2]|0)+12>>2]|0;return h|0}else if((b|0)==3){if((gl(a,f)|0)==0){h=0;return h|0}h=c[(c[f>>2]|0)+12>>2]|0;return h|0}else if((b|0)==7){h=c[(c[f>>2]|0)+16>>2]|0;return h|0}else if((b|0)==5){h=ga(c[f>>2]|0)|0;return h|0}else{h=0;return h|0}return 0}function c2(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=(b|0)>0;do{if(e){f=(c[a+12>>2]|0)+(b-1<<4)|0;g=f>>>0<(c[a+8>>2]|0)>>>0?f:1032}else{if((b|0)>-1e4){g=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){g=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10002|0)){g=a+72|0;break}else if((b|0)==(-10001|0)){f=a+88|0;c[f>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;g=f;break}else{f=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-b|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);switch(c[g+8>>2]|0){case 5:{i=c[g>>2]|0;return i|0};case 6:{i=c[g>>2]|0;return i|0};case 8:{i=c[g>>2]|0;return i|0};case 7:case 2:{do{if(e){g=(c[a+12>>2]|0)+(b-1<<4)|0;j=g>>>0<(c[a+8>>2]|0)>>>0?g:1032}else{if((b|0)>-1e4){j=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10002|0)){j=a+72|0;break}else if((b|0)==(-10001|0)){g=a+88|0;c[g>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;j=g;break}else if((b|0)==(-1e4|0)){j=(c[a+16>>2]|0)+96|0;break}else{g=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-b|0;if((h|0)>(d[g+7|0]|0|0)){j=1032;break}j=g+24+(h-1<<4)|0;break}}}while(0);b=c[j+8>>2]|0;if((b|0)==2){i=c[j>>2]|0;return i|0}else if((b|0)==7){i=(c[j>>2]|0)+24|0;return i|0}else{i=0;return i|0}break};default:{i=0;return i|0}}return 0}function c3(a){a=a|0;var b=0;b=a+8|0;c[(c[b>>2]|0)+8>>2]=0;c[b>>2]=(c[b>>2]|0)+16;return}function c4(a,b){a=a|0;b=+b;var d=0;d=a+8|0;a=c[d>>2]|0;h[a>>3]=b;c[a+8>>2]=3;c[d>>2]=(c[d>>2]|0)+16;return}function c5(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d>>2]|0;h[a>>3]=+(b|0);c[a+8>>2]=3;c[d>>2]=(c[d>>2]|0)+16;return}function c6(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d>>2]|0;c[a>>2]=(b|0)!=0;c[a+8>>2]=1;c[d>>2]=(c[d>>2]|0)+16;return}function c7(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d>>2]|0;c[a>>2]=b;c[a+8>>2]=2;c[d>>2]=(c[d>>2]|0)+16;return}function c8(a){a=a|0;var b=0,d=0;b=a+8|0;d=c[b>>2]|0;c[d>>2]=a;c[d+8>>2]=8;c[b>>2]=(c[b>>2]|0)+16;return(c[(c[a+16>>2]|0)+112>>2]|0)==(a|0)|0}function c9(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+16>>2]|0;if((c[e+68>>2]|0)>>>0>=(c[e+64>>2]|0)>>>0){e1(a)}e=a+8|0;f=c[e>>2]|0;c[f>>2]=f_(a,b,d)|0;c[f+8>>2]=4;c[e>>2]=(c[e>>2]|0)+16;return}function da(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((b|0)==0){d=a+8|0;c[(c[d>>2]|0)+8>>2]=0;c[d>>2]=(c[d>>2]|0)+16;return}d=j_(b|0)|0;e=c[a+16>>2]|0;if((c[e+68>>2]|0)>>>0>=(c[e+64>>2]|0)>>>0){e1(a)}e=a+8|0;f=c[e>>2]|0;c[f>>2]=f_(a,b,d)|0;c[f+8>>2]=4;c[e>>2]=(c[e>>2]|0)+16;return}function db(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+16>>2]|0;if((c[e+68>>2]|0)>>>0>=(c[e+64>>2]|0)>>>0){e1(a)}return fx(a,b,d)|0}function dc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e|0;g=c[a+16>>2]|0;if((c[g+68>>2]|0)>>>0>=(c[g+64>>2]|0)>>>0){e1(a)}g=f;c[g>>2]=d;c[g+4>>2]=0;g=fx(a,b,f|0)|0;i=e;return g|0}function dd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=c[a+16>>2]|0;if((c[e+68>>2]|0)>>>0>=(c[e+64>>2]|0)>>>0){e1(a)}e=c[a+20>>2]|0;if((e|0)==(c[a+40>>2]|0)){f=c[a+72>>2]|0}else{f=c[(c[c[e+4>>2]>>2]|0)+12>>2]|0}e=eO(a,d,f)|0;c[e+16>>2]=b;b=a+8|0;a=(c[b>>2]|0)+(-d<<4)|0;c[b>>2]=a;if((d|0)==0){g=a;h=e;i=g;c[i>>2]=h;j=g+8|0;c[j>>2]=6;k=c[b>>2]|0;l=k+16|0;c[b>>2]=l;return}else{m=d;n=a}while(1){a=m-1|0;d=n+(a<<4)|0;f=e+24+(a<<4)|0;o=c[d+4>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=o;c[e+24+(a<<4)+8>>2]=c[n+(a<<4)+8>>2];o=c[b>>2]|0;if((a|0)==0){g=o;break}else{m=a;n=o}}h=e;i=g;c[i>>2]=h;j=g+8|0;c[j>>2]=6;k=c[b>>2]|0;l=k+16|0;c[b>>2]=l;return}function de(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=(c[a+8>>2]|0)-16|0;gm(a,f,b,b);return}function df(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f|0;do{if((b|0)>0){h=(c[a+12>>2]|0)+(b-1<<4)|0;j=h>>>0<(c[a+8>>2]|0)>>>0?h:1032}else{if((b|0)>-1e4){j=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){j=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){h=a+88|0;c[h>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;j=h;break}else if((b|0)==(-10002|0)){j=a+72|0;break}else{h=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;k=-10002-b|0;if((k|0)>(d[h+7|0]|0|0)){j=1032;break}j=h+24+(k-1<<4)|0;break}}}while(0);c[g>>2]=f_(a,e,j_(e|0)|0)|0;c[g+8>>2]=4;e=a+8|0;gm(a,j,g,c[e>>2]|0);c[e>>2]=(c[e>>2]|0)+16;i=f;return}function dg(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=a+8|0;a=f8(c[f>>2]|0,(c[b>>2]|0)-16|0)|0;f=c[b>>2]|0;b=a;g=f-16|0;e=c[b+4>>2]|0;c[g>>2]=c[b>>2];c[g+4>>2]=e;c[f-16+8>>2]=c[a+8>>2];return}function dh(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;do{if((b|0)>0){f=(c[a+12>>2]|0)+(b-1<<4)|0;g=f>>>0<(c[a+8>>2]|0)>>>0?f:1032}else{if((b|0)>-1e4){g=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){g=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){f=a+88|0;c[f>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;g=f;break}else if((b|0)==(-10002|0)){g=a+72|0;break}else{f=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;h=-10002-b|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);b=f3(c[g>>2]|0,e)|0;e=a+8|0;a=c[e>>2]|0;g=b;h=a;f=c[g+4>>2]|0;c[h>>2]=c[g>>2];c[h+4>>2]=f;c[a+8>>2]=c[b+8>>2];c[e>>2]=(c[e>>2]|0)+16;return}function di(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+16>>2]|0;if((c[e+68>>2]|0)>>>0>=(c[e+64>>2]|0)>>>0){e1(a)}e=a+8|0;f=c[e>>2]|0;c[f>>2]=f5(a,b,d)|0;c[f+8>>2]=5;c[e>>2]=(c[e>>2]|0)+16;return}function dj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=c[f+8>>2]|0;if((b|0)==5){h=c[(c[f>>2]|0)+8>>2]|0}else if((b|0)==7){h=c[(c[f>>2]|0)+8>>2]|0}else{h=c[(c[a+16>>2]|0)+152+(b<<2)>>2]|0}if((h|0)==0){i=0;return i|0}b=a+8|0;a=c[b>>2]|0;c[a>>2]=h;c[a+8>>2]=5;c[b>>2]=(c[b>>2]|0)+16;i=1;return i|0}function dk(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=c[f+8>>2]|0;if((b|0)==6){g=c[a+8>>2]|0;c[g>>2]=c[(c[f>>2]|0)+12>>2];c[g+8>>2]=5;h=a+8|0;i=c[h>>2]|0;j=i+16|0;c[h>>2]=j;return}else if((b|0)==7){g=c[a+8>>2]|0;c[g>>2]=c[(c[f>>2]|0)+12>>2];c[g+8>>2]=5;h=a+8|0;i=c[h>>2]|0;j=i+16|0;c[h>>2]=j;return}else if((b|0)==8){b=c[f>>2]|0;f=c[a+8>>2]|0;g=b+72|0;e=f;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;c[f+8>>2]=c[b+80>>2];h=a+8|0;i=c[h>>2]|0;j=i+16|0;c[h>>2]=j;return}else{c[(c[a+8>>2]|0)+8>>2]=0;h=a+8|0;i=c[h>>2]|0;j=i+16|0;c[h>>2]=j;return}}function dl(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else if((b|0)==(-10002|0)){f=a+72|0;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=a+8|0;g=c[b>>2]|0;gn(a,f,g-32|0,g-16|0);c[b>>2]=(c[b>>2]|0)-32;return}function dm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f|0;do{if((b|0)>0){h=(c[a+12>>2]|0)+(b-1<<4)|0;j=h>>>0<(c[a+8>>2]|0)>>>0?h:1032}else{if((b|0)>-1e4){j=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10001|0)){h=a+88|0;c[h>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;j=h;break}else if((b|0)==(-1e4|0)){j=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10002|0)){j=a+72|0;break}else{h=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;k=-10002-b|0;if((k|0)>(d[h+7|0]|0|0)){j=1032;break}j=h+24+(k-1<<4)|0;break}}}while(0);c[g>>2]=f_(a,e,j_(e|0)|0)|0;c[g+8>>2]=4;e=a+8|0;gn(a,j,g,(c[e>>2]|0)-16|0);c[e>>2]=(c[e>>2]|0)-16;i=f;return}function dn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;do{if((e|0)>0){f=(c[b+12>>2]|0)+(e-1<<4)|0;g=f>>>0<(c[b+8>>2]|0)>>>0?f:1032}else{if((e|0)>-1e4){g=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-1e4|0)){g=(c[b+16>>2]|0)+96|0;break}else if((e|0)==(-10001|0)){f=b+88|0;c[f>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;g=f;break}else if((e|0)==(-10002|0)){g=b+72|0;break}else{f=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);e=b+8|0;h=c[e>>2]|0;f=g;g=f9(b,c[f>>2]|0,h-32|0)|0;i=h-16|0;j=g;k=c[i+4>>2]|0;c[j>>2]=c[i>>2];c[j+4>>2]=k;c[g+8>>2]=c[h-16+8>>2];h=c[e>>2]|0;if((c[h-16+8>>2]|0)<=3){l=h;m=l-32|0;c[e>>2]=m;return}if((a[(c[h-16>>2]|0)+5|0]&3)==0){l=h;m=l-32|0;c[e>>2]=m;return}g=c[f>>2]|0;if((a[g+5|0]&4)==0){l=h;m=l-32|0;c[e>>2]=m;return}e2(b,g);l=c[e>>2]|0;m=l-32|0;c[e>>2]=m;return}function dp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;do{if((e|0)>0){g=(c[b+12>>2]|0)+(e-1<<4)|0;h=g>>>0<(c[b+8>>2]|0)>>>0?g:1032}else{if((e|0)>-1e4){h=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10001|0)){g=b+88|0;c[g>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;h=g;break}else if((e|0)==(-10002|0)){h=b+72|0;break}else if((e|0)==(-1e4|0)){h=(c[b+16>>2]|0)+96|0;break}else{g=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;i=-10002-e|0;if((i|0)>(d[g+7|0]|0|0)){h=1032;break}h=g+24+(i-1<<4)|0;break}}}while(0);e=b+8|0;i=c[e>>2]|0;g=h;h=gc(b,c[g>>2]|0,f)|0;f=i-16|0;j=h;k=c[f+4>>2]|0;c[j>>2]=c[f>>2];c[j+4>>2]=k;c[h+8>>2]=c[i-16+8>>2];i=c[e>>2]|0;if((c[i-16+8>>2]|0)<=3){l=i;m=l-16|0;c[e>>2]=m;return}if((a[(c[i-16>>2]|0)+5|0]&3)==0){l=i;m=l-16|0;c[e>>2]=m;return}h=c[g>>2]|0;if((a[h+5|0]&4)==0){l=i;m=l-16|0;c[e>>2]=m;return}e2(b,h);l=c[e>>2]|0;m=l-16|0;c[e>>2]=m;return}function dq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;do{if((e|0)>0){f=(c[b+12>>2]|0)+(e-1<<4)|0;g=f>>>0<(c[b+8>>2]|0)>>>0?f:1032}else{if((e|0)>-1e4){g=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10001|0)){f=b+88|0;c[f>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;g=f;break}else if((e|0)==(-1e4|0)){g=(c[b+16>>2]|0)+96|0;break}else if((e|0)==(-10002|0)){g=b+72|0;break}else{f=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);e=b+8|0;h=c[e>>2]|0;if((c[h-16+8>>2]|0)==0){i=0}else{i=c[h-16>>2]|0}h=c[g+8>>2]|0;do{if((h|0)==5){f=g;c[(c[f>>2]|0)+8>>2]=i;if((i|0)==0){break}if((a[i+5|0]&3)==0){break}j=c[f>>2]|0;if((a[j+5|0]&4)==0){break}e2(b,j)}else if((h|0)==7){j=g;c[(c[j>>2]|0)+8>>2]=i;if((i|0)==0){break}if((a[i+5|0]&3)==0){break}f=c[j>>2]|0;if((a[f+5|0]&4)==0){break}e7(b,f,i)}else{c[(c[b+16>>2]|0)+152+(h<<2)>>2]=i}}while(0);c[e>>2]=(c[e>>2]|0)-16;return 1}function dr(a){a=a|0;return d[a+6|0]|0|0}function ds(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;if((b|0)!=0){c[b>>2]=c[(c[d>>2]|0)+16>>2]}return c[(c[d>>2]|0)+12>>2]|0}function dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+16|0;c[(c[e>>2]|0)+16>>2]=d;c[(c[e>>2]|0)+12>>2]=b;return}function du(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;do{if((e|0)>0){g=(c[b+12>>2]|0)+(e-1<<4)|0;h=g>>>0<(c[b+8>>2]|0)>>>0?g:1032}else{if((e|0)>-1e4){h=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10002|0)){h=b+72|0;break}else if((e|0)==(-10001|0)){g=b+88|0;c[g>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;h=g;break}else if((e|0)==(-1e4|0)){h=(c[b+16>>2]|0)+96|0;break}else{g=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;i=-10002-e|0;if((i|0)>(d[g+7|0]|0)){h=1032;break}h=g+24+(i-1<<4)|0;break}}}while(0);if((c[h+8>>2]|0)!=6){j=0;return j|0}e=c[h>>2]|0;h=e;do{if((a[e+6|0]|0)==0){i=c[e+16>>2]|0;if((f|0)<=0){j=0;return j|0}if((c[i+36>>2]|0)<(f|0)){j=0;return j|0}g=f-1|0;k=(c[(c[i+28>>2]|0)+(g<<2)>>2]|0)+16|0;if((k|0)==0){j=0;return j|0}else{l=c[(c[e+20+(g<<2)>>2]|0)+8>>2]|0;m=k;break}}else{if((f|0)<=0){j=0;return j|0}if((d[h+7|0]|0)<(f|0)){j=0;return j|0}else{l=e+24+(f-1<<4)|0;m=10544;break}}}while(0);f=b+8|0;b=c[f>>2]|0;e=l;h=b;k=c[e+4>>2]|0;c[h>>2]=c[e>>2];c[h+4>>2]=k;c[b+8>>2]=c[l+8>>2];c[f>>2]=(c[f>>2]|0)+16;j=m;return j|0}function dv(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;do{if((e|0)>0){f=(c[b+12>>2]|0)+(e-1<<4)|0;g=f>>>0<(c[b+8>>2]|0)>>>0?f:1032}else{if((e|0)>-1e4){g=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10002|0)){g=b+72|0;break}else if((e|0)==(-10001|0)){f=b+88|0;c[f>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;g=f;break}else if((e|0)==(-1e4|0)){g=(c[b+16>>2]|0)+96|0;break}else{f=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;h=-10002-e|0;if((h|0)>(d[f+7|0]|0|0)){g=1032;break}g=f+24+(h-1<<4)|0;break}}}while(0);e=c[g+8>>2]|0;if((e|0)==7){c[(c[g>>2]|0)+12>>2]=c[(c[b+8>>2]|0)-16>>2]}else if((e|0)==6){c[(c[g>>2]|0)+12>>2]=c[(c[b+8>>2]|0)-16>>2]}else if((e|0)==8){e=c[g>>2]|0;c[e+72>>2]=c[(c[b+8>>2]|0)-16>>2];c[e+80>>2]=5}else{i=0;j=b+8|0;k=c[j>>2]|0;l=k-16|0;c[j>>2]=l;return i|0}e=b+8|0;h=c[(c[e>>2]|0)-16>>2]|0;if((a[h+5|0]&3)==0){i=1;j=e;k=c[j>>2]|0;l=k-16|0;c[j>>2]=l;return i|0}f=c[g>>2]|0;if((a[f+5|0]&4)==0){i=1;j=e;k=c[j>>2]|0;l=k-16|0;c[j>>2]=l;return i|0}e7(b,f,h);i=1;j=e;k=c[j>>2]|0;l=k-16|0;c[j>>2]=l;return i|0}function dw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+8|0;eG(a,(c[e>>2]|0)+(~b<<4)|0,d);if((d|0)!=-1){return}d=c[e>>2]|0;e=(c[a+20>>2]|0)+8|0;if(d>>>0<(c[e>>2]|0)>>>0){return}c[e>>2]=d;return}function dx(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+8|0;h=g|0;if((f|0)==0){j=0;k=c[a+32>>2]|0}else{do{if((f|0)>0){l=(c[a+12>>2]|0)+(f-1<<4)|0;m=l>>>0<(c[a+8>>2]|0)>>>0?l:1032}else{if((f|0)>-1e4){m=(c[a+8>>2]|0)+(f<<4)|0;break}if((f|0)==(-1e4|0)){m=(c[a+16>>2]|0)+96|0;break}else if((f|0)==(-10002|0)){m=a+72|0;break}else if((f|0)==(-10001|0)){l=a+88|0;c[l>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;m=l;break}else{l=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;n=-10002-f|0;if((n|0)>(d[l+7|0]|0|0)){m=1032;break}m=l+24+(n-1<<4)|0;break}}}while(0);f=c[a+32>>2]|0;j=m-f|0;k=f}f=a+8|0;m=(c[f>>2]|0)+(~b<<4)|0;c[h>>2]=m;c[h+4>>2]=e;b=eJ(a,252,h,m-k|0,j)|0;if((e|0)!=-1){i=g;return b|0}e=c[f>>2]|0;f=(c[a+20>>2]|0)+8|0;if(e>>>0<(c[f>>2]|0)>>>0){i=g;return b|0}c[f>>2]=e;i=g;return b|0}function dy(a,b){a=a|0;b=b|0;eG(a,c[b>>2]|0,c[b+4>>2]|0);return}function dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+8|0;f=e|0;c[f>>2]=b;c[f+4>>2]=d;d=eJ(a,264,f,(c[a+8>>2]|0)-(c[a+32>>2]|0)|0,0)|0;i=e;return d|0}function dA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+20>>2]|0;if((d|0)==(c[a+40>>2]|0)){e=c[a+72>>2]|0}else{e=c[(c[c[d+4>>2]>>2]|0)+12>>2]|0}d=eO(a,0,e)|0;c[d+16>>2]=c[b>>2];e=a+8|0;f=c[e>>2]|0;c[f>>2]=d;c[f+8>>2]=6;f=c[e>>2]|0;d=f+16|0;c[e>>2]=d;c[d>>2]=c[b+4>>2];c[f+24>>2]=2;f=c[e>>2]|0;c[e>>2]=f+16;eG(a,f-16|0,0);return}function dB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=i;i=i+24|0;f=e|0;gs(a,f,b,c);c=eK(a,f,(d|0)==0?8488:d)|0;i=e;return c|0}function dC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[b+8>>2]|0;if((c[f-16+8>>2]|0)!=6){g=1;return g|0}h=c[f-16>>2]|0;if((a[h+6|0]|0)!=0){g=1;return g|0}g=eM(b,c[h+16>>2]|0,d,e,0)|0;return g|0}function dD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[b+16>>2]|0;L931:do{switch(d|0){case 0:{c[f+64>>2]=-3;g=0;break};case 1:{c[f+64>>2]=c[f+68>>2];g=0;break};case 5:{h=e<<10;i=f+68|0;j=c[i>>2]|0;if(h>>>0>j>>>0){c[f+64>>2]=0;k=0}else{l=j-h|0;c[f+64>>2]=l;k=l}l=f+64|0;h=f+21|0;m=k;n=j;while(1){if(m>>>0>n>>>0){g=0;break L931}e1(b);if((a[h]|0)==0){g=1;break L931}m=c[l>>2]|0;n=c[i>>2]|0}break};case 2:{e5(b);g=0;break};case 6:{i=f+80|0;n=c[i>>2]|0;c[i>>2]=e;g=n;break};case 7:{n=f+84|0;i=c[n>>2]|0;c[n>>2]=e;g=i;break};case 4:{g=c[f+68>>2]&1023;break};case 3:{g=(c[f+68>>2]|0)>>>10;break};default:{g=-1}}}while(0);return g|0}function dE(a){a=a|0;ew(a);return 0}function dF(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;do{if((b|0)>0){e=(c[a+12>>2]|0)+(b-1<<4)|0;f=e>>>0<(c[a+8>>2]|0)>>>0?e:1032}else{if((b|0)>-1e4){f=(c[a+8>>2]|0)+(b<<4)|0;break}if((b|0)==(-10002|0)){f=a+72|0;break}else if((b|0)==(-1e4|0)){f=(c[a+16>>2]|0)+96|0;break}else if((b|0)==(-10001|0)){e=a+88|0;c[e>>2]=c[(c[c[(c[a+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[a+96>>2]=5;f=e;break}else{e=c[c[(c[a+20>>2]|0)+4>>2]>>2]|0;g=-10002-b|0;if((g|0)>(d[e+7|0]|0|0)){f=1032;break}f=e+24+(g-1<<4)|0;break}}}while(0);b=a+8|0;g=f0(a,c[f>>2]|0,(c[b>>2]|0)-16|0)|0;f=c[b>>2]|0;c[b>>2]=(g|0)==0?f-16|0:f+16|0;return g|0}function dG(a,b){a=a|0;b=b|0;var d=0;if((b|0)>1){d=c[a+16>>2]|0;if((c[d+68>>2]|0)>>>0>=(c[d+64>>2]|0)>>>0){e1(a)}d=a+8|0;gq(a,b,((c[d>>2]|0)-(c[a+12>>2]|0)>>4)-1|0);c[d>>2]=(c[d>>2]|0)+(1-b<<4);return}else{if((b|0)!=0){return}b=a+8|0;d=c[b>>2]|0;c[d>>2]=f_(a,10544,0)|0;c[d+8>>2]=4;c[b>>2]=(c[b>>2]|0)+16;return}}function dH(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+16>>2]|0;if((c[d+68>>2]|0)>>>0>=(c[d+64>>2]|0)>>>0){e1(a)}d=c[a+20>>2]|0;if((d|0)==(c[a+40>>2]|0)){e=c[a+72>>2]|0}else{e=c[(c[c[d+4>>2]>>2]|0)+12>>2]|0}d=f$(a,b,e)|0;e=a+8|0;a=c[e>>2]|0;c[a>>2]=d;c[a+8>>2]=7;c[e>>2]=(c[e>>2]|0)+16;return d+24|0}function dI(a){a=a|0;var b=0;b=c[a+24>>2]|0;c[a+28>>2]=b;return b|0}function dJ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;do{if((e|0)>0){g=(c[b+12>>2]|0)+(e-1<<4)|0;h=g>>>0<(c[b+8>>2]|0)>>>0?g:1032}else{if((e|0)>-1e4){h=(c[b+8>>2]|0)+(e<<4)|0;break}if((e|0)==(-10002|0)){h=b+72|0;break}else if((e|0)==(-10001|0)){g=b+88|0;c[g>>2]=c[(c[c[(c[b+20>>2]|0)+4>>2]>>2]|0)+12>>2];c[b+96>>2]=5;h=g;break}else if((e|0)==(-1e4|0)){h=(c[b+16>>2]|0)+96|0;break}else{g=c[c[(c[b+20>>2]|0)+4>>2]>>2]|0;i=-10002-e|0;if((i|0)>(d[g+7|0]|0)){h=1032;break}h=g+24+(i-1<<4)|0;break}}}while(0);if((c[h+8>>2]|0)!=6){j=0;return j|0}e=h;h=c[e>>2]|0;i=h;do{if((a[h+6|0]|0)==0){g=c[h+16>>2]|0;if((f|0)<=0){j=0;return j|0}if((c[g+36>>2]|0)<(f|0)){j=0;return j|0}k=f-1|0;l=(c[(c[g+28>>2]|0)+(k<<2)>>2]|0)+16|0;if((l|0)==0){j=0;return j|0}else{m=c[(c[h+20+(k<<2)>>2]|0)+8>>2]|0;n=l;break}}else{if((f|0)<=0){j=0;return j|0}if((d[i+7|0]|0)<(f|0)){j=0;return j|0}else{m=h+24+(f-1<<4)|0;n=10544;break}}}while(0);f=b+8|0;h=c[f>>2]|0;i=h-16|0;c[f>>2]=i;l=i;i=m;k=c[l+4>>2]|0;c[i>>2]=c[l>>2];c[i+4>>2]=k;c[m+8>>2]=c[h-16+8>>2];h=c[f>>2]|0;if((c[h+8>>2]|0)<=3){j=n;return j|0}f=c[h>>2]|0;if((a[f+5|0]&3)==0){j=n;return j|0}h=c[e>>2]|0;if((a[h+5|0]&4)==0){j=n;return j|0}e7(b,h,f);j=n;return j|0}function dK(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=c[a+24>>2]|0;do{if((f|0)>(c[a+28>>2]|0)){if((f|0)==0){if((d[a+50|0]|0|0)>(b|0)){break}return}g=(c[(c[a>>2]|0)+12>>2]|0)+(f-1<<2)|0;h=c[g>>2]|0;if((h&63|0)!=3){break}i=h>>>23;if((h>>>6&255|0)>(b|0)){break}if((i+1|0)<(b|0)){break}j=b-1+e|0;if((j|0)<=(i|0)){return}c[g>>2]=h&8388607|j<<23;return}}while(0);ec(a,b<<6|(e+b<<23)-8388608|3,c[(c[a+12>>2]|0)+8>>2]|0)|0;return}function dL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;return ec(a,d<<6|b|e<<23|f<<14,c[(c[a+12>>2]|0)+8>>2]|0)|0}function dM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=a+32|0;d=c[b>>2]|0;c[b>>2]=-1;b=a+12|0;e=ec(a,2147450902,c[(c[b>>2]|0)+8>>2]|0)|0;if((d|0)==-1){f=e;return f|0}if((e|0)==-1){f=d;return f|0}g=c[(c[a>>2]|0)+12>>2]|0;a=e;while(1){h=g+(a<<2)|0;i=c[h>>2]|0;j=(i>>>14)-131071|0;if((j|0)==-1){break}k=a+1+j|0;if((k|0)==-1){break}else{a=k}}g=d+~a|0;if((((g|0)>-1?g:-g|0)|0)>131071){ff(c[b>>2]|0,5464);l=c[h>>2]|0}else{l=i}c[h>>2]=l&16383|(g<<14)+2147467264;f=e;return f|0}function dN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return ec(a,d<<6|b|e<<14,c[(c[a+12>>2]|0)+8>>2]|0)|0}function dO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if((d|0)==-1){return}e=c[b>>2]|0;if((e|0)==-1){c[b>>2]=d;return}b=c[(c[a>>2]|0)+12>>2]|0;f=e;while(1){g=b+(f<<2)|0;h=c[g>>2]|0;e=(h>>>14)-131071|0;if((e|0)==-1){break}i=f+1+e|0;if((i|0)==-1){break}else{f=i}}b=~f+d|0;if((((b|0)>-1?b:-b|0)|0)>131071){ff(c[a+12>>2]|0,5464);j=c[g>>2]|0}else{j=h}c[g>>2]=j&16383|(b<<14)+2147467264;return}function dP(a,b,d){a=a|0;b=b|0;d=d|0;ec(a,b<<6|(d<<23)+8388608|30,c[(c[a+12>>2]|0)+8>>2]|0)|0;return}function dQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if((c[b+24>>2]|0)==(e|0)){c[b+28>>2]=e;f=b+32|0;if((d|0)==-1){return}g=c[f>>2]|0;if((g|0)==-1){c[f>>2]=d;return}f=c[(c[b>>2]|0)+12>>2]|0;h=g;while(1){i=f+(h<<2)|0;j=c[i>>2]|0;g=(j>>>14)-131071|0;if((g|0)==-1){break}k=h+1+g|0;if((k|0)==-1){break}else{h=k}}f=~h+d|0;if((((f|0)>-1?f:-f|0)|0)>131071){ff(c[b+12>>2]|0,5464);l=c[i>>2]|0}else{l=j}c[i>>2]=l&16383|(f<<14)+2147467264;return}if((d|0)==-1){return}f=b|0;l=b+12|0;b=d;while(1){d=c[(c[f>>2]|0)+12>>2]|0;i=d+(b<<2)|0;j=c[i>>2]|0;h=(j>>>14)-131071|0;if((h|0)==-1){m=-1}else{m=b+1+h|0}if((b|0)>0){h=d+(b-1<<2)|0;d=c[h>>2]|0;if((a[992+(d&63)|0]|0)<0){n=h;o=d}else{p=890}}else{p=890}if((p|0)==890){p=0;n=i;o=j}if((o&63|0)==27){c[n>>2]=o&8372224|o>>>23<<6|26;d=(c[(c[f>>2]|0)+12>>2]|0)+(b<<2)|0;h=~b+e|0;if((((h|0)>-1?h:-h|0)|0)>131071){ff(c[l>>2]|0,5464)}c[d>>2]=c[d>>2]&16383|(h<<14)+2147467264}else{h=~b+e|0;if((((h|0)>-1?h:-h|0)|0)>131071){ff(c[l>>2]|0,5464);q=c[i>>2]|0}else{q=j}c[i>>2]=q&16383|(h<<14)+2147467264}if((m|0)==-1){break}else{b=m}}return}function dR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[a+28>>2]=c[a+24>>2];d=a+32|0;if((b|0)==-1){return}e=c[d>>2]|0;if((e|0)==-1){c[d>>2]=b;return}d=c[(c[a>>2]|0)+12>>2]|0;f=e;while(1){g=d+(f<<2)|0;h=c[g>>2]|0;e=(h>>>14)-131071|0;if((e|0)==-1){break}i=f+1+e|0;if((i|0)==-1){break}else{f=i}}d=~f+b|0;if((((d|0)>-1?d:-d|0)|0)>131071){ff(c[a+12>>2]|0,5464);j=c[g>>2]|0}else{j=h}c[g>>2]=j&16383|(d<<14)+2147467264;return}function dS(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=(c[b+36>>2]|0)+e|0;e=b|0;g=c[e>>2]|0;if((f|0)<=(d[g+75|0]|0|0)){return}if((f|0)>249){ff(c[b+12>>2]|0,5128);h=c[e>>2]|0}else{h=g}a[h+75|0]=f&255;return}function dT(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=b+36|0;g=c[f>>2]|0;h=g+e|0;i=b|0;j=c[i>>2]|0;if((h|0)<=(d[j+75|0]|0|0)){k=g;l=k+e|0;c[f>>2]=l;return}if((h|0)>249){ff(c[b+12>>2]|0,5128);m=c[i>>2]|0}else{m=j}a[m+75|0]=h&255;k=c[f>>2]|0;l=k+e|0;c[f>>2]=l;return}function dU(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;c[e>>2]=b;c[e+8>>2]=4;b=dV(a,e,e)|0;i=d;return b|0}function dV(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[b+16>>2]|0;g=f9(f,c[b+4>>2]|0,d)|0;d=c[b>>2]|0;i=d+40|0;j=c[i>>2]|0;k=g+8|0;if((c[k>>2]|0)==3){l=~~+h[g>>3];return l|0}m=b+40|0;h[g>>3]=+(c[m>>2]|0);c[k>>2]=3;k=c[i>>2]|0;if(((c[m>>2]|0)+1|0)>(k|0)){g=d+8|0;c[g>>2]=ft(f,c[g>>2]|0,i,16,262143,7128)|0;n=c[i>>2]|0}else{n=k}k=d+8|0;if((j|0)<(n|0)){n=j;while(1){j=n+1|0;c[(c[k>>2]|0)+(n<<4)+8>>2]=0;if((j|0)<(c[i>>2]|0)){n=j}else{break}}}n=c[m>>2]|0;i=c[k>>2]|0;k=e;j=i+(n<<4)|0;g=c[k+4>>2]|0;c[j>>2]=c[k>>2];c[j+4>>2]=g;g=e+8|0;c[i+(n<<4)+8>>2]=c[g>>2];do{if((c[g>>2]|0)>3){n=c[e>>2]|0;if((a[n+5|0]&3)==0){break}if((a[d+5|0]&4)==0){break}e7(f,d,n)}}while(0);d=c[m>>2]|0;c[m>>2]=d+1;l=d;return l|0}function dW(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=i;i=i+16|0;e=d|0;h[e>>3]=b;c[e+8>>2]=3;f=dV(a,e,e)|0;i=d;return f|0}function dX(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=c[e>>2]|0;if((g|0)==13){h=(c[(c[b>>2]|0)+12>>2]|0)+(c[e+8>>2]<<2)|0;c[h>>2]=c[h>>2]&-8372225|(f<<14)+16384&8372224;return}else if((g|0)==14){g=e+8|0;e=b|0;h=(c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]<<2)|0;c[h>>2]=c[h>>2]&8388607|(f<<23)+8388608;f=(c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]<<2)|0;g=b+36|0;c[f>>2]=c[g>>2]<<6&16320|c[f>>2]&-16321;f=c[g>>2]|0;h=f+1|0;i=c[e>>2]|0;if((h|0)>(d[i+75|0]|0|0)){if((h|0)>249){ff(c[b+12>>2]|0,5128);j=c[e>>2]|0}else{j=i}a[j+75|0]=h&255;k=c[g>>2]|0}else{k=f}c[g>>2]=k+1;return}else{return}}function dY(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b|0;e=c[d>>2]|0;if((e|0)==13){c[d>>2]=12;f=b+8|0;c[f>>2]=(c[(c[(c[a>>2]|0)+12>>2]|0)+(c[f>>2]<<2)>>2]|0)>>>6&255;return}else if((e|0)==14){e=(c[(c[a>>2]|0)+12>>2]|0)+(c[b+8>>2]<<2)|0;c[e>>2]=c[e>>2]&8388607|16777216;c[d>>2]=11;return}else{return}}function dZ(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=b|0;switch(c[e>>2]|0){case 6:{c[e>>2]=12;return};case 8:{f=b+8|0;c[f>>2]=ec(a,c[f>>2]<<14|5,c[(c[a+12>>2]|0)+8>>2]|0)|0;c[e>>2]=11;return};case 14:{f=(c[(c[a>>2]|0)+12>>2]|0)+(c[b+8>>2]<<2)|0;c[f>>2]=c[f>>2]&8388607|16777216;c[e>>2]=11;return};case 7:{f=b+8|0;c[f>>2]=ec(a,c[f>>2]<<23|4,c[(c[a+12>>2]|0)+8>>2]|0)|0;c[e>>2]=11;return};case 9:{f=b+8|0;g=f+4|0;h=c[g>>2]|0;do{if((h&256|0)==0){if((d[a+50|0]|0|0)>(h|0)){break}i=a+36|0;c[i>>2]=(c[i>>2]|0)-1}}while(0);h=f;f=c[h>>2]|0;do{if((f&256|0)==0){if((d[a+50|0]|0|0)>(f|0)){j=f;break}i=a+36|0;c[i>>2]=(c[i>>2]|0)-1;j=c[h>>2]|0}else{j=f}}while(0);c[h>>2]=ec(a,j<<23|c[g>>2]<<14|6,c[(c[a+12>>2]|0)+8>>2]|0)|0;c[e>>2]=11;return};case 13:{c[e>>2]=12;e=b+8|0;c[e>>2]=(c[(c[(c[a>>2]|0)+12>>2]|0)+(c[e>>2]<<2)>>2]|0)>>>6&255;return};default:{return}}}function d_(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;dZ(b,e);do{if((c[e>>2]|0)==12){f=c[e+8>>2]|0;if((f&256|0)!=0){break}if((d[b+50|0]|0|0)>(f|0)){break}f=b+36|0;c[f>>2]=(c[f>>2]|0)-1}}while(0);f=b+36|0;g=c[f>>2]|0;h=g+1|0;i=b|0;j=c[i>>2]|0;if((h|0)<=(d[j+75|0]|0|0)){k=g;l=k+1|0;c[f>>2]=l;d$(b,e,k);return}if((h|0)>249){ff(c[b+12>>2]|0,5128);m=c[i>>2]|0}else{m=j}a[m+75|0]=h&255;k=c[f>>2]|0;l=k+1|0;c[f>>2]=l;d$(b,e,k);return}function d$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;ek(b,d,e);f=d|0;g=d+16|0;do{if((c[f>>2]|0)==10){h=c[d+8>>2]|0;if((h|0)==-1){break}i=c[g>>2]|0;if((i|0)==-1){c[g>>2]=h;break}j=c[(c[b>>2]|0)+12>>2]|0;k=i;while(1){l=j+(k<<2)|0;m=c[l>>2]|0;i=(m>>>14)-131071|0;if((i|0)==-1){break}n=k+1+i|0;if((n|0)==-1){break}else{k=n}}j=h+~k|0;if((((j|0)>-1?j:-j|0)|0)>131071){ff(c[b+12>>2]|0,5464);o=c[l>>2]|0}else{o=m}c[l>>2]=o&16383|(j<<14)+2147467264}}while(0);o=c[g>>2]|0;l=d+20|0;m=c[l>>2]|0;if((o|0)==(m|0)){c[g>>2]=-1;c[l>>2]=-1;p=d+8|0;q=p;c[q>>2]=e;c[f>>2]=12;return}L1250:do{if((o|0)==-1){r=1017}else{j=c[(c[b>>2]|0)+12>>2]|0;n=o;while(1){i=j+(n<<2)|0;if((n|0)>0){s=c[j+(n-1<<2)>>2]|0;if((a[992+(s&63)|0]|0)<0){t=s}else{r=1013}}else{r=1013}if((r|0)==1013){r=0;t=c[i>>2]|0}if((t&63|0)!=27){r=1025;break L1250}s=((c[i>>2]|0)>>>14)-131071|0;if((s|0)==-1){r=1017;break L1250}i=n+1+s|0;if((i|0)==-1){r=1017;break}else{n=i}}}}while(0);L1261:do{if((r|0)==1017){if((m|0)==-1){u=-1;v=-1;break}t=c[(c[b>>2]|0)+12>>2]|0;o=m;while(1){n=t+(o<<2)|0;if((o|0)>0){j=c[t+(o-1<<2)>>2]|0;if((a[992+(j&63)|0]|0)<0){w=j}else{r=1021}}else{r=1021}if((r|0)==1021){r=0;w=c[n>>2]|0}if((w&63|0)!=27){r=1025;break L1261}j=((c[n>>2]|0)>>>14)-131071|0;if((j|0)==-1){u=-1;v=-1;break L1261}n=o+1+j|0;if((n|0)==-1){u=-1;v=-1;break}else{o=n}}}}while(0);do{if((r|0)==1025){do{if((c[f>>2]|0)==10){x=-1;y=b+12|0;z=b+32|0}else{w=b+32|0;m=c[w>>2]|0;c[w>>2]=-1;o=b+12|0;t=ec(b,2147450902,c[(c[o>>2]|0)+8>>2]|0)|0;if((m|0)==-1){x=t;y=o;z=w;break}if((t|0)==-1){x=m;y=o;z=w;break}n=c[(c[b>>2]|0)+12>>2]|0;j=t;while(1){A=n+(j<<2)|0;B=c[A>>2]|0;k=(B>>>14)-131071|0;if((k|0)==-1){break}h=j+1+k|0;if((h|0)==-1){break}else{j=h}}n=m+~j|0;if((((n|0)>-1?n:-n|0)|0)>131071){ff(c[o>>2]|0,5464);C=c[A>>2]|0}else{C=B}c[A>>2]=C&16383|(n<<14)+2147467264;x=t;y=o;z=w}}while(0);n=b+24|0;h=b+28|0;c[h>>2]=c[n>>2];k=e<<6;i=ec(b,k|16386,c[(c[y>>2]|0)+8>>2]|0)|0;c[h>>2]=c[n>>2];s=ec(b,k|8388610,c[(c[y>>2]|0)+8>>2]|0)|0;c[h>>2]=c[n>>2];if((x|0)==-1){u=i;v=s;break}n=c[z>>2]|0;if((n|0)==-1){c[z>>2]=x;u=i;v=s;break}h=c[(c[b>>2]|0)+12>>2]|0;k=n;while(1){D=h+(k<<2)|0;E=c[D>>2]|0;n=(E>>>14)-131071|0;if((n|0)==-1){break}F=k+1+n|0;if((F|0)==-1){break}else{k=F}}h=x+~k|0;if((((h|0)>-1?h:-h|0)|0)>131071){ff(c[y>>2]|0,5464);G=c[D>>2]|0}else{G=E}c[D>>2]=G&16383|(h<<14)+2147467264;u=i;v=s}}while(0);G=c[b+24>>2]|0;c[b+28>>2]=G;D=c[l>>2]|0;if((D|0)!=-1){E=b|0;y=(e|0)==255;x=b+12|0;z=e<<6&16320;C=D;while(1){D=c[(c[E>>2]|0)+12>>2]|0;A=D+(C<<2)|0;B=c[A>>2]|0;h=(B>>>14)-131071|0;if((h|0)==-1){H=-1}else{H=C+1+h|0}if((C|0)>0){h=D+(C-1<<2)|0;D=c[h>>2]|0;if((a[992+(D&63)|0]|0)<0){I=h;J=D}else{r=1050}}else{r=1050}if((r|0)==1050){r=0;I=A;J=B}if((J&63|0)==27){D=J>>>23;if(y|(D|0)==(e|0)){K=J&8372224|D<<6|26}else{K=J&-16321|z}c[I>>2]=K;D=(c[(c[E>>2]|0)+12>>2]|0)+(C<<2)|0;h=G+~C|0;if((((h|0)>-1?h:-h|0)|0)>131071){ff(c[x>>2]|0,5464)}c[D>>2]=c[D>>2]&16383|(h<<14)+2147467264}else{h=u+~C|0;if((((h|0)>-1?h:-h|0)|0)>131071){ff(c[x>>2]|0,5464);L=c[A>>2]|0}else{L=B}c[A>>2]=L&16383|(h<<14)+2147467264}if((H|0)==-1){break}else{C=H}}}H=c[g>>2]|0;if((H|0)==-1){c[g>>2]=-1;c[l>>2]=-1;p=d+8|0;q=p;c[q>>2]=e;c[f>>2]=12;return}C=b|0;L=b+12|0;b=e<<6;x=b&16320;if((e|0)==255){u=H;while(1){E=c[(c[C>>2]|0)+12>>2]|0;K=E+(u<<2)|0;I=c[K>>2]|0;z=(I>>>14)-131071|0;if((z|0)==-1){M=-1}else{M=u+1+z|0}if((u|0)>0){z=E+(u-1<<2)|0;E=c[z>>2]|0;if((a[992+(E&63)|0]|0)<0){N=z;O=E}else{r=1068}}else{r=1068}if((r|0)==1068){r=0;N=K;O=I}if((O&63|0)==27){c[N>>2]=O&8372224|O>>>23<<6|26;E=(c[(c[C>>2]|0)+12>>2]|0)+(u<<2)|0;z=G+~u|0;if((((z|0)>-1?z:-z|0)|0)>131071){ff(c[L>>2]|0,5464)}c[E>>2]=c[E>>2]&16383|(z<<14)+2147467264}else{z=v+~u|0;if((((z|0)>-1?z:-z|0)|0)>131071){ff(c[L>>2]|0,5464);P=c[K>>2]|0}else{P=I}c[K>>2]=P&16383|(z<<14)+2147467264}if((M|0)==-1){break}else{u=M}}c[g>>2]=-1;c[l>>2]=-1;p=d+8|0;q=p;c[q>>2]=e;c[f>>2]=12;return}else{Q=H}while(1){H=c[(c[C>>2]|0)+12>>2]|0;M=H+(Q<<2)|0;u=c[M>>2]|0;P=(u>>>14)-131071|0;if((P|0)==-1){R=-1}else{R=Q+1+P|0}if((Q|0)>0){P=H+(Q-1<<2)|0;H=c[P>>2]|0;if((a[992+(H&63)|0]|0)<0){S=P;T=H}else{r=1081}}else{r=1081}if((r|0)==1081){r=0;S=M;T=u}if((T&63|0)==27){if((T>>>23|0)==(e|0)){U=T&8372224|b|26}else{U=T&-16321|x}c[S>>2]=U;H=(c[(c[C>>2]|0)+12>>2]|0)+(Q<<2)|0;P=G+~Q|0;if((((P|0)>-1?P:-P|0)|0)>131071){ff(c[L>>2]|0,5464)}c[H>>2]=c[H>>2]&16383|(P<<14)+2147467264}else{P=v+~Q|0;if((((P|0)>-1?P:-P|0)|0)>131071){ff(c[L>>2]|0,5464);V=c[M>>2]|0}else{V=u}c[M>>2]=V&16383|(P<<14)+2147467264}if((R|0)==-1){break}else{Q=R}}c[g>>2]=-1;c[l>>2]=-1;p=d+8|0;q=p;c[q>>2]=e;c[f>>2]=12;return}function d0(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;dZ(a,b);do{if((c[b>>2]|0)==12){e=b+8|0;f=c[e>>2]|0;if((c[b+16>>2]|0)==(c[b+20>>2]|0)){g=f;return g|0}if((f|0)<(d[a+50|0]|0|0)){h=e;break}d$(a,b,f);g=c[e>>2]|0;return g|0}else{h=b+8|0}}while(0);d_(a,b);g=c[h>>2]|0;return g|0}function d1(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=b+16|0;f=b+20|0;if((c[e>>2]|0)==(c[f>>2]|0)){dZ(a,b);return}dZ(a,b);do{if((c[b>>2]|0)==12){g=c[b+8>>2]|0;if((c[e>>2]|0)==(c[f>>2]|0)){return}if((g|0)<(d[a+50|0]|0|0)){break}d$(a,b,g);return}}while(0);d_(a,b);return}function d2(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;i=i+64|0;f=e|0;g=e+16|0;j=e+32|0;k=e+48|0;l=b+16|0;m=b+20|0;n=(c[l>>2]|0)==(c[m>>2]|0);dZ(a,b);o=b|0;L1403:do{if(!n){do{if((c[o>>2]|0)==12){p=c[b+8>>2]|0;if((c[l>>2]|0)==(c[m>>2]|0)){break L1403}if((p|0)<(d[a+50|0]|0|0)){break}d$(a,b,p);break L1403}}while(0);d_(a,b)}}while(0);n=c[o>>2]|0;L1411:do{switch(n|0){case 5:case 2:case 3:case 1:{if((c[a+40>>2]|0)>=256){break L1411}if((n|0)==5){h[g>>3]=+h[b+8>>3];c[g+8>>2]=3;q=dV(a,g,g)|0}else if((n|0)==1){c[k+8>>2]=0;c[j>>2]=c[a+4>>2];c[j+8>>2]=5;q=dV(a,j,k)|0}else{c[f>>2]=(n|0)==2;c[f+8>>2]=1;q=dV(a,f,f)|0}c[b+8>>2]=q;c[o>>2]=4;r=q|256;i=e;return r|0};case 4:{p=c[b+8>>2]|0;if((p|0)>=256){break L1411}r=p|256;i=e;return r|0};default:{}}}while(0);dZ(a,b);do{if((c[o>>2]|0)==12){q=b+8|0;f=c[q>>2]|0;if((c[l>>2]|0)==(c[m>>2]|0)){r=f;i=e;return r|0}if((f|0)<(d[a+50|0]|0|0)){s=q;break}d$(a,b,f);r=c[q>>2]|0;i=e;return r|0}else{s=b+8|0}}while(0);d_(a,b);r=c[s>>2]|0;i=e;return r|0}function d3(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[b>>2]|0;if((f|0)==6){do{if((c[e>>2]|0)==12){g=c[e+8>>2]|0;if((g&256|0)!=0){break}if((d[a+50|0]|0|0)>(g|0)){break}g=a+36|0;c[g>>2]=(c[g>>2]|0)-1}}while(0);d$(a,e,c[b+8>>2]|0);return}else if((f|0)==7){dZ(a,e);do{if((c[e>>2]|0)==12){g=e+8|0;h=c[g>>2]|0;if((c[e+16>>2]|0)==(c[e+20>>2]|0)){i=h;break}if((h|0)<(d[a+50|0]|0|0)){j=g;k=1158;break}d$(a,e,h);i=c[g>>2]|0}else{j=e+8|0;k=1158}}while(0);if((k|0)==1158){d_(a,e);i=c[j>>2]|0}ec(a,i<<6|c[b+8>>2]<<23|8,c[(c[a+12>>2]|0)+8>>2]|0)|0}else if((f|0)==9){i=d2(a,e)|0;j=b+8|0;ec(a,i<<14|c[j>>2]<<6|c[j+4>>2]<<23|9,c[(c[a+12>>2]|0)+8>>2]|0)|0}else if((f|0)==8){dZ(a,e);do{if((c[e>>2]|0)==12){f=e+8|0;j=c[f>>2]|0;if((c[e+16>>2]|0)==(c[e+20>>2]|0)){l=j;break}if((j|0)<(d[a+50|0]|0|0)){m=f;k=1165;break}d$(a,e,j);l=c[f>>2]|0}else{m=e+8|0;k=1165}}while(0);if((k|0)==1165){d_(a,e);l=c[m>>2]|0}ec(a,l<<6|c[b+8>>2]<<14|7,c[(c[a+12>>2]|0)+8>>2]|0)|0}if((c[e>>2]|0)!=12){return}b=c[e+8>>2]|0;if((b&256|0)!=0){return}if((d[a+50|0]|0|0)>(b|0)){return}b=a+36|0;c[b>>2]=(c[b>>2]|0)-1;return}function d4(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;dZ(b,e);g=e|0;do{if((c[g>>2]|0)==12){h=c[e+8>>2]|0;if((c[e+16>>2]|0)==(c[e+20>>2]|0)){break}if((h|0)<(d[b+50|0]|0|0)){i=1182;break}d$(b,e,h)}else{i=1182}}while(0);if((i|0)==1182){d_(b,e)}do{if((c[g>>2]|0)==12){i=c[e+8>>2]|0;if((i&256|0)!=0){break}if((d[b+50|0]|0|0)>(i|0)){break}i=b+36|0;c[i>>2]=(c[i>>2]|0)-1}}while(0);i=b+36|0;h=c[i>>2]|0;j=h+2|0;k=b|0;l=c[k>>2]|0;if((j|0)>(d[l+75|0]|0|0)){if((j|0)>249){ff(c[b+12>>2]|0,5128);m=c[k>>2]|0}else{m=l}a[m+75|0]=j&255;n=c[i>>2]|0}else{n=h}c[i>>2]=n+2;n=e+8|0;e=c[n>>2]|0;j=h<<6|e<<23|(d2(b,f)|0)<<14|11;ec(b,j,c[(c[b+12>>2]|0)+8>>2]|0)|0;if((c[f>>2]|0)!=12){c[n>>2]=h;c[g>>2]=12;return}j=c[f+8>>2]|0;if((j&256|0)!=0){c[n>>2]=h;c[g>>2]=12;return}if((d[b+50|0]|0|0)>(j|0)){c[n>>2]=h;c[g>>2]=12;return}c[i>>2]=(c[i>>2]|0)-1;c[n>>2]=h;c[g>>2]=12;return}function d5(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;dZ(b,e);f=e|0;g=c[f>>2]|0;L1503:do{if((g|0)==10){h=c[(c[b>>2]|0)+12>>2]|0;i=e+8|0;j=c[i>>2]|0;k=h+(j<<2)|0;if((j|0)>0){l=h+(j-1<<2)|0;j=c[l>>2]|0;if((a[992+(j&63)|0]|0)<0){m=l;n=j}else{o=1203}}else{o=1203}if((o|0)==1203){m=k;n=c[k>>2]|0}c[m>>2]=((n&16320|0)==0)<<6|n&-16321;p=c[i>>2]|0;o=1217}else if(!((g|0)==4|(g|0)==5|(g|0)==2)){i=e+8|0;do{if((g|0)==11){k=c[(c[(c[b>>2]|0)+12>>2]|0)+(c[i>>2]<<2)>>2]|0;if((k&63|0)!=19){o=1208;break}j=b+24|0;c[j>>2]=(c[j>>2]|0)-1;p=ee(b,26,k>>>23,0,1)|0;o=1217;break L1503}else if((g|0)==12){o=1213}else{o=1208}}while(0);if((o|0)==1208){k=b+36|0;j=c[k>>2]|0;l=j+1|0;h=b|0;q=c[h>>2]|0;if((l|0)>(d[q+75|0]|0)){if((l|0)>249){ff(c[b+12>>2]|0,5128);r=c[h>>2]|0}else{r=q}a[r+75|0]=l&255;s=c[k>>2]|0}else{s=j}c[k>>2]=s+1;ek(b,e,s);if((c[f>>2]|0)==12){o=1213}}do{if((o|0)==1213){k=c[i>>2]|0;if((k&256|0)!=0){break}if((d[b+50|0]|0)>(k|0)){break}k=b+36|0;c[k>>2]=(c[k>>2]|0)-1}}while(0);p=ee(b,27,255,c[i>>2]|0,0)|0;o=1217}}while(0);do{if((o|0)==1217){f=e+20|0;if((p|0)==-1){break}s=c[f>>2]|0;if((s|0)==-1){c[f>>2]=p;break}f=c[(c[b>>2]|0)+12>>2]|0;r=s;while(1){t=f+(r<<2)|0;u=c[t>>2]|0;s=(u>>>14)-131071|0;if((s|0)==-1){break}g=r+1+s|0;if((g|0)==-1){break}else{r=g}}f=p+~r|0;if((((f|0)>-1?f:-f|0)|0)>131071){ff(c[b+12>>2]|0,5464);v=c[t>>2]|0}else{v=u}c[t>>2]=v&16383|(f<<14)+2147467264}}while(0);v=e+16|0;e=c[v>>2]|0;c[b+28>>2]=c[b+24>>2];t=b+32|0;if((e|0)==-1){c[v>>2]=-1;return}u=c[t>>2]|0;if((u|0)==-1){c[t>>2]=e;c[v>>2]=-1;return}t=c[(c[b>>2]|0)+12>>2]|0;p=u;while(1){w=t+(p<<2)|0;x=c[w>>2]|0;u=(x>>>14)-131071|0;if((u|0)==-1){break}o=p+1+u|0;if((o|0)==-1){break}else{p=o}}t=e+~p|0;if((((t|0)>-1?t:-t|0)|0)>131071){ff(c[b+12>>2]|0,5464);y=c[w>>2]|0}else{y=x}c[w>>2]=y&16383|(t<<14)+2147467264;c[v>>2]=-1;return}function d6(a,b,d){a=a|0;b=b|0;d=d|0;c[b+12>>2]=d2(a,d)|0;c[b>>2]=9;return}function d7(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=i;i=i+24|0;j=g|0;c[j+20>>2]=-1;c[j+16>>2]=-1;c[j>>2]=5;h[j+8>>3]=0.0;if((e|0)==0){k=f|0;do{if((c[k>>2]|0)==5){if((c[f+16>>2]|0)!=-1){l=1244;break}if((c[f+20>>2]|0)!=-1){l=1244}}else{l=1244}}while(0);L1563:do{if((l|0)==1244){dZ(b,f);do{if((c[k>>2]|0)==12){m=c[f+8>>2]|0;if((c[f+16>>2]|0)==(c[f+20>>2]|0)){break L1563}if((m|0)<(d[b+50|0]|0)){break}d$(b,f,m);break L1563}}while(0);d_(b,f)}}while(0);d8(b,18,f,j);i=g;return}else if((e|0)==2){dZ(b,f);do{if((c[f>>2]|0)==12){k=c[f+8>>2]|0;if((c[f+16>>2]|0)==(c[f+20>>2]|0)){break}if((k|0)<(d[b+50|0]|0)){l=1290;break}d$(b,f,k)}else{l=1290}}while(0);if((l|0)==1290){d_(b,f)}d8(b,20,f,j);i=g;return}else if((e|0)==1){dZ(b,f);e=f|0;L1583:do{switch(c[e>>2]|0){case 1:case 3:{c[e>>2]=2;break};case 4:case 5:case 2:{c[e>>2]=3;break};case 10:{j=c[(c[b>>2]|0)+12>>2]|0;k=c[f+8>>2]|0;m=j+(k<<2)|0;if((k|0)>0){n=j+(k-1<<2)|0;k=c[n>>2]|0;if((a[992+(k&63)|0]|0)<0){o=n;p=k}else{l=1255}}else{l=1255}if((l|0)==1255){o=m;p=c[m>>2]|0}c[o>>2]=((p&16320|0)==0)<<6|p&-16321;break};case 11:{m=b+36|0;k=c[m>>2]|0;n=k+1|0;j=b|0;q=c[j>>2]|0;if((n|0)>(d[q+75|0]|0)){if((n|0)>249){ff(c[b+12>>2]|0,5128);r=c[j>>2]|0}else{r=q}a[r+75|0]=n&255;s=c[m>>2]|0}else{s=k}c[m>>2]=s+1;ek(b,f,s);if((c[e>>2]|0)==12){l=1263;break L1583}t=f+8|0;l=1266;break};case 12:{l=1263;break};default:{}}}while(0);do{if((l|0)==1263){s=f+8|0;r=c[s>>2]|0;if((r&256|0)!=0){t=s;l=1266;break}if((d[b+50|0]|0)>(r|0)){t=s;l=1266;break}r=b+36|0;c[r>>2]=(c[r>>2]|0)-1;t=s;l=1266}}while(0);if((l|0)==1266){c[t>>2]=ec(b,c[t>>2]<<23|19,c[(c[b+12>>2]|0)+8>>2]|0)|0;c[e>>2]=11}e=f+20|0;t=c[e>>2]|0;s=f+16|0;f=c[s>>2]|0;c[e>>2]=f;c[s>>2]=t;if((f|0)==-1){u=t}else{t=b|0;e=f;f=c[(c[t>>2]|0)+12>>2]|0;while(1){r=f+(e<<2)|0;if((e|0)>0){p=f+(e-1<<2)|0;o=c[p>>2]|0;if((a[992+(o&63)|0]|0)<0){v=p;w=o}else{l=1271}}else{l=1271}if((l|0)==1271){l=0;v=r;w=c[r>>2]|0}if((w&63|0)==27){c[v>>2]=w&8372224|w>>>23<<6|26;x=c[(c[t>>2]|0)+12>>2]|0}else{x=f}r=((c[x+(e<<2)>>2]|0)>>>14)-131071|0;if((r|0)==-1){break}o=e+1+r|0;if((o|0)==-1){break}else{e=o;f=x}}u=c[s>>2]|0}if((u|0)==-1){i=g;return}s=b|0;b=u;u=c[(c[s>>2]|0)+12>>2]|0;while(1){x=u+(b<<2)|0;if((b|0)>0){f=u+(b-1<<2)|0;e=c[f>>2]|0;if((a[992+(e&63)|0]|0)<0){y=f;z=e}else{l=1281}}else{l=1281}if((l|0)==1281){l=0;y=x;z=c[x>>2]|0}if((z&63|0)==27){c[y>>2]=z&8372224|z>>>23<<6|26;A=c[(c[s>>2]|0)+12>>2]|0}else{A=u}x=((c[A+(b<<2)>>2]|0)>>>14)-131071|0;if((x|0)==-1){l=1297;break}e=b+1+x|0;if((e|0)==-1){l=1298;break}else{b=e;u=A}}if((l|0)==1297){i=g;return}else if((l|0)==1298){i=g;return}}else{i=g;return}}function d8(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0,o=0.0;g=e|0;L1640:do{if((c[g>>2]|0)==5){if((c[e+16>>2]|0)!=-1){i=1317;break}if((c[e+20>>2]|0)!=-1){i=1317;break}if((c[f>>2]|0)!=5){i=1317;break}if((c[f+16>>2]|0)!=-1){i=1317;break}if((c[f+20>>2]|0)!=-1){i=1317;break}j=e+8|0;k=+h[j>>3];l=+h[f+8>>3];switch(b|0){case 12:{m=k+l;i=1315;break};case 16:{if(l==0.0){i=1318;break L1640}m=k-l*+O(+(k/l));i=1315;break};case 18:{m=-0.0-k;i=1315;break};case 13:{m=k-l;i=1315;break};case 15:{if(l==0.0){i=1318;break L1640}m=k/l;i=1315;break};case 14:{m=k*l;i=1315;break};case 20:{n=0;break L1640;break};case 17:{m=+R(+k,+l);i=1315;break};default:{o=0.0}}if((i|0)==1315){if(m==m&!(D=0.0,D!=D)){o=m}else{i=1317;break}}h[j>>3]=o;return}else{i=1317}}while(0);if((i|0)==1317){if((b|0)==20|(b|0)==18){n=0}else{i=1318}}if((i|0)==1318){n=d2(a,f)|0}i=d2(a,e)|0;do{if((i|0)>(n|0)){do{if((c[g>>2]|0)==12){j=c[e+8>>2]|0;if((j&256|0)!=0){break}if((d[a+50|0]|0|0)>(j|0)){break}j=a+36|0;c[j>>2]=(c[j>>2]|0)-1}}while(0);if((c[f>>2]|0)!=12){break}j=c[f+8>>2]|0;if((j&256|0)!=0){break}if((d[a+50|0]|0|0)>(j|0)){break}j=a+36|0;c[j>>2]=(c[j>>2]|0)-1}else{do{if((c[f>>2]|0)==12){j=c[f+8>>2]|0;if((j&256|0)!=0){break}if((d[a+50|0]|0|0)>(j|0)){break}j=a+36|0;c[j>>2]=(c[j>>2]|0)-1}}while(0);if((c[g>>2]|0)!=12){break}j=c[e+8>>2]|0;if((j&256|0)!=0){break}if((d[a+50|0]|0|0)>(j|0)){break}j=a+36|0;c[j>>2]=(c[j>>2]|0)-1}}while(0);c[e+8>>2]=ec(a,n<<14|b|i<<23,c[(c[a+12>>2]|0)+8>>2]|0)|0;c[g>>2]=11;return}function d9(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;switch(e|0){case 13:{d5(b,f);return};case 14:{dZ(b,f);e=f|0;g=c[e>>2]|0;L1692:do{if((g|0)==10){h=c[f+8>>2]|0;i=1357}else if(!((g|0)==1|(g|0)==3)){j=f+8|0;do{if((g|0)==11){k=c[b>>2]|0;l=c[(c[k+12>>2]|0)+(c[j>>2]<<2)>>2]|0;if((l&63|0)!=19){m=k;i=1348;break}k=b+24|0;c[k>>2]=(c[k>>2]|0)-1;h=ee(b,26,l>>>23,0,0)|0;i=1357;break L1692}else if((g|0)==12){i=1353}else{m=c[b>>2]|0;i=1348}}while(0);if((i|0)==1348){l=b+36|0;k=c[l>>2]|0;n=k+1|0;o=b|0;if((n|0)>(d[m+75|0]|0|0)){if((n|0)>249){ff(c[b+12>>2]|0,5128);p=c[o>>2]|0}else{p=m}a[p+75|0]=n&255;q=c[l>>2]|0}else{q=k}c[l>>2]=q+1;ek(b,f,q);if((c[e>>2]|0)==12){i=1353}}do{if((i|0)==1353){l=c[j>>2]|0;if((l&256|0)!=0){break}if((d[b+50|0]|0|0)>(l|0)){break}l=b+36|0;c[l>>2]=(c[l>>2]|0)-1}}while(0);h=ee(b,27,255,c[j>>2]|0,1)|0;i=1357}}while(0);do{if((i|0)==1357){e=f+16|0;if((h|0)==-1){break}q=c[e>>2]|0;if((q|0)==-1){c[e>>2]=h;break}e=c[(c[b>>2]|0)+12>>2]|0;p=q;while(1){r=e+(p<<2)|0;s=c[r>>2]|0;q=(s>>>14)-131071|0;if((q|0)==-1){break}m=p+1+q|0;if((m|0)==-1){break}else{p=m}}e=h+~p|0;if((((e|0)>-1?e:-e|0)|0)>131071){ff(c[b+12>>2]|0,5464);t=c[r>>2]|0}else{t=s}c[r>>2]=t&16383|(e<<14)+2147467264}}while(0);t=f+20|0;r=c[t>>2]|0;c[b+28>>2]=c[b+24>>2];s=b+32|0;do{if((r|0)!=-1){h=c[s>>2]|0;if((h|0)==-1){c[s>>2]=r;break}i=c[(c[b>>2]|0)+12>>2]|0;e=h;while(1){u=i+(e<<2)|0;v=c[u>>2]|0;h=(v>>>14)-131071|0;if((h|0)==-1){break}j=e+1+h|0;if((j|0)==-1){break}else{e=j}}i=r+~e|0;if((((i|0)>-1?i:-i|0)|0)>131071){ff(c[b+12>>2]|0,5464);w=c[u>>2]|0}else{w=v}c[u>>2]=w&16383|(i<<14)+2147467264}}while(0);c[t>>2]=-1;return};case 6:{d_(b,f);return};case 0:case 1:case 2:case 3:case 4:case 5:{do{if((c[f>>2]|0)==5){if((c[f+16>>2]|0)!=-1){break}if((c[f+20>>2]|0)!=-1){break}return}}while(0);d2(b,f)|0;return};default:{d2(b,f)|0;return}}}function ea(a,b){a=a|0;b=b|0;c[(c[(c[a>>2]|0)+20>>2]|0)+((c[a+24>>2]|0)-1<<2)>>2]=b;return}function eb(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;switch(b|0){case 13:{dZ(a,f);b=f+20|0;g=c[e+20>>2]|0;do{if((g|0)!=-1){h=c[b>>2]|0;if((h|0)==-1){c[b>>2]=g;break}i=c[(c[a>>2]|0)+12>>2]|0;j=h;while(1){k=i+(j<<2)|0;l=c[k>>2]|0;h=(l>>>14)-131071|0;if((h|0)==-1){break}m=j+1+h|0;if((m|0)==-1){break}else{j=m}}i=g+~j|0;if((((i|0)>-1?i:-i|0)|0)>131071){ff(c[a+12>>2]|0,5464);n=c[k>>2]|0}else{n=l}c[k>>2]=n&16383|(i<<14)+2147467264}}while(0);n=e;k=f;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[n+16>>2]=c[k+16>>2];c[n+20>>2]=c[k+20>>2];return};case 10:{k=d2(a,e)|0;n=d2(a,f)|0;do{if((c[f>>2]|0)==12){l=c[f+8>>2]|0;if((l&256|0)!=0){break}if((d[a+50|0]|0|0)>(l|0)){break}l=a+36|0;c[l>>2]=(c[l>>2]|0)-1}}while(0);l=e|0;g=e+8|0;do{if((c[l>>2]|0)==12){b=c[g>>2]|0;if((b&256|0)!=0){break}if((d[a+50|0]|0|0)>(b|0)){break}b=a+36|0;c[b>>2]=(c[b>>2]|0)-1}}while(0);c[g>>2]=ee(a,25,1,k,n)|0;c[l>>2]=10;return};case 9:{l=d2(a,e)|0;n=d2(a,f)|0;do{if((c[f>>2]|0)==12){k=c[f+8>>2]|0;if((k&256|0)!=0){break}if((d[a+50|0]|0|0)>(k|0)){break}k=a+36|0;c[k>>2]=(c[k>>2]|0)-1}}while(0);k=e|0;g=e+8|0;do{if((c[k>>2]|0)==12){b=c[g>>2]|0;if((b&256|0)!=0){break}if((d[a+50|0]|0|0)>(b|0)){break}b=a+36|0;c[b>>2]=(c[b>>2]|0)-1}}while(0);c[g>>2]=ee(a,24,1,l,n)|0;c[k>>2]=10;return};case 11:{k=d2(a,e)|0;n=d2(a,f)|0;do{if((c[f>>2]|0)==12){l=c[f+8>>2]|0;if((l&256|0)!=0){break}if((d[a+50|0]|0|0)>(l|0)){break}l=a+36|0;c[l>>2]=(c[l>>2]|0)-1}}while(0);l=e|0;g=e+8|0;do{if((c[l>>2]|0)==12){b=c[g>>2]|0;if((b&256|0)!=0){break}if((d[a+50|0]|0|0)>(b|0)){break}b=a+36|0;c[b>>2]=(c[b>>2]|0)-1}}while(0);c[g>>2]=ee(a,24,1,n,k)|0;c[l>>2]=10;return};case 14:{dZ(a,f);l=f+16|0;k=c[e+16>>2]|0;do{if((k|0)!=-1){n=c[l>>2]|0;if((n|0)==-1){c[l>>2]=k;break}g=c[(c[a>>2]|0)+12>>2]|0;b=n;while(1){o=g+(b<<2)|0;p=c[o>>2]|0;n=(p>>>14)-131071|0;if((n|0)==-1){break}i=b+1+n|0;if((i|0)==-1){break}else{b=i}}g=k+~b|0;if((((g|0)>-1?g:-g|0)|0)>131071){ff(c[a+12>>2]|0,5464);q=c[o>>2]|0}else{q=p}c[o>>2]=q&16383|(g<<14)+2147467264}}while(0);q=e;o=f;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];return};case 6:{o=f+16|0;q=f+20|0;p=(c[o>>2]|0)==(c[q>>2]|0);dZ(a,f);k=f|0;L1821:do{if(!p){do{if((c[k>>2]|0)==12){l=c[f+8>>2]|0;if((c[o>>2]|0)==(c[q>>2]|0)){break L1821}if((l|0)<(d[a+50|0]|0|0)){break}d$(a,f,l);break L1821}}while(0);d_(a,f)}}while(0);do{if((c[k>>2]|0)==11){q=f+8|0;o=c[q>>2]|0;p=(c[a>>2]|0)+12|0;b=c[p>>2]|0;l=c[b+(o<<2)>>2]|0;if((l&63|0)!=21){break}g=e|0;j=e+8|0;do{if((c[g>>2]|0)==12){i=c[j>>2]|0;if((i&256|0)!=0){r=o;s=b;t=l;break}if((d[a+50|0]|0|0)>(i|0)){r=o;s=b;t=l;break}i=a+36|0;c[i>>2]=(c[i>>2]|0)-1;i=c[q>>2]|0;n=c[p>>2]|0;r=i;s=n;t=c[n+(i<<2)>>2]|0}else{r=o;s=b;t=l}}while(0);c[s+(r<<2)>>2]=c[j>>2]<<23|t&8388607;c[g>>2]=11;c[j>>2]=c[q>>2];return}}while(0);d_(a,f);d8(a,21,e,f);return};case 0:{d8(a,12,e,f);return};case 1:{d8(a,13,e,f);return};case 2:{d8(a,14,e,f);return};case 3:{d8(a,15,e,f);return};case 4:{d8(a,16,e,f);return};case 5:{d8(a,17,e,f);return};case 8:{t=d2(a,e)|0;r=d2(a,f)|0;do{if((c[f>>2]|0)==12){s=c[f+8>>2]|0;if((s&256|0)!=0){break}if((d[a+50|0]|0|0)>(s|0)){break}s=a+36|0;c[s>>2]=(c[s>>2]|0)-1}}while(0);s=e|0;k=e+8|0;do{if((c[s>>2]|0)==12){l=c[k>>2]|0;if((l&256|0)!=0){break}if((d[a+50|0]|0|0)>(l|0)){break}l=a+36|0;c[l>>2]=(c[l>>2]|0)-1}}while(0);c[k>>2]=ee(a,23,1,t,r)|0;c[s>>2]=10;return};case 7:{s=d2(a,e)|0;r=d2(a,f)|0;do{if((c[f>>2]|0)==12){t=c[f+8>>2]|0;if((t&256|0)!=0){break}if((d[a+50|0]|0|0)>(t|0)){break}t=a+36|0;c[t>>2]=(c[t>>2]|0)-1}}while(0);t=e|0;k=e+8|0;do{if((c[t>>2]|0)==12){l=c[k>>2]|0;if((l&256|0)!=0){break}if((d[a+50|0]|0|0)>(l|0)){break}l=a+36|0;c[l>>2]=(c[l>>2]|0)-1}}while(0);c[k>>2]=ee(a,23,0,s,r)|0;c[t>>2]=10;return};case 12:{t=d2(a,e)|0;r=d2(a,f)|0;do{if((c[f>>2]|0)==12){s=c[f+8>>2]|0;if((s&256|0)!=0){break}if((d[a+50|0]|0|0)>(s|0)){break}s=a+36|0;c[s>>2]=(c[s>>2]|0)-1}}while(0);f=e|0;s=e+8|0;do{if((c[f>>2]|0)==12){e=c[s>>2]|0;if((e&256|0)!=0){break}if((d[a+50|0]|0|0)>(e|0)){break}e=a+36|0;c[e>>2]=(c[e>>2]|0)-1}}while(0);c[s>>2]=ee(a,25,1,r,t)|0;c[f>>2]=10;return};default:{return}}}function ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=b|0;g=c[f>>2]|0;h=b+32|0;i=c[h>>2]|0;j=b+24|0;k=c[j>>2]|0;if((i|0)==-1){l=k}else{m=b+12|0;n=i;i=g;while(1){o=c[i+12>>2]|0;p=o+(n<<2)|0;q=c[p>>2]|0;r=(q>>>14)-131071|0;if((r|0)==-1){s=-1}else{s=n+1+r|0}if((n|0)>0){r=o+(n-1<<2)|0;o=c[r>>2]|0;if((a[992+(o&63)|0]|0)<0){t=r;u=o}else{v=1509}}else{v=1509}if((v|0)==1509){v=0;t=p;u=q}if((u&63|0)==27){c[t>>2]=u&8372224|u>>>23<<6|26;o=(c[(c[f>>2]|0)+12>>2]|0)+(n<<2)|0;r=k+~n|0;if((((r|0)>-1?r:-r|0)|0)>131071){ff(c[m>>2]|0,5464)}c[o>>2]=c[o>>2]&16383|(r<<14)+2147467264}else{r=k+~n|0;if((((r|0)>-1?r:-r|0)|0)>131071){ff(c[m>>2]|0,5464);w=c[p>>2]|0}else{w=q}c[p>>2]=w&16383|(r<<14)+2147467264}if((s|0)==-1){break}n=s;i=c[f>>2]|0}l=c[j>>2]|0}c[h>>2]=-1;h=g+44|0;if((l+1|0)>(c[h>>2]|0)){f=g+12|0;i=ft(c[b+16>>2]|0,c[f>>2]|0,h,4,2147483645,9304)|0;c[f>>2]=i;x=c[j>>2]|0;y=i}else{x=l;y=c[g+12>>2]|0}c[y+(x<<2)>>2]=d;d=c[j>>2]|0;x=g+48|0;if((d+1|0)>(c[x>>2]|0)){y=g+20|0;l=ft(c[b+16>>2]|0,c[y>>2]|0,x,4,2147483645,9304)|0;c[y>>2]=l;z=c[j>>2]|0;A=l;B=A+(z<<2)|0;c[B>>2]=e;C=c[j>>2]|0;D=C+1|0;c[j>>2]=D;return C|0}else{z=d;A=c[g+20>>2]|0;B=A+(z<<2)|0;c[B>>2]=e;C=c[j>>2]|0;D=C+1|0;c[j>>2]=D;return C|0}return 0}function ed(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=((d-1|0)/50|0)+1|0;d=b<<6|((e|0)==-1?0:e<<23)|34;if((f|0)<512){e=f<<14|d;g=c[(c[a+12>>2]|0)+8>>2]|0;ec(a,e,g)|0;h=b+1|0;i=a+36|0;c[i>>2]=h;return}else{g=a+12|0;e=c[(c[g>>2]|0)+8>>2]|0;ec(a,d,e)|0;e=c[(c[g>>2]|0)+8>>2]|0;ec(a,f,e)|0;h=b+1|0;i=a+36|0;c[i>>2]=h;return}}function ee(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=a+12|0;ec(a,d<<6|b|e<<23|f<<14,c[(c[g>>2]|0)+8>>2]|0)|0;f=a+32|0;e=c[f>>2]|0;c[f>>2]=-1;f=ec(a,2147450902,c[(c[g>>2]|0)+8>>2]|0)|0;if((e|0)==-1){h=f;return h|0}if((f|0)==-1){h=e;return h|0}b=c[(c[a>>2]|0)+12>>2]|0;a=f;while(1){i=b+(a<<2)|0;j=c[i>>2]|0;d=(j>>>14)-131071|0;if((d|0)==-1){break}k=a+1+d|0;if((k|0)==-1){break}else{a=k}}b=e+~a|0;if((((b|0)>-1?b:-b|0)|0)>131071){ff(c[g>>2]|0,5464);l=c[i>>2]|0}else{l=j}c[i>>2]=l&16383|(b<<14)+2147467264;h=f;return h|0}function ef(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if((d|0)==0){g=1549}else{if((e|0)==0){g=1549}else{h=d;i=e&255}}if((g|0)==1549){h=0;i=0}c[b+68>>2]=h;c[b+60>>2]=f;c[b+64>>2]=f;a[b+56|0]=i;return 1}function eg(a){a=a|0;return c[a+68>>2]|0}function eh(a){a=a|0;return d[a+56|0]|0|0}function ei(a){a=a|0;return c[a+60>>2]|0}function ej(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[b+20>>2]|0;L1955:do{if((d|0)>0){g=c[b+40>>2]|0;h=d;i=f;while(1){if(i>>>0<=g>>>0){j=0;break}k=h-1|0;if((a[(c[c[i+4>>2]>>2]|0)+6|0]|0)==0){l=k-(c[i+20>>2]|0)|0}else{l=k}k=i-24|0;if((l|0)>0){h=l;i=k}else{m=l;n=k;break L1955}}return j|0}else{m=d;n=f}}while(0);if((m|0)!=0){c[e+96>>2]=0;j=1;return j|0}m=c[b+40>>2]|0;if(n>>>0<=m>>>0){j=0;return j|0}c[e+96>>2]=(n-m|0)/24|0;j=1;return j|0}function ek(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+16|0;g=f|0;dZ(a,b);j=b|0;k=c[j>>2]|0;L1974:do{switch(k|0){case 1:{l=c[a+24>>2]|0;do{if((l|0)>(c[a+28>>2]|0)){if((l|0)==0){if((d[a+50|0]|0|0)>(e|0)){break}else{break L1974}}m=(c[(c[a>>2]|0)+12>>2]|0)+(l-1<<2)|0;n=c[m>>2]|0;if((n&63|0)!=3){break}o=n>>>23;if((n>>>6&255|0)>(e|0)){break}if((o+1|0)<(e|0)){break}if((o|0)>=(e|0)){break L1974}c[m>>2]=n&8388607|e<<23;break L1974}}while(0);ec(a,e<<23|e<<6|3,c[(c[a+12>>2]|0)+8>>2]|0)|0;break};case 5:{h[g>>3]=+h[b+8>>3];c[g+8>>2]=3;ec(a,e<<6|(dV(a,g,g)|0)<<14|1,c[(c[a+12>>2]|0)+8>>2]|0)|0;break};case 4:{ec(a,e<<6|c[b+8>>2]<<14|1,c[(c[a+12>>2]|0)+8>>2]|0)|0;break};case 11:{l=(c[(c[a>>2]|0)+12>>2]|0)+(c[b+8>>2]<<2)|0;c[l>>2]=c[l>>2]&-16321|e<<6&16320;break};case 12:{l=c[b+8>>2]|0;if((l|0)==(e|0)){break L1974}ec(a,l<<23|e<<6,c[(c[a+12>>2]|0)+8>>2]|0)|0;break};case 3:case 2:{ec(a,e<<6|((k|0)==2)<<23|2,c[(c[a+12>>2]|0)+8>>2]|0)|0;break};default:{i=f;return}}}while(0);c[b+8>>2]=e;c[j>>2]=12;i=f;return}function el(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=c[b+40>>2]|0;g=c[d+96>>2]|0;d=f+(g*24|0)|0;h=c[f+(g*24|0)+4>>2]|0;do{if((c[h+8>>2]|0)==6){i=h;j=c[i>>2]|0;if((a[j+6|0]|0)!=0){k=1597;break}l=c[j+16>>2]|0;if((l|0)==0){k=1597;break}if((c[b+20>>2]|0)==(d|0)){j=c[b+24>>2]|0;c[f+(g*24|0)+12>>2]=j;m=j;n=c[(c[i>>2]|0)+16>>2]|0}else{m=c[f+(g*24|0)+12>>2]|0;n=l}i=eT(l,e,(m-(c[n+12>>2]|0)>>2)-1|0)|0;if((i|0)==0){k=1597;break}o=i;p=c[d>>2]|0}else{k=1597}}while(0);do{if((k|0)==1597){n=c[d>>2]|0;m=((c[((c[b+20>>2]|0)==(d|0)?b+8|0:f+((g+1|0)*24|0)+4|0)>>2]|0)-n>>4|0)>=(e|0)&(e|0)>0;if(m){o=m?8472:0;p=n;break}else{q=0}return q|0}}while(0);cB(b,p+(e-1<<4)|0);q=o;return q|0}function em(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=c[b+40>>2]|0;g=c[d+96>>2]|0;d=f+(g*24|0)|0;h=c[f+(g*24|0)+4>>2]|0;do{if((c[h+8>>2]|0)==6){i=h;j=c[i>>2]|0;if((a[j+6|0]|0)!=0){k=1610;break}l=c[j+16>>2]|0;if((l|0)==0){k=1610;break}if((c[b+20>>2]|0)==(d|0)){j=c[b+24>>2]|0;c[f+(g*24|0)+12>>2]=j;m=j;n=c[(c[i>>2]|0)+16>>2]|0}else{m=c[f+(g*24|0)+12>>2]|0;n=l}i=eT(l,e,(m-(c[n+12>>2]|0)>>2)-1|0)|0;if((i|0)==0){k=1610;break}o=i;p=c[d>>2]|0;q=b+8|0}else{k=1610}}while(0);do{if((k|0)==1610){n=b+8|0;m=c[d>>2]|0;h=((c[((c[b+20>>2]|0)==(d|0)?n:f+((g+1|0)*24|0)+4|0)>>2]|0)-m>>4|0)>=(e|0)&(e|0)>0;if(h){o=h?8472:0;p=m;q=n;break}else{r=0}s=b+8|0;t=c[s>>2]|0;u=t-16|0;c[s>>2]=u;return r|0}}while(0);g=c[q>>2]|0;q=e-1|0;e=g-16|0;f=p+(q<<4)|0;d=c[e+4>>2]|0;c[f>>2]=c[e>>2];c[f+4>>2]=d;c[p+(q<<4)+8>>2]=c[g-16+8>>2];r=o;s=b+8|0;t=c[s>>2]|0;u=t-16|0;c[s>>2]=u;return r|0}function en(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;do{if((a[e]|0)==62){g=b+8|0;h=(c[g>>2]|0)-16|0;i=c[h>>2]|0;c[g>>2]=h;j=e+1|0;k=i;l=0;m=1619}else{i=c[f+96>>2]|0;if((i|0)==0){n=e;m=1622;break}h=c[b+40>>2]|0;j=e;k=c[c[h+(i*24|0)+4>>2]>>2]|0;l=h+(i*24|0)|0;m=1619}}while(0);L2030:do{if((m|0)==1619){e=k;if((k|0)==0){n=j;m=1622;break}i=a[j]|0;if(i<<24>>24==0){o=1;p=e;q=j;r=0;break}h=k+6|0;g=k+16|0;s=f+16|0;t=f+28|0;u=f+32|0;v=f+12|0;w=f+36|0;x=(l|0)==0;y=f+20|0;z=l+4|0;A=b+20|0;B=b+24|0;C=l+12|0;D=e+7|0;E=f+24|0;F=f+8|0;G=f+4|0;H=l+20|0;I=l-24|0;J=l-24+4|0;K=l-24+12|0;L=j;M=1;N=i;while(1){L2036:do{switch(N<<24>>24|0){case 110:{L2038:do{if(x){m=1649}else{i=c[z>>2]|0;do{if((c[i+8>>2]|0)==6){if((a[(c[i>>2]|0)+6|0]|0)!=0){break}if((c[H>>2]|0)>0){m=1649;break L2038}}}while(0);i=c[J>>2]|0;if((c[i+8>>2]|0)!=6){m=1649;break}O=i;i=c[O>>2]|0;if((a[i+6|0]|0)!=0){m=1649;break}if((c[A>>2]|0)==(I|0)){P=c[B>>2]|0;c[K>>2]=P;Q=c[O>>2]|0;R=P}else{Q=i;R=c[K>>2]|0}i=c[(c[Q+16>>2]|0)+12>>2]|0;P=c[i+((R-i>>2)-1<<2)>>2]|0;i=P&63;if(!((i|0)==28|(i|0)==29|(i|0)==33)){m=1649;break}i=er(b,I,P>>>6&255,G)|0;c[F>>2]=i;if((i|0)!=0){S=M;break L2036}}}while(0);if((m|0)==1649){m=0;c[F>>2]=0}c[F>>2]=10576;c[G>>2]=0;S=M;break};case 117:{c[E>>2]=d[D]|0;S=M;break};case 108:{do{if(x){T=-1}else{i=c[z>>2]|0;if((c[i+8>>2]|0)!=6){T=-1;break}P=i;i=c[P>>2]|0;if((a[i+6|0]|0)!=0){T=-1;break}if((c[A>>2]|0)==(l|0)){O=c[B>>2]|0;c[C>>2]=O;U=c[P>>2]|0;V=O}else{U=i;V=c[C>>2]|0}i=c[U+16>>2]|0;O=(V-(c[i+12>>2]|0)>>2)-1|0;if((O|0)<0){T=-1;break}P=c[i+20>>2]|0;if((P|0)==0){T=0;break}T=c[P+(O<<2)>>2]|0}}while(0);c[y>>2]=T;S=M;break};case 83:{if((a[h]|0)==0){O=(c[(c[g>>2]|0)+32>>2]|0)+16|0;c[s>>2]=O;P=c[(c[g>>2]|0)+60>>2]|0;c[t>>2]=P;c[u>>2]=c[(c[g>>2]|0)+64>>2];W=O;X=(P|0)==0?9144:9024}else{c[s>>2]=9536;c[t>>2]=-1;c[u>>2]=-1;W=9536;X=9288}c[v>>2]=X;fz(w,W,60);S=M;break};case 76:case 102:{S=M;break};default:{S=0}}}while(0);P=L+1|0;O=a[P]|0;if(O<<24>>24==0){o=S;p=e;q=j;r=0;break L2030}else{L=P;M=S;N=O}}}}while(0);if((m|0)==1622){c[f+8>>2]=10576;c[f+4>>2]=10576;c[f+12>>2]=8864;c[f+20>>2]=-1;c[f+28>>2]=-1;c[f+32>>2]=-1;c[f+16>>2]=8648;fz(f+36|0,8648,60);c[f+24>>2]=0;o=1;p=0;q=n;r=1}if((aU(q|0,102)|0)!=0){n=b+8|0;f=c[n>>2]|0;if(r){c[f+8>>2]=0}else{c[f>>2]=p;c[f+8>>2]=6}f=c[n>>2]|0;if(((c[b+28>>2]|0)-f|0)<17){eA(b,1);Y=c[n>>2]|0}else{Y=f}c[n>>2]=Y+16}if((aU(q|0,76)|0)==0){return o|0}do{if(r){m=1664}else{if((a[p+6|0]|0)!=0){m=1664;break}q=f5(b,0,0)|0;Y=p+16|0;n=c[Y>>2]|0;f=c[n+20>>2]|0;if((c[n+48>>2]|0)>0){n=0;do{S=gc(b,q,c[f+(n<<2)>>2]|0)|0;c[S>>2]=1;c[S+8>>2]=1;n=n+1|0;}while((n|0)<(c[(c[Y>>2]|0)+48>>2]|0))}Y=c[b+8>>2]|0;c[Y>>2]=q;c[Y+8>>2]=5}}while(0);if((m|0)==1664){c[(c[b+8>>2]|0)+8>>2]=0}m=b+8|0;p=c[m>>2]|0;if(((c[b+28>>2]|0)-p|0)<17){eA(b,1);Z=c[m>>2]|0}else{Z=p}c[m>>2]=Z+16;return o|0}function eo(a){a=a|0;return(ep(a,c[a+44>>2]|0,255)|0)!=0|0}function ep(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;g=c[b+44>>2]|0;h=a[b+75|0]|0;if((h&255)>=251){i=0;return i|0}j=h&255;k=a[b+74|0]|0;l=k&255;if(((l&1)+(d[b+73|0]|0)|0)>(j|0)|(l&5|0)==4){i=0;return i|0}l=d[b+72|0]|0;if((c[b+36>>2]|0)>(l|0)){i=0;return i|0}m=c[b+48>>2]|0;if(!(((m|0)==(g|0)|(m|0)==0)&(g|0)>0)){i=0;return i|0}m=g-1|0;n=c[b+12>>2]|0;o=c[n+(m<<2)>>2]|0;if((o&63|0)!=30){i=0;return i|0}if((e|0)<=0){i=o;return i|0}o=b+8|0;p=(f|0)==255;q=b+52|0;r=b+16|0;s=b+40|0;b=m;m=0;L2124:while(1){t=c[n+(m<<2)>>2]|0;u=t&63;v=t>>>6&255;if(u>>>0>=38){i=0;w=1754;break}x=h&255;if(v>>>0>=x>>>0){i=0;w=1755;break}y=a[992+u|0]|0;z=y&255;A=z&3;do{if((A|0)==0){B=t>>>23;C=t>>>14;D=C&511;E=z>>>4&3;do{if((E|0)==0){if((B|0)!=0){i=0;w=1763;break L2124}}else if((E|0)==2){if(x>>>0<=B>>>0){i=0;w=1764;break L2124}}else if((E|0)==3){if((B&256|0)==0){if(x>>>0>B>>>0){break}else{i=0;w=1766;break L2124}}else{if((B&255|0)<(c[s>>2]|0)){break}else{i=0;w=1765;break L2124}}}}while(0);E=z>>>2&3;if((E|0)==0){if((D|0)==0){F=B;G=0;break}else{i=0;w=1767;break L2124}}else if((E|0)==2){if(j>>>0>D>>>0){F=B;G=D;break}else{i=0;w=1768;break L2124}}else if((E|0)==3){if((C&256|0)==0){if(j>>>0>D>>>0){F=B;G=D;break}else{i=0;w=1770;break L2124}}else{if((C&255|0)<(c[s>>2]|0)){F=B;G=D;break}else{i=0;w=1769;break L2124}}}else{F=B;G=D;break}}else if((A|0)==1){E=t>>>14;if((z&48|0)!=48){F=E;G=0;break}if((E|0)<(c[s>>2]|0)){F=E;G=0}else{i=0;w=1771;break L2124}}else if((A|0)==2){E=(t>>>14)-131071|0;if((z&48|0)!=32){F=E;G=0;break}H=m+1+E|0;if(!((H|0)>-1&(H|0)<(g|0))){i=0;w=1772;break L2124}if((H|0)<=0){F=E;G=0;break}I=E+m|0;J=0;while(1){if((J|0)>=(H|0)){break}if((c[n+(I-J<<2)>>2]&8372287|0)==34){J=J+1|0}else{break}}if((J&1|0)==0){F=E;G=0}else{i=0;w=1773;break L2124}}else{F=0;G=0}}while(0);z=(y&64)!=0&(v|0)==(f|0)?m:b;if(y<<24>>24<0){if((m+2|0)>=(g|0)){i=0;w=1774;break}if((c[n+(m+1<<2)>>2]&63|0)!=22){i=0;w=1775;break}}L2160:do{switch(u|0){case 2:{if((G|0)!=1){K=m;L=z;break L2160}if((m+2|0)>=(g|0)){i=0;w=1776;break L2124}if((c[n+(m+1<<2)>>2]&8372287|0)==34){i=0;w=1777;break L2124}else{K=m;L=z}break};case 3:{K=m;L=(v|0)>(f|0)|(F|0)<(f|0)?z:m;break};case 4:case 8:{if((F|0)<(l|0)){K=m;L=z}else{i=0;w=1778;break L2124}break};case 5:case 7:{if((c[(c[o>>2]|0)+(F<<4)+8>>2]|0)==4){K=m;L=z}else{i=0;w=1779;break L2124}break};case 11:{t=v+1|0;if(t>>>0>=(h&255)>>>0){i=0;w=1780;break L2124}K=m;L=(t|0)==(f|0)?m:z;break};case 21:{if((F|0)<(G|0)){K=m;L=z}else{i=0;w=1781;break L2124}break};case 33:{if((G|0)==0){i=0;w=1782;break L2124}t=v+2|0;if((G+t|0)>=(h&255|0)){i=0;w=1783;break L2124}K=m;L=(t|0)>(f|0)?z:m;break};case 31:case 32:{if((v+3|0)>>>0<(h&255)>>>0){w=1723}else{i=0;w=1784;break L2124}break};case 22:{w=1723;break};case 28:case 29:{if((F|0)!=0){if((v-1+F|0)>=(h&255|0)){i=0;w=1785;break L2124}}t=G-1|0;do{if((G|0)==0){A=c[n+(m+1<<2)>>2]|0;x=A&63;if(!((x|0)==28|(x|0)==29|(x|0)==30|(x|0)==34)){i=0;w=1786;break L2124}if(A>>>0>=8388608){i=0;w=1787;break L2124}}else{if((t|0)==0){break}if((v-1+t|0)>=(h&255|0)){i=0;w=1788;break L2124}}}while(0);K=m;L=(v|0)>(f|0)?z:m;break};case 30:{t=F-1|0;if((t|0)<=0){K=m;L=z;break L2160}if((v-1+t|0)<(h&255|0)){K=m;L=z}else{i=0;w=1789;break L2124}break};case 34:{if((F|0)>0){if((F+v|0)>=(h&255|0)){i=0;w=1790;break L2124}}if((G|0)!=0){K=m;L=z;break L2160}t=m+1|0;if((t|0)<(g-1|0)){K=t;L=z}else{i=0;w=1791;break L2124}break};case 36:{if((F|0)>=(c[q>>2]|0)){i=0;w=1792;break L2124}t=a[(c[(c[r>>2]|0)+(F<<2)>>2]|0)+72|0]|0;E=t&255;J=E+m|0;if((J|0)>=(g|0)){i=0;w=1793;break L2124}if(t<<24>>24!=0){t=1;do{A=c[n+(t+m<<2)>>2]&63;if(!((A|0)==4|(A|0)==0)){i=0;w=1794;break L2124}t=t+1|0;}while((t|0)<=(E|0))}K=p?m:J;L=z;break};case 37:{if((k&6)!=2){i=0;w=1795;break L2124}if((F|0)==0){E=c[n+(m+1<<2)>>2]|0;t=E&63;if(!((t|0)==28|(t|0)==29|(t|0)==30|(t|0)==34)){i=0;w=1796;break L2124}if(E>>>0>=8388608){i=0;w=1760;break L2124}}if((v-2+F|0)<(h&255|0)){K=m;L=z}else{i=0;w=1761;break L2124}break};default:{K=m;L=z}}}while(0);if((w|0)==1723){w=0;v=m+1+F|0;K=((m|0)>=(v|0)|p|(v|0)>(e|0)?0:F)+m|0;L=z}v=K+1|0;if((v|0)<(e|0)){b=L;m=v}else{w=1750;break}}if((w|0)==1750){i=c[n+(L<<2)>>2]|0;return i|0}else if((w|0)==1754){return i|0}else if((w|0)==1755){return i|0}else if((w|0)==1760){return i|0}else if((w|0)==1761){return i|0}else if((w|0)==1763){return i|0}else if((w|0)==1764){return i|0}else if((w|0)==1765){return i|0}else if((w|0)==1766){return i|0}else if((w|0)==1767){return i|0}else if((w|0)==1768){return i|0}else if((w|0)==1769){return i|0}else if((w|0)==1770){return i|0}else if((w|0)==1771){return i|0}else if((w|0)==1772){return i|0}else if((w|0)==1773){return i|0}else if((w|0)==1774){return i|0}else if((w|0)==1775){return i|0}else if((w|0)==1776){return i|0}else if((w|0)==1777){return i|0}else if((w|0)==1778){return i|0}else if((w|0)==1779){return i|0}else if((w|0)==1780){return i|0}else if((w|0)==1781){return i|0}else if((w|0)==1782){return i|0}else if((w|0)==1783){return i|0}else if((w|0)==1784){return i|0}else if((w|0)==1785){return i|0}else if((w|0)==1786){return i|0}else if((w|0)==1787){return i|0}else if((w|0)==1788){return i|0}else if((w|0)==1789){return i|0}else if((w|0)==1790){return i|0}else if((w|0)==1791){return i|0}else if((w|0)==1792){return i|0}else if((w|0)==1793){return i|0}else if((w|0)==1794){return i|0}else if((w|0)==1795){return i|0}else if((w|0)==1796){return i|0}return 0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+8|0;f=e|0;c[f>>2]=0;g=c[872+(c[b+8>>2]<<2)>>2]|0;h=c[a+20>>2]|0;j=c[h+8>>2]|0;k=c[h>>2]|0;while(1){if(k>>>0>=j>>>0){break}if((k|0)==(b|0)){l=1800;break}else{k=k+16|0}}do{if((l|0)==1800){k=er(a,h,b-(c[a+12>>2]|0)>>4,f)|0;if((k|0)==0){break}j=c[f>>2]|0;es(a,2592,(m=i,i=i+32|0,c[m>>2]=d,c[m+8>>2]=k,c[m+16>>2]=j,c[m+24>>2]=g,m)|0);i=m;i=e;return}}while(0);es(a,8664,(m=i,i=i+16|0,c[m>>2]=d,c[m+8>>2]=g,m)|0);i=m;i=e;return}function er(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;g=d+4|0;h=b+20|0;i=b+24|0;b=d+12|0;j=e;L2260:while(1){e=c[g>>2]|0;if((c[e+8>>2]|0)!=6){k=0;l=1828;break}m=e;e=c[m>>2]|0;if((a[e+6|0]|0)!=0){k=0;l=1831;break}n=c[e+16>>2]|0;e=n;if((c[h>>2]|0)==(d|0)){o=c[i>>2]|0;c[b>>2]=o;p=o;q=c[(c[m>>2]|0)+16>>2]|0}else{p=c[b>>2]|0;q=n}m=(p-(c[q+12>>2]|0)>>2)-1|0;o=eT(e,j+1|0,m)|0;c[f>>2]=o;if((o|0)!=0){k=2944;l=1829;break}r=ep(e,m,j)|0;switch(r&63|0){case 4:{l=1820;break L2260;break};case 0:{break};case 5:{l=1814;break L2260;break};case 11:{l=1823;break L2260;break};case 6:{l=1816;break L2260;break};default:{k=0;l=1830;break L2260}}m=r>>>23;if(m>>>0<(r>>>6&255)>>>0){j=m}else{k=0;l=1832;break}}if((l|0)==1828){return k|0}else if((l|0)==1820){j=c[n+28>>2]|0;if((j|0)==0){s=10424}else{s=(c[j+(r>>>23<<2)>>2]|0)+16|0}c[f>>2]=s;k=10256;return k|0}else if((l|0)==1831){return k|0}else if((l|0)==1814){c[f>>2]=(c[(c[n+8>>2]|0)+(r>>>14<<4)>>2]|0)+16;k=2584;return k|0}else if((l|0)==1823){s=r>>>14;do{if((s&256|0)==0){t=10424}else{j=s&255;q=c[n+8>>2]|0;if((c[q+(j<<4)+8>>2]|0)!=4){t=10424;break}t=(c[q+(j<<4)>>2]|0)+16|0}}while(0);c[f>>2]=t;k=10008;return k|0}else if((l|0)==1830){return k|0}else if((l|0)==1832){return k|0}else if((l|0)==1829){return k|0}else if((l|0)==1816){l=r>>>14;do{if((l&256|0)==0){u=10424}else{r=l&255;t=c[n+8>>2]|0;if((c[t+(r<<4)+8>>2]|0)!=4){u=10424;break}u=(c[t+(r<<4)>>2]|0)+16|0}}while(0);c[f>>2]=u;k=2280;return k|0}return 0}function es(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+80|0;g=f+64|0;h=g;c[h>>2]=e;c[h+4>>2]=0;h=fx(b,d,g|0)|0;g=f|0;d=c[b+20>>2]|0;e=c[d+4>>2]|0;if((c[e+8>>2]|0)!=6){ew(b);i=f;return}j=e;if((a[(c[j>>2]|0)+6|0]|0)!=0){ew(b);i=f;return}e=c[b+24>>2]|0;c[d+12>>2]=e;d=c[(c[j>>2]|0)+16>>2]|0;j=(e-(c[d+12>>2]|0)>>2)-1|0;do{if((j|0)<0){k=-1}else{e=c[d+20>>2]|0;if((e|0)==0){k=0;break}k=c[e+(j<<2)>>2]|0}}while(0);fz(g,(c[d+32>>2]|0)+16|0,60);fy(b,3576,(d=i,i=i+24|0,c[d>>2]=g,c[d+8>>2]=k,c[d+16>>2]=h,d)|0)|0;i=d;ew(b);i=f;return}function et(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+8|0;f=e|0;g=((c[b+8>>2]|0)-3|0)>>>0<2?d:b;c[f>>2]=0;b=c[872+(c[g+8>>2]<<2)>>2]|0;d=c[a+20>>2]|0;h=c[d+8>>2]|0;j=c[d>>2]|0;while(1){if(j>>>0>=h>>>0){break}if((j|0)==(g|0)){k=1850;break}else{j=j+16|0}}do{if((k|0)==1850){j=er(a,d,g-(c[a+12>>2]|0)>>4,f)|0;if((j|0)==0){break}h=c[f>>2]|0;es(a,2592,(l=i,i=i+32|0,c[l>>2]=8264,c[l+8>>2]=j,c[l+16>>2]=h,c[l+24>>2]=b,l)|0);i=l;i=e;return}}while(0);es(a,8664,(l=i,i=i+16|0,c[l>>2]=8264,c[l+8>>2]=b,l)|0);i=l;i=e;return}function eu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+24|0;f=e|0;g=(gk(b,e+8|0)|0)==0?b:d;c[f>>2]=0;d=c[872+(c[g+8>>2]<<2)>>2]|0;b=c[a+20>>2]|0;h=c[b+8>>2]|0;j=c[b>>2]|0;while(1){if(j>>>0>=h>>>0){break}if((j|0)==(g|0)){k=1859;break}else{j=j+16|0}}do{if((k|0)==1859){j=er(a,b,g-(c[a+12>>2]|0)>>4,f)|0;if((j|0)==0){break}h=c[f>>2]|0;es(a,2592,(l=i,i=i+32|0,c[l>>2]=6392,c[l+8>>2]=j,c[l+16>>2]=h,c[l+24>>2]=d,l)|0);i=l;i=e;return}}while(0);es(a,8664,(l=i,i=i+16|0,c[l>>2]=6392,c[l+8>>2]=d,l)|0);i=l;i=e;return}function ev(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=c[872+(c[d+8>>2]<<2)>>2]|0;d=c[872+(c[e+8>>2]<<2)>>2]|0;if((a[g+2|0]|0)==(a[d+2|0]|0)){es(b,4944,(h=i,i=i+8|0,c[h>>2]=g,h)|0);i=h;i=f;return 0}else{es(b,4104,(h=i,i=i+16|0,c[h>>2]=g,c[h+8>>2]=d,h)|0);i=h;i=f;return 0}return 0}function ew(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=c[a+116>>2]|0;if((b|0)==0){eC(a,2);return}d=c[a+32>>2]|0;e=d+(b+8)|0;if((c[e>>2]|0)!=6){eC(a,5)}f=a+8|0;g=c[f>>2]|0;h=g-16|0;i=g;j=c[h+4>>2]|0;c[i>>2]=c[h>>2];c[i+4>>2]=j;c[g+8>>2]=c[g-16+8>>2];g=c[f>>2]|0;j=d+b|0;b=g-16|0;d=c[j+4>>2]|0;c[b>>2]=c[j>>2];c[b+4>>2]=d;c[g-16+8>>2]=c[e>>2];e=c[f>>2]|0;if(((c[a+28>>2]|0)-e|0)<17){eA(a,1);k=c[f>>2]|0}else{k=e}c[f>>2]=k+16;eG(a,k-16|0,1);eC(a,2);return}function ex(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+48|0;f=1;g=0;h=i;i=i+168|0;c[h>>2]=0;while(1)switch(f|0){case 1:j=e|0;k=j+44|0;c[k>>2]=0;l=a+112|0;m=j|0;c[m>>2]=c[l>>2];c[l>>2]=j;n=j0(j+4|0,f,h)|0;f=4;break;case 4:if((n|0)==0){f=2;break}else{f=3;break};case 2:aj(b|0,a|0,d|0);if((r|0)!=0&(s|0)!=0){g=j1(c[r>>2]|0,h)|0;if((g|0)>0){f=-1;break}else return 0}r=s=0;f=3;break;case 3:c[l>>2]=c[m>>2];i=e;return c[k>>2]|0;case-1:if((g|0)==1){n=s;f=4}r=s=0;break}return 0}function ey(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+32|0;e=c[d>>2]|0;f=b+6|0;if((b+7|0)>>>0<268435456){g=a+44|0;h=fu(a,e,c[g>>2]<<4,f<<4)|0;i=g}else{h=fv(a)|0;i=a+44|0}g=h;c[d>>2]=g;c[i>>2]=f;c[a+28>>2]=g+(b<<4);b=a+8|0;f=e;c[b>>2]=g+((c[b>>2]|0)-f>>4<<4);b=c[a+104>>2]|0;do{if((b|0)!=0){e=b+8|0;c[e>>2]=g+((c[e>>2]|0)-f>>4<<4);e=c[b>>2]|0;if((e|0)==0){break}else{j=e}do{e=j+8|0;c[e>>2]=(c[d>>2]|0)+((c[e>>2]|0)-f>>4<<4);j=c[j>>2]|0;}while((j|0)!=0)}}while(0);j=c[a+40>>2]|0;b=a+20|0;if(j>>>0>(c[b>>2]|0)>>>0){k=a+12|0;l=c[k>>2]|0;m=l;n=m-f|0;o=n>>4;p=c[d>>2]|0;q=p+(o<<4)|0;c[k>>2]=q;return}else{r=j}do{j=r+8|0;c[j>>2]=(c[d>>2]|0)+((c[j>>2]|0)-f>>4<<4);j=r|0;c[j>>2]=(c[d>>2]|0)+((c[j>>2]|0)-f>>4<<4);j=r+4|0;c[j>>2]=(c[d>>2]|0)+((c[j>>2]|0)-f>>4<<4);r=r+24|0;}while(r>>>0<=(c[b>>2]|0)>>>0);k=a+12|0;l=c[k>>2]|0;m=l;n=m-f|0;o=n>>4;p=c[d>>2]|0;q=p+(o<<4)|0;c[k>>2]=q;return}function ez(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=a+40|0;e=c[d>>2]|0;if((b+1|0)>>>0<178956971){f=a+48|0;g=fu(a,e,(c[f>>2]|0)*24|0,b*24|0)|0;h=f}else{g=fv(a)|0;h=a+48|0}f=g;c[d>>2]=f;c[h>>2]=b;h=a+20|0;c[h>>2]=f+((((c[h>>2]|0)-e|0)/24|0)*24|0);c[a+36>>2]=f+((b-1|0)*24|0);return}function eA(a,b){a=a|0;b=b|0;var d=0;d=c[a+44>>2]|0;if((d|0)<(b|0)){ey(a,d+b|0);return}else{ey(a,d<<1);return}}function eB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+104|0;g=f|0;h=c[b+68>>2]|0;if((h|0)==0){i=f;return}j=b+57|0;if((a[j]|0)==0){i=f;return}k=b+8|0;l=b+32|0;m=c[k>>2]|0;n=c[l>>2]|0;o=m-n|0;p=b+20|0;q=c[p>>2]|0;r=(c[q+8>>2]|0)-n|0;c[g>>2]=d;c[g+20>>2]=e;if((d|0)==4){c[g+96>>2]=0}else{c[g+96>>2]=(q-(c[b+40>>2]|0)|0)/24|0}do{if(((c[b+28>>2]|0)-m|0)<321){q=c[b+44>>2]|0;if((q|0)<20){ey(b,q+20|0);break}else{ey(b,q<<1);break}}}while(0);c[(c[p>>2]|0)+8>>2]=(c[k>>2]|0)+320;a[j]=0;cf[h&511](b,g);a[j]=1;c[(c[p>>2]|0)+8>>2]=(c[l>>2]|0)+r;c[k>>2]=(c[l>>2]|0)+o;i=f;return}function eC(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=d+112|0;g=c[f>>2]|0;if((g|0)!=0){c[g+44>>2]=e;b0((c[f>>2]|0)+4|0,1)}a[d+6|0]=e&255;g=d+16|0;if((c[(c[g>>2]|0)+88>>2]|0)==0){a_(1)}h=d+40|0;i=c[h>>2]|0;j=d+20|0;c[j>>2]=i;k=c[i>>2]|0;i=d+12|0;c[i>>2]=k;eU(d,k);k=c[i>>2]|0;if((e|0)==4){c[k>>2]=f_(d,8280,17)|0;c[k+8>>2]=4}else if((e|0)==3|(e|0)==2){i=c[d+8>>2]|0;l=i-16|0;m=k;n=c[l+4>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=n;c[k+8>>2]=c[i-16+8>>2]}else if((e|0)==5){c[k>>2]=f_(d,9920,23)|0;c[k+8>>2]=4}c[d+8>>2]=k+16;b[d+52>>1]=b[d+54>>1]|0;a[d+57|0]=1;k=d+48|0;e=c[k>>2]|0;do{if((e|0)>2e4){i=c[h>>2]|0;n=i;if(((((c[j>>2]|0)-n|0)/24|0)+1|0)>=2e4){break}m=fu(d,i,e*24|0,48e4)|0;i=m;c[h>>2]=i;c[k>>2]=2e4;c[j>>2]=i+((((c[j>>2]|0)-n|0)/24|0)*24|0);c[d+36>>2]=m+479976}}while(0);c[d+116>>2]=0;c[f>>2]=0;cd[c[(c[g>>2]|0)+88>>2]&1023](d)|0;a_(1)}function eD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=b+56|0;if((a[e]&2)==0){f=d;g=b+20|0}else{h=b+32|0;i=d-(c[h>>2]|0)|0;eB(b,1,-1);d=b+20|0;j=c[d>>2]|0;L2409:do{if((a[(c[c[j+4>>2]>>2]|0)+6|0]|0)==0){if((a[e]&2)==0){break}k=j+20|0;l=c[k>>2]|0;c[k>>2]=l-1;if((l|0)==0){break}do{eB(b,4,-1);if((a[e]&2)==0){break L2409}l=(c[d>>2]|0)+20|0;k=c[l>>2]|0;c[l>>2]=k-1;}while((k|0)!=0)}}while(0);f=(c[h>>2]|0)+i|0;g=d}d=c[g>>2]|0;i=d-24|0;c[g>>2]=i;g=c[d+4>>2]|0;h=c[d+16>>2]|0;c[b+12>>2]=c[i>>2];c[b+24>>2]=c[d-24+12>>2];d=b+8|0;if((h|0)==0){m=g;c[d>>2]=m;n=h+1|0;return n|0}else{o=h;p=g;q=f}while(1){if(q>>>0>=(c[d>>2]|0)>>>0){break}f=p+16|0;g=q;b=p;i=c[g+4>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=i;c[p+8>>2]=c[q+8>>2];i=o-1|0;if((i|0)==0){m=f;r=1946;break}else{o=i;p=f;q=q+16|0}}if((r|0)==1946){c[d>>2]=m;n=h+1|0;return n|0}if((o|0)>0){s=o;t=p}else{m=p;c[d>>2]=m;n=h+1|0;return n|0}while(1){r=s-1|0;c[t+8>>2]=0;if((r|0)>0){s=r;t=t+16|0}else{break}}m=p+(o<<4)|0;c[d>>2]=m;n=h+1|0;return n|0}function eE(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=e+6|0;h=a[g]|0;if((h<<24>>24|0)==0){i=c[e+20>>2]|0;if((i|0)!=(c[e+40>>2]|0)){j=i;k=1951}}else if((h<<24>>24|0)!=1){j=c[e+20>>2]|0;k=1951}if((k|0)==1951){k=c[j>>2]|0;j=e+8|0;c[j>>2]=k;c[k>>2]=f_(e,6152,37)|0;c[k+8>>2]=4;do{if(((c[e+28>>2]|0)-(c[j>>2]|0)|0)<17){k=c[e+44>>2]|0;if((k|0)<1){ey(e,k+1|0);break}else{ey(e,k<<1);break}}}while(0);c[j>>2]=(c[j>>2]|0)+16;l=2;return l|0}j=e+52|0;k=b[j>>1]|0;if((k&65535)>199){h=c[c[e+20>>2]>>2]|0;i=e+8|0;c[i>>2]=h;c[h>>2]=f_(e,7968,16)|0;c[h+8>>2]=4;do{if(((c[e+28>>2]|0)-(c[i>>2]|0)|0)<17){h=c[e+44>>2]|0;if((h|0)<1){ey(e,h+1|0);break}else{ey(e,h<<1);break}}}while(0);c[i>>2]=(c[i>>2]|0)+16;l=2;return l|0}i=k+1&65535;b[j>>1]=i;b[e+54>>1]=i;i=e+8|0;k=ex(e,260,(c[i>>2]|0)+(-f<<4)|0)|0;if((k|0)==0){m=d[g]|0}else{a[g]=k&255;g=c[i>>2]|0;if((k|0)==4){c[g>>2]=f_(e,8280,17)|0;c[g+8>>2]=4}else if((k|0)==5){c[g>>2]=f_(e,9920,23)|0;c[g+8>>2]=4}else if((k|0)==3|(k|0)==2){f=g-16|0;h=g;n=c[f+4>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=n;c[g+8>>2]=c[g-16+8>>2]}n=g+16|0;c[i>>2]=n;c[(c[e+20>>2]|0)+8>>2]=n;m=k}b[j>>1]=(b[j>>1]|0)-1&65535;l=m;return l|0}function eF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;g=i;if((c[e+8>>2]|0)==6){j=e;k=b+32|0}else{l=gg(b,e,16)|0;m=b+32|0;n=e-(c[m>>2]|0)|0;o=l+8|0;if((c[o>>2]|0)!=6){eq(b,e,2472)}p=b+8|0;q=c[p>>2]|0;if(q>>>0>e>>>0){r=q;while(1){s=r-16|0;t=s;u=r;v=c[t+4>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=v;c[r+8>>2]=c[r-16+8>>2];if(s>>>0>e>>>0){r=s}else{break}}w=c[p>>2]|0}else{w=q}do{if(((c[b+28>>2]|0)-w|0)<17){q=c[b+44>>2]|0;if((q|0)<1){ey(b,q+1|0);break}else{ey(b,q<<1);break}}}while(0);c[p>>2]=(c[p>>2]|0)+16;p=c[m>>2]|0;w=p+n|0;q=l;l=w;r=c[q+4>>2]|0;c[l>>2]=c[q>>2];c[l+4>>2]=r;c[p+(n+8)>>2]=c[o>>2];j=w;k=m}m=j-(c[k>>2]|0)|0;w=c[j>>2]|0;j=b+24|0;o=b+20|0;c[(c[o>>2]|0)+12>>2]=c[j>>2];if((a[w+6|0]|0)!=0){n=b+8|0;do{if(((c[b+28>>2]|0)-(c[n>>2]|0)|0)<321){p=c[b+44>>2]|0;if((p|0)<20){ey(b,p+20|0);break}else{ey(b,p<<1);break}}}while(0);p=c[o>>2]|0;r=b+36|0;do{if((p|0)==(c[r>>2]|0)){l=b+48|0;q=c[l>>2]|0;if((q|0)>2e4){eC(b,5);return 0}e=q<<1;s=b+40|0;v=c[s>>2]|0;if((e|1)>>>0<178956971){x=fu(b,v,q*24|0,q*48|0)|0}else{x=fv(b)|0}q=x;c[s>>2]=q;c[l>>2]=e;l=q+((((c[o>>2]|0)-v|0)/24|0)*24|0)|0;c[o>>2]=l;c[r>>2]=q+((e-1|0)*24|0);if((e|0)<=2e4){y=l;break}es(b,3400,(z=i,i=i+1|0,i=i+7>>3<<3,c[z>>2]=0,z)|0);i=z;y=c[o>>2]|0}else{y=p}}while(0);p=y+24|0;c[o>>2]=p;r=c[k>>2]|0;c[y+28>>2]=r+m;x=r+(m+16)|0;c[p>>2]=x;c[b+12>>2]=x;c[y+32>>2]=(c[n>>2]|0)+320;c[y+40>>2]=f;if((a[b+56|0]&1)!=0){eB(b,0,-1)}y=cd[c[(c[c[(c[o>>2]|0)+4>>2]>>2]|0)+16>>2]&1023](b)|0;if((y|0)<0){A=2;i=g;return A|0}x=(c[n>>2]|0)+(-y<<4)|0;eD(b,x)|0;A=1;i=g;return A|0}x=c[w+16>>2]|0;w=x;y=b+28|0;n=b+8|0;p=w+75|0;r=d[p]|0;do{if(((c[y>>2]|0)-(c[n>>2]|0)|0)<=(r<<4|0)){l=c[b+44>>2]|0;if((l|0)<(r|0)){ey(b,l+r|0);break}else{ey(b,l<<1);break}}}while(0);r=c[k>>2]|0;l=r+m|0;e=l;q=w+74|0;v=a[q]|0;do{if(v<<24>>24==0){s=r+(m+16)|0;u=s+(d[w+73|0]<<4)|0;if((c[n>>2]|0)>>>0<=u>>>0){B=e;C=s;break}c[n>>2]=u;B=e;C=s}else{s=c[n>>2]|0;u=(s-l>>4)-1|0;t=a[w+73|0]|0;D=t&255;if((D|0)>(u|0)){E=u;F=s;while(1){c[n>>2]=F+16;c[F+8>>2]=0;s=E+1|0;if((s|0)>=(D|0)){break}E=s;F=c[n>>2]|0}G=D;H=a[q]|0}else{G=u;H=v}if((H&4)==0){I=0}else{F=G-D|0;E=c[b+16>>2]|0;if((c[E+68>>2]|0)>>>0>=(c[E+64>>2]|0)>>>0){e1(b)}E=d[p]|0;do{if(((c[y>>2]|0)-(c[n>>2]|0)|0)<=(E<<4|0)){s=c[b+44>>2]|0;if((s|0)<(E|0)){ey(b,s+E|0);break}else{ey(b,s<<1);break}}}while(0);E=f5(b,F,1)|0;if((F|0)>0){u=0;do{s=c[n>>2]|0;J=u-F|0;u=u+1|0;K=gc(b,E,u)|0;L=s+(J<<4)|0;M=K;N=c[L+4>>2]|0;c[M>>2]=c[L>>2];c[M+4>>2]=N;c[K+8>>2]=c[s+(J<<4)+8>>2];}while((u|0)<(F|0))}u=gd(b,E,f_(b,2864,1)|0)|0;h[u>>3]=+(F|0);c[u+8>>2]=3;I=E}u=c[n>>2]|0;do{if(t<<24>>24!=0){J=-G|0;c[n>>2]=u+16;s=u+(J<<4)|0;K=u;N=c[s+4>>2]|0;c[K>>2]=c[s>>2];c[K+4>>2]=N;N=u+(J<<4)+8|0;c[u+8>>2]=c[N>>2];c[N>>2]=0;if((t&255)>1){O=1}else{break}do{N=c[n>>2]|0;J=O-G|0;c[n>>2]=N+16;K=u+(J<<4)|0;s=N;M=c[K+4>>2]|0;c[s>>2]=c[K>>2];c[s+4>>2]=M;M=u+(J<<4)+8|0;c[N+8>>2]=c[M>>2];c[M>>2]=0;O=O+1|0;}while((O|0)<(D|0))}}while(0);if((I|0)!=0){D=c[n>>2]|0;c[n>>2]=D+16;c[D>>2]=I;c[D+8>>2]=5}B=(c[k>>2]|0)+m|0;C=u}}while(0);m=c[o>>2]|0;k=b+36|0;do{if((m|0)==(c[k>>2]|0)){I=b+48|0;O=c[I>>2]|0;if((O|0)>2e4){eC(b,5);return 0}G=O<<1;y=b+40|0;H=c[y>>2]|0;if((G|1)>>>0<178956971){P=fu(b,H,O*24|0,O*48|0)|0}else{P=fv(b)|0}O=P;c[y>>2]=O;c[I>>2]=G;I=O+((((c[o>>2]|0)-H|0)/24|0)*24|0)|0;c[o>>2]=I;c[k>>2]=O+((G-1|0)*24|0);if((G|0)<=2e4){Q=I;break}es(b,3400,(z=i,i=i+1|0,i=i+7>>3<<3,c[z>>2]=0,z)|0);i=z;Q=c[o>>2]|0}else{Q=m}}while(0);m=Q+24|0;c[o>>2]=m;c[Q+28>>2]=B;c[m>>2]=C;c[b+12>>2]=C;m=Q+32|0;c[m>>2]=C+(d[p]<<4);c[j>>2]=c[x+12>>2];c[Q+44>>2]=0;c[Q+40>>2]=f;f=c[n>>2]|0;Q=c[m>>2]|0;if(f>>>0<Q>>>0){x=f;while(1){c[x+8>>2]=0;f=x+16|0;p=c[m>>2]|0;if(f>>>0<p>>>0){x=f}else{R=p;break}}}else{R=Q}c[n>>2]=R;if((a[b+56|0]&1)==0){A=0;i=g;return A|0}c[j>>2]=(c[j>>2]|0)+4;eB(b,0,-1);c[j>>2]=(c[j>>2]|0)-4;A=0;i=g;return A|0}function eG(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=a+52|0;h=(b[g>>1]|0)+1&65535;b[g>>1]=h;do{if((h&65535)>199){if(h<<16>>16==200){es(a,7968,(j=i,i=i+1|0,i=i+7>>3<<3,c[j>>2]=0,j)|0);i=j;break}if((h&65535)<=224){break}eC(a,5)}}while(0);if((eF(a,d,e)|0)==0){gr(a,1)}b[g>>1]=(b[g>>1]|0)-1&65535;g=c[a+16>>2]|0;if((c[g+68>>2]|0)>>>0<(c[g+64>>2]|0)>>>0){i=f;return}e1(a);i=f;return}function eH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=d;f=b+20|0;g=b+6|0;do{if((a[g]|0)==0){if((eF(b,d-16|0,-1)|0)==0){break}return}else{h=c[f>>2]|0;a[g]=0;if((a[(c[c[h+4>>2]>>2]|0)+6|0]|0)==0){c[b+12>>2]=c[h>>2];break}if((eD(b,e)|0)==0){break}c[b+8>>2]=c[(c[f>>2]|0)+8>>2]}}while(0);gr(b,((c[f>>2]|0)-(c[b+40>>2]|0)|0)/24|0);return}function eI(b,d){b=b|0;d=d|0;var f=0,g=0;f=i;if((e[b+52>>1]|0)>(e[b+54>>1]|0)){es(b,4752,(g=i,i=i+1|0,i=i+7>>3<<3,c[g>>2]=0,g)|0);i=g}c[b+12>>2]=(c[b+8>>2]|0)+(-d<<4);a[b+6|0]=1;i=f;return-1|0}function eJ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=d+52|0;j=b[i>>1]|0;k=d+20|0;l=c[k>>2]|0;m=d+40|0;n=c[m>>2]|0;o=d+57|0;p=a[o]|0;q=d+116|0;r=c[q>>2]|0;c[q>>2]=h;h=ex(d,e,f)|0;if((h|0)==0){c[q>>2]=r;return h|0}f=l-n|0;n=c[d+32>>2]|0;l=n+g|0;eU(d,l);if((h|0)==4){c[l>>2]=f_(d,8280,17)|0;c[n+(g+8)>>2]=4}else if((h|0)==3|(h|0)==2){e=c[d+8>>2]|0;s=e-16|0;t=l;u=c[s+4>>2]|0;c[t>>2]=c[s>>2];c[t+4>>2]=u;c[n+(g+8)>>2]=c[e-16+8>>2]}else if((h|0)==5){c[l>>2]=f_(d,9920,23)|0;c[n+(g+8)>>2]=4}c[d+8>>2]=n+(g+16);b[i>>1]=j;j=c[m>>2]|0;i=j;g=i+f|0;c[k>>2]=g;c[d+12>>2]=c[g>>2];c[d+24>>2]=c[i+(f+12)>>2];a[o]=p;p=d+48|0;o=c[p>>2]|0;if((o|0)<=2e4){c[q>>2]=r;return h|0}f=j;if((((g-f|0)/24|0)+1|0)>=2e4){c[q>>2]=r;return h|0}g=fu(d,i,o*24|0,48e4)|0;o=g;c[m>>2]=o;c[p>>2]=2e4;c[k>>2]=o+((((c[k>>2]|0)-f|0)/24|0)*24|0);c[d+36>>2]=g+479976;c[q>>2]=r;return h|0}function eK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+24|0;f=e|0;c[f>>2]=b;c[f+16>>2]=d;d=f+4|0;c[d>>2]=0;b=f+12|0;c[b>>2]=0;g=eJ(a,258,f,(c[a+8>>2]|0)-(c[a+32>>2]|0)|0,c[a+116>>2]|0)|0;fu(a,c[d>>2]|0,c[b>>2]|0,0)|0;i=e;return g|0}function eL(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e;g=gv(c[f>>2]|0)|0;h=c[b+16>>2]|0;if((c[h+68>>2]|0)>>>0>=(c[h+64>>2]|0)>>>0){e1(b)}h=cg[((g|0)==27?256:258)&511](b,c[f>>2]|0,e+4|0,c[e+16>>2]|0)|0;e=h+72|0;f=eP(b,d[e]|0,c[b+72>>2]|0)|0;g=f;c[f+16>>2]=h;if((a[e]|0)!=0){h=0;do{c[g+20+(h<<2)>>2]=eQ(b)|0;h=h+1|0;}while((h|0)<(d[e]|0))}e=b+8|0;h=c[e>>2]|0;c[h>>2]=f;c[h+8>>2]=6;if(((c[b+28>>2]|0)-(c[e>>2]|0)|0)>=17){i=c[e>>2]|0;j=i+16|0;c[e>>2]=j;return}h=c[b+44>>2]|0;if((h|0)<1){ey(b,h+1|0);i=c[e>>2]|0;j=i+16|0;c[e>>2]=j;return}else{ey(b,h<<1);i=c[e>>2]|0;j=i+16|0;c[e>>2]=j;return}}function eM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+40|0;h=g+16|0;c[h>>2]=a;c[h+4>>2]=d;c[h+8>>2]=e;c[h+12>>2]=f;f=h+16|0;j=g|0;gj(j);c[f>>2]=cg[d&511](a,j,12,e)|0;eN(b,0,h);i=g;return c[f>>2]|0}function eN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0;f=i;i=i+200|0;g=f|0;j=f+8|0;k=f+16|0;l=f+24|0;m=f+32|0;n=f+40|0;o=f+48|0;p=f+56|0;q=f+64|0;r=f+72|0;s=f+80|0;t=f+88|0;u=f+96|0;v=f+104|0;w=f+112|0;x=f+120|0;y=f+128|0;z=f+136|0;A=f+144|0;B=f+152|0;C=f+160|0;D=f+168|0;E=f+176|0;F=f+184|0;G=f+192|0;H=b+32|0;I=c[H>>2]|0;do{if((I|0)==(d|0)){J=w;K=x;L=2103}else{M=(c[e+12>>2]|0)==0?I:0;N=w;O=x;if((M|0)==0){J=N;K=O;L=2103;break}P=M+16|0;if((P|0)==0){J=N;K=O;L=2103;break}c[x>>2]=(c[M+12>>2]|0)+1;M=e+16|0;if((c[M>>2]|0)!=0){Q=N;R=O;break}S=e+4|0;T=e|0;U=e+8|0;V=cg[c[S>>2]&511](c[T>>2]|0,O,4,c[U>>2]|0)|0;c[M>>2]=V;if((V|0)!=0){Q=N;R=O;break}c[M>>2]=cg[c[S>>2]&511](c[T>>2]|0,P,c[x>>2]|0,c[U>>2]|0)|0;Q=N;R=O}}while(0);do{if((L|0)==2103){c[w>>2]=0;x=e+16|0;if((c[x>>2]|0)!=0){Q=J;R=K;break}c[x>>2]=cg[c[e+4>>2]&511](c[e>>2]|0,J,4,c[e+8>>2]|0)|0;Q=J;R=K}}while(0);c[v>>2]=c[b+60>>2];K=e+16|0;R=c[K>>2]|0;if((R|0)==0){J=cg[c[e+4>>2]&511](c[e>>2]|0,v,4,c[e+8>>2]|0)|0;c[K>>2]=J;W=J}else{W=R}c[u>>2]=c[b+64>>2];if((W|0)==0){R=cg[c[e+4>>2]&511](c[e>>2]|0,u,4,c[e+8>>2]|0)|0;c[K>>2]=R;X=R}else{X=W}a[t]=a[b+72|0]|0;if((X|0)==0){W=cg[c[e+4>>2]&511](c[e>>2]|0,t,1,c[e+8>>2]|0)|0;c[K>>2]=W;Y=W}else{Y=X}a[s]=a[b+73|0]|0;if((Y|0)==0){X=cg[c[e+4>>2]&511](c[e>>2]|0,s,1,c[e+8>>2]|0)|0;c[K>>2]=X;Z=X}else{Z=Y}a[r]=a[b+74|0]|0;if((Z|0)==0){Y=cg[c[e+4>>2]&511](c[e>>2]|0,r,1,c[e+8>>2]|0)|0;c[K>>2]=Y;_=Y}else{_=Z}a[q]=a[b+75|0]|0;if((_|0)==0){Z=cg[c[e+4>>2]&511](c[e>>2]|0,q,1,c[e+8>>2]|0)|0;c[K>>2]=Z;$=Z}else{$=_}_=c[b+12>>2]|0;Z=c[b+44>>2]|0;c[p>>2]=Z;do{if(($|0)==0){q=e+4|0;Y=e|0;r=e+8|0;X=cg[c[q>>2]&511](c[Y>>2]|0,p,4,c[r>>2]|0)|0;c[K>>2]=X;if((X|0)!=0){aa=X;L=2122;break}X=cg[c[q>>2]&511](c[Y>>2]|0,_,Z<<2,c[r>>2]|0)|0;c[K>>2]=X;r=c[b+40>>2]|0;c[o>>2]=r;if((X|0)!=0){ab=X;ac=r;break}X=cg[c[e+4>>2]&511](c[e>>2]|0,o,4,c[e+8>>2]|0)|0;c[K>>2]=X;ab=X;ac=r}else{aa=$;L=2122}}while(0);if((L|0)==2122){$=c[b+40>>2]|0;c[o>>2]=$;ab=aa;ac=$}if((ac|0)>0){$=b+8|0;aa=e+4|0;o=e|0;Z=e+8|0;_=j;p=k;r=l;X=0;Y=ab;while(1){q=c[$>>2]|0;s=q+(X<<4)|0;W=q+(X<<4)+8|0;q=c[W>>2]|0;a[n]=q&255;if((Y|0)==0){t=cg[c[aa>>2]&511](c[o>>2]|0,n,1,c[Z>>2]|0)|0;c[K>>2]=t;ad=t;ae=c[W>>2]|0}else{ad=Y;ae=q}L2679:do{if((ae|0)==3){h[l>>3]=+h[s>>3];if((ad|0)!=0){af=ad;break}q=cg[c[aa>>2]&511](c[o>>2]|0,r,8,c[Z>>2]|0)|0;c[K>>2]=q;af=q}else if((ae|0)==1){a[m]=c[s>>2]&255;if((ad|0)!=0){af=ad;break}q=cg[c[aa>>2]&511](c[o>>2]|0,m,1,c[Z>>2]|0)|0;c[K>>2]=q;af=q}else if((ae|0)==4){q=c[s>>2]|0;do{if((q|0)!=0){W=q+16|0;if((W|0)==0){break}c[k>>2]=(c[q+12>>2]|0)+1;if((ad|0)!=0){af=ad;break L2679}t=cg[c[aa>>2]&511](c[o>>2]|0,p,4,c[Z>>2]|0)|0;c[K>>2]=t;if((t|0)!=0){af=t;break L2679}t=cg[c[aa>>2]&511](c[o>>2]|0,W,c[k>>2]|0,c[Z>>2]|0)|0;c[K>>2]=t;af=t;break L2679}}while(0);c[j>>2]=0;if((ad|0)!=0){af=ad;break}q=cg[c[aa>>2]&511](c[o>>2]|0,_,4,c[Z>>2]|0)|0;c[K>>2]=q;af=q}else{af=ad}}while(0);s=X+1|0;if((s|0)<(ac|0)){X=s;Y=af}else{ag=af;break}}}else{ag=ab}ab=c[b+52>>2]|0;c[g>>2]=ab;if((ag|0)==0){c[K>>2]=cg[c[e+4>>2]&511](c[e>>2]|0,g,4,c[e+8>>2]|0)|0}if((ab|0)>0){g=b+16|0;ag=0;do{eN(c[(c[g>>2]|0)+(ag<<2)>>2]|0,c[H>>2]|0,e);ag=ag+1|0;}while((ag|0)<(ab|0))}ab=e+12|0;if((c[ab>>2]|0)==0){ah=c[b+48>>2]|0}else{ah=0}ag=c[b+20>>2]|0;c[G>>2]=ah;H=c[K>>2]|0;do{if((H|0)==0){g=e+4|0;af=e|0;Y=e+8|0;X=cg[c[g>>2]&511](c[af>>2]|0,G,4,c[Y>>2]|0)|0;c[K>>2]=X;if((X|0)!=0){ai=X;break}X=cg[c[g>>2]&511](c[af>>2]|0,ag,ah<<2,c[Y>>2]|0)|0;c[K>>2]=X;ai=X}else{ai=H}}while(0);if((c[ab>>2]|0)==0){aj=c[b+56>>2]|0}else{aj=0}c[F>>2]=aj;if((ai|0)==0){H=cg[c[e+4>>2]&511](c[e>>2]|0,F,4,c[e+8>>2]|0)|0;c[K>>2]=H;ak=H}else{ak=ai}if((aj|0)>0){ai=b+24|0;H=D;F=E;ah=e+4|0;ag=e|0;G=e+8|0;X=C;Y=B;af=0;g=ak;while(1){ac=c[(c[ai>>2]|0)+(af*12|0)>>2]|0;do{if((ac|0)==0){L=2160}else{ad=ac+16|0;if((ad|0)==0){L=2160;break}c[E>>2]=(c[ac+12>>2]|0)+1;if((g|0)!=0){al=g;break}Z=cg[c[ah>>2]&511](c[ag>>2]|0,F,4,c[G>>2]|0)|0;c[K>>2]=Z;if((Z|0)!=0){al=Z;break}Z=cg[c[ah>>2]&511](c[ag>>2]|0,ad,c[E>>2]|0,c[G>>2]|0)|0;c[K>>2]=Z;al=Z}}while(0);do{if((L|0)==2160){L=0;c[D>>2]=0;if((g|0)!=0){al=g;break}ac=cg[c[ah>>2]&511](c[ag>>2]|0,H,4,c[G>>2]|0)|0;c[K>>2]=ac;al=ac}}while(0);ac=c[ai>>2]|0;c[C>>2]=c[ac+(af*12|0)+4>>2];if((al|0)==0){Z=cg[c[ah>>2]&511](c[ag>>2]|0,X,4,c[G>>2]|0)|0;c[K>>2]=Z;am=c[ai>>2]|0;an=Z}else{am=ac;an=al}c[B>>2]=c[am+(af*12|0)+8>>2];if((an|0)==0){ac=cg[c[ah>>2]&511](c[ag>>2]|0,Y,4,c[G>>2]|0)|0;c[K>>2]=ac;ao=ac}else{ao=an}ac=af+1|0;if((ac|0)<(aj|0)){af=ac;g=ao}else{ap=ao;break}}}else{ap=ak}if((c[ab>>2]|0)==0){aq=c[b+36>>2]|0}else{aq=0}c[A>>2]=aq;if((ap|0)==0){ab=cg[c[e+4>>2]&511](c[e>>2]|0,A,4,c[e+8>>2]|0)|0;c[K>>2]=ab;ar=ab}else{ar=ap}if((aq|0)<=0){i=f;return}ap=b+28|0;b=y;ab=z;A=e+4|0;ak=e|0;ao=e+8|0;e=0;g=ar;while(1){ar=c[(c[ap>>2]|0)+(e<<2)>>2]|0;do{if((ar|0)==0){L=2178}else{af=ar+16|0;if((af|0)==0){L=2178;break}c[z>>2]=(c[ar+12>>2]|0)+1;if((g|0)!=0){as=g;break}aj=cg[c[A>>2]&511](c[ak>>2]|0,ab,4,c[ao>>2]|0)|0;c[K>>2]=aj;if((aj|0)!=0){as=aj;break}aj=cg[c[A>>2]&511](c[ak>>2]|0,af,c[z>>2]|0,c[ao>>2]|0)|0;c[K>>2]=aj;as=aj}}while(0);do{if((L|0)==2178){L=0;c[y>>2]=0;if((g|0)!=0){as=g;break}ar=cg[c[A>>2]&511](c[ak>>2]|0,b,4,c[ao>>2]|0)|0;c[K>>2]=ar;as=ar}}while(0);ar=e+1|0;if((ar|0)<(aq|0)){e=ar;g=as}else{break}}i=f;return}function eO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=fu(b,0,0,(d<<4)+24|0)|0;e3(b,f,6);a[f+6|0]=1;c[f+12>>2]=e;a[f+7|0]=d&255;return f|0}function eP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=fu(b,0,0,(d<<2)+20|0)|0;g=f;e3(b,f,6);a[f+6|0]=0;c[f+12>>2]=e;a[f+7|0]=d&255;if((d|0)==0){return g|0}e=f+20|0;f=d;do{f=f-1|0;c[e+(f<<2)>>2]=0;}while((f|0)!=0);return g|0}function eQ(a){a=a|0;var b=0;b=fu(a,0,0,32)|0;e3(a,b,10);c[b+8>>2]=b+16;c[b+24>>2]=0;return b|0}function eR(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[b+16>>2]|0;g=b+104|0;while(1){h=c[g>>2]|0;if((h|0)==0){i=2201;break}j=c[h+8>>2]|0;if(j>>>0<e>>>0){i=2201;break}k=h;if((j|0)==(e|0)){break}else{g=h|0}}if((i|0)==2201){i=fu(b,0,0,32)|0;b=i;a[i+4|0]=10;a[i+5|0]=a[f+20|0]&3;c[i+8>>2]=e;c[i>>2]=c[g>>2];c[g>>2]=i;c[i+16>>2]=f+120;g=f+140|0;e=c[g>>2]|0;c[i+20>>2]=e;c[e+16>>2]=b;c[g>>2]=b;l=b;return l|0}b=h+5|0;h=a[b]|0;if((h&3&((d[f+20|0]|0)^3)|0)==0){l=k;return l|0}a[b]=h^3;l=k;return l|0}function eS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((c[b+8>>2]|0)==(b+16|0)){d=b;e=fu(a,d,32,0)|0;return}f=b+16|0;g=f;h=f+4|0;c[(c[h>>2]|0)+16>>2]=c[g>>2];c[(c[g>>2]|0)+20>>2]=c[h>>2];d=b;e=fu(a,d,32,0)|0;return}function eT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=c[a+56>>2]|0;if((e|0)<=0){f=0;return f|0}g=c[a+24>>2]|0;a=b;b=0;while(1){if((c[g+(b*12|0)+4>>2]|0)>(d|0)){f=0;h=2220;break}if((c[g+(b*12|0)+8>>2]|0)>(d|0)){i=a-1|0;if((i|0)==0){h=2216;break}else{j=i}}else{j=a}i=b+1|0;if((i|0)<(e|0)){a=j;b=i}else{f=0;h=2219;break}}if((h|0)==2216){f=(c[g+(b*12|0)>>2]|0)+16|0;return f|0}else if((h|0)==2220){return f|0}else if((h|0)==2219){return f|0}return 0}function eU(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=b+104|0;g=c[f>>2]|0;if((g|0)==0){return}h=(c[b+16>>2]|0)+20|0;i=g;while(1){g=i+8|0;if((c[g>>2]|0)>>>0<e>>>0){j=2234;break}c[f>>2]=c[i>>2];if((a[i+5|0]&3&((d[h]|0)^3)|0)==0){k=i+16|0;l=k+4|0;c[(c[l>>2]|0)+16>>2]=c[k>>2];c[(c[k>>2]|0)+20>>2]=c[l>>2];l=c[g>>2]|0;m=l;n=k;o=c[m+4>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=o;c[k+8>>2]=c[l+8>>2];c[g>>2]=k;e9(b,i)}else{k=i+16|0;if((c[g>>2]|0)!=(k|0)){g=k+4|0;c[(c[g>>2]|0)+16>>2]=c[k>>2];c[(c[k>>2]|0)+20>>2]=c[g>>2]}g=i;fu(b,g,32,0)|0}g=c[f>>2]|0;if((g|0)==0){j=2235;break}else{i=g}}if((j|0)==2235){return}else if((j|0)==2234){return}}function eV(b){b=b|0;var c=0;c=fu(b,0,0,76)|0;e3(b,c,9);j2(c+8|0,0,60);b=c+72|0;w=0;a[b]=w&255;w=w>>8;a[b+1|0]=w&255;w=w>>8;a[b+2|0]=w&255;w=w>>8;a[b+3|0]=w&255;return c|0}function eW(a,b){a=a|0;b=b|0;fu(a,c[b+12>>2]|0,c[b+44>>2]<<2,0)|0;fu(a,c[b+16>>2]|0,c[b+52>>2]<<2,0)|0;fu(a,c[b+8>>2]|0,c[b+40>>2]<<4,0)|0;fu(a,c[b+20>>2]|0,c[b+48>>2]<<2,0)|0;fu(a,c[b+24>>2]|0,(c[b+56>>2]|0)*12|0,0)|0;fu(a,c[b+28>>2]|0,c[b+36>>2]<<2,0)|0;fu(a,b,76,0)|0;return}function eX(b,c){b=b|0;c=c|0;var e=0,f=0;e=d[c+7|0]|0;if((a[c+6|0]|0)==0){f=(e<<2)+20|0}else{f=(e<<4)+24|0}fu(b,c,f,0)|0;return}function eY(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=b+16|0;b=c[e>>2]|0;f=c[b+112>>2]|0;g=c[f>>2]|0;if((g|0)==0){h=0;return h|0}i=(d|0)==0;d=b+48|0;b=f;f=0;j=g;L2826:while(1){L2828:do{if(i){g=f;k=j;while(1){l=k+5|0;m=a[l]|0;if(!((m&3)!=0&(m&8)==0)){n=g;o=k;break L2828}m=c[k+8>>2]|0;p=m;if((m|0)==0){q=g;r=k;s=l;t=2258;break L2828}if((a[p+6|0]&4)!=0){q=g;r=k;s=l;t=2258;break L2828}if((gf(p,2,c[(c[e>>2]|0)+196>>2]|0)|0)==0){q=g;r=k;s=l;t=2258;break L2828}p=g+24+(c[k+16>>2]|0)|0;a[l]=a[l]|8;l=k|0;c[b>>2]=c[l>>2];m=c[d>>2]|0;if((m|0)==0){c[l>>2]=k}else{c[l>>2]=c[m>>2];c[c[d>>2]>>2]=k}c[d>>2]=k;m=c[b>>2]|0;if((m|0)==0){h=p;t=2265;break L2826}else{g=p;k=m}}}else{k=f;g=j;while(1){m=g+5|0;if((a[m]&8)!=0){n=k;o=g;break L2828}p=c[g+8>>2]|0;l=p;if((p|0)==0){q=k;r=g;s=m;t=2258;break L2828}if((a[l+6|0]&4)!=0){q=k;r=g;s=m;t=2258;break L2828}if((gf(l,2,c[(c[e>>2]|0)+196>>2]|0)|0)==0){q=k;r=g;s=m;t=2258;break L2828}l=k+24+(c[g+16>>2]|0)|0;a[m]=a[m]|8;m=g|0;c[b>>2]=c[m>>2];p=c[d>>2]|0;if((p|0)==0){c[m>>2]=g}else{c[m>>2]=c[p>>2];c[c[d>>2]>>2]=g}c[d>>2]=g;p=c[b>>2]|0;if((p|0)==0){h=l;t=2266;break L2826}else{k=l;g=p}}}}while(0);if((t|0)==2258){t=0;a[s]=a[s]|8;n=q;o=r}g=o|0;k=c[g>>2]|0;if((k|0)==0){h=n;t=2267;break}else{b=g;f=n;j=k}}if((t|0)==2266){return h|0}else if((t|0)==2267){return h|0}else if((t|0)==2265){return h|0}return 0}function eZ(a){a=a|0;var b=0;b=a+16|0;if((c[(c[b>>2]|0)+48>>2]|0)==0){return}do{e_(a);}while((c[(c[b>>2]|0)+48>>2]|0)!=0);return}function e_(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=b+16|0;e=c[d>>2]|0;f=e+48|0;g=c[f>>2]|0;h=g|0;i=c[h>>2]|0;if((i|0)==(g|0)){c[f>>2]=0;j=i|0}else{f=i|0;c[h>>2]=c[f>>2];j=f}f=e+112|0;c[j>>2]=c[c[f>>2]>>2];c[c[f>>2]>>2]=i;f=i+5|0;a[f]=a[e+20|0]&3|a[f]&-8;f=c[i+8>>2]|0;j=f;if((f|0)==0){return}if((a[j+6|0]&4)!=0){return}f=gf(j,2,c[(c[d>>2]|0)+196>>2]|0)|0;if((f|0)==0){return}d=b+57|0;j=a[d]|0;h=e+64|0;g=c[h>>2]|0;a[d]=0;c[h>>2]=c[e+68>>2]<<1;e=b+8|0;k=c[e>>2]|0;l=f;m=k;n=c[l+4>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=n;c[k+8>>2]=c[f+8>>2];f=c[e>>2]|0;c[f+16>>2]=i;c[f+24>>2]=7;f=c[e>>2]|0;c[e>>2]=f+32;eG(b,f,0);a[d]=j;c[h>>2]=g;return}function e$(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;a[d+20|0]=67;e0(b,d+28|0,-3)|0;e=d+8|0;if((c[e>>2]|0)<=0){return}f=d|0;d=0;do{e0(b,(c[f>>2]|0)+(d<<2)|0,-3)|0;d=d+1|0;}while((d|0)<(c[e>>2]|0));return}function e0(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=b+16|0;h=c[g>>2]|0;i=h+20|0;j=d[i]^3;k=c[e>>2]|0;if((k|0)==0){l=e;return l|0}m=h+28|0;h=f;f=e;e=k;while(1){k=h-1|0;if((h|0)==0){l=f;n=2310;break}o=e+4|0;if((a[o]|0)==8){p=e+104|0;e0(b,p,-3)|0}p=e+5|0;q=a[p]|0;L2894:do{if(((q&255^3)&j|0)==0){r=e|0;c[f>>2]=c[r>>2];if((e|0)==(c[m>>2]|0)){c[m>>2]=c[r>>2]}switch(d[o]|0){case 5:{f7(b,e);s=f;break L2894;break};case 4:{r=(c[g>>2]|0)+4|0;c[r>>2]=(c[r>>2]|0)-1;fu(b,e,(c[e+12>>2]|0)+17|0,0)|0;s=f;break L2894;break};case 7:{fu(b,e,(c[e+16>>2]|0)+24|0,0)|0;s=f;break L2894;break};case 9:{eW(b,e);s=f;break L2894;break};case 6:{eX(b,e);s=f;break L2894;break};case 8:{fU(b,e|0);s=f;break L2894;break};case 10:{eS(b,e);s=f;break L2894;break};default:{s=f;break L2894}}}else{a[p]=a[i]&3|q&-8;s=e|0}}while(0);q=c[s>>2]|0;if((q|0)==0){l=s;n=2312;break}else{h=k;f=s;e=q}}if((n|0)==2310){return l|0}else if((n|0)==2312){return l|0}return 0}function e1(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=c[b+16>>2]|0;e=(c[d+84>>2]|0)*10|0;f=d+68|0;g=d+64|0;h=d+76|0;c[h>>2]=(c[f>>2]|0)-(c[g>>2]|0)+(c[h>>2]|0);i=d+21|0;j=(e|0)==0?2147483646:e;do{j=j-(e4(b)|0)|0;k=a[i]|0;}while(k<<24>>24!=0&(j|0)>0);if(k<<24>>24==0){c[g>>2]=aa(c[d+80>>2]|0,((c[d+72>>2]|0)>>>0)/100|0)|0;return}d=c[h>>2]|0;if(d>>>0<1024){c[g>>2]=(c[f>>2]|0)+1024;return}else{c[h>>2]=d-1024;c[g>>2]=c[f>>2];return}}function e2(b,d){b=b|0;d=d|0;var e=0;e=c[b+16>>2]|0;b=d+5|0;a[b]=a[b]&-5;b=e+40|0;c[d+24>>2]=c[b>>2];c[b>>2]=d;return}function e3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+16>>2]|0;b=f+28|0;c[d>>2]=c[b>>2];c[b>>2]=d;a[d+5|0]=a[f+20|0]&3;a[d+4|0]=e;return}function e4(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=b+16|0;f=c[e>>2]|0;g=f+21|0;switch(d[g]|0|0){case 0:{e6(b);h=0;return h|0};case 1:{i=f+36|0;if((c[i>>2]|0)!=0){h=fb(f)|0;return h|0}j=f+120|0;k=c[f+140>>2]|0;do{if((k|0)!=(j|0)){l=k;do{do{if((a[l+5|0]&7)==0){m=c[l+8>>2]|0;if((c[m+8>>2]|0)<=3){break}n=c[m>>2]|0;if((a[n+5|0]&3)==0){break}e8(f,n)}}while(0);l=c[l+20>>2]|0;}while((l|0)!=(j|0));if((c[i>>2]|0)==0){break}do{fb(f)|0;}while((c[i>>2]|0)!=0)}}while(0);j=f+44|0;c[i>>2]=c[j>>2];c[j>>2]=0;if((a[b+5|0]&3)!=0){e8(f,b)}fa(f);if((c[i>>2]|0)!=0){do{fb(f)|0;}while((c[i>>2]|0)!=0)}k=f+40|0;l=c[k>>2]|0;c[i>>2]=l;c[k>>2]=0;if((l|0)!=0){do{fb(f)|0;}while((c[i>>2]|0)!=0)}l=eY(b,0)|0;k=f+48|0;n=c[k>>2]|0;if((n|0)!=0){m=f+20|0;o=n;do{o=c[o>>2]|0;n=o+5|0;a[n]=a[m]&3|a[n]&-8;e8(f,o);}while((o|0)!=(c[k>>2]|0))}if((c[i>>2]|0)==0){p=0}else{k=0;while(1){o=(fb(f)|0)+k|0;if((c[i>>2]|0)==0){p=o;break}else{k=o}}}k=c[j>>2]|0;if((k|0)!=0){j=k;do{k=j;i=c[j+28>>2]|0;if(!((a[j+5|0]&16)==0|(i|0)==0)){o=j+12|0;m=i;do{m=m-1|0;i=c[o>>2]|0;n=i+(m<<4)+8|0;q=c[n>>2]|0;do{if((q|0)>3){r=(c[i+(m<<4)>>2]|0)+5|0;s=a[r]|0;if((q|0)==4){a[r]=s&-4;break}if((s&3)==0){if((q|0)!=7){break}if((s&8)==0){break}}c[n>>2]=0}}while(0);}while((m|0)!=0)}m=j+16|0;o=1<<(d[k+7|0]|0);do{o=o-1|0;n=c[m>>2]|0;q=n+(o<<5)|0;i=n+(o<<5)+8|0;s=c[i>>2]|0;L2988:do{if((s|0)!=0){r=n+(o<<5)+24|0;t=c[r>>2]|0;do{if((t|0)>3){u=(c[n+(o<<5)+16>>2]|0)+5|0;v=a[u]|0;if((t|0)==4){a[u]=v&-4;w=c[i>>2]|0;x=2367;break}else{if((v&3)==0){w=s;x=2367;break}else{break}}}else{w=s;x=2367}}while(0);do{if((x|0)==2367){x=0;if((w|0)<=3){break L2988}t=(c[q>>2]|0)+5|0;v=a[t]|0;if((w|0)==4){a[t]=v&-4;break L2988}if((v&3)!=0){break}if((w|0)!=7){break L2988}if((v&8)==0){break L2988}}}while(0);c[i>>2]=0;if((c[r>>2]|0)<=3){break}c[r>>2]=11}}while(0);}while((o|0)!=0);j=c[j+24>>2]|0;}while((j|0)!=0)}j=f+20|0;a[j]=a[j]^3;c[f+24>>2]=0;c[f+32>>2]=f+28;a[g]=2;c[f+72>>2]=(c[f+68>>2]|0)-(p+l);h=0;return h|0};case 4:{if((c[f+48>>2]|0)==0){a[g]=0;c[f+76>>2]=0;h=0;return h|0}e_(b);l=f+72|0;p=c[l>>2]|0;if(p>>>0<=100){h=100;return h|0}c[l>>2]=p-100;h=100;return h|0};case 2:{p=f+68|0;l=c[p>>2]|0;j=f+24|0;w=c[j>>2]|0;c[j>>2]=w+1;e0(b,(c[f>>2]|0)+(w<<2)|0,-3)|0;if((c[j>>2]|0)>=(c[f+8>>2]|0)){a[g]=3}j=f+72|0;c[j>>2]=(c[p>>2]|0)-l+(c[j>>2]|0);h=10;return h|0};case 3:{j=f+68|0;l=c[j>>2]|0;p=f+32|0;w=e0(b,c[p>>2]|0,40)|0;c[p>>2]=w;if((c[w>>2]|0)==0){w=c[e>>2]|0;e=c[w+8>>2]|0;if((c[w+4>>2]|0)>>>0<((e|0)/4|0)>>>0&(e|0)>64){fZ(b,(e|0)/2|0)}e=w+52|0;p=w+60|0;w=c[p>>2]|0;if(w>>>0>64){x=w>>>1;if((x+1|0)>>>0<4294967294){o=e|0;y=fu(b,c[o>>2]|0,w,x)|0;z=o}else{y=fv(b)|0;z=e|0}c[z>>2]=y;c[p>>2]=x}a[g]=4}g=f+72|0;c[g>>2]=(c[j>>2]|0)-l+(c[g>>2]|0);h=400;return h|0};default:{h=0;return h|0}}return 0}function e5(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+16>>2]|0;e=d+21|0;f=a[e]|0;if((f&255)<2){c[d+24>>2]=0;c[d+32>>2]=d+28;c[d+36>>2]=0;c[d+40>>2]=0;c[d+44>>2]=0;a[e]=2;g=2407}else{if(f<<24>>24!=4){g=2407}}if((g|0)==2407){while(1){g=0;e4(b)|0;if((a[e]|0)==4){break}else{g=2407}}}e6(b);if((a[e]|0)!=0){do{e4(b)|0;}while((a[e]|0)!=0)}c[d+64>>2]=aa(c[d+80>>2]|0,((c[d+72>>2]|0)>>>0)/100|0)|0;return}function e6(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b+16|0;b=c[d>>2]|0;c[b+36>>2]=0;c[b+40>>2]=0;c[b+44>>2]=0;e=b+112|0;f=c[e>>2]|0;if((a[f+5|0]&3)==0){g=f}else{e8(b,f);g=c[e>>2]|0}do{if((c[g+80>>2]|0)>3){e=c[g+72>>2]|0;if((a[e+5|0]&3)==0){break}e8(b,e)}}while(0);g=c[d>>2]|0;if((c[g+104>>2]|0)<=3){fa(b);h=b+21|0;a[h]=1;return}d=c[g+96>>2]|0;if((a[d+5|0]&3)==0){fa(b);h=b+21|0;a[h]=1;return}e8(b,d);fa(b);h=b+21|0;a[h]=1;return}function e7(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+16>>2]|0;if((a[f+21|0]|0)==1){e8(f,e);return}else{e=d+5|0;a[e]=a[f+20|0]&3|a[e]&-8;return}}function e8(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=e;L3073:while(1){g=f+5|0;e=a[g]&-4;a[g]=e;switch(d[f+4|0]|0|0){case 7:{break};case 5:{h=2442;break L3073;break};case 6:{h=2441;break L3073;break};case 9:{h=2444;break L3073;break};case 8:{h=2443;break L3073;break};case 10:{h=2436;break L3073;break};default:{h=2446;break L3073}}i=c[f+8>>2]|0;a[g]=e|4;do{if((i|0)!=0){if((a[i+5|0]&3)==0){break}e8(b,i)}}while(0);i=c[f+12>>2]|0;if((a[i+5|0]&3)==0){h=2448;break}f=i}if((h|0)==2442){i=b+36|0;c[f+24>>2]=c[i>>2];c[i>>2]=f;return}else if((h|0)==2441){i=b+36|0;c[f+8>>2]=c[i>>2];c[i>>2]=f;return}else if((h|0)==2444){i=b+36|0;c[f+68>>2]=c[i>>2];c[i>>2]=f;return}else if((h|0)==2443){i=b+36|0;c[f+108>>2]=c[i>>2];c[i>>2]=f;return}else if((h|0)==2436){i=f+8|0;e=c[i>>2]|0;do{if((c[e+8>>2]|0)>3){j=c[e>>2]|0;if((a[j+5|0]&3)==0){k=e;break}e8(b,j);k=c[i>>2]|0}else{k=e}}while(0);if((k|0)!=(f+16|0)){return}a[g]=a[g]|4;return}else if((h|0)==2446){return}else if((h|0)==2448){return}}function e9(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+16|0;b=c[e>>2]|0;f=b+28|0;c[d>>2]=c[f>>2];c[f>>2]=d;f=d+5|0;g=a[f]|0;if((g&7)!=0){return}if((a[b+21|0]|0)!=1){a[f]=a[b+20|0]&3|g&-8;return}a[f]=g|4;b=c[d+8>>2]|0;if((c[b+8>>2]|0)<=3){return}d=c[b>>2]|0;if((a[d+5|0]&3)==0){return}b=c[e>>2]|0;if((a[b+21|0]|0)==1){e8(b,d);return}else{a[f]=a[b+20|0]&3|g&-8;return}}function fa(b){b=b|0;var d=0;d=c[b+152>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+156>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+160>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+164>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+168>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+172>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+176>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+180>>2]|0;do{if((d|0)!=0){if((a[d+5|0]&3)==0){break}e8(b,d)}}while(0);d=c[b+184>>2]|0;if((d|0)==0){return}if((a[d+5|0]&3)==0){return}e8(b,d);return}function fb(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;e=b+36|0;f=c[e>>2]|0;g=f+5|0;a[g]=a[g]|4;h=d[f+4|0]|0;if((h|0)==5){i=f;j=f+24|0;c[e>>2]=c[j>>2];k=f+8|0;l=c[k>>2]|0;m=l;do{if((l|0)==0){n=0;o=2512}else{if((a[m+5|0]&3)==0){p=m}else{e8(b,l);q=c[k>>2]|0;if((q|0)==0){n=0;o=2512;break}else{p=q}}if((a[p+6|0]&8)!=0){n=0;o=2512;break}q=gf(p,3,c[b+200>>2]|0)|0;if((q|0)==0){n=0;o=2512;break}if((c[q+8>>2]|0)!=4){n=0;o=2512;break}r=(c[q>>2]|0)+16|0;q=(aU(r|0,107)|0)!=0;s=(aU(r|0,118)|0)!=0;r=s&1;if(q|s){a[g]=(r<<4|(q&1)<<3|a[g]&-25&255)&255;t=b+44|0;c[j>>2]=c[t>>2];c[t>>2]=f}if(q&s){u=i+7|0;o=2541;break}else{if(s){v=q;w=r;x=1;o=2518;break}else{n=q;o=2512;break}}}}while(0);do{if((o|0)==2512){j=c[f+28>>2]|0;if((j|0)==0){v=n;w=0;x=0;o=2518;break}p=f+12|0;k=j;while(1){j=k-1|0;l=c[p>>2]|0;do{if((c[l+(j<<4)+8>>2]|0)>3){m=c[l+(j<<4)>>2]|0;if((a[m+5|0]&3)==0){break}e8(b,m)}}while(0);if((j|0)==0){v=n;w=0;x=0;o=2518;break}else{k=j}}}}while(0);if((o|0)==2518){n=i+7|0;i=(1<<d[n])-1|0;k=f+16|0;L3188:do{if(v){p=x^1;l=i;while(1){m=c[k>>2]|0;q=m+(l<<5)|0;r=c[m+(l<<5)+8>>2]|0;do{if((r|0)==0){s=m+(l<<5)+24|0;if((c[s>>2]|0)<=3){break}c[s>>2]=11}else{if(!((r|0)>3&p)){break}s=c[q>>2]|0;if((a[s+5|0]&3)==0){break}e8(b,s)}}while(0);if((l|0)==0){break L3188}l=l-1|0}}else{l=i;while(1){p=c[k>>2]|0;q=p+(l<<5)|0;r=p+(l<<5)+8|0;m=p+(l<<5)+24|0;j=(c[m>>2]|0)>3;do{if((c[r>>2]|0)==0){if(!j){break}c[m>>2]=11}else{do{if(j){s=c[p+(l<<5)+16>>2]|0;if((a[s+5|0]&3)==0){break}e8(b,s)}}while(0);if(x){break}if((c[r>>2]|0)<=3){break}s=c[q>>2]|0;if((a[s+5|0]&3)==0){break}e8(b,s)}}while(0);if((l|0)==0){break L3188}l=l-1|0}}}while(0);if((w|0)==0&(v^1)){y=n}else{u=n;o=2541}}if((o|0)==2541){a[g]=a[g]&-5;y=u}z=(c[f+28>>2]<<4)+32+(32<<d[y])|0;return z|0}else if((h|0)==6){y=f;c[e>>2]=c[f+8>>2];u=c[f+12>>2]|0;if((a[u+5|0]&3)!=0){e8(b,u)}u=f+6|0;do{if((a[u]|0)==0){o=f;n=c[f+16>>2]|0;if((a[n+5|0]&3)!=0){e8(b,n)}n=y+7|0;v=a[n]|0;if(v<<24>>24==0){A=0;break}else{B=0;C=v}while(1){v=c[o+20+(B<<2)>>2]|0;if((a[v+5|0]&3)==0){D=C}else{e8(b,v);D=a[n]|0}v=B+1|0;if((v|0)<(D&255|0)){B=v;C=D}else{A=D;break}}}else{n=y+7|0;o=a[n]|0;if(o<<24>>24==0){A=0;break}else{E=0;F=o}while(1){do{if((c[y+24+(E<<4)+8>>2]|0)>3){o=c[y+24+(E<<4)>>2]|0;if((a[o+5|0]&3)==0){G=F;break}e8(b,o);G=a[n]|0}else{G=F}}while(0);o=E+1|0;if((o|0)<(G&255|0)){E=o;F=G}else{A=G;break}}}}while(0);G=A&255;if((a[u]|0)==0){z=(G<<2)+20|0;return z|0}else{z=(G<<4)+24|0;return z|0}}else if((h|0)==8){G=f|0;u=f+108|0;c[e>>2]=c[u>>2];A=b+40|0;c[u>>2]=c[A>>2];c[A>>2]=f;a[g]=a[g]&-5;do{if((c[f+80>>2]|0)>3){g=c[f+72>>2]|0;if((a[g+5|0]&3)==0){break}e8(b,g)}}while(0);g=f+8|0;A=c[g>>2]|0;u=f+40|0;F=c[u>>2]|0;E=f+20|0;y=c[E>>2]|0;if(F>>>0>y>>>0){H=A}else{D=A;C=F;while(1){F=c[C+8>>2]|0;B=D>>>0<F>>>0?F:D;F=C+24|0;if(F>>>0>y>>>0){H=B;break}else{D=B;C=F}}}C=f+32|0;D=c[C>>2]|0;if(D>>>0<A>>>0){y=D;F=A;while(1){do{if((c[y+8>>2]|0)>3){A=c[y>>2]|0;if((a[A+5|0]&3)==0){I=F;break}e8(b,A);I=c[g>>2]|0}else{I=F}}while(0);A=y+16|0;if(A>>>0<I>>>0){y=A;F=I}else{J=A;break}}}else{J=D}if(J>>>0<=H>>>0){D=J;do{c[D+8>>2]=0;D=D+16|0;}while(D>>>0<=H>>>0)}D=H-(c[C>>2]|0)|0;C=f+48|0;H=c[C>>2]|0;do{if((H|0)>2e4){K=f+44|0}else{if(((((c[E>>2]|0)-(c[u>>2]|0)|0)/24|0)<<2|0)<(H|0)&(H|0)>16){ez(G,(H|0)/2|0)}J=f+44|0;I=c[J>>2]|0;if(!((D>>2|0)<(I|0)&(I|0)>90)){K=J;break}ey(G,(I|0)/2|0);K=J}}while(0);z=(c[K>>2]<<4)+120+((c[C>>2]|0)*24|0)|0;return z|0}else if((h|0)==9){c[e>>2]=c[f+68>>2];e=c[f+32>>2]|0;if((e|0)!=0){h=e+5|0;a[h]=a[h]&-4}h=f+40|0;e=c[h>>2]|0;if((e|0)>0){C=f+8|0;K=0;G=e;while(1){e=c[C>>2]|0;do{if((c[e+(K<<4)+8>>2]|0)>3){D=c[e+(K<<4)>>2]|0;if((a[D+5|0]&3)==0){L=G;break}e8(b,D);L=c[h>>2]|0}else{L=G}}while(0);e=K+1|0;if((e|0)<(L|0)){K=e;G=L}else{break}}}L=f+36|0;G=c[L>>2]|0;if((G|0)>0){K=f+28|0;C=0;e=G;while(1){G=c[(c[K>>2]|0)+(C<<2)>>2]|0;if((G|0)==0){M=e}else{D=G+5|0;a[D]=a[D]&-4;M=c[L>>2]|0}D=C+1|0;if((D|0)<(M|0)){C=D;e=M}else{break}}}M=f+52|0;e=c[M>>2]|0;if((e|0)>0){C=f+16|0;K=0;D=e;while(1){G=c[(c[C>>2]|0)+(K<<2)>>2]|0;do{if((G|0)==0){N=D}else{if((a[G+5|0]&3)==0){N=D;break}e8(b,G);N=c[M>>2]|0}}while(0);G=K+1|0;if((G|0)<(N|0)){K=G;D=N}else{O=N;break}}}else{O=e}e=f+56|0;N=c[e>>2]|0;if((N|0)>0){D=f+24|0;K=0;b=N;while(1){C=c[(c[D>>2]|0)+(K*12|0)>>2]|0;if((C|0)==0){P=b}else{G=C+5|0;a[G]=a[G]&-4;P=c[e>>2]|0}G=K+1|0;if((G|0)<(P|0)){K=G;b=P}else{break}}Q=c[M>>2]|0;R=P}else{Q=O;R=N}z=(c[h>>2]<<4)+76+(R*12|0)+(Q+(c[f+44>>2]|0)+(c[f+48>>2]|0)+(c[L>>2]|0)<<2)|0;return z|0}else{z=0;return z|0}return 0}function fc(b){b=b|0;var d=0,e=0,f=0;d=0;do{e=c[744+(d<<2)>>2]|0;f=f_(b,e,j_(e|0)|0)|0;e=f+5|0;a[e]=a[e]|32;d=d+1|0;a[f+6|0]=d&255;}while((d|0)<21);return}function fd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;if((b|0)>=257){e=c[744+(b-257<<2)>>2]|0;i=d;return e|0}f=(b8(b|0)|0)==0;g=c[a+52>>2]|0;if(f){f=fy(g,6208,(h=i,i=i+8|0,c[h>>2]=b,h)|0)|0;i=h;e=f;i=d;return e|0}else{f=fy(g,6424,(h=i,i=i+8|0,c[h>>2]=b,h)|0)|0;i=h;e=f;i=d;return e|0}return 0}function fe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=i;i=i+160|0;g=f|0;h=f+80|0;j=b+64|0;fz(h,(c[j>>2]|0)+16|0,80);k=b+52|0;l=b+4|0;m=c[l>>2]|0;n=fy(c[k>>2]|0,5960,(o=i,i=i+24|0,c[o>>2]=h,c[o+8>>2]=m,c[o+16>>2]=d,o)|0)|0;i=o;if((e|0)==0){p=c[k>>2]|0;eC(p,3);i=f;return}d=c[k>>2]|0;do{if((e-284|0)>>>0<3){m=b+60|0;h=c[m>>2]|0;q=h+4|0;r=c[q>>2]|0;s=h+8|0;t=c[s>>2]|0;if((r+1|0)>>>0>t>>>0){if(t>>>0>2147483645){u=g|0;fz(u,(c[j>>2]|0)+16|0,80);v=c[k>>2]|0;w=c[l>>2]|0;fy(v,5960,(o=i,i=i+24|0,c[o>>2]=u,c[o+8>>2]=w,c[o+16>>2]=5096,o)|0)|0;i=o;eC(c[k>>2]|0,3);x=c[s>>2]|0;y=c[k>>2]|0}else{x=t;y=d}t=x<<1;if((t|0)==-2){z=fv(y)|0;A=h|0}else{w=h|0;z=fu(y,c[w>>2]|0,x,t)|0;A=w}c[A>>2]=z;c[s>>2]=t;B=c[q>>2]|0;C=z}else{B=r;C=c[h>>2]|0}c[q>>2]=B+1;a[C+B|0]=0;D=c[c[m>>2]>>2]|0}else{if((e|0)>=257){D=c[744+(e-257<<2)>>2]|0;break}m=(b8(e|0)|0)==0;q=c[k>>2]|0;if(m){m=fy(q,6208,(o=i,i=i+8|0,c[o>>2]=e,o)|0)|0;i=o;D=m;break}else{m=fy(q,6424,(o=i,i=i+8|0,c[o>>2]=e,o)|0)|0;i=o;D=m;break}}}while(0);fy(d,5768,(o=i,i=i+16|0,c[o>>2]=n,c[o+8>>2]=D,o)|0)|0;i=o;p=c[k>>2]|0;eC(p,3);i=f;return}function ff(a,b){a=a|0;b=b|0;fe(a,b,c[a+16>>2]|0);return}function fg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+52>>2]|0;f=f_(e,b,d)|0;d=gd(e,c[(c[a+48>>2]|0)+4>>2]|0,f)|0;a=d+8|0;if((c[a>>2]|0)!=0){return f|0}c[d>>2]=1;c[a>>2]=1;a=c[e+16>>2]|0;if((c[a+68>>2]|0)>>>0<(c[a+64>>2]|0)>>>0){return f|0}e1(e);return f|0}function fh(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a[e+68|0]=46;c[e+52>>2]=b;c[e+32>>2]=287;h=e+56|0;c[h>>2]=f;c[e+48>>2]=0;c[e+4>>2]=1;c[e+8>>2]=1;c[e+64>>2]=g;g=e+60|0;f=c[g>>2]|0;i=fu(b,c[f>>2]|0,c[f+8>>2]|0,32)|0;c[c[g>>2]>>2]=i;c[(c[g>>2]|0)+8>>2]=32;g=c[h>>2]|0;i=c[g>>2]|0;c[g>>2]=i-1;g=c[h>>2]|0;if((i|0)==0){j=gu(g)|0;k=e|0;c[k>>2]=j;return}else{i=g+4|0;g=c[i>>2]|0;c[i>>2]=g+1;j=d[g]|0;k=e|0;c[k>>2]=j;return}}function fi(a){a=a|0;var b=0,d=0,e=0;c[a+8>>2]=c[a+4>>2];b=a+32|0;d=b|0;if((c[d>>2]|0)==287){c[a+16>>2]=fj(a,a+24|0)|0;return}else{e=a+16|0;a=b;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];c[d>>2]=287;return}}function fj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0;f=i;i=i+960|0;g=f|0;h=f+80|0;j=f+160|0;k=f+240|0;l=f+320|0;m=f+400|0;n=f+480|0;o=f+560|0;p=f+640|0;q=f+720|0;r=f+800|0;s=f+880|0;t=b+60|0;c[(c[t>>2]|0)+4>>2]=0;u=b|0;v=b+56|0;L3380:while(1){w=c[u>>2]|0;L3382:while(1){switch(w|0){case 126:{x=2712;break L3380;break};case 62:{x=2704;break L3380;break};case 10:case 13:{x=2667;break L3382;break};case 91:{x=2684;break L3380;break};case 60:{x=2696;break L3380;break};case 45:{break L3382;break};case 34:case 39:{x=2720;break L3380;break};case 61:{break L3380;break};case 46:{x=2827;break L3380;break};case-1:{y=287;x=2903;break L3380;break};default:{}}if((aB(w|0)|0)==0){x=2873;break L3380}z=c[v>>2]|0;A=c[z>>2]|0;c[z>>2]=A-1;z=c[v>>2]|0;if((A|0)==0){B=gu(z)|0}else{A=z+4|0;z=c[A>>2]|0;c[A>>2]=z+1;B=d[z]|0}c[u>>2]=B;w=B}if((x|0)==2667){x=0;fl(b);continue}z=c[v>>2]|0;A=c[z>>2]|0;c[z>>2]=A-1;z=c[v>>2]|0;if((A|0)==0){C=gu(z)|0}else{A=z+4|0;z=c[A>>2]|0;c[A>>2]=z+1;C=d[z]|0}c[u>>2]=C;if((C|0)!=45){y=45;x=2904;break}z=c[v>>2]|0;A=c[z>>2]|0;c[z>>2]=A-1;z=c[v>>2]|0;if((A|0)==0){D=gu(z)|0}else{A=z+4|0;z=c[A>>2]|0;c[A>>2]=z+1;D=d[z]|0}c[u>>2]=D;do{if((D|0)==91){z=fm(b)|0;c[(c[t>>2]|0)+4>>2]=0;if((z|0)>-1){fn(b,0,z);c[(c[t>>2]|0)+4>>2]=0;continue L3380}else{E=c[u>>2]|0;break}}else{E=D}}while(0);while(1){if((E|0)==10|(E|0)==13|(E|0)==(-1|0)){continue L3380}z=c[v>>2]|0;A=c[z>>2]|0;c[z>>2]=A-1;z=c[v>>2]|0;if((A|0)==0){F=gu(z)|0}else{A=z+4|0;z=c[A>>2]|0;c[A>>2]=z+1;F=d[z]|0}c[u>>2]=F;E=F}}do{if((x|0)==2712){F=c[v>>2]|0;E=c[F>>2]|0;c[F>>2]=E-1;F=c[v>>2]|0;if((E|0)==0){G=gu(F)|0}else{E=F+4|0;F=c[E>>2]|0;c[E>>2]=F+1;G=d[F]|0}c[u>>2]=G;if((G|0)!=61){y=126;i=f;return y|0}F=c[v>>2]|0;E=c[F>>2]|0;c[F>>2]=E-1;F=c[v>>2]|0;if((E|0)==0){H=gu(F)|0}else{E=F+4|0;F=c[E>>2]|0;c[E>>2]=F+1;H=d[F]|0}c[u>>2]=H;y=283;i=f;return y|0}else if((x|0)==2704){F=c[v>>2]|0;E=c[F>>2]|0;c[F>>2]=E-1;F=c[v>>2]|0;if((E|0)==0){I=gu(F)|0}else{E=F+4|0;F=c[E>>2]|0;c[E>>2]=F+1;I=d[F]|0}c[u>>2]=I;if((I|0)!=61){y=62;i=f;return y|0}F=c[v>>2]|0;E=c[F>>2]|0;c[F>>2]=E-1;F=c[v>>2]|0;if((E|0)==0){J=gu(F)|0}else{E=F+4|0;F=c[E>>2]|0;c[E>>2]=F+1;J=d[F]|0}c[u>>2]=J;y=281;i=f;return y|0}else if((x|0)==2684){F=fm(b)|0;if((F|0)>-1){fn(b,e,F);y=286;i=f;return y|0}if((F|0)==-1){y=91;i=f;return y|0}else{fe(b,5680,286);break}}else if((x|0)==2696){F=c[v>>2]|0;E=c[F>>2]|0;c[F>>2]=E-1;F=c[v>>2]|0;if((E|0)==0){K=gu(F)|0}else{E=F+4|0;F=c[E>>2]|0;c[E>>2]=F+1;K=d[F]|0}c[u>>2]=K;if((K|0)!=61){y=60;i=f;return y|0}F=c[v>>2]|0;E=c[F>>2]|0;c[F>>2]=E-1;F=c[v>>2]|0;if((E|0)==0){L=gu(F)|0}else{E=F+4|0;F=c[E>>2]|0;c[E>>2]=F+1;L=d[F]|0}c[u>>2]=L;y=282;i=f;return y|0}else if((x|0)==2720){F=c[t>>2]|0;E=F+4|0;D=c[E>>2]|0;C=F+8|0;B=c[C>>2]|0;if((D+1|0)>>>0>B>>>0){if(B>>>0>2147483645){z=r|0;fz(z,(c[b+64>>2]|0)+16|0,80);A=b+52|0;M=c[A>>2]|0;N=c[b+4>>2]|0;fy(M,5960,(O=i,i=i+24|0,c[O>>2]=z,c[O+8>>2]=N,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[A>>2]|0,3);P=c[C>>2]|0;Q=A}else{P=B;Q=b+52|0}B=P<<1;A=c[Q>>2]|0;if((B|0)==-2){R=fv(A)|0;S=F|0}else{N=F|0;R=fu(A,c[N>>2]|0,P,B)|0;S=N}c[S>>2]=R;c[C>>2]=B;T=c[E>>2]|0;U=R}else{T=D;U=c[F>>2]|0}F=w&255;c[E>>2]=T+1;a[U+T|0]=F;E=c[v>>2]|0;D=c[E>>2]|0;c[E>>2]=D-1;E=c[v>>2]|0;if((D|0)==0){V=gu(E)|0}else{D=E+4|0;E=c[D>>2]|0;c[D>>2]=E+1;V=d[E]|0}c[u>>2]=V;if((V|0)==(w|0)){W=V&255}else{E=m|0;D=b+64|0;B=b+52|0;C=b+4|0;N=s|0;A=p|0;z=o|0;M=n|0;X=q|0;Y=V;while(1){L3483:do{if((Y|0)==(-1|0)){fz(N,(c[D>>2]|0)+16|0,80);Z=c[C>>2]|0;_=fy(c[B>>2]|0,5960,(O=i,i=i+24|0,c[O>>2]=N,c[O+8>>2]=Z,c[O+16>>2]=4984,O)|0)|0;i=O;Z=c[B>>2]|0;fy(Z,5768,(O=i,i=i+16|0,c[O>>2]=_,c[O+8>>2]=6584,O)|0)|0;i=O;eC(c[B>>2]|0,3);x=2734}else if((Y|0)==10|(Y|0)==13){fe(b,4984,286);x=2734}else if((Y|0)==92){_=c[v>>2]|0;Z=c[_>>2]|0;c[_>>2]=Z-1;_=c[v>>2]|0;if((Z|0)==0){$=gu(_)|0}else{Z=_+4|0;_=c[Z>>2]|0;c[Z>>2]=_+1;$=d[_]|0}c[u>>2]=$;switch($|0){case 98:{aa=8;break};case 102:{aa=12;break};case 110:{aa=10;break};case 114:{aa=13;break};case 116:{aa=9;break};case-1:{ab=-1;break L3483;break};case 118:{aa=11;break};case 10:case 13:{_=c[t>>2]|0;Z=_+4|0;ac=c[Z>>2]|0;ad=_+8|0;ae=c[ad>>2]|0;if((ac+1|0)>>>0>ae>>>0){if(ae>>>0>2147483645){fz(X,(c[D>>2]|0)+16|0,80);af=c[B>>2]|0;ag=c[C>>2]|0;fy(af,5960,(O=i,i=i+24|0,c[O>>2]=X,c[O+8>>2]=ag,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[B>>2]|0,3);ah=c[ad>>2]|0}else{ah=ae}ae=ah<<1;ag=c[B>>2]|0;if((ae|0)==-2){ai=fv(ag)|0;aj=_|0}else{af=_|0;ai=fu(ag,c[af>>2]|0,ah,ae)|0;aj=af}c[aj>>2]=ai;c[ad>>2]=ae;ak=c[Z>>2]|0;al=ai}else{ak=ac;al=c[_>>2]|0}c[Z>>2]=ak+1;a[al+ak|0]=10;fl(b);x=2734;break L3483;break};case 97:{aa=7;break};default:{if(($-48|0)>>>0<10){am=0;an=0;ao=$}else{Z=c[t>>2]|0;_=Z+4|0;ac=c[_>>2]|0;ae=Z+8|0;ad=c[ae>>2]|0;if((ac+1|0)>>>0>ad>>>0){if(ad>>>0>2147483645){fz(A,(c[D>>2]|0)+16|0,80);af=c[B>>2]|0;ag=c[C>>2]|0;fy(af,5960,(O=i,i=i+24|0,c[O>>2]=A,c[O+8>>2]=ag,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[B>>2]|0,3);ap=c[ae>>2]|0}else{ap=ad}ad=ap<<1;ag=c[B>>2]|0;if((ad|0)==-2){aq=fv(ag)|0;ar=Z|0}else{af=Z|0;aq=fu(ag,c[af>>2]|0,ap,ad)|0;ar=af}c[ar>>2]=aq;c[ae>>2]=ad;as=c[_>>2]|0;at=aq}else{as=ac;at=c[Z>>2]|0}c[_>>2]=as+1;a[at+as|0]=$&255;_=c[v>>2]|0;Z=c[_>>2]|0;c[_>>2]=Z-1;_=c[v>>2]|0;if((Z|0)==0){au=gu(_)|0}else{Z=_+4|0;_=c[Z>>2]|0;c[Z>>2]=_+1;au=d[_]|0}c[u>>2]=au;ab=au;break L3483}while(1){av=ao-48+(an*10|0)|0;_=c[v>>2]|0;Z=c[_>>2]|0;c[_>>2]=Z-1;_=c[v>>2]|0;if((Z|0)==0){aw=gu(_)|0}else{Z=_+4|0;_=c[Z>>2]|0;c[Z>>2]=_+1;aw=d[_]|0}c[u>>2]=aw;_=am+1|0;if((_|0)>=3){break}if((aw-48|0)>>>0<10){am=_;an=av;ao=aw}else{break}}if((av|0)>255){fe(b,4848,286)}_=c[t>>2]|0;Z=_+4|0;ac=c[Z>>2]|0;ad=_+8|0;ae=c[ad>>2]|0;if((ac+1|0)>>>0>ae>>>0){if(ae>>>0>2147483645){fz(z,(c[D>>2]|0)+16|0,80);af=c[B>>2]|0;ag=c[C>>2]|0;fy(af,5960,(O=i,i=i+24|0,c[O>>2]=z,c[O+8>>2]=ag,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[B>>2]|0,3);ax=c[ad>>2]|0}else{ax=ae}ae=ax<<1;ag=c[B>>2]|0;if((ae|0)==-2){ay=fv(ag)|0;az=_|0}else{af=_|0;ay=fu(ag,c[af>>2]|0,ax,ae)|0;az=af}c[az>>2]=ay;c[ad>>2]=ae;aA=c[Z>>2]|0;aC=ay}else{aA=ac;aC=c[_>>2]|0}c[Z>>2]=aA+1;a[aC+aA|0]=av&255;x=2734;break L3483}}Z=c[t>>2]|0;_=Z+4|0;ac=c[_>>2]|0;ae=Z+8|0;ad=c[ae>>2]|0;if((ac+1|0)>>>0>ad>>>0){if(ad>>>0>2147483645){fz(M,(c[D>>2]|0)+16|0,80);af=c[B>>2]|0;ag=c[C>>2]|0;fy(af,5960,(O=i,i=i+24|0,c[O>>2]=M,c[O+8>>2]=ag,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[B>>2]|0,3);aD=c[ae>>2]|0}else{aD=ad}ad=aD<<1;ag=c[B>>2]|0;if((ad|0)==-2){aE=fv(ag)|0;aF=Z|0}else{af=Z|0;aE=fu(ag,c[af>>2]|0,aD,ad)|0;aF=af}c[aF>>2]=aE;c[ae>>2]=ad;aG=c[_>>2]|0;aH=aE}else{aG=ac;aH=c[Z>>2]|0}c[_>>2]=aG+1;a[aH+aG|0]=aa;_=c[v>>2]|0;Z=c[_>>2]|0;c[_>>2]=Z-1;_=c[v>>2]|0;if((Z|0)==0){aI=gu(_)|0}else{Z=_+4|0;_=c[Z>>2]|0;c[Z>>2]=_+1;aI=d[_]|0}c[u>>2]=aI;ab=aI}else{_=c[t>>2]|0;Z=_+4|0;ac=c[Z>>2]|0;ad=_+8|0;ae=c[ad>>2]|0;if((ac+1|0)>>>0>ae>>>0){if(ae>>>0>2147483645){fz(E,(c[D>>2]|0)+16|0,80);af=c[B>>2]|0;ag=c[C>>2]|0;fy(af,5960,(O=i,i=i+24|0,c[O>>2]=E,c[O+8>>2]=ag,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[B>>2]|0,3);aJ=c[ad>>2]|0}else{aJ=ae}ae=aJ<<1;ag=c[B>>2]|0;if((ae|0)==-2){aK=fv(ag)|0;aL=_|0}else{af=_|0;aK=fu(ag,c[af>>2]|0,aJ,ae)|0;aL=af}c[aL>>2]=aK;c[ad>>2]=ae;aN=c[Z>>2]|0;aO=aK}else{aN=ac;aO=c[_>>2]|0}c[Z>>2]=aN+1;a[aO+aN|0]=Y&255;Z=c[v>>2]|0;_=c[Z>>2]|0;c[Z>>2]=_-1;Z=c[v>>2]|0;if((_|0)==0){aP=gu(Z)|0}else{_=Z+4|0;Z=c[_>>2]|0;c[_>>2]=Z+1;aP=d[Z]|0}c[u>>2]=aP;ab=aP}}while(0);if((x|0)==2734){x=0;ab=c[u>>2]|0}if((ab|0)==(w|0)){W=F;break}else{Y=ab}}}Y=c[t>>2]|0;F=Y+4|0;B=c[F>>2]|0;E=Y+8|0;C=c[E>>2]|0;if((B+1|0)>>>0>C>>>0){if(C>>>0>2147483645){D=l|0;fz(D,(c[b+64>>2]|0)+16|0,80);M=b+52|0;z=c[M>>2]|0;A=c[b+4>>2]|0;fy(z,5960,(O=i,i=i+24|0,c[O>>2]=D,c[O+8>>2]=A,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[M>>2]|0,3);aQ=c[E>>2]|0;aR=M}else{aQ=C;aR=b+52|0}C=aQ<<1;M=c[aR>>2]|0;if((C|0)==-2){aS=fv(M)|0;aT=Y|0}else{A=Y|0;aS=fu(M,c[A>>2]|0,aQ,C)|0;aT=A}c[aT>>2]=aS;c[E>>2]=C;aU=c[F>>2]|0;aV=aS}else{aU=B;aV=c[Y>>2]|0}c[F>>2]=aU+1;a[aV+aU|0]=W;F=c[v>>2]|0;Y=c[F>>2]|0;c[F>>2]=Y-1;F=c[v>>2]|0;if((Y|0)==0){aW=gu(F)|0}else{Y=F+4|0;F=c[Y>>2]|0;c[Y>>2]=F+1;aW=d[F]|0}c[u>>2]=aW;F=c[t>>2]|0;Y=c[b+52>>2]|0;B=f_(Y,(c[F>>2]|0)+1|0,(c[F+4>>2]|0)-2|0)|0;F=gd(Y,c[(c[b+48>>2]|0)+4>>2]|0,B)|0;C=F+8|0;do{if((c[C>>2]|0)==0){c[F>>2]=1;c[C>>2]=1;E=c[Y+16>>2]|0;if((c[E+68>>2]|0)>>>0<(c[E+64>>2]|0)>>>0){break}e1(Y)}}while(0);c[e>>2]=B;y=286;i=f;return y|0}else if((x|0)==2827){Y=c[t>>2]|0;C=Y+4|0;F=c[C>>2]|0;E=Y+8|0;A=c[E>>2]|0;if((F+1|0)>>>0>A>>>0){if(A>>>0>2147483645){M=k|0;fz(M,(c[b+64>>2]|0)+16|0,80);D=b+52|0;z=c[D>>2]|0;X=c[b+4>>2]|0;fy(z,5960,(O=i,i=i+24|0,c[O>>2]=M,c[O+8>>2]=X,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[D>>2]|0,3);aX=c[E>>2]|0;aY=D}else{aX=A;aY=b+52|0}A=aX<<1;D=c[aY>>2]|0;if((A|0)==-2){aZ=fv(D)|0;a_=Y|0}else{X=Y|0;aZ=fu(D,c[X>>2]|0,aX,A)|0;a_=X}c[a_>>2]=aZ;c[E>>2]=A;a$=c[C>>2]|0;a0=aZ}else{a$=F;a0=c[Y>>2]|0}c[C>>2]=a$+1;a[a0+a$|0]=46;C=c[v>>2]|0;Y=c[C>>2]|0;c[C>>2]=Y-1;C=c[v>>2]|0;if((Y|0)==0){a1=gu(C)|0}else{Y=C+4|0;C=c[Y>>2]|0;c[Y>>2]=C+1;a1=d[C]|0}c[u>>2]=a1;if((aM(5600,a1|0,2)|0)==0){if((a1-48|0)>>>0>=10){y=46;i=f;return y|0}fs(b,e);y=284;i=f;return y|0}C=c[t>>2]|0;Y=C+4|0;F=c[Y>>2]|0;A=C+8|0;E=c[A>>2]|0;if((F+1|0)>>>0>E>>>0){if(E>>>0>2147483645){X=h|0;fz(X,(c[b+64>>2]|0)+16|0,80);D=b+52|0;M=c[D>>2]|0;z=c[b+4>>2]|0;fy(M,5960,(O=i,i=i+24|0,c[O>>2]=X,c[O+8>>2]=z,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[D>>2]|0,3);a2=c[A>>2]|0;a3=D}else{a2=E;a3=b+52|0}E=a2<<1;D=c[a3>>2]|0;if((E|0)==-2){a4=fv(D)|0;a5=C|0}else{z=C|0;a4=fu(D,c[z>>2]|0,a2,E)|0;a5=z}c[a5>>2]=a4;c[A>>2]=E;a6=c[Y>>2]|0;a7=a4}else{a6=F;a7=c[C>>2]|0}c[Y>>2]=a6+1;a[a7+a6|0]=a1&255;Y=c[v>>2]|0;C=c[Y>>2]|0;c[Y>>2]=C-1;Y=c[v>>2]|0;if((C|0)==0){a8=gu(Y)|0}else{C=Y+4|0;Y=c[C>>2]|0;c[C>>2]=Y+1;a8=d[Y]|0}c[u>>2]=a8;if((aM(5600,a8|0,2)|0)==0){y=278;i=f;return y|0}Y=c[t>>2]|0;C=Y+4|0;F=c[C>>2]|0;E=Y+8|0;A=c[E>>2]|0;if((F+1|0)>>>0>A>>>0){if(A>>>0>2147483645){z=g|0;fz(z,(c[b+64>>2]|0)+16|0,80);D=b+52|0;X=c[D>>2]|0;M=c[b+4>>2]|0;fy(X,5960,(O=i,i=i+24|0,c[O>>2]=z,c[O+8>>2]=M,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[D>>2]|0,3);a9=c[E>>2]|0;ba=D}else{a9=A;ba=b+52|0}A=a9<<1;D=c[ba>>2]|0;if((A|0)==-2){bb=fv(D)|0;bc=Y|0}else{M=Y|0;bb=fu(D,c[M>>2]|0,a9,A)|0;bc=M}c[bc>>2]=bb;c[E>>2]=A;bd=c[C>>2]|0;be=bb}else{bd=F;be=c[Y>>2]|0}c[C>>2]=bd+1;a[be+bd|0]=a8&255;C=c[v>>2]|0;Y=c[C>>2]|0;c[C>>2]=Y-1;C=c[v>>2]|0;if((Y|0)==0){bf=gu(C)|0}else{Y=C+4|0;C=c[Y>>2]|0;c[Y>>2]=C+1;bf=d[C]|0}c[u>>2]=bf;y=279;i=f;return y|0}else if((x|0)==2873){C=c[u>>2]|0;if((C-48|0)>>>0<10){fs(b,e);y=284;i=f;return y|0}do{if((bt(C|0)|0)==0){Y=c[u>>2]|0;if((Y|0)==95){break}F=c[v>>2]|0;A=c[F>>2]|0;c[F>>2]=A-1;F=c[v>>2]|0;if((A|0)==0){bg=gu(F)|0}else{A=F+4|0;F=c[A>>2]|0;c[A>>2]=F+1;bg=d[F]|0}c[u>>2]=bg;y=Y;i=f;return y|0}}while(0);C=j|0;B=b+64|0;Y=b+52|0;F=b+4|0;while(1){A=c[u>>2]|0;E=c[t>>2]|0;M=E+4|0;D=c[M>>2]|0;z=E+8|0;X=c[z>>2]|0;if((D+1|0)>>>0>X>>>0){if(X>>>0>2147483645){fz(C,(c[B>>2]|0)+16|0,80);N=c[Y>>2]|0;Z=c[F>>2]|0;fy(N,5960,(O=i,i=i+24|0,c[O>>2]=C,c[O+8>>2]=Z,c[O+16>>2]=5096,O)|0)|0;i=O;eC(c[Y>>2]|0,3);bh=c[z>>2]|0}else{bh=X}X=bh<<1;Z=c[Y>>2]|0;if((X|0)==-2){bi=fv(Z)|0;bj=E|0}else{N=E|0;bi=fu(Z,c[N>>2]|0,bh,X)|0;bj=N}c[bj>>2]=bi;c[z>>2]=X;bk=c[M>>2]|0;bl=bi}else{bk=D;bl=c[E>>2]|0}c[M>>2]=bk+1;a[bl+bk|0]=A&255;A=c[v>>2]|0;M=c[A>>2]|0;c[A>>2]=M-1;A=c[v>>2]|0;if((M|0)==0){bm=gu(A)|0}else{M=A+4|0;A=c[M>>2]|0;c[M>>2]=A+1;bm=d[A]|0}c[u>>2]=bm;if((bq(bm|0)|0)!=0){continue}if((c[u>>2]|0)!=95){break}}C=c[t>>2]|0;F=c[Y>>2]|0;B=f_(F,c[C>>2]|0,c[C+4>>2]|0)|0;C=gd(F,c[(c[b+48>>2]|0)+4>>2]|0,B)|0;A=C+8|0;do{if((c[A>>2]|0)==0){c[C>>2]=1;c[A>>2]=1;M=c[F+16>>2]|0;if((c[M+68>>2]|0)>>>0<(c[M+64>>2]|0)>>>0){break}e1(F)}}while(0);F=a[B+6|0]|0;if(F<<24>>24==0){c[e>>2]=B;y=285;i=f;return y|0}else{y=F&255|256;i=f;return y|0}}else if((x|0)==2903){i=f;return y|0}else if((x|0)==2904){i=f;return y|0}}while(0);x=c[v>>2]|0;e=c[x>>2]|0;c[x>>2]=e-1;x=c[v>>2]|0;if((e|0)==0){bn=gu(x)|0}else{e=x+4|0;x=c[e>>2]|0;c[e>>2]=x+1;bn=d[x]|0}c[u>>2]=bn;if((bn|0)!=61){y=61;i=f;return y|0}bn=c[v>>2]|0;x=c[bn>>2]|0;c[bn>>2]=x-1;bn=c[v>>2]|0;if((x|0)==0){bo=gu(bn)|0}else{x=bn+4|0;bn=c[x>>2]|0;c[x>>2]=bn+1;bo=d[bn]|0}c[u>>2]=bo;y=280;i=f;return y|0}function fk(a){a=a|0;c[a+32>>2]=fj(a,a+40|0)|0;return}function fl(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0;b=a|0;e=c[b>>2]|0;f=a+56|0;g=c[f>>2]|0;h=c[g>>2]|0;c[g>>2]=h-1;g=c[f>>2]|0;if((h|0)==0){i=gu(g)|0}else{h=g+4|0;g=c[h>>2]|0;c[h>>2]=g+1;i=d[g]|0}c[b>>2]=i;do{if((i|0)==10|(i|0)==13){if((i|0)==(e|0)){break}g=c[f>>2]|0;h=c[g>>2]|0;c[g>>2]=h-1;g=c[f>>2]|0;if((h|0)==0){j=gu(g)|0}else{h=g+4|0;g=c[h>>2]|0;c[h>>2]=g+1;j=d[g]|0}c[b>>2]=j}}while(0);j=a+4|0;b=(c[j>>2]|0)+1|0;c[j>>2]=b;if((b|0)<=2147483644){return}fe(a,4344,c[a+16>>2]|0);return}function fm(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;e=i;i=i+160|0;f=e|0;g=e+80|0;h=b|0;j=c[h>>2]|0;k=b+60|0;l=c[k>>2]|0;m=l+4|0;n=c[m>>2]|0;o=l+8|0;p=c[o>>2]|0;if((n+1|0)>>>0>p>>>0){if(p>>>0>2147483645){q=g|0;fz(q,(c[b+64>>2]|0)+16|0,80);g=b+52|0;r=c[g>>2]|0;s=c[b+4>>2]|0;fy(r,5960,(t=i,i=i+24|0,c[t>>2]=q,c[t+8>>2]=s,c[t+16>>2]=5096,t)|0)|0;i=t;eC(c[g>>2]|0,3);u=c[o>>2]|0;v=g}else{u=p;v=b+52|0}p=u<<1;g=c[v>>2]|0;if((p|0)==-2){w=fv(g)|0;x=l|0}else{v=l|0;w=fu(g,c[v>>2]|0,u,p)|0;x=v}c[x>>2]=w;c[o>>2]=p;y=c[m>>2]|0;z=w}else{y=n;z=c[l>>2]|0}c[m>>2]=y+1;a[z+y|0]=j&255;y=b+56|0;z=c[y>>2]|0;m=c[z>>2]|0;c[z>>2]=m-1;z=c[y>>2]|0;if((m|0)==0){A=gu(z)|0}else{m=z+4|0;z=c[m>>2]|0;c[m>>2]=z+1;A=d[z]|0}c[h>>2]=A;if((A|0)!=61){B=A;C=0;D=(B|0)!=(j|0);E=D<<31>>31;F=E^C;i=e;return F|0}A=f|0;f=b+64|0;z=b+52|0;m=b+4|0;b=61;l=0;while(1){n=c[k>>2]|0;w=n+4|0;p=c[w>>2]|0;o=n+8|0;x=c[o>>2]|0;if((p+1|0)>>>0>x>>>0){if(x>>>0>2147483645){fz(A,(c[f>>2]|0)+16|0,80);v=c[z>>2]|0;u=c[m>>2]|0;fy(v,5960,(t=i,i=i+24|0,c[t>>2]=A,c[t+8>>2]=u,c[t+16>>2]=5096,t)|0)|0;i=t;eC(c[z>>2]|0,3);G=c[o>>2]|0}else{G=x}x=G<<1;u=c[z>>2]|0;if((x|0)==-2){H=fv(u)|0;I=n|0}else{v=n|0;H=fu(u,c[v>>2]|0,G,x)|0;I=v}c[I>>2]=H;c[o>>2]=x;J=c[w>>2]|0;K=H}else{J=p;K=c[n>>2]|0}c[w>>2]=J+1;a[K+J|0]=b;w=c[y>>2]|0;n=c[w>>2]|0;c[w>>2]=n-1;w=c[y>>2]|0;if((n|0)==0){L=gu(w)|0}else{n=w+4|0;w=c[n>>2]|0;c[n>>2]=w+1;L=d[w]|0}c[h>>2]=L;w=l+1|0;if((L|0)==61){b=L&255;l=w}else{B=L;C=w;break}}D=(B|0)!=(j|0);E=D<<31>>31;F=E^C;i=e;return F|0}function fn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0;g=i;i=i+480|0;h=g|0;j=g+80|0;k=g+160|0;l=g+240|0;m=g+320|0;n=g+400|0;o=b|0;p=c[o>>2]|0;q=b+60|0;r=c[q>>2]|0;s=r+4|0;t=c[s>>2]|0;u=r+8|0;v=c[u>>2]|0;if((t+1|0)>>>0>v>>>0){if(v>>>0>2147483645){w=m|0;fz(w,(c[b+64>>2]|0)+16|0,80);m=b+52|0;x=c[m>>2]|0;y=c[b+4>>2]|0;fy(x,5960,(z=i,i=i+24|0,c[z>>2]=w,c[z+8>>2]=y,c[z+16>>2]=5096,z)|0)|0;i=z;eC(c[m>>2]|0,3);A=c[u>>2]|0;B=m}else{A=v;B=b+52|0}v=A<<1;m=c[B>>2]|0;if((v|0)==-2){C=fv(m)|0;D=r|0}else{B=r|0;C=fu(m,c[B>>2]|0,A,v)|0;D=B}c[D>>2]=C;c[u>>2]=v;E=c[s>>2]|0;F=C}else{E=t;F=c[r>>2]|0}c[s>>2]=E+1;a[F+E|0]=p&255;p=b+56|0;E=c[p>>2]|0;F=c[E>>2]|0;c[E>>2]=F-1;E=c[p>>2]|0;if((F|0)==0){G=gu(E)|0}else{F=E+4|0;E=c[F>>2]|0;c[F>>2]=E+1;G=d[E]|0}c[o>>2]=G;if((G|0)==10|(G|0)==13){fl(b);H=2981}else{I=G}L3799:while(1){if((H|0)==2981){H=0;I=c[o>>2]|0}J=(e|0)==0;G=h|0;K=b+64|0;L=b+52|0;M=b+4|0;E=l|0;F=(f|0)==0;s=I;L3803:while(1){L3805:do{if(J){r=s;while(1){switch(r|0){case 10:case 13:{H=3018;break L3803;break};case 93:{H=3005;break L3803;break};case 91:{break L3805;break};case-1:{H=2990;break L3803;break};default:{}}t=c[p>>2]|0;C=c[t>>2]|0;c[t>>2]=C-1;t=c[p>>2]|0;if((C|0)==0){N=gu(t)|0}else{C=t+4|0;t=c[C>>2]|0;c[C>>2]=t+1;N=d[t]|0}c[o>>2]=N;r=N}}else{r=s;while(1){switch(r|0){case 10:case 13:{H=3018;break L3803;break};case 93:{H=3005;break L3803;break};case 91:{break L3805;break};case-1:{H=2990;break L3803;break};default:{}}t=c[q>>2]|0;C=t+4|0;v=c[C>>2]|0;u=t+8|0;D=c[u>>2]|0;if((v+1|0)>>>0>D>>>0){if(D>>>0>2147483645){fz(G,(c[K>>2]|0)+16|0,80);B=c[L>>2]|0;A=c[M>>2]|0;fy(B,5960,(z=i,i=i+24|0,c[z>>2]=G,c[z+8>>2]=A,c[z+16>>2]=5096,z)|0)|0;i=z;eC(c[L>>2]|0,3);O=c[u>>2]|0}else{O=D}D=O<<1;A=c[L>>2]|0;if((D|0)==-2){P=fv(A)|0;Q=t|0}else{B=t|0;P=fu(A,c[B>>2]|0,O,D)|0;Q=B}c[Q>>2]=P;c[u>>2]=D;R=c[C>>2]|0;S=P}else{R=v;S=c[t>>2]|0}c[C>>2]=R+1;a[S+R|0]=r&255;C=c[p>>2]|0;t=c[C>>2]|0;c[C>>2]=t-1;C=c[p>>2]|0;if((t|0)==0){T=gu(C)|0}else{t=C+4|0;C=c[t>>2]|0;c[t>>2]=C+1;T=d[C]|0}c[o>>2]=T;r=T}}}while(0);if((fm(b)|0)!=(f|0)){H=2981;continue L3799}r=c[o>>2]|0;C=c[q>>2]|0;t=C+4|0;v=c[t>>2]|0;D=C+8|0;u=c[D>>2]|0;if((v+1|0)>>>0>u>>>0){if(u>>>0>2147483645){fz(E,(c[K>>2]|0)+16|0,80);B=c[L>>2]|0;A=c[M>>2]|0;fy(B,5960,(z=i,i=i+24|0,c[z>>2]=E,c[z+8>>2]=A,c[z+16>>2]=5096,z)|0)|0;i=z;eC(c[L>>2]|0,3);U=c[D>>2]|0}else{U=u}u=U<<1;A=c[L>>2]|0;if((u|0)==-2){V=fv(A)|0;W=C|0}else{B=C|0;V=fu(A,c[B>>2]|0,U,u)|0;W=B}c[W>>2]=V;c[D>>2]=u;X=c[t>>2]|0;Y=V}else{X=v;Y=c[C>>2]|0}c[t>>2]=X+1;a[Y+X|0]=r&255;r=c[p>>2]|0;t=c[r>>2]|0;c[r>>2]=t-1;r=c[p>>2]|0;if((t|0)==0){Z=gu(r)|0}else{t=r+4|0;r=c[t>>2]|0;c[t>>2]=r+1;Z=d[r]|0}c[o>>2]=Z;if(F){H=3004;break}else{s=Z}}if((H|0)==3018){H=0;s=c[q>>2]|0;F=s+4|0;E=c[F>>2]|0;G=s+8|0;r=c[G>>2]|0;if((E+1|0)>>>0>r>>>0){if(r>>>0>2147483645){t=j|0;fz(t,(c[K>>2]|0)+16|0,80);C=c[L>>2]|0;v=c[M>>2]|0;fy(C,5960,(z=i,i=i+24|0,c[z>>2]=t,c[z+8>>2]=v,c[z+16>>2]=5096,z)|0)|0;i=z;eC(c[L>>2]|0,3);_=c[G>>2]|0}else{_=r}r=_<<1;v=c[L>>2]|0;if((r|0)==-2){$=fv(v)|0;aa=s|0}else{t=s|0;$=fu(v,c[t>>2]|0,_,r)|0;aa=t}c[aa>>2]=$;c[G>>2]=r;ab=c[F>>2]|0;ac=$}else{ab=E;ac=c[s>>2]|0}c[F>>2]=ab+1;a[ac+ab|0]=10;fl(b);if(!J){H=2981;continue}c[(c[q>>2]|0)+4>>2]=0;H=2981;continue}else if((H|0)==3004){H=0;fe(b,4472,91);H=2981;continue}else if((H|0)==3005){H=0;if((fm(b)|0)==(f|0)){break}else{H=2981;continue}}else if((H|0)==2990){H=0;F=n|0;fz(F,(c[K>>2]|0)+16|0,80);s=c[M>>2]|0;E=fy(c[L>>2]|0,5960,(z=i,i=i+24|0,c[z>>2]=F,c[z+8>>2]=s,c[z+16>>2]=(e|0)!=0?4664:4560,z)|0)|0;i=z;fy(c[L>>2]|0,5768,(z=i,i=i+16|0,c[z>>2]=E,c[z+8>>2]=6584,z)|0)|0;i=z;eC(c[L>>2]|0,3);H=2981;continue}}H=c[o>>2]|0;n=c[q>>2]|0;ab=n+4|0;ac=c[ab>>2]|0;$=n+8|0;aa=c[$>>2]|0;if((ac+1|0)>>>0>aa>>>0){if(aa>>>0>2147483645){_=k|0;fz(_,(c[K>>2]|0)+16|0,80);K=c[L>>2]|0;k=c[M>>2]|0;fy(K,5960,(z=i,i=i+24|0,c[z>>2]=_,c[z+8>>2]=k,c[z+16>>2]=5096,z)|0)|0;i=z;eC(c[L>>2]|0,3);ad=c[$>>2]|0}else{ad=aa}aa=ad<<1;z=c[L>>2]|0;if((aa|0)==-2){ae=fv(z)|0;af=n|0}else{k=n|0;ae=fu(z,c[k>>2]|0,ad,aa)|0;af=k}c[af>>2]=ae;c[$>>2]=aa;ag=c[ab>>2]|0;ah=ae}else{ag=ac;ah=c[n>>2]|0}c[ab>>2]=ag+1;a[ah+ag|0]=H&255;H=c[p>>2]|0;ag=c[H>>2]|0;c[H>>2]=ag-1;H=c[p>>2]|0;if((ag|0)==0){ai=gu(H)|0}else{ag=H+4|0;H=c[ag>>2]|0;c[ag>>2]=H+1;ai=d[H]|0}c[o>>2]=ai;if(J){i=g;return}J=c[q>>2]|0;q=f+2|0;f=c[L>>2]|0;L=f_(f,(c[J>>2]|0)+q|0,(c[J+4>>2]|0)-(q<<1)|0)|0;q=gd(f,c[(c[b+48>>2]|0)+4>>2]|0,L)|0;b=q+8|0;do{if((c[b>>2]|0)==0){c[q>>2]=1;c[b>>2]=1;J=c[f+16>>2]|0;if((c[J+68>>2]|0)>>>0<(c[J+64>>2]|0)>>>0){break}e1(f)}}while(0);c[e>>2]=L;i=g;return}function fo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;if(a>>>0>15){b=a;c=1;do{d=b+1|0;b=d>>>1;c=c+1|0;}while(d>>>0>31);e=b;f=c<<3}else{e=a;f=8}if(e>>>0<8){g=e;return g|0}g=f|e-8;return g|0}function fp(a){a=a|0;var b=0,c=0;b=a>>>3&31;if((b|0)==0){c=a;return c|0}c=(a&7|8)<<b-1;return c|0}function fq(a){a=a|0;var b=0,c=0,e=0,f=0,g=0,h=0;if(a>>>0>255){b=a;c=-1;while(1){e=c+8|0;f=b>>>8;if(b>>>0>65535){b=f;c=e}else{g=f;h=e;break}}}else{g=a;h=-1}return(d[1048+g|0]|0)+h|0}function fr(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+8>>2]|0;if((d|0)!=(c[b+8>>2]|0)){e=0;return e|0}if((d|0)==1){e=(c[a>>2]|0)==(c[b>>2]|0)|0;return e|0}else if((d|0)==2){e=(c[a>>2]|0)==(c[b>>2]|0)|0;return e|0}else if((d|0)==0){e=1;return e|0}else if((d|0)==3){e=+h[a>>3]==+h[b>>3]|0;return e|0}else{e=(c[a>>2]|0)==(c[b>>2]|0)|0;return e|0}return 0}function fs(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0;f=i;i=i+400|0;g=f|0;h=f+80|0;j=f+160|0;k=f+240|0;l=b|0;m=b+60|0;n=f+320|0;o=b+64|0;p=b+52|0;q=b+4|0;r=b+56|0;s=c[l>>2]&255;while(1){t=c[m>>2]|0;u=t+4|0;v=c[u>>2]|0;w=t+8|0;x=c[w>>2]|0;if((v+1|0)>>>0>x>>>0){if(x>>>0>2147483645){fz(n,(c[o>>2]|0)+16|0,80);y=c[p>>2]|0;z=c[q>>2]|0;fy(y,5960,(A=i,i=i+24|0,c[A>>2]=n,c[A+8>>2]=z,c[A+16>>2]=5096,A)|0)|0;i=A;eC(c[p>>2]|0,3);B=c[w>>2]|0}else{B=x}x=B<<1;z=c[p>>2]|0;if((x|0)==-2){C=fv(z)|0;D=t|0}else{y=t|0;C=fu(z,c[y>>2]|0,B,x)|0;D=y}c[D>>2]=C;c[w>>2]=x;E=c[u>>2]|0;F=C}else{E=v;F=c[t>>2]|0}c[u>>2]=E+1;a[F+E|0]=s;u=c[r>>2]|0;t=c[u>>2]|0;c[u>>2]=t-1;u=c[r>>2]|0;if((t|0)==0){G=gu(u)|0}else{t=u+4|0;u=c[t>>2]|0;c[t>>2]=u+1;G=d[u]|0}c[l>>2]=G;if((G-48|0)>>>0<10){s=G&255;continue}if((G|0)==46){s=46}else{break}}do{if((aM(5344,G|0,3)|0)==0){H=G}else{s=c[m>>2]|0;E=s+4|0;F=c[E>>2]|0;C=s+8|0;D=c[C>>2]|0;if((F+1|0)>>>0>D>>>0){if(D>>>0>2147483645){B=h|0;fz(B,(c[o>>2]|0)+16|0,80);n=c[p>>2]|0;u=c[q>>2]|0;fy(n,5960,(A=i,i=i+24|0,c[A>>2]=B,c[A+8>>2]=u,c[A+16>>2]=5096,A)|0)|0;i=A;eC(c[p>>2]|0,3);I=c[C>>2]|0}else{I=D}D=I<<1;u=c[p>>2]|0;if((D|0)==-2){J=fv(u)|0;K=s|0}else{B=s|0;J=fu(u,c[B>>2]|0,I,D)|0;K=B}c[K>>2]=J;c[C>>2]=D;L=c[E>>2]|0;M=J}else{L=F;M=c[s>>2]|0}c[E>>2]=L+1;a[M+L|0]=G&255;E=c[r>>2]|0;s=c[E>>2]|0;c[E>>2]=s-1;E=c[r>>2]|0;if((s|0)==0){N=gu(E)|0}else{s=E+4|0;E=c[s>>2]|0;c[s>>2]=E+1;N=d[E]|0}c[l>>2]=N;if((aM(5336,N|0,3)|0)==0){H=N;break}E=c[m>>2]|0;s=E+4|0;F=c[s>>2]|0;D=E+8|0;C=c[D>>2]|0;if((F+1|0)>>>0>C>>>0){if(C>>>0>2147483645){B=g|0;fz(B,(c[o>>2]|0)+16|0,80);u=c[p>>2]|0;n=c[q>>2]|0;fy(u,5960,(A=i,i=i+24|0,c[A>>2]=B,c[A+8>>2]=n,c[A+16>>2]=5096,A)|0)|0;i=A;eC(c[p>>2]|0,3);O=c[D>>2]|0}else{O=C}C=O<<1;n=c[p>>2]|0;if((C|0)==-2){P=fv(n)|0;Q=E|0}else{B=E|0;P=fu(n,c[B>>2]|0,O,C)|0;Q=B}c[Q>>2]=P;c[D>>2]=C;R=c[s>>2]|0;S=P}else{R=F;S=c[E>>2]|0}c[s>>2]=R+1;a[S+R|0]=N&255;s=c[r>>2]|0;E=c[s>>2]|0;c[s>>2]=E-1;s=c[r>>2]|0;if((E|0)==0){T=gu(s)|0}else{E=s+4|0;s=c[E>>2]|0;c[E>>2]=s+1;T=d[s]|0}c[l>>2]=T;H=T}}while(0);T=k|0;k=H;while(1){H=(bq(k|0)|0)==0;N=c[l>>2]|0;if(H){if((N|0)==95){U=95}else{break}}else{U=N&255}N=c[m>>2]|0;H=N+4|0;R=c[H>>2]|0;S=N+8|0;P=c[S>>2]|0;if((R+1|0)>>>0>P>>>0){if(P>>>0>2147483645){fz(T,(c[o>>2]|0)+16|0,80);Q=c[p>>2]|0;O=c[q>>2]|0;fy(Q,5960,(A=i,i=i+24|0,c[A>>2]=T,c[A+8>>2]=O,c[A+16>>2]=5096,A)|0)|0;i=A;eC(c[p>>2]|0,3);V=c[S>>2]|0}else{V=P}P=V<<1;O=c[p>>2]|0;if((P|0)==-2){W=fv(O)|0;X=N|0}else{Q=N|0;W=fu(O,c[Q>>2]|0,V,P)|0;X=Q}c[X>>2]=W;c[S>>2]=P;Y=c[H>>2]|0;Z=W}else{Y=R;Z=c[N>>2]|0}c[H>>2]=Y+1;a[Z+Y|0]=U;H=c[r>>2]|0;N=c[H>>2]|0;c[H>>2]=N-1;H=c[r>>2]|0;if((N|0)==0){_=gu(H)|0}else{N=H+4|0;H=c[N>>2]|0;c[N>>2]=H+1;_=d[H]|0}c[l>>2]=_;k=_}_=c[m>>2]|0;k=_+4|0;l=c[k>>2]|0;r=_+8|0;U=c[r>>2]|0;if((l+1|0)>>>0>U>>>0){if(U>>>0>2147483645){Y=j|0;fz(Y,(c[o>>2]|0)+16|0,80);o=c[p>>2]|0;j=c[q>>2]|0;fy(o,5960,(A=i,i=i+24|0,c[A>>2]=Y,c[A+8>>2]=j,c[A+16>>2]=5096,A)|0)|0;i=A;eC(c[p>>2]|0,3);$=c[r>>2]|0}else{$=U}U=$<<1;A=c[p>>2]|0;if((U|0)==-2){aa=fv(A)|0;ab=_|0}else{p=_|0;aa=fu(A,c[p>>2]|0,$,U)|0;ab=p}c[ab>>2]=aa;c[r>>2]=U;ac=c[k>>2]|0;ad=aa}else{ac=l;ad=c[_>>2]|0}c[k>>2]=ac+1;a[ad+ac|0]=0;ac=b+68|0;ad=a[ac]|0;k=c[m>>2]|0;_=c[k>>2]|0;l=c[k+4>>2]|0;if((l|0)==0){ae=_}else{k=l;do{k=k-1|0;l=_+k|0;if((a[l]|0)==46){a[l]=ad}}while((k|0)!=0);ae=c[c[m>>2]>>2]|0}k=e|0;if((fw(ae,k)|0)!=0){i=f;return}ae=bD()|0;e=a[ac]|0;if((ae|0)==0){af=46}else{af=a[c[ae>>2]|0]|0}a[ac]=af;ae=c[m>>2]|0;ad=c[ae>>2]|0;_=c[ae+4>>2]|0;if((_|0)==0){ag=ad}else{ae=_;do{ae=ae-1|0;_=ad+ae|0;if((a[_]|0)==e<<24>>24){a[_]=af}}while((ae|0)!=0);ag=c[c[m>>2]>>2]|0}if((fw(ag,k)|0)!=0){i=f;return}k=a[ac]|0;ac=c[m>>2]|0;m=c[ac>>2]|0;ag=c[ac+4>>2]|0;if((ag|0)!=0){ac=ag;do{ac=ac-1|0;ag=m+ac|0;if((a[ag]|0)==k<<24>>24){a[ag]=46}}while((ac|0)!=0)}fe(b,5232,284);i=f;return}function ft(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=c[d>>2]|0;do{if((j|0)<((f|0)/2|0|0)){k=j<<1;l=(k|0)<4?4:k}else{if((j|0)<(f|0)){l=f;break}es(a,g,(m=i,i=i+1|0,i=i+7>>3<<3,c[m>>2]=0,m)|0);i=m;l=f}}while(0);if((l+1|0)>>>0>(4294967293/(e>>>0)|0)>>>0){es(a,2288,(m=i,i=i+1|0,i=i+7>>3<<3,c[m>>2]=0,m)|0);i=m;n=0;c[d>>2]=l;i=h;return n|0}m=aa(c[d>>2]|0,e)|0;f=aa(l,e)|0;e=c[a+16>>2]|0;g=cg[c[e+12>>2]&511](c[e+16>>2]|0,b,m,f)|0;if(!((g|0)!=0|(f|0)==0)){eC(a,4)}a=e+68|0;c[a>>2]=f-m+(c[a>>2]|0);n=g;c[d>>2]=l;i=h;return n|0}function fu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+16>>2]|0;g=cg[c[f+12>>2]&511](c[f+16>>2]|0,b,d,e)|0;if(!((g|0)!=0|(e|0)==0)){eC(a,4)}a=f+68|0;c[a>>2]=e-d+(c[a>>2]|0);return g|0}function fv(a){a=a|0;var b=0;b=i;es(a,2288,(a=i,i=i+1|0,i=i+7>>3<<3,c[a>>2]=0,a)|0);i=a;i=b;return 0}function fw(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+8|0;g=f|0;h[e>>3]=+jZ(b,g);j=c[g>>2]|0;if((j|0)==(b|0)){k=0;i=f;return k|0}l=a[j]|0;if((l<<24>>24|0)==120|(l<<24>>24|0)==88){h[e>>3]=+((as(b|0,g|0,16)|0)>>>0>>>0);b=c[g>>2]|0;m=b;n=a[b]|0}else{m=j;n=l}if(n<<24>>24==0){k=1;i=f;return k|0}if((aB(n&255|0)|0)==0){o=m}else{n=m;do{n=n+1|0;}while((aB(d[n]|0)|0)!=0);c[g>>2]=n;o=n}k=(a[o]|0)==0|0;i=f;return k|0}function fx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0;f=i;i=i+40|0;g=f|0;j=f+32|0;k=b+8|0;l=c[k>>2]|0;c[l>>2]=f_(b,10512,0)|0;c[l+8>>2]=4;l=b+28|0;m=c[k>>2]|0;if(((c[l>>2]|0)-m|0)<17){eA(b,1);n=c[k>>2]|0}else{n=m}m=n+16|0;c[k>>2]=m;n=aU(d|0,37)|0;L4082:do{if((n|0)==0){o=1;p=d;q=m}else{r=j|0;s=j+1|0;t=j+2|0;u=g|0;w=g+1|0;x=f+8|0;y=1;z=d;A=n;B=m;while(1){c[B>>2]=f_(b,z,A-z|0)|0;c[B+8>>2]=4;C=c[k>>2]|0;if(((c[l>>2]|0)-C|0)<17){eA(b,1);D=c[k>>2]|0}else{D=C}C=D+16|0;c[k>>2]=C;E=A+1|0;switch(a[E]|0){case 115:{F=(v=c[e+4>>2]|0,c[e+4>>2]=v+8,c[(c[e>>2]|0)+v>>2]|0);G=(F|0)==0?8496:F;F=c[k>>2]|0;c[F>>2]=f_(b,G,j_(G|0)|0)|0;c[F+8>>2]=4;F=c[k>>2]|0;if(((c[l>>2]|0)-F|0)<17){eA(b,1);H=c[k>>2]|0}else{H=F}F=H+16|0;c[k>>2]=F;I=F;break};case 100:{h[C>>3]=+((v=c[e+4>>2]|0,c[e+4>>2]=v+8,c[(c[e>>2]|0)+v>>2]|0)|0);c[D+24>>2]=3;F=c[k>>2]|0;if(((c[l>>2]|0)-F|0)<17){eA(b,1);J=c[k>>2]|0}else{J=F}F=J+16|0;c[k>>2]=F;I=F;break};case 99:{a[u]=(v=c[e+4>>2]|0,c[e+4>>2]=v+8,c[(c[e>>2]|0)+v>>2]|0)&255;a[w]=0;F=c[k>>2]|0;c[F>>2]=f_(b,u,j_(u|0)|0)|0;c[F+8>>2]=4;F=c[k>>2]|0;if(((c[l>>2]|0)-F|0)<17){eA(b,1);K=c[k>>2]|0}else{K=F}F=K+16|0;c[k>>2]=F;I=F;break};case 112:{F=(v=c[e+4>>2]|0,c[e+4>>2]=v+8,c[(c[e>>2]|0)+v>>2]|0);a$(x|0,8256,(G=i,i=i+8|0,c[G>>2]=F,G)|0)|0;i=G;G=c[k>>2]|0;c[G>>2]=f_(b,x,j_(x|0)|0)|0;c[G+8>>2]=4;G=c[k>>2]|0;if(((c[l>>2]|0)-G|0)<17){eA(b,1);L=c[k>>2]|0}else{L=G}G=L+16|0;c[k>>2]=G;I=G;break};case 37:{c[C>>2]=f_(b,6416,1)|0;c[D+24>>2]=4;G=c[k>>2]|0;if(((c[l>>2]|0)-G|0)<17){eA(b,1);M=c[k>>2]|0}else{M=G}G=M+16|0;c[k>>2]=G;I=G;break};case 102:{h[C>>3]=(v=c[e+4>>2]|0,c[e+4>>2]=v+8,+h[(c[e>>2]|0)+v>>3]);c[D+24>>2]=3;G=c[k>>2]|0;if(((c[l>>2]|0)-G|0)<17){eA(b,1);N=c[k>>2]|0}else{N=G}G=N+16|0;c[k>>2]=G;I=G;break};default:{a[r]=37;a[s]=a[E]|0;a[t]=0;c[C>>2]=f_(b,r,j_(r|0)|0)|0;c[D+24>>2]=4;C=c[k>>2]|0;if(((c[l>>2]|0)-C|0)<17){eA(b,1);O=c[k>>2]|0}else{O=C}C=O+16|0;c[k>>2]=C;I=C}}C=y+2|0;E=A+2|0;G=aU(E|0,37)|0;if((G|0)==0){o=C;p=E;q=I;break L4082}else{y=C;z=E;A=G;B=I}}}}while(0);c[q>>2]=f_(b,p,j_(p|0)|0)|0;c[q+8>>2]=4;q=c[k>>2]|0;if(((c[l>>2]|0)-q|0)>=17){P=q;Q=P+16|0;c[k>>2]=Q;R=o+1|0;S=b+12|0;T=c[S>>2]|0;U=Q;V=T;W=U-V|0;X=W>>4;Y=X-1|0;gq(b,R,Y);Z=c[k>>2]|0;_=-o|0;$=Z+(_<<4)|0;c[k>>2]=$;aa=~o;ab=Z+(aa<<4)|0;ac=ab;ad=c[ac>>2]|0;ae=ad+16|0;af=ae;i=f;return af|0}eA(b,1);P=c[k>>2]|0;Q=P+16|0;c[k>>2]=Q;R=o+1|0;S=b+12|0;T=c[S>>2]|0;U=Q;V=T;W=U-V|0;X=W>>4;Y=X-1|0;gq(b,R,Y);Z=c[k>>2]|0;_=-o|0;$=Z+(_<<4)|0;c[k>>2]=$;aa=~o;ab=Z+(aa<<4)|0;ac=ab;ad=c[ac>>2]|0;ae=ad+16|0;af=ae;i=f;return af|0}function fy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e|0;g=f;c[g>>2]=d;c[g+4>>2]=0;g=fx(a,b,f|0)|0;i=e;return g|0}function fz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=a[c]|0;if((e<<24>>24|0)==61){f=c+1|0;j3(b|0,f|0,d|0)|0;a[b+(d-1)|0]=0;return}else if((e<<24>>24|0)==64){e=c+1|0;f=j_(e|0)|0;a[b]=0;if(f>>>0>(d-8|0)>>>0){g=b+(j_(b|0)|0)|0;w=3026478;a[g]=w&255;w=w>>8;a[g+1|0]=w&255;w=w>>8;a[g+2|0]=w&255;w=w>>8;a[g+3|0]=w&255;h=c+(8-d+1+f)|0}else{h=e}j4(b|0,h|0)|0;return}else{h=a2(c|0,4048)|0;e=d-17|0;d=h>>>0>e>>>0?e:h;j$(b|0,3536,10)|0;if((a[c+d|0]|0)==0){j4(b|0,c|0)|0}else{bS(b|0,c|0,d|0)|0;d=b+(j_(b|0)|0)|0;w=3026478;a[d]=w&255;w=w>>8;a[d+1|0]=w&255;w=w>>8;a[d+2|0]=w&255;w=w>>8;a[d+3|0]=w&255}d=b+(j_(b|0)|0)|0;a[d]=a[2920]|0;a[d+1|0]=a[2921|0]|0;a[d+2|0]=a[2922|0]|0;return}}function fA(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+648|0;k=j|0;l=j+72|0;c[k+60>>2]=g;fh(e,k,f,f_(e,h,j_(h|0)|0)|0);fB(k,l);h=l|0;a[(c[h>>2]|0)+74|0]=2;fi(k);l=k+52|0;e=(c[l>>2]|0)+52|0;f=(b[e>>1]|0)+1&65535;b[e>>1]=f;if((f&65535)>200){fe(k,6912,0)}f=k+16|0;e=k+48|0;L4144:do{switch(c[f>>2]|0){case 260:case 261:case 262:case 276:case 287:{break L4144;break};default:{}}g=fD(k)|0;if((c[f>>2]|0)==59){fi(k)}m=c[e>>2]|0;c[m+36>>2]=d[m+50|0]|0;}while((g|0)==0);e=(c[l>>2]|0)+52|0;b[e>>1]=(b[e>>1]|0)-1&65535;if((c[f>>2]|0)==287){fC(k);n=c[h>>2]|0;i=j;return n|0}f=c[l>>2]|0;l=fd(k,287)|0;e=fy(f,7112,(f=i,i=i+8|0,c[f>>2]=l,f)|0)|0;i=f;ff(k,e);fC(k);n=c[h>>2]|0;i=j;return n|0}function fB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=c[b+52>>2]|0;f=eV(e)|0;c[d>>2]=f;g=b+48|0;c[d+8>>2]=c[g>>2];c[d+12>>2]=b;c[d+16>>2]=e;c[g>>2]=d;c[d+24>>2]=0;c[d+28>>2]=-1;c[d+32>>2]=-1;c[d+20>>2]=0;j2(d+36|0,0,15);c[f+32>>2]=c[b+64>>2];a[f+75|0]=2;b=f5(e,0,0)|0;c[d+4>>2]=b;d=e+8|0;g=c[d>>2]|0;c[g>>2]=b;c[g+8>>2]=5;g=e+28|0;b=c[d>>2]|0;if(((c[g>>2]|0)-b|0)<17){eA(e,1);h=c[d>>2]|0}else{h=b}b=h+16|0;c[d>>2]=b;c[b>>2]=f;c[h+24>>2]=9;h=c[d>>2]|0;if(((c[g>>2]|0)-h|0)>=17){i=h;j=i+16|0;c[d>>2]=j;return}eA(e,1);i=c[d>>2]|0;j=i+16|0;c[d>>2]=j;return}function fC(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;g=c[f+52>>2]|0;h=f+48|0;i=c[h>>2]|0;j=i|0;k=c[j>>2]|0;l=i+50|0;m=a[l]|0;n=i+24|0;L4164:do{if(m<<24>>24!=0){o=m;p=k;while(1){q=c[n>>2]|0;r=o-1&255;a[l]=r;c[(c[p+24>>2]|0)+((e[i+172+((r&255)<<1)>>1]|0)*12|0)+8>>2]=q;q=a[l]|0;if(q<<24>>24==0){break L4164}o=q;p=c[j>>2]|0}}}while(0);dP(i,0,0);j=c[n>>2]|0;if((j+1|0)>>>0<1073741824){l=k+12|0;m=k+44|0;s=fu(g,c[l>>2]|0,c[m>>2]<<2,j<<2)|0;t=l;u=m}else{s=fv(g)|0;t=k+12|0;u=k+44|0}c[t>>2]=s;c[u>>2]=c[n>>2];u=c[n>>2]|0;if((u+1|0)>>>0<1073741824){s=k+20|0;t=k+48|0;v=fu(g,c[s>>2]|0,c[t>>2]<<2,u<<2)|0;w=s;x=t}else{v=fv(g)|0;w=k+20|0;x=k+48|0}c[w>>2]=v;c[x>>2]=c[n>>2];n=i+40|0;x=c[n>>2]|0;if((x+1|0)>>>0<268435456){v=k+8|0;w=k+40|0;y=fu(g,c[v>>2]|0,c[w>>2]<<4,x<<4)|0;z=v;A=w}else{y=fv(g)|0;z=k+8|0;A=k+40|0}c[z>>2]=y;c[A>>2]=c[n>>2];n=i+44|0;A=c[n>>2]|0;if((A+1|0)>>>0<1073741824){y=k+16|0;z=k+52|0;B=fu(g,c[y>>2]|0,c[z>>2]<<2,A<<2)|0;C=y;D=z}else{B=fv(g)|0;C=k+16|0;D=k+52|0}c[C>>2]=B;c[D>>2]=c[n>>2];n=i+48|0;D=b[n>>1]|0;if((D+1|0)>>>0<357913942){B=k+24|0;C=k+56|0;E=fu(g,c[B>>2]|0,(c[C>>2]|0)*12|0,D*12|0)|0;F=B;G=C}else{E=fv(g)|0;F=k+24|0;G=k+56|0}c[F>>2]=E;c[G>>2]=b[n>>1]|0;n=k+72|0;G=k+28|0;E=k+36|0;c[G>>2]=fu(g,c[G>>2]|0,c[E>>2]<<2,d[n]<<2)|0;c[E>>2]=d[n]|0;c[h>>2]=c[i+8>>2];if((i|0)==0){H=g+8|0;I=c[H>>2]|0;J=I-32|0;c[H>>2]=J;return}if(((c[f+16>>2]|0)-285|0)>>>0>=2){H=g+8|0;I=c[H>>2]|0;J=I-32|0;c[H>>2]=J;return}i=c[f+24>>2]|0;fg(f,i+16|0,c[i+12>>2]|0)|0;H=g+8|0;I=c[H>>2]|0;J=I-32|0;c[H>>2]=J;return}function fD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0;g=i;i=i+392|0;h=g|0;j=g+24|0;k=g+48|0;l=g+72|0;m=g+104|0;n=g+128|0;o=g+152|0;p=g+176|0;q=g+200|0;r=g+224|0;s=g+248|0;t=g+272|0;u=g+288|0;v=g+304|0;w=g+328|0;x=g+344|0;y=g+368|0;z=g+384|0;A=f+4|0;B=c[A>>2]|0;C=f+16|0;switch(c[C>>2]|0){case 266:{D=c[f+48>>2]|0;c[z>>2]=-1;E=fS(f)|0;while(1){F=c[C>>2]|0;if((F|0)==260){G=3286;break}else if((F|0)!=261){G=3287;break}dO(D,z,dM(D)|0);dR(D,E);E=fS(f)|0}if((G|0)==3286){dO(D,z,dM(D)|0);dR(D,E);fi(f);fE(f)}else if((G|0)==3287){dO(D,z,E)}dR(D,c[z>>2]|0);fF(f,262,266,B);H=0;i=g;return H|0};case 277:{z=f+48|0;D=c[z>>2]|0;fi(f);E=dI(D)|0;fI(f,x,0)|0;F=x|0;if((c[F>>2]|0)==1){c[F>>2]=3}d5(c[z>>2]|0,x);z=c[x+20>>2]|0;c[y+4>>2]=-1;a[y+10|0]=1;x=D+50|0;a[y+8|0]=a[x]|0;a[y+9|0]=0;F=D+20|0;c[y>>2]=c[F>>2];c[F>>2]=y;if((c[C>>2]|0)!=259){y=c[f+52>>2]|0;I=fd(f,259)|0;J=fy(y,7112,(K=i,i=i+8|0,c[K>>2]=I,K)|0)|0;i=K;ff(f,J)}fi(f);fE(f);dQ(D,dM(D)|0,E);fF(f,262,277,B);E=c[F>>2]|0;c[F>>2]=c[E>>2];F=E+8|0;J=a[F]|0;I=c[(c[D+12>>2]|0)+48>>2]|0;y=I+50|0;L=a[y]|0;if((L&255)>(J&255)){M=I+24|0;N=I|0;O=L;do{L=c[M>>2]|0;P=O-1&255;a[y]=P;c[(c[(c[N>>2]|0)+24>>2]|0)+((e[I+172+((P&255)<<1)>>1]|0)*12|0)+8>>2]=L;O=a[y]|0;}while((O&255)>(J&255))}if((a[E+9|0]|0)!=0){J=d[F]|0;dL(D,35,J,0,0)|0}c[D+36>>2]=d[x]|0;dR(D,c[E+4>>2]|0);dR(D,z);H=0;i=g;return H|0};case 272:{z=f+48|0;D=c[z>>2]|0;E=dI(D)|0;c[t+4>>2]=-1;a[t+10|0]=1;x=D+50|0;a[t+8|0]=a[x]|0;a[t+9|0]=0;J=D+20|0;c[t>>2]=c[J>>2];c[J>>2]=t;c[u+4>>2]=-1;a[u+10|0]=0;a[u+8|0]=a[x]|0;t=u+9|0;a[t]=0;c[u>>2]=c[J>>2];c[J>>2]=u;fi(f);u=f+52|0;F=(c[u>>2]|0)+52|0;O=(b[F>>1]|0)+1&65535;b[F>>1]=O;if((O&65535)>200){fe(f,6912,0)}L4226:do{switch(c[C>>2]|0){case 260:case 261:case 262:case 276:case 287:{break L4226;break};default:{}}O=fD(f)|0;if((c[C>>2]|0)==59){fi(f)}F=c[z>>2]|0;c[F+36>>2]=d[F+50|0]|0;}while((O|0)==0);O=(c[u>>2]|0)+52|0;b[O>>1]=(b[O>>1]|0)-1&65535;fF(f,276,272,B);fI(f,s,0)|0;O=s|0;if((c[O>>2]|0)==1){c[O>>2]=3}d5(c[z>>2]|0,s);O=c[s+20>>2]|0;if((a[t]|0)==0){t=c[J>>2]|0;c[J>>2]=c[t>>2];s=t+8|0;u=a[s]|0;F=c[(c[D+12>>2]|0)+48>>2]|0;y=F+50|0;I=a[y]|0;if((I&255)>(u&255)){N=F+24|0;M=F|0;L=I;do{I=c[N>>2]|0;P=L-1&255;a[y]=P;c[(c[(c[M>>2]|0)+24>>2]|0)+((e[F+172+((P&255)<<1)>>1]|0)*12|0)+8>>2]=I;L=a[y]|0;}while((L&255)>(u&255))}if((a[t+9|0]|0)!=0){u=d[s]|0;dL(D,35,u,0,0)|0}c[D+36>>2]=d[x]|0;dR(D,c[t+4>>2]|0);dQ(c[z>>2]|0,O,E)}else{t=c[z>>2]|0;u=c[t+20>>2]|0;L4238:do{if((u|0)==0){Q=0;G=3353}else{s=0;L=u;while(1){if((a[L+10|0]|0)!=0){R=s;S=L;break L4238}y=d[L+9|0]|s;F=c[L>>2]|0;if((F|0)==0){Q=y;G=3353;break}else{s=y;L=F}}}}while(0);if((G|0)==3353){ff(f,9e3);R=Q;S=0}if((R|0)!=0){R=d[S+8|0]|0;dL(t,35,R,0,0)|0}dO(t,S+4|0,dM(t)|0);dR(c[z>>2]|0,O);O=c[J>>2]|0;c[J>>2]=c[O>>2];t=O+8|0;S=a[t]|0;R=c[(c[D+12>>2]|0)+48>>2]|0;Q=R+50|0;u=a[Q]|0;if((u&255)>(S&255)){L=R+24|0;s=R|0;F=u;do{u=c[L>>2]|0;y=F-1&255;a[Q]=y;c[(c[(c[s>>2]|0)+24>>2]|0)+((e[R+172+((y&255)<<1)>>1]|0)*12|0)+8>>2]=u;F=a[Q]|0;}while((F&255)>(S&255))}if((a[O+9|0]|0)!=0){S=d[t]|0;dL(D,35,S,0,0)|0}c[D+36>>2]=d[x]|0;dR(D,c[O+4>>2]|0);O=c[z>>2]|0;dQ(O,dM(D)|0,E)}E=c[J>>2]|0;c[J>>2]=c[E>>2];J=E+8|0;O=a[J]|0;z=c[(c[D+12>>2]|0)+48>>2]|0;S=z+50|0;t=a[S]|0;if((t&255)>(O&255)){F=z+24|0;Q=z|0;R=t;do{t=c[F>>2]|0;s=R-1&255;a[S]=s;c[(c[(c[Q>>2]|0)+24>>2]|0)+((e[z+172+((s&255)<<1)>>1]|0)*12|0)+8>>2]=t;R=a[S]|0;}while((R&255)>(O&255))}if((a[E+9|0]|0)!=0){O=d[J]|0;dL(D,35,O,0,0)|0}c[D+36>>2]=d[x]|0;dR(D,c[E+4>>2]|0);H=0;i=g;return H|0};case 259:{fi(f);fE(f);fF(f,262,259,B);H=0;i=g;return H|0};case 258:{fi(f);E=c[f+48>>2]|0;D=c[E+20>>2]|0;L4278:do{if((D|0)==0){T=0;G=3412}else{x=0;O=D;while(1){if((a[O+10|0]|0)!=0){U=x;V=O;break L4278}J=d[O+9|0]|x;R=c[O>>2]|0;if((R|0)==0){T=J;G=3412;break}else{x=J;O=R}}}}while(0);if((G|0)==3412){ff(f,9e3);U=T;V=0}if((U|0)!=0){U=d[V+8|0]|0;dL(E,35,U,0,0)|0}dO(E,V+4|0,dM(E)|0);H=1;i=g;return H|0};case 273:{E=f+48|0;V=c[E>>2]|0;fi(f);L4296:do{switch(c[C>>2]|0){case 260:case 261:case 262:case 276:case 287:case 59:{W=0;X=0;break};default:{fI(f,m,0)|0;if((c[C>>2]|0)==44){U=1;while(1){fi(f);d_(c[E>>2]|0,m);fI(f,m,0)|0;T=U+1|0;if((c[C>>2]|0)==44){U=T}else{Y=T;break}}}else{Y=1}U=m|0;if(((c[U>>2]|0)-13|0)>>>0<2){dX(V,m,-1);if((c[U>>2]|0)==13&(Y|0)==1){U=(c[(c[V>>2]|0)+12>>2]|0)+(c[m+8>>2]<<2)|0;c[U>>2]=c[U>>2]&-64|29}W=-1;X=d[V+50|0]|0;break L4296}else{if((Y|0)==1){W=1;X=d0(V,m)|0;break L4296}else{d_(V,m);W=Y;X=d[V+50|0]|0;break L4296}}}}}while(0);dP(V,X,W);H=1;i=g;return H|0};case 264:{W=f+48|0;X=c[W>>2]|0;c[w+4>>2]=-1;a[w+10|0]=1;V=X+50|0;a[w+8|0]=a[V]|0;a[w+9|0]=0;Y=X+20|0;c[w>>2]=c[Y>>2];c[Y>>2]=w;fi(f);if((c[C>>2]|0)!=285){w=c[f+52>>2]|0;m=fd(f,285)|0;E=fy(w,7112,(K=i,i=i+8|0,c[K>>2]=m,K)|0)|0;i=K;ff(f,E)}E=f+24|0;m=c[E>>2]|0;fi(f);w=c[C>>2]|0;if((w|0)==44|(w|0)==267){U=c[W>>2]|0;T=c[U+36>>2]|0;fL(f,fg(f,8632,15)|0,0);fL(f,fg(f,8456,11)|0,1);fL(f,fg(f,8240,13)|0,2);fL(f,m,3);D=c[C>>2]|0;if((D|0)==44){O=f+52|0;x=4;while(1){fi(f);if((c[C>>2]|0)!=285){R=c[O>>2]|0;J=fd(f,285)|0;S=fy(R,7112,(K=i,i=i+8|0,c[K>>2]=J,K)|0)|0;i=K;ff(f,S)}S=c[E>>2]|0;fi(f);fL(f,S,x);Z=c[C>>2]|0;if((Z|0)==44){x=x+1|0}else{break}}_=x-2|0;$=Z}else{_=1;$=D}if(($|0)!=267){$=c[f+52>>2]|0;D=fd(f,267)|0;Z=fy($,7112,(K=i,i=i+8|0,c[K>>2]=D,K)|0)|0;i=K;ff(f,Z)}fi(f);Z=c[A>>2]|0;fI(f,v,0)|0;if((c[C>>2]|0)==44){D=1;while(1){fi(f);d_(c[W>>2]|0,v);fI(f,v,0)|0;$=D+1|0;if((c[C>>2]|0)==44){D=$}else{aa=$;break}}}else{aa=1}D=c[W>>2]|0;$=3-aa|0;aa=c[v>>2]|0;do{if((aa|0)==13|(aa|0)==14){x=$+1|0;E=(x|0)<0?0:x;dX(D,v,E);if((E|0)<=1){break}dT(D,E-1|0)}else if((aa|0)==0){G=3325}else{d_(D,v);G=3325}}while(0);do{if((G|0)==3325){if(($|0)<=0){break}v=c[D+36>>2]|0;dT(D,$);dK(D,v,$)}}while(0);dS(U,3);fR(f,T,Z,_,0)}else if((w|0)==61){w=c[W>>2]|0;_=w+36|0;Z=c[_>>2]|0;fL(f,fg(f,8016,11)|0,0);fL(f,fg(f,7784,11)|0,1);fL(f,fg(f,7544,10)|0,2);fL(f,m,3);if((c[C>>2]|0)!=61){m=c[f+52>>2]|0;T=fd(f,61)|0;U=fy(m,7112,(K=i,i=i+8|0,c[K>>2]=T,K)|0)|0;i=K;ff(f,U)}fi(f);fI(f,k,0)|0;d_(c[W>>2]|0,k);if((c[C>>2]|0)!=44){k=c[f+52>>2]|0;U=fd(f,44)|0;T=fy(k,7112,(K=i,i=i+8|0,c[K>>2]=U,K)|0)|0;i=K;ff(f,T)}fi(f);fI(f,j,0)|0;d_(c[W>>2]|0,j);if((c[C>>2]|0)==44){fi(f);fI(f,h,0)|0;d_(c[W>>2]|0,h)}else{h=c[_>>2]|0;_=dW(w,1.0)|0;dN(w,1,h,_)|0;dT(w,1)}fR(f,Z,B,1,1)}else{ff(f,8840)}fF(f,262,264,B);Z=c[Y>>2]|0;c[Y>>2]=c[Z>>2];Y=Z+8|0;w=a[Y]|0;_=c[(c[X+12>>2]|0)+48>>2]|0;h=_+50|0;W=a[h]|0;if((W&255)>(w&255)){j=_+24|0;T=_|0;U=W;do{W=c[j>>2]|0;k=U-1&255;a[h]=k;c[(c[(c[T>>2]|0)+24>>2]|0)+((e[_+172+((k&255)<<1)>>1]|0)*12|0)+8>>2]=W;U=a[h]|0;}while((U&255)>(w&255))}if((a[Z+9|0]|0)!=0){w=d[Y]|0;dL(X,35,w,0,0)|0}c[X+36>>2]=d[V]|0;dR(X,c[Z+4>>2]|0);H=0;i=g;return H|0};case 265:{fi(f);if((c[C>>2]|0)!=285){Z=c[f+52>>2]|0;X=fd(f,285)|0;V=fy(Z,7112,(K=i,i=i+8|0,c[K>>2]=X,K)|0)|0;i=K;ff(f,V)}V=c[f+24>>2]|0;fi(f);X=f+48|0;Z=c[X>>2]|0;if((fQ(Z,V,q,1)|0)==8){c[q+8>>2]=dU(Z,V)|0}while(1){V=c[C>>2]|0;if((V|0)==58){G=3374;break}else if((V|0)!=46){ab=0;break}fO(f,q)}if((G|0)==3374){fO(f,q);ab=1}fK(f,r,ab,B);d3(c[X>>2]|0,q,r);ea(c[X>>2]|0,B);H=0;i=g;return H|0};case 268:{fi(f);B=c[C>>2]|0;if((B|0)==265){fi(f);X=f+48|0;r=c[X>>2]|0;if((c[C>>2]|0)!=285){q=c[f+52>>2]|0;ab=fd(f,285)|0;V=fy(q,7112,(K=i,i=i+8|0,c[K>>2]=ab,K)|0)|0;i=K;ff(f,V)}V=c[f+24>>2]|0;fi(f);fL(f,V,0);V=c[r+36>>2]|0;c[o+16>>2]=-1;c[o+20>>2]=-1;c[o>>2]=6;c[o+8>>2]=V;dT(r,1);V=c[X>>2]|0;X=V+50|0;ab=(a[X]|0)+1&255;a[X]=ab;c[(c[(c[V>>2]|0)+24>>2]|0)+((e[V+172+((ab&255)-1<<1)>>1]|0)*12|0)+4>>2]=c[V+24>>2];fK(f,p,0,c[A>>2]|0);d3(r,o,p);c[(c[(c[r>>2]|0)+24>>2]|0)+((e[r+172+((d[r+50|0]|0)-1<<1)>>1]|0)*12|0)+4>>2]=c[r+24>>2];H=0;i=g;return H|0}r=f+24|0;p=f+52|0;o=0;A=B;while(1){if((A|0)!=285){B=c[p>>2]|0;V=fd(f,285)|0;ab=fy(B,7112,(K=i,i=i+8|0,c[K>>2]=V,K)|0)|0;i=K;ff(f,ab)}ab=c[r>>2]|0;fi(f);ac=o+1|0;fL(f,ab,o);ab=c[C>>2]|0;if((ab|0)==61){G=3385;break}else if((ab|0)!=44){G=3388;break}fi(f);o=ac;A=c[C>>2]|0}do{if((G|0)==3385){fi(f);fI(f,n,0)|0;if((c[C>>2]|0)==44){A=f+48|0;r=1;while(1){fi(f);d_(c[A>>2]|0,n);fI(f,n,0)|0;K=r+1|0;if((c[C>>2]|0)==44){r=K}else{ad=K;break}}}else{ad=1}r=c[n>>2]|0;A=f+48|0;K=c[A>>2]|0;p=ac-ad|0;if((r|0)==0){ae=A;af=K;ag=p;G=3393;break}else if(!((r|0)==13|(r|0)==14)){d_(K,n);ae=A;af=K;ag=p;G=3393;break}r=p+1|0;p=(r|0)<0?0:r;dX(K,n,p);if((p|0)<=1){ah=A;break}dT(K,p-1|0);ah=A}else if((G|0)==3388){c[n>>2]=0;A=f+48|0;ae=A;af=c[A>>2]|0;ag=ac;G=3393}}while(0);do{if((G|0)==3393){if((ag|0)<=0){ah=ae;break}n=c[af+36>>2]|0;dT(af,ag);dK(af,n,ag);ah=ae}}while(0);ae=c[ah>>2]|0;ah=ae+50|0;ag=(d[ah]|0)+ac|0;a[ah]=ag&255;if((ac|0)==0){H=0;i=g;return H|0}af=ae+24|0;G=ae|0;c[(c[(c[G>>2]|0)+24>>2]|0)+((e[ae+172+((ag&255)-ac<<1)>>1]|0)*12|0)+4>>2]=c[af>>2];if((o|0)==0){H=0;i=g;return H|0}else{ai=o}while(1){c[(c[(c[G>>2]|0)+24>>2]|0)+((e[ae+172+((d[ah]|0)-ai<<1)>>1]|0)*12|0)+4>>2]=c[af>>2];o=ai-1|0;if((o|0)==0){H=0;break}else{ai=o}}i=g;return H|0};default:{ai=c[f+48>>2]|0;af=l+8|0;fG(f,af);if((c[af>>2]|0)==13){af=(c[(c[ai>>2]|0)+12>>2]|0)+(c[l+16>>2]<<2)|0;c[af>>2]=c[af>>2]&-8372225|16384;H=0;i=g;return H|0}else{c[l>>2]=0;fH(f,l,1);H=0;i=g;return H|0}}}return 0}function fE(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;g=i;i=i+16|0;h=g|0;j=f+48|0;k=c[j>>2]|0;c[h+4>>2]=-1;a[h+10|0]=0;l=k+50|0;a[h+8|0]=a[l]|0;a[h+9|0]=0;m=k+20|0;c[h>>2]=c[m>>2];c[m>>2]=h;h=f+52|0;n=(c[h>>2]|0)+52|0;o=(b[n>>1]|0)+1&65535;b[n>>1]=o;if((o&65535)>200){fe(f,6912,0)}o=f+16|0;L4:do{switch(c[o>>2]|0){case 260:case 261:case 262:case 276:case 287:{break L4;break};default:{}}n=fD(f)|0;if((c[o>>2]|0)==59){fi(f)}p=c[j>>2]|0;c[p+36>>2]=d[p+50|0]|0;}while((n|0)==0);j=(c[h>>2]|0)+52|0;b[j>>1]=(b[j>>1]|0)-1&65535;j=c[m>>2]|0;c[m>>2]=c[j>>2];m=j+8|0;h=a[m]|0;f=c[(c[k+12>>2]|0)+48>>2]|0;o=f+50|0;n=a[o]|0;if((n&255)>(h&255)){p=f+24|0;q=f|0;r=n;do{n=c[p>>2]|0;s=r-1&255;a[o]=s;c[(c[(c[q>>2]|0)+24>>2]|0)+((e[f+172+((s&255)<<1)>>1]|0)*12|0)+8>>2]=n;r=a[o]|0;}while((r&255)>(h&255))}if((a[j+9|0]|0)==0){t=a[l]|0;u=t&255;v=k+36|0;c[v>>2]=u;w=j+4|0;x=c[w>>2]|0;dR(k,x);i=g;return}dL(k,35,d[m]|0,0,0)|0;t=a[l]|0;u=t&255;v=k+36|0;c[v>>2]=u;w=j+4|0;x=c[w>>2]|0;dR(k,x);i=g;return}function fF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;if((c[a+16>>2]|0)==(b|0)){fi(a);i=f;return}g=(c[a+4>>2]|0)==(e|0);h=c[a+52>>2]|0;j=fd(a,b)|0;if(g){g=fy(h,7112,(k=i,i=i+8|0,c[k>>2]=j,k)|0)|0;i=k;ff(a,g);i=f;return}else{g=fd(a,d)|0;d=fy(h,7320,(k=i,i=i+24|0,c[k>>2]=j,c[k+8>>2]=g,c[k+16>>2]=e,k)|0)|0;i=k;ff(a,d);i=f;return}}function fG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=i;i=i+48|0;e=d|0;f=d+24|0;g=a+48|0;h=c[g>>2]|0;j=a+16|0;k=c[j>>2]|0;do{if((k|0)==40){l=c[a+4>>2]|0;fi(a);fI(a,b,0)|0;fF(a,41,40,l);dZ(c[g>>2]|0,b)}else if((k|0)==285){l=c[a+24>>2]|0;fi(a);m=c[g>>2]|0;if((fQ(m,l,b,1)|0)!=8){break}c[b+8>>2]=dU(m,l)|0}else{ff(a,9512)}}while(0);k=a+24|0;l=f+16|0;m=f+20|0;n=f|0;o=f+8|0;p=a+52|0;L37:while(1){switch(c[j>>2]|0){case 46:{fO(a,b);continue L37;break};case 91:{d0(h,b)|0;fN(a,e);d6(h,b,e);continue L37;break};case 58:{fi(a);if((c[j>>2]|0)!=285){q=c[p>>2]|0;r=fd(a,285)|0;s=fy(q,7112,(q=i,i=i+8|0,c[q>>2]=r,q)|0)|0;i=q;ff(a,s)}s=c[k>>2]|0;fi(a);q=dU(c[g>>2]|0,s)|0;c[l>>2]=-1;c[m>>2]=-1;c[n>>2]=4;c[o>>2]=q;d4(h,b,f);fP(a,b);continue L37;break};case 40:case 286:case 123:{d_(h,b);fP(a,b);continue L37;break};default:{break L37}}}i=d;return}function fH(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=i;i=i+56|0;g=f|0;h=f+24|0;j=b+8|0;if(((c[j>>2]|0)-6|0)>>>0>=4){ff(a,9200)}k=a+16|0;l=c[k>>2]|0;if((l|0)==61){m=60}else if((l|0)==44){fi(a);c[h>>2]=b;l=h+8|0;fG(a,l);do{if((c[l>>2]|0)==6){n=c[a+48>>2]|0;o=n+36|0;p=c[o>>2]|0;if((b|0)==0){break}q=h+16|0;r=b;s=0;while(1){do{if((c[r+8>>2]|0)==9){t=r+16|0;u=t;v=c[q>>2]|0;if((c[u>>2]|0)==(v|0)){c[u>>2]=p;w=1;x=c[q>>2]|0}else{w=s;x=v}v=t+4|0;if((c[v>>2]|0)!=(x|0)){y=w;break}c[v>>2]=p;y=1}else{y=s}}while(0);v=c[r>>2]|0;if((v|0)==0){break}else{r=v;s=y}}if((y|0)==0){break}dL(n,0,c[o>>2]|0,c[q>>2]|0,0)|0;dT(n,1)}}while(0);y=200-(e[(c[a+52>>2]|0)+52>>1]|0)|0;w=a+48|0;if((y|0)<(d|0)){x=c[w>>2]|0;b=c[(c[x>>2]|0)+60>>2]|0;l=c[x+16>>2]|0;if((b|0)==0){s=fy(l,10384,(z=i,i=i+16|0,c[z>>2]=y,c[z+8>>2]=10064,z)|0)|0;i=z;A=s}else{s=fy(l,10216,(z=i,i=i+24|0,c[z>>2]=b,c[z+8>>2]=y,c[z+16>>2]=10064,z)|0)|0;i=z;A=s}fe(c[x+12>>2]|0,A,0)}fH(a,h,d+1|0);B=w;C=g|0}else{w=c[a+52>>2]|0;h=fd(a,61)|0;A=fy(w,7112,(z=i,i=i+8|0,c[z>>2]=h,z)|0)|0;i=z;ff(a,A);m=60}do{if((m|0)==60){fi(a);fI(a,g,0)|0;A=a+48|0;if((c[k>>2]|0)==44){z=1;while(1){fi(a);d_(c[A>>2]|0,g);fI(a,g,0)|0;h=z+1|0;if((c[k>>2]|0)==44){z=h}else{D=h;break}}}else{D=1}z=c[A>>2]|0;if((D|0)==(d|0)){dY(z,g);d3(c[A>>2]|0,j,g);i=f;return}n=d-D|0;q=g|0;o=c[q>>2]|0;do{if((o|0)==13|(o|0)==14){h=n+1|0;w=(h|0)<0?0:h;dX(z,g,w);if((w|0)<=1){break}dT(z,w-1|0)}else if((o|0)==0){m=67}else{d_(z,g);m=67}}while(0);do{if((m|0)==67){if((n|0)<=0){break}o=c[z+36>>2]|0;dT(z,n);dK(z,o,n)}}while(0);if((D|0)<=(d|0)){B=A;C=q;break}z=(c[A>>2]|0)+36|0;c[z>>2]=n+(c[z>>2]|0);B=A;C=q}}while(0);d=c[B>>2]|0;B=(c[d+36>>2]|0)-1|0;c[g+16>>2]=-1;c[g+20>>2]=-1;c[C>>2]=12;c[g+8>>2]=B;d3(d,j,g);i=f;return}function fI(e,f,g){e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;j=i;i=i+24|0;k=j|0;l=e+52|0;m=(c[l>>2]|0)+52|0;n=(b[m>>1]|0)+1&65535;b[m>>1]=n;if((n&65535)>200){fe(e,6912,0)}n=e+16|0;switch(c[n>>2]|0){case 265:{fi(e);fK(e,f,0,c[e+4>>2]|0);break};case 45:{o=0;p=81;break};case 35:{o=2;p=81;break};case 270:{o=1;p=81;break};case 284:{c[f+16>>2]=-1;c[f+20>>2]=-1;c[f>>2]=5;c[f+8>>2]=0;h[f+8>>3]=+h[e+24>>3];p=93;break};case 286:{m=dU(c[e+48>>2]|0,c[e+24>>2]|0)|0;c[f+16>>2]=-1;c[f+20>>2]=-1;c[f>>2]=4;c[f+8>>2]=m;p=93;break};case 269:{c[f+16>>2]=-1;c[f+20>>2]=-1;c[f>>2]=1;c[f+8>>2]=0;p=93;break};case 275:{c[f+16>>2]=-1;c[f+20>>2]=-1;c[f>>2]=2;c[f+8>>2]=0;p=93;break};case 263:{c[f+16>>2]=-1;c[f+20>>2]=-1;c[f>>2]=3;c[f+8>>2]=0;p=93;break};case 279:{m=c[e+48>>2]|0;q=m|0;r=c[q>>2]|0;s=a[r+74|0]|0;if(s<<24>>24==0){ff(e,8128);t=c[q>>2]|0;u=t;v=a[t+74|0]|0}else{u=r;v=s}a[u+74|0]=v&-5;v=dL(m,37,0,1,0)|0;c[f+16>>2]=-1;c[f+20>>2]=-1;c[f>>2]=14;c[f+8>>2]=v;p=93;break};case 123:{fJ(e|0,f|0);break};default:{fG(e,f)}}if((p|0)==93){fi(e)}else if((p|0)==81){fi(e);fI(e,f,8)|0;d7(c[e+48>>2]|0,o,f)}switch(c[n>>2]|0){case 45:{w=1;break};case 42:{w=2;break};case 47:{w=3;break};case 37:{w=4;break};case 94:{w=5;break};case 278:{w=6;break};case 283:{w=7;break};case 280:{w=8;break};case 60:{w=9;break};case 282:{w=10;break};case 62:{w=11;break};case 281:{w=12;break};case 257:{w=13;break};case 271:{w=14;break};case 43:{w=0;break};default:{x=15;y=c[l>>2]|0;z=y+52|0;A=b[z>>1]|0;B=A-1&65535;b[z>>1]=B;i=j;return x|0}}n=e+48|0;o=w;while(1){if((d[328+(o<<1)|0]|0)>>>0<=g>>>0){x=o;p=114;break}fi(e);d9(c[n>>2]|0,o,f);w=fI(e,k,d[329+(o<<1)|0]|0)|0;eb(c[n>>2]|0,o,f,k);if((w|0)==15){x=15;p=115;break}else{o=w}}if((p|0)==114){y=c[l>>2]|0;z=y+52|0;A=b[z>>1]|0;B=A-1&65535;b[z>>1]=B;i=j;return x|0}else if((p|0)==115){y=c[l>>2]|0;z=y+52|0;A=b[z>>1]|0;B=A-1&65535;b[z>>1]=B;i=j;return x|0}return 0}function fJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=i;i=i+40|0;e=d|0;f=a+48|0;g=c[f>>2]|0;h=c[a+4>>2]|0;j=dL(g,10,0,0,0)|0;k=e+36|0;c[k>>2]=0;l=e+28|0;c[l>>2]=0;m=e+32|0;c[m>>2]=0;n=e+24|0;c[n>>2]=b;c[b+16>>2]=-1;c[b+20>>2]=-1;c[b>>2]=11;c[b+8>>2]=j;o=e|0;c[e+16>>2]=-1;c[e+20>>2]=-1;p=e|0;c[p>>2]=0;c[e+8>>2]=0;d_(c[f>>2]|0,b);b=a+16|0;if((c[b>>2]|0)!=123){q=c[a+52>>2]|0;r=fd(a,123)|0;s=fy(q,7112,(t=i,i=i+8|0,c[t>>2]=r,t)|0)|0;i=t;ff(a,s)}fi(a);L148:do{if((c[b>>2]|0)!=125){s=a+32|0;do{do{if((c[p>>2]|0)!=0){d_(g,o);c[p>>2]=0;if((c[k>>2]|0)!=50){break}ed(g,c[(c[n>>2]|0)+8>>2]|0,c[m>>2]|0,50);c[k>>2]=0}}while(0);r=c[b>>2]|0;do{if((r|0)==91){fM(a,e)}else if((r|0)==285){fk(a);if((c[s>>2]|0)==61){fM(a,e);break}fI(a,o,0)|0;q=c[m>>2]|0;if((q|0)>2147483645){u=c[f>>2]|0;v=c[(c[u>>2]|0)+60>>2]|0;w=c[u+16>>2]|0;if((v|0)==0){x=fy(w,10384,(t=i,i=i+16|0,c[t>>2]=2147483645,c[t+8>>2]=2256,t)|0)|0;i=t;y=x}else{x=fy(w,10216,(t=i,i=i+24|0,c[t>>2]=v,c[t+8>>2]=2147483645,c[t+16>>2]=2256,t)|0)|0;i=t;y=x}fe(c[u+12>>2]|0,y,0);z=c[m>>2]|0}else{z=q}c[m>>2]=z+1;c[k>>2]=(c[k>>2]|0)+1}else{fI(a,o,0)|0;q=c[m>>2]|0;if((q|0)>2147483645){u=c[f>>2]|0;x=c[(c[u>>2]|0)+60>>2]|0;v=c[u+16>>2]|0;if((x|0)==0){w=fy(v,10384,(t=i,i=i+16|0,c[t>>2]=2147483645,c[t+8>>2]=2256,t)|0)|0;i=t;A=w}else{w=fy(v,10216,(t=i,i=i+24|0,c[t>>2]=x,c[t+8>>2]=2147483645,c[t+16>>2]=2256,t)|0)|0;i=t;A=w}fe(c[u+12>>2]|0,A,0);B=c[m>>2]|0}else{B=q}c[m>>2]=B+1;c[k>>2]=(c[k>>2]|0)+1}}while(0);r=c[b>>2]|0;if((r|0)==44){fi(a)}else if((r|0)==59){fi(a)}else{break L148}}while((c[b>>2]|0)!=125)}}while(0);fF(a,125,123,h);h=c[k>>2]|0;do{if((h|0)!=0){a=c[p>>2]|0;if((a|0)==13|(a|0)==14){dX(g,o,-1);ed(g,c[(c[n>>2]|0)+8>>2]|0,c[m>>2]|0,-1);c[m>>2]=(c[m>>2]|0)-1;break}else if((a|0)==0){C=h}else{d_(g,o);C=c[k>>2]|0}ed(g,c[(c[n>>2]|0)+8>>2]|0,c[m>>2]|0,C)}}while(0);C=g|0;g=c[(c[(c[C>>2]|0)+12>>2]|0)+(j<<2)>>2]&8388607;n=(fo(c[m>>2]|0)|0)<<23|g;c[(c[(c[C>>2]|0)+12>>2]|0)+(j<<2)>>2]=n;n=c[(c[(c[C>>2]|0)+12>>2]|0)+(j<<2)>>2]&-8372225;g=(fo(c[l>>2]|0)|0)<<14&8372224|n;c[(c[(c[C>>2]|0)+12>>2]|0)+(j<<2)>>2]=g;i=d;return}function fK(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;k=i;i=i+576|0;l=k|0;fB(f,l);m=l|0;c[(c[m>>2]|0)+60>>2]=j;n=f+16|0;if((c[n>>2]|0)!=40){o=c[f+52>>2]|0;p=fd(f,40)|0;q=fy(o,7112,(r=i,i=i+8|0,c[r>>2]=p,r)|0)|0;i=r;ff(f,q)}fi(f);if((h|0)==0){s=f+48|0}else{fL(f,fg(f,6328,4)|0,0);h=f+48|0;q=c[h>>2]|0;p=q+50|0;o=(a[p]|0)+1&255;a[p]=o;c[(c[(c[q>>2]|0)+24>>2]|0)+((e[q+172+((o&255)-1<<1)>>1]|0)*12|0)+4>>2]=c[q+24>>2];s=h}h=c[s>>2]|0;q=c[h>>2]|0;o=q+74|0;a[o]=0;p=c[n>>2]|0;L198:do{if((p|0)==41){t=0}else{u=f+24|0;v=0;w=p;while(1){if((w|0)==279){break}else if((w|0)==285){x=c[u>>2]|0;fi(f);fL(f,x,v);y=v+1|0}else{ff(f,3504);y=v}if((a[o]|0)!=0){t=y;break L198}if((c[n>>2]|0)!=44){t=y;break L198}fi(f);v=y;w=c[n>>2]|0}fi(f);fL(f,fg(f,4032,3)|0,v);a[o]=7;t=v+1|0}}while(0);y=c[s>>2]|0;p=y+50|0;w=(d[p]|0)+t|0;a[p]=w&255;do{if((t|0)!=0){u=y+24|0;x=y|0;c[(c[(c[x>>2]|0)+24>>2]|0)+((e[y+172+((w&255)-t<<1)>>1]|0)*12|0)+4>>2]=c[u>>2];z=t-1|0;if((z|0)==0){break}else{A=z}do{c[(c[(c[x>>2]|0)+24>>2]|0)+((e[y+172+((d[p]|0)-A<<1)>>1]|0)*12|0)+4>>2]=c[u>>2];A=A-1|0;}while((A|0)!=0)}}while(0);A=h+50|0;a[q+73|0]=(a[A]|0)-(a[o]&1)&255;dT(h,d[A]|0);A=f+52|0;if((c[n>>2]|0)!=41){h=c[A>>2]|0;o=fd(f,41)|0;q=fy(h,7112,(r=i,i=i+8|0,c[r>>2]=o,r)|0)|0;i=r;ff(f,q)}fi(f);q=(c[A>>2]|0)+52|0;r=(b[q>>1]|0)+1&65535;b[q>>1]=r;if((r&65535)>200){fe(f,6912,0)}L220:do{switch(c[n>>2]|0){case 260:case 261:case 262:case 276:case 287:{break L220;break};default:{}}r=fD(f)|0;if((c[n>>2]|0)==59){fi(f)}q=c[s>>2]|0;c[q+36>>2]=d[q+50|0]|0;}while((r|0)==0);n=(c[A>>2]|0)+52|0;b[n>>1]=(b[n>>1]|0)-1&65535;c[(c[m>>2]|0)+64>>2]=c[f+4>>2];fF(f,262,265,j);fC(f);f=c[s>>2]|0;s=c[f>>2]|0;j=s+52|0;n=c[j>>2]|0;r=f+44|0;if(((c[r>>2]|0)+1|0)>(n|0)){q=s+16|0;c[q>>2]=ft(c[A>>2]|0,c[q>>2]|0,j,4,262143,4888)|0;B=c[j>>2]|0;C=q}else{B=n;C=s+16|0}if((n|0)<(B|0)){B=n;while(1){n=B+1|0;c[(c[C>>2]|0)+(B<<2)>>2]=0;if((n|0)<(c[j>>2]|0)){B=n}else{break}}}B=c[m>>2]|0;j=c[r>>2]|0;c[r>>2]=j+1;c[(c[C>>2]|0)+(j<<2)>>2]=B;B=c[m>>2]|0;j=B;do{if((a[B+5|0]&3)!=0){if((a[s+5|0]&4)==0){break}e7(c[A>>2]|0,s,j)}}while(0);j=dN(f,36,0,(c[r>>2]|0)-1|0)|0;c[g+16>>2]=-1;c[g+20>>2]=-1;c[g>>2]=11;c[g+8>>2]=j;if((a[(c[m>>2]|0)+72|0]|0)==0){i=k;return}else{D=0}do{dL(f,(a[l+51+(D<<1)|0]|0)==6?0:4,0,d[l+51+(D<<1)+1|0]|0,0)|0;D=D+1|0;}while((D|0)<(d[(c[m>>2]|0)+72|0]|0));i=k;return}function fL(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;h=i;j=e+48|0;k=c[j>>2]|0;l=k+50|0;if((g+1+(d[l]|0)|0)>200){m=c[(c[k>>2]|0)+60>>2]|0;n=c[k+16>>2]|0;if((m|0)==0){o=fy(n,10384,(p=i,i=i+16|0,c[p>>2]=200,c[p+8>>2]=2904,p)|0)|0;i=p;q=o}else{o=fy(n,10216,(p=i,i=i+24|0,c[p>>2]=m,c[p+8>>2]=200,c[p+16>>2]=2904,p)|0)|0;i=p;q=o}fe(c[k+12>>2]|0,q,0);r=c[j>>2]|0}else{r=k}j=c[r>>2]|0;q=j+56|0;o=c[q>>2]|0;p=r+48|0;if(((b[p>>1]|0)+1|0)>(o|0)){r=j+24|0;c[r>>2]=ft(c[e+52>>2]|0,c[r>>2]|0,q,12,32767,2552)|0;s=c[q>>2]|0;t=r}else{s=o;t=j+24|0}if((o|0)<(s|0)){s=o;while(1){o=s+1|0;c[(c[t>>2]|0)+(s*12|0)>>2]=0;if((o|0)<(c[q>>2]|0)){s=o}else{break}}}c[(c[t>>2]|0)+((b[p>>1]|0)*12|0)>>2]=f;if((a[f+5|0]&3)==0){u=b[p>>1]|0;v=u+1&65535;b[p>>1]=v;w=a[l]|0;x=w&255;y=x+g|0;z=k+172+(y<<1)|0;b[z>>1]=u;i=h;return}if((a[j+5|0]&4)==0){u=b[p>>1]|0;v=u+1&65535;b[p>>1]=v;w=a[l]|0;x=w&255;y=x+g|0;z=k+172+(y<<1)|0;b[z>>1]=u;i=h;return}e7(c[e+52>>2]|0,j,f);u=b[p>>1]|0;v=u+1&65535;b[p>>1]=v;w=a[l]|0;x=w&255;y=x+g|0;z=k+172+(y<<1)|0;b[z>>1]=u;i=h;return}function fM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;d=i;i=i+48|0;e=d|0;f=d+24|0;g=a+48|0;h=c[g>>2]|0;j=h+36|0;k=c[j>>2]|0;l=a+16|0;if((c[l>>2]|0)==285){m=b+28|0;do{if((c[m>>2]|0)>2147483645){n=c[(c[h>>2]|0)+60>>2]|0;o=c[h+16>>2]|0;if((n|0)==0){p=fy(o,10384,(q=i,i=i+16|0,c[q>>2]=2147483645,c[q+8>>2]=2256,q)|0)|0;i=q;r=p}else{p=fy(o,10216,(q=i,i=i+24|0,c[q>>2]=n,c[q+8>>2]=2147483645,c[q+16>>2]=2256,q)|0)|0;i=q;r=p}fe(c[h+12>>2]|0,r,0);if((c[l>>2]|0)==285){break}p=c[a+52>>2]|0;n=fd(a,285)|0;o=fy(p,7112,(q=i,i=i+8|0,c[q>>2]=n,q)|0)|0;i=q;ff(a,o)}}while(0);r=c[a+24>>2]|0;fi(a);o=dU(c[g>>2]|0,r)|0;c[e+16>>2]=-1;c[e+20>>2]=-1;c[e>>2]=4;c[e+8>>2]=o;s=m}else{fN(a,e);s=b+28|0}c[s>>2]=(c[s>>2]|0)+1;if((c[l>>2]|0)==61){fi(a);t=d2(h,e)|0;u=fI(a,f,0)|0;v=b+24|0;w=c[v>>2]|0;x=w+8|0;y=x;z=c[y>>2]|0;A=d2(h,f)|0;B=dL(h,9,z,t,A)|0;c[j>>2]=k;i=d;return}l=c[a+52>>2]|0;s=fd(a,61)|0;m=fy(l,7112,(q=i,i=i+8|0,c[q>>2]=s,q)|0)|0;i=q;ff(a,m);fi(a);t=d2(h,e)|0;u=fI(a,f,0)|0;v=b+24|0;w=c[v>>2]|0;x=w+8|0;y=x;z=c[y>>2]|0;A=d2(h,f)|0;B=dL(h,9,z,t,A)|0;c[j>>2]=k;i=d;return}function fN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;fi(a);fI(a,b,0)|0;d1(c[a+48>>2]|0,b);if((c[a+16>>2]|0)==93){fi(a);i=d;return}b=c[a+52>>2]|0;e=fd(a,93)|0;f=fy(b,7112,(b=i,i=i+8|0,c[b>>2]=e,b)|0)|0;i=b;ff(a,f);fi(a);i=d;return}function fO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+24|0;e=d|0;f=a+48|0;g=c[f>>2]|0;d0(g,b)|0;fi(a);if((c[a+16>>2]|0)!=285){h=c[a+52>>2]|0;j=fd(a,285)|0;k=fy(h,7112,(h=i,i=i+8|0,c[h>>2]=j,h)|0)|0;i=h;ff(a,k)}k=c[a+24>>2]|0;fi(a);a=dU(c[f>>2]|0,k)|0;c[e+16>>2]=-1;c[e+20>>2]=-1;c[e>>2]=4;c[e+8>>2]=a;d6(g,b,e);i=d;return}function fP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;i=i+24|0;e=d|0;f=a+48|0;g=c[f>>2]|0;h=c[a+4>>2]|0;j=a+16|0;k=c[j>>2]|0;if((k|0)==123){fJ(a|0,e|0)}else if((k|0)==286){l=dU(g,c[a+24>>2]|0)|0;c[e+16>>2]=-1;c[e+20>>2]=-1;c[e>>2]=4;c[e+8>>2]=l;fi(a)}else if((k|0)==40){if((h|0)!=(c[a+8>>2]|0)){ff(a,9952)}fi(a);if((c[j>>2]|0)==41){c[e>>2]=0}else{fI(a,e,0)|0;if((c[j>>2]|0)==44){do{fi(a);d_(c[f>>2]|0,e);fI(a,e,0)|0;}while((c[j>>2]|0)==44)}dX(g,e,-1)}fF(a,41,40,h)}else{ff(a,9704);i=d;return}a=b+8|0;j=c[a>>2]|0;f=c[e>>2]|0;if((f|0)==0){m=240}else if((f|0)==13|(f|0)==14){n=0}else{d_(g,e);m=240}if((m|0)==240){n=(c[g+36>>2]|0)-j|0}m=dL(g,28,j,n,2)|0;c[b+16>>2]=-1;c[b+20>>2]=-1;c[b>>2]=13;c[a>>2]=m;ea(g,h);c[g+36>>2]=j+1;i=d;return}function fQ(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;j=i;if((b|0)==0){c[g+16>>2]=-1;c[g+20>>2]=-1;c[g>>2]=8;c[g+8>>2]=255;k=8;i=j;return k|0}l=b|0;m=d[b+50|0]|0;while(1){n=m-1|0;if((m|0)<=0){break}if((c[(c[(c[l>>2]|0)+24>>2]|0)+((e[b+172+(n<<1)>>1]|0)*12|0)>>2]|0)==(f|0)){o=250;break}else{m=n}}if((o|0)==250){c[g+16>>2]=-1;c[g+20>>2]=-1;c[g>>2]=6;c[g+8>>2]=n;if((h|0)!=0){k=6;i=j;return k|0}h=b+20|0;while(1){p=c[h>>2]|0;if((p|0)==0){k=6;o=279;break}if((d[p+8|0]|0|0)>(n|0)){h=p|0}else{break}}if((o|0)==279){i=j;return k|0}a[p+9|0]=1;k=6;i=j;return k|0}if((fQ(c[b+8>>2]|0,f,g,0)|0)==8){k=8;i=j;return k|0}p=c[l>>2]|0;l=p+36|0;h=c[l>>2]|0;n=p+72|0;m=a[n]|0;q=m&255;L342:do{if(m<<24>>24==0){r=0;o=261}else{s=c[g>>2]|0;t=g+8|0;u=0;while(1){if((d[b+51+(u<<1)|0]|0|0)==(s|0)){if((d[b+51+(u<<1)+1|0]|0|0)==(c[t>>2]|0)){v=u;break L342}}w=u+1|0;if((w|0)<(q|0)){u=w}else{r=m;o=261;break}}}}while(0);if((o|0)==261){if((q+1|0)>>>0>60){q=c[p+60>>2]|0;o=c[b+16>>2]|0;if((q|0)==0){m=fy(o,10384,(x=i,i=i+16|0,c[x>>2]=60,c[x+8>>2]=9272,x)|0)|0;i=x;y=m}else{m=fy(o,10216,(x=i,i=i+24|0,c[x>>2]=q,c[x+8>>2]=60,c[x+16>>2]=9272,x)|0)|0;i=x;y=m}fe(c[b+12>>2]|0,y,0);z=a[n]|0;A=c[l>>2]|0}else{z=r;A=h}if(((z&255)+1|0)>(A|0)){z=p+28|0;c[z>>2]=ft(c[b+16>>2]|0,c[z>>2]|0,l,4,2147483645,10560)|0;B=c[l>>2]|0;C=z}else{B=A;C=p+28|0}if((h|0)<(B|0)){B=h;while(1){h=B+1|0;c[(c[C>>2]|0)+(B<<2)>>2]=0;if((h|0)<(c[l>>2]|0)){B=h}else{break}}}c[(c[C>>2]|0)+((d[n]|0)<<2)>>2]=f;C=f;do{if((a[f+5|0]&3)!=0){if((a[p+5|0]&4)==0){break}e7(c[b+16>>2]|0,p,C)}}while(0);a[b+51+((d[n]|0)<<1)|0]=c[g>>2]&255;a[b+51+((d[n]|0)<<1)+1|0]=c[g+8>>2]&255;b=a[n]|0;a[n]=b+1&255;v=b&255}c[g+8>>2]=v;c[g>>2]=7;k=7;i=j;return k|0}function fR(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;k=i;i=i+16|0;l=k|0;m=b+48|0;n=c[m>>2]|0;o=n+50|0;p=(a[o]|0)+3&255;a[o]=p;q=n+24|0;r=n|0;c[(c[(c[r>>2]|0)+24>>2]|0)+((e[n+172+((p&255)-3<<1)>>1]|0)*12|0)+4>>2]=c[q>>2];c[(c[(c[r>>2]|0)+24>>2]|0)+((e[n+172+((d[o]|0)-2<<1)>>1]|0)*12|0)+4>>2]=c[q>>2];c[(c[(c[r>>2]|0)+24>>2]|0)+((e[n+172+((d[o]|0)-1<<1)>>1]|0)*12|0)+4>>2]=c[q>>2];if((c[b+16>>2]|0)!=259){q=c[b+52>>2]|0;r=fd(b,259)|0;p=fy(q,7112,(q=i,i=i+8|0,c[q>>2]=r,q)|0)|0;i=q;ff(b,p)}fi(b);p=(j|0)!=0;if(p){s=dN(n,32,f,131070)|0}else{s=dM(n)|0}c[l+4>>2]=-1;a[l+10|0]=0;a[l+8|0]=a[o]|0;a[l+9|0]=0;j=n+20|0;c[l>>2]=c[j>>2];c[j>>2]=l;l=c[m>>2]|0;m=l+50|0;q=(d[m]|0)+h|0;a[m]=q&255;do{if((h|0)!=0){r=l+24|0;t=l|0;c[(c[(c[t>>2]|0)+24>>2]|0)+((e[l+172+((q&255)-h<<1)>>1]|0)*12|0)+4>>2]=c[r>>2];u=h-1|0;if((u|0)==0){break}else{v=u}do{c[(c[(c[t>>2]|0)+24>>2]|0)+((e[l+172+((d[m]|0)-v<<1)>>1]|0)*12|0)+4>>2]=c[r>>2];v=v-1|0;}while((v|0)!=0)}}while(0);dT(n,h);fE(b);b=c[j>>2]|0;c[j>>2]=c[b>>2];j=b+8|0;v=a[j]|0;m=c[(c[n+12>>2]|0)+48>>2]|0;l=m+50|0;q=a[l]|0;if((q&255)>(v&255)){r=m+24|0;t=m|0;u=q;do{q=c[r>>2]|0;w=u-1&255;a[l]=w;c[(c[(c[t>>2]|0)+24>>2]|0)+((e[m+172+((w&255)<<1)>>1]|0)*12|0)+8>>2]=q;u=a[l]|0;}while((u&255)>(v&255))}if((a[b+9|0]|0)!=0){v=d[j]|0;dL(n,35,v,0,0)|0}c[n+36>>2]=d[o]|0;dR(n,c[b+4>>2]|0);dR(n,s);if(p){p=dN(n,31,f,131070)|0;ea(n,g);x=p;y=s+1|0;dQ(n,x,y);i=k;return}else{dL(n,33,f,0,h)|0;ea(n,g);x=dM(n)|0;y=s+1|0;dQ(n,x,y);i=k;return}}function fS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+24|0;d=b|0;fi(a);fI(a,d,0)|0;e=d|0;if((c[e>>2]|0)==1){c[e>>2]=3}d5(c[a+48>>2]|0,d);e=c[d+20>>2]|0;if((c[a+16>>2]|0)==274){fi(a);fE(a);i=b;return e|0}d=c[a+52>>2]|0;f=fd(a,274)|0;g=fy(d,7112,(d=i,i=i+8|0,c[d>>2]=f,d)|0)|0;i=d;ff(a,g);fi(a);fE(a);i=b;return e|0}function fT(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=fu(b,0,0,120)|0;e3(b,d,8);c[d+16>>2]=c[b+16>>2];e=d+32|0;c[e>>2]=0;f=d+44|0;c[f>>2]=0;c[d+112>>2]=0;g=d+68|0;c[g>>2]=0;h=d+56|0;a[h]=0;i=d+60|0;c[i>>2]=0;a[d+57|0]=1;j=d+64|0;c[j>>2]=0;c[d+104>>2]=0;k=d+48|0;a[d+6|0]=0;l=d+20|0;c[l>>2]=0;m=d+40|0;c[m>>2]=0;c[d+24>>2]=0;c[d+116>>2]=0;n=d+80|0;c[n>>2]=0;o=k;c[o>>2]=0;c[o+4>>2]=0;o=fu(b,0,0,192)|0;p=o;c[m>>2]=p;c[l>>2]=p;c[k>>2]=8;c[d+36>>2]=o+168;o=fu(b,0,0,720)|0;k=o;c[e>>2]=k;c[f>>2]=45;f=d+8|0;c[f>>2]=k;c[d+28>>2]=o+624;c[(c[l>>2]|0)+4>>2]=k;k=c[f>>2]|0;c[f>>2]=k+16;c[k+8>>2]=0;k=c[f>>2]|0;c[c[l>>2]>>2]=k;c[d+12>>2]=k;c[(c[l>>2]|0)+8>>2]=(c[f>>2]|0)+320;f=b+72|0;l=d+72|0;k=c[f+4>>2]|0;c[l>>2]=c[f>>2];c[l+4>>2]=k;c[n>>2]=c[b+80>>2];a[h]=a[b+56|0]|0;h=c[b+60>>2]|0;c[i>>2]=h;c[g>>2]=c[b+68>>2];c[j>>2]=h;return d|0}function fU(a,b){a=a|0;b=b|0;var d=0;d=b+32|0;eU(b,c[d>>2]|0);fu(a,c[b+40>>2]|0,(c[b+48>>2]|0)*24|0,0)|0;fu(a,c[d>>2]|0,c[b+44>>2]<<4,0)|0;fu(a,b,120,0)|0;return}function fV(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=cg[b&511](d,0,0,376)|0;if((e|0)==0){f=0;return f|0}g=e;h=e+120|0;c[e>>2]=0;a[e+4|0]=8;a[e+140|0]=33;a[e+5|0]=97;i=e+16|0;c[i>>2]=h;j=e+32|0;c[j>>2]=0;k=e+44|0;c[k>>2]=0;c[e+112>>2]=0;c[e+68>>2]=0;a[e+56|0]=0;c[e+60>>2]=0;a[e+57|0]=1;c[e+64>>2]=0;c[e+104>>2]=0;l=e+48|0;a[e+6|0]=0;c[e+20>>2]=0;m=e+40|0;c[m>>2]=0;c[e+24>>2]=0;c[e+116>>2]=0;c[e+80>>2]=0;n=l;c[n>>2]=0;c[n+4>>2]=0;c[e+132>>2]=b;c[e+136>>2]=d;c[e+232>>2]=g;d=e+240|0;c[e+256>>2]=d;c[e+260>>2]=d;c[e+184>>2]=0;c[e+128>>2]=0;c[e+124>>2]=0;c[h>>2]=0;c[e+224>>2]=0;c[e+172>>2]=0;c[e+180>>2]=0;c[e+208>>2]=0;a[e+141|0]=0;h=e+148|0;c[h>>2]=e;c[e+144>>2]=0;c[e+152>>2]=h;j2(e+156|0,0,16);c[e+188>>2]=376;c[e+200>>2]=200;c[e+204>>2]=200;c[e+196>>2]=0;j2(e+272|0,0,36);if((ex(g,254,0)|0)==0){f=g;return f|0}h=c[i>>2]|0;eU(g,c[j>>2]|0);e$(g);d=c[i>>2]|0;fu(g,c[d>>2]|0,c[d+8>>2]<<2,0)|0;d=h+52|0;i=h+60|0;c[d>>2]=fu(g,c[d>>2]|0,c[i>>2]|0,0)|0;c[i>>2]=0;fu(g,c[m>>2]|0,(c[l>>2]|0)*24|0,0)|0;fu(g,c[j>>2]|0,c[k>>2]<<4,0)|0;cg[c[h+12>>2]&511](c[h+16>>2]|0,e,376,0)|0;f=0;return f|0}function fW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;d=b+16|0;e=c[d>>2]|0;f=fu(b,0,0,192)|0;g=f;c[b+40>>2]=g;h=b+20|0;c[h>>2]=g;c[b+48>>2]=8;c[b+36>>2]=f+168;f=fu(b,0,0,720)|0;g=f;c[b+32>>2]=g;c[b+44>>2]=45;i=b+8|0;c[i>>2]=g;c[b+28>>2]=f+624;c[(c[h>>2]|0)+4>>2]=g;g=c[i>>2]|0;c[i>>2]=g+16;c[g+8>>2]=0;g=c[i>>2]|0;c[c[h>>2]>>2]=g;c[b+12>>2]=g;c[(c[h>>2]|0)+8>>2]=(c[i>>2]|0)+320;c[b+72>>2]=f5(b,0,2)|0;c[b+80>>2]=5;i=c[d>>2]|0;c[i+96>>2]=f5(b,0,2)|0;c[i+104>>2]=5;fZ(b,32);ge(b);fc(b);i=(f_(b,8768,17)|0)+5|0;a[i]=a[i]|32;c[e+64>>2]=c[e+68>>2]<<2;return}function fX(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=c[(c[a+16>>2]|0)+112>>2]|0;a=d+32|0;eU(d,c[a>>2]|0);eY(d,1)|0;c[d+116>>2]=0;e=d+40|0;f=d+20|0;g=d+8|0;h=d+12|0;i=d+54|0;j=d+52|0;do{k=c[e>>2]|0;c[f>>2]=k;l=c[k>>2]|0;c[g>>2]=l;c[h>>2]=l;b[i>>1]=0;b[j>>1]=0;}while((ex(d,256,0)|0)!=0);j=d+16|0;i=c[j>>2]|0;eU(d,c[a>>2]|0);e$(d);h=c[j>>2]|0;fu(d,c[h>>2]|0,c[h+8>>2]<<2,0)|0;h=i+52|0;j=i+60|0;c[h>>2]=fu(d,c[h>>2]|0,c[j>>2]|0,0)|0;c[j>>2]=0;fu(d,c[e>>2]|0,(c[d+48>>2]|0)*24|0,0)|0;fu(d,c[a>>2]|0,c[d+44>>2]<<4,0)|0;cg[c[i+12>>2]&511](c[i+16>>2]|0,d,376,0)|0;return}function fY(a,b){a=a|0;b=b|0;eZ(a);return}function fZ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=b+16|0;if((a[(c[e>>2]|0)+21|0]|0)==2){return}if((d+1|0)>>>0<1073741824){f=fu(b,0,0,d<<2)|0}else{f=fv(b)|0}g=f;h=c[e>>2]|0;if((d|0)>0){j2(f|0,0,d<<2|0)}f=h+8|0;e=c[f>>2]|0;i=h|0;h=c[i>>2]|0;if((e|0)>0){j=d-1|0;k=0;l=h;m=e;while(1){n=c[l+(k<<2)>>2]|0;if((n|0)==0){o=m;p=l}else{q=n;while(1){n=q|0;r=c[n>>2]|0;s=g+((c[q+8>>2]&j)<<2)|0;c[n>>2]=c[s>>2];c[s>>2]=q;if((r|0)==0){break}else{q=r}}o=c[f>>2]|0;p=c[i>>2]|0}q=k+1|0;if((q|0)<(o|0)){k=q;l=p;m=o}else{t=o;u=p;break}}}else{t=e;u=h}fu(b,u,t<<2,0)|0;c[f>>2]=d;c[i>>2]=g;return}function f_(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=(f>>>5)+1|0;if(g>>>0>f>>>0){h=f}else{i=f;j=f;while(1){k=(i<<5)+(i>>>2)+(d[e+(j-1)|0]|0)^i;l=j-g|0;if(l>>>0<g>>>0){h=k;break}else{i=k;j=l}}}j=b+16|0;i=c[j>>2]|0;g=c[(c[i>>2]|0)+(((c[i+8>>2]|0)-1&h)<<2)>>2]|0;L449:do{if((g|0)!=0){l=g;while(1){if((c[l+12>>2]|0)==(f|0)){m=l;if((j5(e|0,l+16|0,f|0)|0)==0){break}}k=c[l>>2]|0;if((k|0)==0){break L449}else{l=k}}k=l+5|0;n=a[k]|0;if((n&3&((d[i+20|0]|0)^3)|0)==0){o=m;return o|0}a[k]=n^3;o=m;return o|0}}while(0);if((f+1|0)>>>0>4294967277){fv(b)|0}m=fu(b,0,0,f+17|0)|0;i=m;c[m+12>>2]=f;c[m+8>>2]=h;a[m+5|0]=a[(c[j>>2]|0)+20|0]&3;a[m+4|0]=4;a[m+6|0]=0;g=m+16|0;j$(g|0,e|0,f)|0;a[m+(f+16)|0]=0;f=c[j>>2]|0;j=f+8|0;e=(c[j>>2]|0)-1&h;h=f|0;c[m>>2]=c[(c[h>>2]|0)+(e<<2)>>2];c[(c[h>>2]|0)+(e<<2)>>2]=m;m=f+4|0;f=(c[m>>2]|0)+1|0;c[m>>2]=f;m=c[j>>2]|0;if(!(f>>>0>m>>>0&(m|0)<1073741823)){o=i;return o|0}fZ(b,m<<1);o=i;return o|0}function f$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(d>>>0>4294967269){fv(b)|0}f=fu(b,0,0,d+24|0)|0;g=b+16|0;a[f+5|0]=a[(c[g>>2]|0)+20|0]&3;a[f+4|0]=7;c[f+16>>2]=d;c[f+8>>2]=0;c[f+12>>2]=e;c[f>>2]=c[c[(c[g>>2]|0)+112>>2]>>2];c[c[(c[g>>2]|0)+112>>2]>>2]=f;return f|0}function f0(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;g=e+8|0;L473:do{switch(c[g>>2]|0){case 4:{j=(c[b+16>>2]|0)+(((1<<(d[b+7|0]|0))-1&c[(c[e>>2]|0)+8>>2])<<5)|0;k=370;break};case 1:{j=(c[b+16>>2]|0)+(((1<<(d[b+7|0]|0))-1&c[e>>2])<<5)|0;k=370;break};case 2:{j=(c[b+16>>2]|0)+((((c[e>>2]|0)>>>0)%(((1<<(d[b+7|0]|0))-1|1)>>>0)|0)<<5)|0;k=370;break};case 0:{l=-1;break};case 3:{m=e|0;n=+h[m>>3];o=c[m>>2]|0;p=c[m+4>>2]|0;m=~~n;do{if(+(m|0)==n&(m|0)>0){if((m|0)>(c[b+28>>2]|0)){break}l=m-1|0;break L473}}while(0);if(n==0.0){j=c[b+16>>2]|0;k=370;break L473}else{j=(c[b+16>>2]|0)+((((p+o|0)>>>0)%(((1<<(d[b+7|0]|0))-1|1)>>>0)|0)<<5)|0;k=370;break L473}break};default:{j=(c[b+16>>2]|0)+((((c[e>>2]|0)>>>0)%(((1<<(d[b+7|0]|0))-1|1)>>>0)|0)<<5)|0;k=370}}}while(0);do{if((k|0)==370){m=e;q=j;L488:while(1){r=q+16|0;if((fr(r,e)|0)!=0){k=375;break}do{if((c[q+24>>2]|0)==11){if((c[g>>2]|0)<=3){break}if((c[r>>2]|0)==(c[m>>2]|0)){k=375;break L488}}}while(0);r=c[q+28>>2]|0;if((r|0)==0){k=377;break}else{q=r}}if((k|0)==375){l=(q-(c[b+16>>2]|0)>>5)+(c[b+28>>2]|0)|0;break}else if((k|0)==377){es(a,6216,(m=i,i=i+1|0,i=i+7>>3<<3,c[m>>2]=0,m)|0);i=m;l=0;break}}}while(0);a=c[b+28>>2]|0;j=b+12|0;m=l;while(1){s=m+1|0;if((s|0)>=(a|0)){break}if((c[(c[j>>2]|0)+(s<<4)+8>>2]|0)==0){m=s}else{k=381;break}}if((k|0)==381){h[e>>3]=+(m+2|0);c[g>>2]=3;m=c[j>>2]|0;j=m+(s<<4)|0;l=e+16|0;o=c[j+4>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=o;c[e+24>>2]=c[m+(s<<4)+8>>2];t=1;i=f;return t|0}m=1<<(d[b+7|0]|0);o=b+16|0;b=s-a|0;while(1){if((b|0)>=(m|0)){t=0;k=389;break}u=c[o>>2]|0;if((c[u+(b<<5)+8>>2]|0)==0){b=b+1|0}else{break}}if((k|0)==389){i=f;return t|0}k=u+(b<<5)+16|0;m=e;a=c[k+4>>2]|0;c[m>>2]=c[k>>2];c[m+4>>2]=a;c[g>>2]=c[u+(b<<5)+24>>2];u=c[o>>2]|0;o=u+(b<<5)|0;g=e+16|0;a=c[o+4>>2]|0;c[g>>2]=c[o>>2];c[g+4>>2]=a;c[e+24>>2]=c[u+(b<<5)+8>>2];t=1;i=f;return t|0}function f1(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;if((c[b+16>>2]|0)==1656){f=0}else{f=1<<(d[b+7|0]|0)}f2(a,b,e,f);return}function f2(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;j=i;i=i+16|0;l=j|0;m=e+28|0;n=c[m>>2]|0;o=e+7|0;p=d[o]|0;q=e+16|0;r=c[q>>2]|0;if((n|0)<(f|0)){if((f+1|0)>>>0<268435456){s=e+12|0;t=fu(b,c[s>>2]|0,n<<4,f<<4)|0;u=s}else{t=fv(b)|0;u=e+12|0}s=t;c[u>>2]=s;t=c[m>>2]|0;do{if((t|0)<(f|0)){c[s+(t<<4)+8>>2]=0;v=t+1|0;if((v|0)<(f|0)){w=v}else{break}do{c[(c[u>>2]|0)+(w<<4)+8>>2]=0;w=w+1|0;}while((w|0)<(f|0))}}while(0);c[m>>2]=f}f6(b,e,g);if((n|0)>(f|0)){c[m>>2]=f;g=e+12|0;w=l|0;u=l+8|0;t=f;while(1){s=c[g>>2]|0;v=s+(t<<4)+8|0;x=t+1|0;if((c[v>>2]|0)!=0){L536:do{if(t>>>0<(c[m>>2]|0)>>>0){y=s+(t<<4)|0;z=413}else{A=+(x|0);if((x|0)==0){B=c[q>>2]|0}else{h[k>>3]=A;B=(c[q>>2]|0)+(((((c[k+4>>2]|0)+(c[k>>2]|0)|0)>>>0)%(((1<<(d[o]|0))-1|1)>>>0)|0)<<5)|0}while(1){if((c[B+24>>2]|0)==3){if(+h[B+16>>3]==A){break}}C=c[B+28>>2]|0;if((C|0)==0){E=A;z=415;break L536}else{B=C}}y=B|0;z=413}}while(0);do{if((z|0)==413){z=0;if((y|0)!=1032){F=y;break}E=+(x|0);z=415}}while(0);if((z|0)==415){z=0;h[w>>3]=E;c[u>>2]=3;F=gb(b,e,l)|0}C=s+(t<<4)|0;G=F;H=c[C+4>>2]|0;c[G>>2]=c[C>>2];c[G+4>>2]=H;c[F+8>>2]=c[v>>2]}if((x|0)<(n|0)){t=x}else{break}}if((f+1|0)>>>0<268435456){t=e+12|0;I=fu(b,c[t>>2]|0,n<<4,f<<4)|0;J=t}else{I=fv(b)|0;J=e+12|0}c[J>>2]=I}I=1<<p;if((I|0)>0){p=e+6|0;J=I;do{J=J-1|0;t=r+(J<<5)+8|0;if((c[t>>2]|0)!=0){f=r+(J<<5)|0;n=r+(J<<5)+16|0;F=n;l=f8(e,F)|0;a[p]=0;if((l|0)==1032){u=c[r+(J<<5)+24>>2]|0;do{if((u|0)==3){E=+h[n>>3];if(E==E&!(D=0.0,D!=D)){break}es(b,10016,(K=i,i=i+1|0,i=i+7>>3<<3,c[K>>2]=0,K)|0);i=K}else if((u|0)==0){es(b,8512,(K=i,i=i+1|0,i=i+7>>3<<3,c[K>>2]=0,K)|0);i=K}}while(0);L=gb(b,e,F)|0}else{L=l}u=f;n=L;x=c[u+4>>2]|0;c[n>>2]=c[u>>2];c[n+4>>2]=x;c[L+8>>2]=c[t>>2]}}while((J|0)>0)}if((r|0)==1656){i=j;return}fu(b,r,I<<5,0)|0;i=j;return}function f3(a,b){a=a|0;b=b|0;var e=0,f=0,g=0.0,i=0,j=0;e=b-1|0;if(e>>>0<(c[a+28>>2]|0)>>>0){f=(c[a+12>>2]|0)+(e<<4)|0;return f|0}g=+(b|0);if((b|0)==0){i=c[a+16>>2]|0}else{h[k>>3]=g;i=(c[a+16>>2]|0)+(((((c[k+4>>2]|0)+(c[k>>2]|0)|0)>>>0)%(((1<<(d[a+7|0]|0))-1|1)>>>0)|0)<<5)|0}while(1){if((c[i+24>>2]|0)==3){if(+h[i+16>>3]==g){break}}a=c[i+28>>2]|0;if((a|0)==0){f=1032;j=449;break}else{i=a}}if((j|0)==449){return f|0}f=i|0;return f|0}function f4(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=(c[a+16>>2]|0)+(((1<<(d[a+7|0]|0))-1&c[b+8>>2])<<5)|0;while(1){if((c[e+24>>2]|0)==4){if((c[e+16>>2]|0)==(b|0)){break}}a=c[e+28>>2]|0;if((a|0)==0){f=1032;g=458;break}else{e=a}}if((g|0)==458){return f|0}f=e|0;return f|0}function f5(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=fu(b,0,0,32)|0;g=f;e3(b,f,5);c[f+8>>2]=0;a[f+6|0]=-1;h=f+12|0;c[h>>2]=0;i=f+28|0;c[i>>2]=0;a[f+7|0]=0;c[f+16>>2]=1656;if((d+1|0)>>>0<268435456){j=fu(b,0,0,d<<4)|0}else{j=fv(b)|0}f=j;c[h>>2]=f;j=c[i>>2]|0;if((j|0)>=(d|0)){c[i>>2]=d;f6(b,g,e);return g|0}c[f+(j<<4)+8>>2]=0;f=j+1|0;if((f|0)<(d|0)){k=f}else{c[i>>2]=d;f6(b,g,e);return g|0}do{c[(c[h>>2]|0)+(k<<4)+8>>2]=0;k=k+1|0;}while((k|0)<(d|0));c[i>>2]=d;f6(b,g,e);return g|0}function f6(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;do{if((e|0)==0){c[d+16>>2]=1656;g=0;h=0;j=1656}else{k=(fq(e-1|0)|0)+1|0;if((k|0)>26){es(b,8040,(l=i,i=i+1|0,i=i+7>>3<<3,c[l>>2]=0,l)|0);i=l}l=1<<k;if((l+1|0)>>>0<134217728){m=fu(b,0,0,l<<5)|0}else{m=fv(b)|0}n=m;o=d+16|0;c[o>>2]=n;p=k&255;if((l|0)>0){q=0;r=n}else{g=l;h=p;j=n;break}while(1){c[r+(q<<5)+28>>2]=0;c[r+(q<<5)+24>>2]=0;c[r+(q<<5)+8>>2]=0;n=q+1|0;k=c[o>>2]|0;if((n|0)<(l|0)){q=n;r=k}else{g=l;h=p;j=k;break}}}}while(0);a[d+7|0]=h;c[d+20>>2]=j+(g<<5);i=f;return}function f7(a,b){a=a|0;b=b|0;var e=0,f=0;e=c[b+16>>2]|0;if((e|0)!=1656){f=e;e=32<<(d[b+7|0]|0);fu(a,f,e,0)|0}fu(a,c[b+12>>2]|0,c[b+28>>2]<<4,0)|0;fu(a,b,32,0)|0;return}function f8(a,b){a=a|0;b=b|0;var e=0,f=0,g=0.0,i=0,j=0.0,l=0,m=0,n=0,o=0;L640:do{switch(c[b+8>>2]|0){case 0:{e=1032;return e|0};case 1:{f=(c[a+16>>2]|0)+(((1<<(d[a+7|0]|0))-1&c[b>>2])<<5)|0;break};case 2:{f=(c[a+16>>2]|0)+((((c[b>>2]|0)>>>0)%(((1<<(d[a+7|0]|0))-1|1)>>>0)|0)<<5)|0;break};case 3:{g=+h[b>>3];i=~~g;j=+(i|0);if(j!=g){l=b|0;if(+h[l>>3]==0.0){f=c[a+16>>2]|0;break L640}else{f=(c[a+16>>2]|0)+(((((c[l+4>>2]|0)+(c[l>>2]|0)|0)>>>0)%(((1<<(d[a+7|0]|0))-1|1)>>>0)|0)<<5)|0;break L640}}l=i-1|0;if(l>>>0<(c[a+28>>2]|0)>>>0){e=(c[a+12>>2]|0)+(l<<4)|0;return e|0}if((i|0)==0){m=c[a+16>>2]|0}else{h[k>>3]=j;m=(c[a+16>>2]|0)+(((((c[k+4>>2]|0)+(c[k>>2]|0)|0)>>>0)%(((1<<(d[a+7|0]|0))-1|1)>>>0)|0)<<5)|0}while(1){if((c[m+24>>2]|0)==3){if(+h[m+16>>3]==j){break}}i=c[m+28>>2]|0;if((i|0)==0){e=1032;n=514;break}else{m=i}}if((n|0)==514){return e|0}e=m|0;return e|0};case 4:{i=c[b>>2]|0;l=(c[a+16>>2]|0)+(((1<<(d[a+7|0]|0))-1&c[i+8>>2])<<5)|0;while(1){if((c[l+24>>2]|0)==4){if((c[l+16>>2]|0)==(i|0)){break}}o=c[l+28>>2]|0;if((o|0)==0){e=1032;n=511;break}else{l=o}}if((n|0)==511){return e|0}e=l|0;return e|0};default:{f=(c[a+16>>2]|0)+((((c[b>>2]|0)>>>0)%(((1<<(d[a+7|0]|0))-1|1)>>>0)|0)<<5)|0}}}while(0);while(1){if((fr(f+16|0,b)|0)!=0){break}a=c[f+28>>2]|0;if((a|0)==0){e=1032;n=510;break}else{f=a}}if((n|0)==510){return e|0}e=f|0;return e|0}function f9(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0.0;f=i;g=f8(d,e)|0;a[d+6|0]=0;if((g|0)!=1032){j=g;i=f;return j|0}g=c[e+8>>2]|0;do{if((g|0)==0){es(b,8512,(k=i,i=i+1|0,i=i+7>>3<<3,c[k>>2]=0,k)|0);i=k}else if((g|0)==3){l=+h[e>>3];if(l==l&!(D=0.0,D!=D)){break}es(b,10016,(k=i,i=i+1|0,i=i+7>>3<<3,c[k>>2]=0,k)|0);i=k}}while(0);j=gb(b,d,e)|0;i=f;return j|0}function ga(a){a=a|0;var b=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;b=c[a+28>>2]|0;do{if((b|0)!=0){e=c[a+12>>2]|0;if((c[e+(b-1<<4)+8>>2]|0)!=0){break}if(b>>>0>1){f=b;g=0}else{i=0;return i|0}while(1){j=(g+f|0)>>>1;l=(c[e+(j-1<<4)+8>>2]|0)==0;m=l?j:f;n=l?g:j;if((m-n|0)>>>0>1){f=m;g=n}else{i=n;break}}return i|0}}while(0);g=c[a+16>>2]|0;if((g|0)==1656){i=b;return i|0}f=a+12|0;e=a+7|0;a=b;n=b+1|0;while(1){m=n-1|0;L710:do{if(m>>>0<b>>>0){o=(c[f>>2]|0)+(m<<4)|0}else{p=+(n|0);if((n|0)==0){q=g}else{h[k>>3]=p;q=g+(((((c[k+4>>2]|0)+(c[k>>2]|0)|0)>>>0)%(((1<<(d[e]|0))-1|1)>>>0)|0)<<5)|0}while(1){if((c[q+24>>2]|0)==3){if(+h[q+16>>3]==p){break}}j=c[q+28>>2]|0;if((j|0)==0){o=1032;break L710}else{q=j}}o=q|0}}while(0);if((c[o+8>>2]|0)==0){break}m=n<<1;if(m>>>0>2147483645){r=1;s=542;break}else{a=n;n=m}}if((s|0)==542){while(1){s=0;o=r-1|0;L726:do{if(o>>>0<b>>>0){t=(c[f>>2]|0)+(o<<4)|0}else{p=+(r|0);if((r|0)==0){u=g}else{h[k>>3]=p;u=g+(((((c[k+4>>2]|0)+(c[k>>2]|0)|0)>>>0)%(((1<<(d[e]|0))-1|1)>>>0)|0)<<5)|0}while(1){if((c[u+24>>2]|0)==3){if(+h[u+16>>3]==p){break}}q=c[u+28>>2]|0;if((q|0)==0){t=1032;break L726}else{u=q}}t=u|0}}while(0);if((c[t+8>>2]|0)==0){i=o;break}else{r=r+1|0;s=542}}return i|0}if((n-a|0)>>>0>1){v=n;w=a}else{i=a;return i|0}while(1){a=(v+w|0)>>>1;n=a-1|0;L744:do{if(n>>>0<b>>>0){x=(c[f>>2]|0)+(n<<4)|0}else{p=+(a|0);if((a|0)==0){y=g}else{h[k>>3]=p;y=g+(((((c[k+4>>2]|0)+(c[k>>2]|0)|0)>>>0)%(((1<<(d[e]|0))-1|1)>>>0)|0)<<5)|0}while(1){if((c[y+24>>2]|0)==3){if(+h[y+16>>3]==p){break}}s=c[y+28>>2]|0;if((s|0)==0){x=1032;break L744}else{y=s}}x=y|0}}while(0);n=(c[x+8>>2]|0)==0;o=n?a:v;s=n?w:a;if((o-s|0)>>>0>1){v=o;w=s}else{i=s;break}}return i|0}function gb(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;g=i;i=i+112|0;j=g|0;k=j;l=f+8|0;m=c[l>>2]|0;do{if((m|0)==2){n=c[e+16>>2]|0;o=n+((((c[f>>2]|0)>>>0)%(((1<<(d[e+7|0]|0))-1|1)>>>0)|0)<<5)|0;p=n}else if((m|0)==1){n=c[e+16>>2]|0;o=n+(((1<<(d[e+7|0]|0))-1&c[f>>2])<<5)|0;p=n}else if((m|0)==3){n=f|0;if(+h[n>>3]==0.0){q=c[e+16>>2]|0;o=q;p=q;break}else{q=c[e+16>>2]|0;o=q+(((((c[n+4>>2]|0)+(c[n>>2]|0)|0)>>>0)%(((1<<(d[e+7|0]|0))-1|1)>>>0)|0)<<5)|0;p=q;break}}else if((m|0)==4){q=c[e+16>>2]|0;o=q+(((1<<(d[e+7|0]|0))-1&c[(c[f>>2]|0)+8>>2])<<5)|0;p=q}else{q=c[e+16>>2]|0;o=q+((((c[f>>2]|0)>>>0)%(((1<<(d[e+7|0]|0))-1|1)>>>0)|0)<<5)|0;p=q}}while(0);m=o+8|0;L768:do{if((c[m>>2]|0)!=0|(o|0)==1656){q=e+20|0;n=e+16|0;r=c[q>>2]|0;while(1){s=r-32|0;c[q>>2]=s;if(r>>>0<=p>>>0){break}if((c[r-32+24>>2]|0)==0){t=579;break}else{r=s}}do{if((t|0)==579){if((s|0)==0){break}q=o+16|0;u=c[o+24>>2]|0;do{if((u|0)==4){v=p+(((1<<(d[e+7|0]|0))-1&c[(c[q>>2]|0)+8>>2])<<5)|0}else if((u|0)==1){v=p+(((1<<(d[e+7|0]|0))-1&c[q>>2])<<5)|0}else if((u|0)==2){v=p+((((c[q>>2]|0)>>>0)%(((1<<(d[e+7|0]|0))-1|1)>>>0)|0)<<5)|0}else if((u|0)==3){w=q|0;if(+h[w>>3]==0.0){v=p;break}v=p+(((((c[w+4>>2]|0)+(c[w>>2]|0)|0)>>>0)%(((1<<(d[e+7|0]|0))-1|1)>>>0)|0)<<5)|0}else{v=p+((((c[q>>2]|0)>>>0)%(((1<<(d[e+7|0]|0))-1|1)>>>0)|0)<<5)|0}}while(0);if((v|0)==(o|0)){q=o+28|0;c[r-32+28>>2]=c[q>>2];c[q>>2]=s;x=s;break L768}else{y=v}do{z=y+28|0;y=c[z>>2]|0;}while((y|0)!=(o|0));c[z>>2]=s;q=s;u=o;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];c[q+16>>2]=c[u+16>>2];c[q+20>>2]=c[u+20>>2];c[q+24>>2]=c[u+24>>2];c[q+28>>2]=c[u+28>>2];c[o+28>>2]=0;c[m>>2]=0;x=o;break L768}}while(0);j2(k|0,0,108);r=e+12|0;u=c[e+28>>2]|0;q=0;w=1;A=0;B=1;while(1){if((w|0)>(u|0)){if((B|0)>(u|0)){C=A;break}else{E=u}}else{E=w}if((B|0)>(E|0)){F=B;G=0}else{H=c[r>>2]|0;I=B;J=0;while(1){K=((c[H+(I-1<<4)+8>>2]|0)!=0)+J|0;L=I+1|0;if((L|0)>(E|0)){F=L;G=K;break}else{I=L;J=K}}}J=j+(q<<2)|0;c[J>>2]=(c[J>>2]|0)+G;J=G+A|0;I=q+1|0;if((I|0)<27){q=I;w=w<<1;A=J;B=F}else{C=J;break}}B=0;A=1<<(d[e+7|0]|0);w=0;L801:while(1){q=A;while(1){M=q-1|0;if((q|0)==0){break L801}N=c[n>>2]|0;if((c[N+(M<<5)+8>>2]|0)==0){q=M}else{break}}do{if((c[N+(M<<5)+24>>2]|0)==3){O=+h[N+(M<<5)+16>>3];q=~~O;r=q-1|0;if(!(+(q|0)==O&r>>>0<67108864)){P=0;break}q=j+((fq(r)|0)+1<<2)|0;c[q>>2]=(c[q>>2]|0)+1;P=1}else{P=0}}while(0);B=B+1|0;A=M;w=P+w|0}A=w+C|0;do{if((c[l>>2]|0)==3){O=+h[f>>3];n=~~O;q=n-1|0;if(!(+(n|0)==O&q>>>0<67108864)){Q=0;break}n=j+((fq(q)|0)+1<<2)|0;c[n>>2]=(c[n>>2]|0)+1;Q=1}else{Q=0}}while(0);w=A+Q|0;L816:do{if((w|0)>0){n=0;q=1;r=0;u=0;J=0;I=0;while(1){H=c[j+(n<<2)>>2]|0;if((H|0)>0){K=H+r|0;H=(K|0)>(I|0);R=H?q:J;S=H?K:u;T=K}else{R=J;S=u;T=r}if((T|0)==(w|0)){U=R;V=S;break L816}K=q<<1;H=(K|0)/2|0;if((H|0)<(w|0)){n=n+1|0;q=K;r=T;u=S;J=R;I=H}else{U=R;V=S;break}}}else{U=0;V=0}}while(0);f2(b,e,U,C+1+B-V|0);w=f8(e,f)|0;a[e+6|0]=0;if((w|0)!=1032){W=w;i=g;return W|0}w=c[l>>2]|0;do{if((w|0)==0){es(b,8512,(X=i,i=i+1|0,i=i+7>>3<<3,c[X>>2]=0,X)|0);i=X}else if((w|0)==3){O=+h[f>>3];if(O==O&!(D=0.0,D!=D)){break}es(b,10016,(X=i,i=i+1|0,i=i+7>>3<<3,c[X>>2]=0,X)|0);i=X}}while(0);W=gb(b,e,f)|0;i=g;return W|0}else{x=o}}while(0);o=f;X=x+16|0;V=c[o+4>>2]|0;c[X>>2]=c[o>>2];c[X+4>>2]=V;c[x+24>>2]=c[l>>2];do{if((c[l>>2]|0)>3){if((a[(c[f>>2]|0)+5|0]&3)==0){break}if((a[e+5|0]&4)==0){break}e2(b,e)}}while(0);W=x|0;i=g;return W|0}function gc(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,j=0,l=0,m=0,n=0.0,o=0,p=0,q=0.0,r=0;f=i;i=i+16|0;g=f|0;j=e-1|0;L841:do{if(j>>>0<(c[b+28>>2]|0)>>>0){l=(c[b+12>>2]|0)+(j<<4)|0;m=638}else{n=+(e|0);if((e|0)==0){o=c[b+16>>2]|0}else{h[k>>3]=n;o=(c[b+16>>2]|0)+(((((c[k+4>>2]|0)+(c[k>>2]|0)|0)>>>0)%(((1<<(d[b+7|0]|0))-1|1)>>>0)|0)<<5)|0}while(1){if((c[o+24>>2]|0)==3){if(+h[o+16>>3]==n){break}}p=c[o+28>>2]|0;if((p|0)==0){q=n;break L841}else{o=p}}l=o|0;m=638}}while(0);do{if((m|0)==638){if((l|0)==1032){q=+(e|0);break}else{r=l;i=f;return r|0}}}while(0);h[g>>3]=q;c[g+8>>2]=3;r=gb(a,b,g)|0;i=f;return r|0}function gd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;g=f|0;h=(c[b+16>>2]|0)+(((1<<(d[b+7|0]|0))-1&c[e+8>>2])<<5)|0;while(1){if((c[h+24>>2]|0)==4){if((c[h+16>>2]|0)==(e|0)){j=648;break}}k=c[h+28>>2]|0;if((k|0)==0){break}else{h=k}}do{if((j|0)==648){k=h|0;if((k|0)==1032){break}else{l=k}i=f;return l|0}}while(0);c[g>>2]=e;c[g+8>>2]=4;l=gb(a,b,g)|0;i=f;return l|0}function ge(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+16|0;e=0;do{f=c[920+(e<<2)>>2]|0;g=f_(b,f,j_(f|0)|0)|0;c[(c[d>>2]|0)+188+(e<<2)>>2]=g;g=(c[(c[d>>2]|0)+188+(e<<2)>>2]|0)+5|0;a[g]=a[g]|32;e=e+1|0;}while((e|0)<17);return}function gf(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=f4(b,f)|0;if((c[g+8>>2]|0)!=0){h=g;return h|0}g=b+6|0;a[g]=(d[g]|0|1<<e)&255;h=0;return h|0}function gg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+8>>2]|0;if((e|0)==5){f=c[(c[b>>2]|0)+8>>2]|0}else if((e|0)==7){f=c[(c[b>>2]|0)+8>>2]|0}else{f=c[(c[a+16>>2]|0)+152+(e<<2)>>2]|0}if((f|0)==0){g=1032;return g|0}g=f4(f,c[(c[a+16>>2]|0)+188+(d<<2)>>2]|0)|0;return g|0}function gh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+48|0;h=g|0;j=g+16|0;k=g+32|0;l=a[f]|0;if((l<<24>>24|0)==64|(l<<24>>24|0)==61){m=f+1|0;c[k+12>>2]=m;n=m}else if((l<<24>>24|0)==27){c[k+12>>2]=9800;n=9800}else{c[k+12>>2]=f;n=f}f=k|0;c[f>>2]=b;c[k+4>>2]=d;c[k+8>>2]=e;e=h;l=j|0;c[h>>2]=1635077147;a[h+4|0]=81;a[e+5|0]=0;a[e+6|0]=1;a[e+7|0]=4;a[h+8|0]=4;a[e+9|0]=4;a[e+10|0]=8;a[e+11|0]=0;if((gw(d,l,12)|0)!=0){fy(b,2512,(o=i,i=i+16|0,c[o>>2]=n,c[o+8>>2]=3968,o)|0)|0;i=o;eC(c[f>>2]|0,3)}if((j5(e|0,l|0,12)|0)==0){p=f_(b,7888,2)|0;q=gi(k,p)|0;i=g;return q|0}fy(c[f>>2]|0,2512,(o=i,i=i+16|0,c[o>>2]=c[k+12>>2],c[o+8>>2]=2232,o)|0)|0;i=o;eC(c[f>>2]|0,3);p=f_(b,7888,2)|0;q=gi(k,p)|0;i=g;return q|0}function gi(d,e){d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0;f=i;i=i+168|0;g=f|0;j=f+8|0;k=f+16|0;l=f+24|0;m=f+32|0;n=f+40|0;o=f+48|0;p=f+56|0;q=f+64|0;r=f+72|0;s=f+80|0;t=f+88|0;u=f+96|0;v=f+104|0;w=f+112|0;x=f+120|0;y=f+128|0;z=f+136|0;A=f+144|0;B=f+152|0;C=f+160|0;D=d|0;E=(c[D>>2]|0)+52|0;F=(b[E>>1]|0)+1&65535;b[E>>1]=F;if((F&65535)>200){F=c[D>>2]|0;E=c[d+12>>2]|0;fy(F,2512,(G=i,i=i+16|0,c[G>>2]=E,c[G+8>>2]=6088,G)|0)|0;i=G;eC(c[D>>2]|0,3)}E=eV(c[D>>2]|0)|0;F=c[(c[D>>2]|0)+8>>2]|0;c[F>>2]=E;c[F+8>>2]=9;F=c[D>>2]|0;H=c[F+8>>2]|0;if(((c[F+28>>2]|0)-H|0)<17){eA(F,1);I=c[D>>2]|0;J=I;K=c[I+8>>2]|0}else{J=F;K=H}c[J+8>>2]=K+16;K=d+4|0;if((gw(c[K>>2]|0,C,4)|0)!=0){J=c[D>>2]|0;H=c[d+12>>2]|0;fy(J,2512,(G=i,i=i+16|0,c[G>>2]=H,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}H=c[C>>2]|0;if((H|0)==0){L=0}else{J=gx(c[D>>2]|0,c[d+8>>2]|0,H)|0;if((gw(c[K>>2]|0,J,c[C>>2]|0)|0)!=0){H=c[D>>2]|0;F=c[d+12>>2]|0;fy(H,2512,(G=i,i=i+16|0,c[G>>2]=F,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}L=f_(c[D>>2]|0,J,(c[C>>2]|0)-1|0)|0}C=E+32|0;c[C>>2]=(L|0)==0?e:L;if((gw(c[K>>2]|0,B,4)|0)!=0){L=c[D>>2]|0;e=c[d+12>>2]|0;fy(L,2512,(G=i,i=i+16|0,c[G>>2]=e,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}e=c[B>>2]|0;if((e|0)<0){L=c[D>>2]|0;J=c[d+12>>2]|0;fy(L,2512,(G=i,i=i+16|0,c[G>>2]=J,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);M=c[B>>2]|0}else{M=e}c[E+60>>2]=M;if((gw(c[K>>2]|0,A,4)|0)!=0){M=c[D>>2]|0;e=c[d+12>>2]|0;fy(M,2512,(G=i,i=i+16|0,c[G>>2]=e,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}e=c[A>>2]|0;if((e|0)<0){M=c[D>>2]|0;B=c[d+12>>2]|0;fy(M,2512,(G=i,i=i+16|0,c[G>>2]=B,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);N=c[A>>2]|0}else{N=e}c[E+64>>2]=N;if((gw(c[K>>2]|0,z,1)|0)!=0){N=c[D>>2]|0;e=c[d+12>>2]|0;fy(N,2512,(G=i,i=i+16|0,c[G>>2]=e,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}a[E+72|0]=a[z]|0;if((gw(c[K>>2]|0,y,1)|0)!=0){z=c[D>>2]|0;e=c[d+12>>2]|0;fy(z,2512,(G=i,i=i+16|0,c[G>>2]=e,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}a[E+73|0]=a[y]|0;if((gw(c[K>>2]|0,x,1)|0)!=0){y=c[D>>2]|0;e=c[d+12>>2]|0;fy(y,2512,(G=i,i=i+16|0,c[G>>2]=e,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}a[E+74|0]=a[x]|0;if((gw(c[K>>2]|0,w,1)|0)!=0){x=c[D>>2]|0;e=c[d+12>>2]|0;fy(x,2512,(G=i,i=i+16|0,c[G>>2]=e,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}a[E+75|0]=a[w]|0;if((gw(c[K>>2]|0,v,4)|0)!=0){w=c[D>>2]|0;e=c[d+12>>2]|0;fy(w,2512,(G=i,i=i+16|0,c[G>>2]=e,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}e=c[v>>2]|0;if((e|0)<0){w=c[D>>2]|0;x=c[d+12>>2]|0;fy(w,2512,(G=i,i=i+16|0,c[G>>2]=x,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);O=c[v>>2]|0}else{O=e}e=c[D>>2]|0;if((O+1|0)>>>0<1073741824){v=O<<2;P=fu(e,0,0,v)|0;Q=v}else{P=fv(e)|0;Q=O<<2}c[E+12>>2]=P;c[E+44>>2]=O;if((gw(c[K>>2]|0,P,Q)|0)!=0){Q=c[D>>2]|0;P=c[d+12>>2]|0;fy(Q,2512,(G=i,i=i+16|0,c[G>>2]=P,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}if((gw(c[K>>2]|0,n,4)|0)!=0){P=c[D>>2]|0;Q=c[d+12>>2]|0;fy(P,2512,(G=i,i=i+16|0,c[G>>2]=Q,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}Q=c[n>>2]|0;if((Q|0)<0){P=c[D>>2]|0;O=c[d+12>>2]|0;fy(P,2512,(G=i,i=i+16|0,c[G>>2]=O,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);R=c[n>>2]|0}else{R=Q}Q=c[D>>2]|0;if((R+1|0)>>>0<268435456){S=fu(Q,0,0,R<<4)|0}else{S=fv(Q)|0}Q=S;S=E+8|0;c[S>>2]=Q;c[E+40>>2]=R;n=(R|0)>0;do{if(n){O=0;P=Q;while(1){c[P+(O<<4)+8>>2]=0;e=O+1|0;if((e|0)>=(R|0)){break}O=e;P=c[S>>2]|0}if(!n){break}P=d+12|0;O=k;e=j;v=d+8|0;x=0;do{w=c[S>>2]|0;y=w+(x<<4)|0;if((gw(c[K>>2]|0,m,1)|0)!=0){z=c[D>>2]|0;N=c[P>>2]|0;fy(z,2512,(G=i,i=i+16|0,c[G>>2]=N,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}N=a[m]|0;if((N|0)==0){c[w+(x<<4)+8>>2]=0}else if((N|0)==1){if((gw(c[K>>2]|0,l,1)|0)!=0){z=c[D>>2]|0;A=c[P>>2]|0;fy(z,2512,(G=i,i=i+16|0,c[G>>2]=A,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}c[y>>2]=(a[l]|0)!=0;c[w+(x<<4)+8>>2]=1}else if((N|0)==3){if((gw(c[K>>2]|0,O,8)|0)!=0){A=c[D>>2]|0;z=c[P>>2]|0;fy(A,2512,(G=i,i=i+16|0,c[G>>2]=z,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}h[y>>3]=+h[k>>3];c[w+(x<<4)+8>>2]=3}else if((N|0)==4){if((gw(c[K>>2]|0,e,4)|0)!=0){N=c[D>>2]|0;z=c[P>>2]|0;fy(N,2512,(G=i,i=i+16|0,c[G>>2]=z,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}z=c[j>>2]|0;if((z|0)==0){T=0}else{N=gx(c[D>>2]|0,c[v>>2]|0,z)|0;if((gw(c[K>>2]|0,N,c[j>>2]|0)|0)!=0){z=c[D>>2]|0;A=c[P>>2]|0;fy(z,2512,(G=i,i=i+16|0,c[G>>2]=A,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}T=f_(c[D>>2]|0,N,(c[j>>2]|0)-1|0)|0}c[y>>2]=T;c[w+(x<<4)+8>>2]=4}else{fy(c[D>>2]|0,2512,(G=i,i=i+16|0,c[G>>2]=c[P>>2],c[G+8>>2]=3416,G)|0)|0;i=G;eC(c[D>>2]|0,3)}x=x+1|0;}while((x|0)<(R|0))}}while(0);if((gw(c[K>>2]|0,g,4)|0)!=0){R=c[D>>2]|0;T=c[d+12>>2]|0;fy(R,2512,(G=i,i=i+16|0,c[G>>2]=T,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}T=c[g>>2]|0;if((T|0)<0){R=c[D>>2]|0;j=c[d+12>>2]|0;fy(R,2512,(G=i,i=i+16|0,c[G>>2]=j,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);U=c[g>>2]|0}else{U=T}T=c[D>>2]|0;if((U+1|0)>>>0<1073741824){V=fu(T,0,0,U<<2)|0}else{V=fv(T)|0}T=V;V=E+16|0;c[V>>2]=T;c[E+52>>2]=U;g=(U|0)>0;do{if(g){j=0;R=T;while(1){c[R+(j<<2)>>2]=0;k=j+1|0;if((k|0)>=(U|0)){break}j=k;R=c[V>>2]|0}if(g){W=0}else{break}do{R=gi(d,c[C>>2]|0)|0;c[(c[V>>2]|0)+(W<<2)>>2]=R;W=W+1|0;}while((W|0)<(U|0))}}while(0);if((gw(c[K>>2]|0,u,4)|0)!=0){U=c[D>>2]|0;W=c[d+12>>2]|0;fy(U,2512,(G=i,i=i+16|0,c[G>>2]=W,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}W=c[u>>2]|0;if((W|0)<0){U=c[D>>2]|0;V=c[d+12>>2]|0;fy(U,2512,(G=i,i=i+16|0,c[G>>2]=V,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);X=c[u>>2]|0}else{X=W}W=c[D>>2]|0;if((X+1|0)>>>0<1073741824){u=X<<2;Y=fu(W,0,0,u)|0;Z=u}else{Y=fv(W)|0;Z=X<<2}c[E+20>>2]=Y;c[E+48>>2]=X;if((gw(c[K>>2]|0,Y,Z)|0)!=0){Z=c[D>>2]|0;Y=c[d+12>>2]|0;fy(Z,2512,(G=i,i=i+16|0,c[G>>2]=Y,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}if((gw(c[K>>2]|0,t,4)|0)!=0){Y=c[D>>2]|0;Z=c[d+12>>2]|0;fy(Y,2512,(G=i,i=i+16|0,c[G>>2]=Z,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}Z=c[t>>2]|0;if((Z|0)<0){Y=c[D>>2]|0;X=c[d+12>>2]|0;fy(Y,2512,(G=i,i=i+16|0,c[G>>2]=X,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);_=c[t>>2]|0}else{_=Z}Z=c[D>>2]|0;if((_+1|0)>>>0<357913942){$=fu(Z,0,0,_*12|0)|0}else{$=fv(Z)|0}Z=E+24|0;c[Z>>2]=$;c[E+56>>2]=_;if((_|0)>0){c[$>>2]=0;if((_|0)>1){$=1;do{c[(c[Z>>2]|0)+($*12|0)>>2]=0;$=$+1|0;}while(($|0)<(_|0))}$=s;t=r;X=d+12|0;Y=q;W=d+8|0;u=0;do{if((gw(c[K>>2]|0,$,4)|0)!=0){V=c[D>>2]|0;U=c[X>>2]|0;fy(V,2512,(G=i,i=i+16|0,c[G>>2]=U,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}U=c[s>>2]|0;if((U|0)==0){aa=0}else{V=gx(c[D>>2]|0,c[W>>2]|0,U)|0;if((gw(c[K>>2]|0,V,c[s>>2]|0)|0)!=0){U=c[D>>2]|0;C=c[X>>2]|0;fy(U,2512,(G=i,i=i+16|0,c[G>>2]=C,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}aa=f_(c[D>>2]|0,V,(c[s>>2]|0)-1|0)|0}c[(c[Z>>2]|0)+(u*12|0)>>2]=aa;if((gw(c[K>>2]|0,t,4)|0)!=0){V=c[D>>2]|0;C=c[X>>2]|0;fy(V,2512,(G=i,i=i+16|0,c[G>>2]=C,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}C=c[r>>2]|0;if((C|0)<0){V=c[D>>2]|0;U=c[X>>2]|0;fy(V,2512,(G=i,i=i+16|0,c[G>>2]=U,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);ab=c[r>>2]|0}else{ab=C}c[(c[Z>>2]|0)+(u*12|0)+4>>2]=ab;if((gw(c[K>>2]|0,Y,4)|0)!=0){C=c[D>>2]|0;U=c[X>>2]|0;fy(C,2512,(G=i,i=i+16|0,c[G>>2]=U,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}U=c[q>>2]|0;if((U|0)<0){C=c[D>>2]|0;V=c[X>>2]|0;fy(C,2512,(G=i,i=i+16|0,c[G>>2]=V,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);ac=c[q>>2]|0}else{ac=U}c[(c[Z>>2]|0)+(u*12|0)+8>>2]=ac;u=u+1|0;}while((u|0)<(_|0))}if((gw(c[K>>2]|0,p,4)|0)!=0){_=c[D>>2]|0;u=c[d+12>>2]|0;fy(_,2512,(G=i,i=i+16|0,c[G>>2]=u,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}u=c[p>>2]|0;if((u|0)<0){_=c[D>>2]|0;ac=c[d+12>>2]|0;fy(_,2512,(G=i,i=i+16|0,c[G>>2]=ac,c[G+8>>2]=2872,G)|0)|0;i=G;eC(c[D>>2]|0,3);ad=c[p>>2]|0}else{ad=u}u=c[D>>2]|0;if((ad+1|0)>>>0<1073741824){ae=fu(u,0,0,ad<<2)|0}else{ae=fv(u)|0}u=ae;ae=E+28|0;c[ae>>2]=u;c[E+36>>2]=ad;if((ad|0)>0){c[u>>2]=0;if((ad|0)>1){u=1;do{c[(c[ae>>2]|0)+(u<<2)>>2]=0;u=u+1|0;}while((u|0)<(ad|0))}u=o;p=d+8|0;ac=d+12|0;_=0;do{if((gw(c[K>>2]|0,u,4)|0)!=0){Z=c[D>>2]|0;q=c[ac>>2]|0;fy(Z,2512,(G=i,i=i+16|0,c[G>>2]=q,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}q=c[o>>2]|0;if((q|0)==0){af=0}else{Z=gx(c[D>>2]|0,c[p>>2]|0,q)|0;if((gw(c[K>>2]|0,Z,c[o>>2]|0)|0)!=0){q=c[D>>2]|0;X=c[ac>>2]|0;fy(q,2512,(G=i,i=i+16|0,c[G>>2]=X,c[G+8>>2]=3968,G)|0)|0;i=G;eC(c[D>>2]|0,3)}af=f_(c[D>>2]|0,Z,(c[o>>2]|0)-1|0)|0}c[(c[ae>>2]|0)+(_<<2)>>2]=af;_=_+1|0;}while((_|0)<(ad|0))}if((eo(E)|0)!=0){ag=c[D>>2]|0;ah=ag+8|0;ai=c[ah>>2]|0;aj=ai-16|0;c[ah>>2]=aj;ak=c[D>>2]|0;al=ak+52|0;am=b[al>>1]|0;an=am-1&65535;b[al>>1]=an;i=f;return E|0}fy(c[D>>2]|0,2512,(G=i,i=i+16|0,c[G>>2]=c[d+12>>2],c[G+8>>2]=4736,G)|0)|0;i=G;eC(c[D>>2]|0,3);ag=c[D>>2]|0;ah=ag+8|0;ai=c[ah>>2]|0;aj=ai-16|0;c[ah>>2]=aj;ak=c[D>>2]|0;al=ak+52|0;am=b[al>>1]|0;an=am-1&65535;b[al>>1]=an;i=f;return E|0}function gj(b){b=b|0;var c=0;c=b;w=1635077147;a[c]=w&255;w=w>>8;a[c+1|0]=w&255;w=w>>8;a[c+2|0]=w&255;w=w>>8;a[c+3|0]=w&255;a[b+4|0]=81;a[b+5|0]=0;a[b+6|0]=1;a[b+7|0]=4;a[b+8|0]=4;a[b+9|0]=4;a[b+10|0]=8;a[b+11|0]=0;return}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0;d=i;i=i+8|0;e=d|0;f=c[a+8>>2]|0;do{if((f|0)==3){g=a}else if((f|0)==4){if((fw((c[a>>2]|0)+16|0,e)|0)==0){j=821;break}h[b>>3]=+h[e>>3];c[b+8>>2]=3;g=b}else{j=821}}while(0);if((j|0)==821){g=0}i=d;return g|0}function gl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0;d=i;i=i+32|0;e=b+8|0;if((c[e>>2]|0)!=3){f=0;i=d;return f|0}g=d|0;a$(g|0,6992,(j=i,i=i+8|0,h[j>>3]=+h[b>>3],j)|0)|0;i=j;c[b>>2]=f_(a,g,j_(g|0)|0)|0;c[e>>2]=4;f=1;i=d;return f|0}function gm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;g=i;h=b+16|0;j=d;d=0;L1117:while(1){if((d|0)>=100){k=842;break}l=j+8|0;do{if((c[l>>2]|0)==5){m=c[j>>2]|0;n=f8(m,e)|0;o=n+8|0;if((c[o>>2]|0)!=0){k=835;break L1117}p=c[m+8>>2]|0;m=p;if((p|0)==0){k=835;break L1117}if((a[m+6|0]&1)!=0){k=835;break L1117}p=gf(m,0,c[(c[h>>2]|0)+188>>2]|0)|0;if((p|0)==0){k=835;break L1117}else{q=p}}else{p=gg(b,j,0)|0;if((c[p+8>>2]|0)!=0){q=p;break}eq(b,j,9752);q=p}}while(0);r=q+8|0;if((c[r>>2]|0)==6){k=839;break}else{j=q;d=d+1|0}}if((k|0)==839){d=b+32|0;h=f-(c[d>>2]|0)|0;p=b+8|0;m=c[p>>2]|0;s=q;q=m;t=c[s+4>>2]|0;c[q>>2]=c[s>>2];c[q+4>>2]=t;c[m+8>>2]=c[r>>2];r=c[p>>2]|0;m=j;j=r+16|0;t=c[m+4>>2]|0;c[j>>2]=c[m>>2];c[j+4>>2]=t;c[r+24>>2]=c[l>>2];l=c[p>>2]|0;r=e;t=l+32|0;j=c[r+4>>2]|0;c[t>>2]=c[r>>2];c[t+4>>2]=j;c[l+40>>2]=c[e+8>>2];e=c[p>>2]|0;if(((c[b+28>>2]|0)-e|0)<49){eA(b,3);u=c[p>>2]|0}else{u=e}c[p>>2]=u+48;eG(b,u,1);u=c[d>>2]|0;d=c[p>>2]|0;e=d-16|0;c[p>>2]=e;p=e;e=u+h|0;l=c[p+4>>2]|0;c[e>>2]=c[p>>2];c[e+4>>2]=l;c[u+(h+8)>>2]=c[d-16+8>>2];i=g;return}else if((k|0)==842){es(b,7816,(b=i,i=i+1|0,i=i+7>>3<<3,c[b>>2]=0,b)|0);i=b;i=g;return}else if((k|0)==835){k=n;n=f;b=c[k+4>>2]|0;c[n>>2]=c[k>>2];c[n+4>>2]=b;c[f+8>>2]=c[o>>2];i=g;return}}function gn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=i;i=i+16|0;h=g|0;j=b+16|0;k=h;l=h+8|0;m=0;n=d;o=c[d+8>>2]|0;L1139:while(1){p=n+8|0;do{if((o|0)==5){q=c[n>>2]|0;r=q;s=f9(b,r,e)|0;t=s+8|0;if((c[t>>2]|0)!=0){u=853;break L1139}d=c[q+8>>2]|0;v=d;if((d|0)==0){u=853;break L1139}if((a[v+6|0]&2)!=0){u=853;break L1139}d=gf(v,1,c[(c[j>>2]|0)+192>>2]|0)|0;if((d|0)==0){u=853;break L1139}else{w=d}}else{d=gg(b,n,1)|0;if((c[d+8>>2]|0)!=0){w=d;break}eq(b,n,9752);w=d}}while(0);x=w+8|0;if((c[x>>2]|0)==6){u=860;break}d=w;v=c[d+4>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=v;v=c[x>>2]|0;c[l>>2]=v;d=m+1|0;if((d|0)<100){m=d;n=h;o=v}else{u=864;break}}if((u|0)==853){o=f;h=s;s=c[o+4>>2]|0;c[h>>2]=c[o>>2];c[h+4>>2]=s;s=f+8|0;c[t>>2]=c[s>>2];a[q+6|0]=0;if((c[s>>2]|0)<=3){i=g;return}if((a[(c[f>>2]|0)+5|0]&3)==0){i=g;return}if((a[q+5|0]&4)==0){i=g;return}e2(b,r);i=g;return}else if((u|0)==860){r=b+8|0;q=c[r>>2]|0;s=w;w=q;t=c[s+4>>2]|0;c[w>>2]=c[s>>2];c[w+4>>2]=t;c[q+8>>2]=c[x>>2];x=c[r>>2]|0;q=n;n=x+16|0;t=c[q+4>>2]|0;c[n>>2]=c[q>>2];c[n+4>>2]=t;c[x+24>>2]=c[p>>2];p=c[r>>2]|0;x=e;t=p+32|0;n=c[x+4>>2]|0;c[t>>2]=c[x>>2];c[t+4>>2]=n;c[p+40>>2]=c[e+8>>2];e=c[r>>2]|0;p=f;n=e+48|0;t=c[p+4>>2]|0;c[n>>2]=c[p>>2];c[n+4>>2]=t;c[e+56>>2]=c[f+8>>2];f=c[r>>2]|0;if(((c[b+28>>2]|0)-f|0)<65){eA(b,4);y=c[r>>2]|0}else{y=f}c[r>>2]=y+64;eG(b,y,0);i=g;return}else if((u|0)==864){es(b,5976,(b=i,i=i+1|0,i=i+7>>3<<3,c[b>>2]=0,b)|0);i=b;i=g;return}}function go(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=b+8|0;f=c[e>>2]|0;g=d+8|0;if((f|0)!=(c[g>>2]|0)){i=ev(a,b,d)|0;return i|0}if((f|0)==4){j=c[b>>2]|0;k=c[d>>2]|0;l=j+16|0;m=k+16|0;n=aL(l|0,m|0)|0;L1192:do{if((n|0)==0){o=l;p=c[j+12>>2]|0;q=m;r=c[k+12>>2]|0;while(1){s=j_(o|0)|0;t=(s|0)==(p|0);if((s|0)==(r|0)){break}if(t){u=-1;break L1192}v=s+1|0;s=o+v|0;w=q+v|0;x=aL(s|0,w|0)|0;if((x|0)==0){o=s;p=p-v|0;q=w;r=r-v|0}else{u=x;break L1192}}u=t&1^1}else{u=n}}while(0);i=u>>>31;return i|0}else if((f|0)==3){i=+h[b>>3]<+h[d>>3]|0;return i|0}else{f=gg(a,b,13)|0;u=f+8|0;do{if((c[u>>2]|0)!=0){if((fr(f,gg(a,d,13)|0)|0)==0){break}n=a+8|0;t=c[n>>2]|0;k=a+32|0;m=t-(c[k>>2]|0)|0;j=f;l=t;r=c[j+4>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=r;c[t+8>>2]=c[u>>2];t=c[n>>2]|0;r=b;l=t+16|0;j=c[r+4>>2]|0;c[l>>2]=c[r>>2];c[l+4>>2]=j;c[t+24>>2]=c[e>>2];t=c[n>>2]|0;j=d;l=t+32|0;r=c[j+4>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=r;c[t+40>>2]=c[g>>2];t=c[n>>2]|0;if(((c[a+28>>2]|0)-t|0)<49){eA(a,3);y=c[n>>2]|0}else{y=t}c[n>>2]=y+48;eG(a,y,1);t=c[k>>2]|0;k=c[n>>2]|0;r=k-16|0;c[n>>2]=r;l=r;r=t+m|0;j=c[l+4>>2]|0;c[r>>2]=c[l>>2];c[r+4>>2]=j;c[t+(m+8)>>2]=c[k-16+8>>2];k=c[n>>2]|0;n=c[k+8>>2]|0;if((n|0)==0){i=0;return i|0}if((n|0)!=1){i=1;return i|0}i=(c[k>>2]|0)!=0|0;return i|0}}while(0);i=ev(a,b,d)|0;return i|0}return 0}function gp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=d+8|0;L1204:do{switch(c[f>>2]|0){case 0:{g=1;return g|0};case 3:{g=+h[d>>3]==+h[e>>3]|0;return g|0};case 1:{g=(c[d>>2]|0)==(c[e>>2]|0)|0;return g|0};case 7:{i=c[d>>2]|0;j=c[e>>2]|0;if((i|0)==(j|0)){g=1;return g|0}k=c[i+8>>2]|0;i=k;l=c[j+8>>2]|0;j=l;if((k|0)==0){g=0;return g|0}if((a[i+6|0]&16)!=0){g=0;return g|0}m=b+16|0;n=gf(i,4,c[(c[m>>2]|0)+204>>2]|0)|0;if((n|0)==0){g=0;return g|0}if((k|0)==(l|0)){o=n;break L1204}if((l|0)==0){g=0;return g|0}if((a[j+6|0]&16)!=0){g=0;return g|0}l=gf(j,4,c[(c[m>>2]|0)+204>>2]|0)|0;if((l|0)==0){g=0;return g|0}else{p=(fr(n,l)|0)==0?0:n;q=922;break L1204}break};case 2:{g=(c[d>>2]|0)==(c[e>>2]|0)|0;return g|0};case 5:{n=c[d>>2]|0;l=c[e>>2]|0;if((n|0)==(l|0)){g=1;return g|0}m=c[n+8>>2]|0;n=m;j=c[l+8>>2]|0;l=j;if((m|0)==0){g=0;return g|0}if((a[n+6|0]&16)!=0){g=0;return g|0}k=b+16|0;i=gf(n,4,c[(c[k>>2]|0)+204>>2]|0)|0;if((i|0)==0){g=0;return g|0}if((m|0)==(j|0)){o=i;break L1204}if((j|0)==0){g=0;return g|0}if((a[l+6|0]&16)!=0){g=0;return g|0}j=gf(l,4,c[(c[k>>2]|0)+204>>2]|0)|0;if((j|0)==0){g=0;return g|0}else{p=(fr(i,j)|0)==0?0:i;q=922;break L1204}break};default:{g=(c[d>>2]|0)==(c[e>>2]|0)|0;return g|0}}}while(0);do{if((q|0)==922){if((p|0)==0){g=0}else{o=p;break}return g|0}}while(0);p=b+8|0;q=c[p>>2]|0;i=b+32|0;j=q-(c[i>>2]|0)|0;k=o;l=q;m=c[k+4>>2]|0;c[l>>2]=c[k>>2];c[l+4>>2]=m;c[q+8>>2]=c[o+8>>2];o=c[p>>2]|0;q=d;d=o+16|0;m=c[q+4>>2]|0;c[d>>2]=c[q>>2];c[d+4>>2]=m;c[o+24>>2]=c[f>>2];f=c[p>>2]|0;o=e;m=f+32|0;d=c[o+4>>2]|0;c[m>>2]=c[o>>2];c[m+4>>2]=d;c[f+40>>2]=c[e+8>>2];e=c[p>>2]|0;if(((c[b+28>>2]|0)-e|0)<49){eA(b,3);r=c[p>>2]|0}else{r=e}c[p>>2]=r+48;eG(b,r,1);r=c[i>>2]|0;i=c[p>>2]|0;b=i-16|0;c[p>>2]=b;e=b;b=r+j|0;f=c[e+4>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;c[r+(j+8)>>2]=c[i-16+8>>2];i=c[p>>2]|0;p=c[i+8>>2]|0;if((p|0)==0){g=0;return g|0}if((p|0)!=1){g=1;return g|0}g=(c[i>>2]|0)!=0|0;return g|0}function gq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=i;i=i+32|0;f=a+12|0;g=e|0;j=a+16|0;k=a+32|0;l=a+8|0;m=a+28|0;n=b;b=d;while(1){d=c[f>>2]|0;o=b+1|0;p=b-1|0;q=d+(p<<4)|0;r=d+(p<<4)+8|0;p=d+(b<<4)|0;do{if(((c[r>>2]|0)-3|0)>>>0<2){s=d+(b<<4)+8|0;t=c[s>>2]|0;if((t|0)==4){u=p}else{if((t|0)!=3){v=958;break}w=+h[p>>3];a$(g|0,6992,(x=i,i=i+8|0,h[x>>3]=w,x)|0)|0;i=x;t=p;c[t>>2]=f_(a,g,j_(g|0)|0)|0;c[s>>2]=4;u=t}t=c[(c[u>>2]|0)+12>>2]|0;if((t|0)==0){s=c[r>>2]|0;if((s|0)==4){y=2;break}if((s|0)!=3){y=2;break}w=+h[q>>3];a$(g|0,6992,(x=i,i=i+8|0,h[x>>3]=w,x)|0)|0;i=x;c[q>>2]=f_(a,g,j_(g|0)|0)|0;c[r>>2]=4;y=2;break}L1289:do{if((n|0)>1){s=t;z=1;while(1){A=o-z-1|0;B=d+(A<<4)|0;C=d+(A<<4)+8|0;A=c[C>>2]|0;if((A|0)==4){D=B}else{if((A|0)!=3){E=s;F=z;break L1289}w=+h[B>>3];a$(g|0,6992,(x=i,i=i+8|0,h[x>>3]=w,x)|0)|0;i=x;A=B;c[A>>2]=f_(a,g,j_(g|0)|0)|0;c[C>>2]=4;D=A}A=c[(c[D>>2]|0)+12>>2]|0;if(A>>>0>=(-3-s|0)>>>0){es(a,4688,(x=i,i=i+1|0,i=i+7>>3<<3,c[x>>2]=0,x)|0);i=x}C=A+s|0;A=z+1|0;if((A|0)<(n|0)){s=C;z=A}else{E=C;F=A;break}}}else{E=t;F=1}}while(0);t=gx(a,(c[j>>2]|0)+52|0,E)|0;if((F|0)>0){z=0;s=F;while(1){A=c[d+(o-s<<4)>>2]|0;C=c[A+12>>2]|0;B=t+z|0;G=A+16|0;j$(B|0,G|0,C)|0;G=C+z|0;C=s-1|0;if((C|0)>0){z=G;s=C}else{H=G;break}}}else{H=0}s=o-F|0;c[d+(s<<4)>>2]=f_(a,t,H)|0;c[d+(s<<4)+8>>2]=4;y=F}else{v=958}}while(0);L1305:do{if((v|0)==958){v=0;o=gg(a,q,15)|0;do{if((c[o+8>>2]|0)==0){s=gg(a,p,15)|0;if((c[s+8>>2]|0)!=0){I=s;break}et(a,q,p);y=2;break L1305}else{I=o}}while(0);o=q-(c[k>>2]|0)|0;t=c[l>>2]|0;s=I;z=t;G=c[s+4>>2]|0;c[z>>2]=c[s>>2];c[z+4>>2]=G;c[t+8>>2]=c[I+8>>2];t=c[l>>2]|0;G=q;z=t+16|0;s=c[G+4>>2]|0;c[z>>2]=c[G>>2];c[z+4>>2]=s;c[t+24>>2]=c[r>>2];t=c[l>>2]|0;s=p;z=t+32|0;G=c[s+4>>2]|0;c[z>>2]=c[s>>2];c[z+4>>2]=G;c[t+40>>2]=c[d+(b<<4)+8>>2];t=c[l>>2]|0;if(((c[m>>2]|0)-t|0)<49){eA(a,3);J=c[l>>2]|0}else{J=t}c[l>>2]=J+48;eG(a,J,1);t=c[k>>2]|0;G=c[l>>2]|0;z=G-16|0;c[l>>2]=z;s=z;z=t+o|0;C=c[s+4>>2]|0;c[z>>2]=c[s>>2];c[z+4>>2]=C;c[t+(o+8)>>2]=c[G-16+8>>2];y=2}}while(0);d=y-1|0;p=n-d|0;if((p|0)<=1){break}n=p;b=b-d|0}i=e;return}function gr(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0.0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0.0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0.0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0.0,bc=0,bd=0,be=0,bf=0,bg=0.0,bh=0.0,bi=0,bj=0.0,bk=0,bl=0,bm=0,bn=0,bo=0,bp=0.0,bq=0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0,bD=0,bE=0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0,bO=0,bP=0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0,bX=0,bY=0.0,bZ=0,b_=0,b$=0,b0=0,b1=0,b2=0,b3=0,b4=0,b5=0,b6=0,b7=0;f=i;i=i+280|0;g=f|0;j=f+8|0;k=f+16|0;l=f+24|0;m=f+32|0;n=f+40|0;o=f+48|0;p=f+56|0;q=f+64|0;r=f+72|0;s=f+80|0;t=f+88|0;u=f+96|0;v=f+104|0;w=f+112|0;x=f+120|0;y=f+128|0;z=f+136|0;A=f+152|0;B=f+168|0;C=f+184|0;D=f+200|0;E=f+216|0;F=f+232|0;G=f+248|0;H=f+264|0;I=b+24|0;J=b+20|0;K=b+12|0;L=b+56|0;M=G;N=G+8|0;P=H;Q=H+8|0;S=b+16|0;T=b+32|0;U=b+8|0;V=b+28|0;W=F|0;X=F+8|0;Y=E|0;Z=E+8|0;_=D|0;$=D+8|0;aa=C|0;ab=C+8|0;ac=B|0;ad=B+8|0;ae=A|0;af=A+8|0;ag=z|0;ah=z+8|0;ai=c[260]|0;aj=b+64|0;ak=b+6|0;al=b+60|0;am=b+104|0;an=e;L1318:while(1){e=c[J>>2]|0;L1320:while(1){ao=c[c[e+4>>2]>>2]|0;ap=ao+16|0;aq=c[(c[ap>>2]|0)+8>>2]|0;ar=ao+20|0;as=ao+12|0;ao=c[K>>2]|0;at=c[I>>2]|0;L1322:while(1){au=at+4|0;av=c[at>>2]|0;aw=a[L]|0;do{if((aw&12)==0){ax=ao}else{ay=(c[aj>>2]|0)-1|0;c[aj>>2]=ay;az=(ay|0)==0;if(!az){if((aw&4)==0){ax=ao;break}}ay=c[I>>2]|0;c[I>>2]=au;aA=aw&255;if(!((aA&8|0)==0|az^1)){c[aj>>2]=c[al>>2];eB(b,3,-1)}do{if((aA&4|0)!=0){az=c[(c[c[(c[J>>2]|0)+4>>2]>>2]|0)+16>>2]|0;aB=c[az+12>>2]|0;aC=(au-aB>>2)-1|0;aD=c[az+20>>2]|0;az=(aD|0)==0;if(az){aE=0}else{aE=c[aD+(aC<<2)>>2]|0}if((aC|0)!=0&ay>>>0<au>>>0){if(az){aF=0}else{aF=c[aD+((ay-aB>>2)-1<<2)>>2]|0}if((aE|0)==(aF|0)){break}}eB(b,2,aE)}}while(0);if((a[ak]|0)==1){aG=999;break L1318}ax=c[K>>2]|0}}while(0);aH=av>>>6&255;aI=ax+(aH<<4)|0;switch(av&63|0){case 18:{aw=av>>>23;ay=ax+(aw<<4)|0;aA=ax+(aw<<4)+8|0;if((c[aA>>2]|0)==3){h[aI>>3]=-0.0- +h[ay>>3];c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}c[I>>2]=au;aw=c[aA>>2]|0;do{if((aw|0)==3){if((ay|0)==0){aG=1198}else{aJ=ay;aG=1194}}else if((aw|0)==4){if((fw((c[ay>>2]|0)+16|0,j)|0)==0){aG=1198;break}h[ag>>3]=+h[j>>3];c[ah>>2]=3;aJ=z;aG=1194}else{aG=1198}}while(0);do{if((aG|0)==1194){aG=0;aw=c[aA>>2]|0;if((aw|0)==4){if((fw((c[ay>>2]|0)+16|0,g)|0)==0){aG=1198;break}}else if((aw|0)==3){if((ay|0)==0){aG=1198;break}}else{aG=1198;break}h[aI>>3]=-0.0- +h[aJ>>3];c[ax+(aH<<4)+8>>2]=3}}while(0);L1361:do{if((aG|0)==1198){aG=0;aw=gg(b,ay,11)|0;do{if((c[aw+8>>2]|0)==0){aB=gg(b,ay,11)|0;if((c[aB+8>>2]|0)!=0){aK=aB;break}eu(b,ay,ay);break L1361}else{aK=aw}}while(0);aw=aI-(c[T>>2]|0)|0;aB=c[U>>2]|0;aD=aK;az=aB;aC=c[aD+4>>2]|0;c[az>>2]=c[aD>>2];c[az+4>>2]=aC;c[aB+8>>2]=c[aK+8>>2];aB=c[U>>2]|0;aC=ay;az=aB+16|0;aD=c[aC+4>>2]|0;c[az>>2]=c[aC>>2];c[az+4>>2]=aD;c[aB+24>>2]=c[aA>>2];aB=c[U>>2]|0;aD=aB+32|0;az=c[aC+4>>2]|0;c[aD>>2]=c[aC>>2];c[aD+4>>2]=az;c[aB+40>>2]=c[aA>>2];aB=c[U>>2]|0;if(((c[V>>2]|0)-aB|0)<49){eA(b,3);aM=c[U>>2]|0}else{aM=aB}c[U>>2]=aM+48;eG(b,aM,1);aB=c[T>>2]|0;az=c[U>>2]|0;aD=az-16|0;c[U>>2]=aD;aC=aD;aD=aB+aw|0;aN=c[aC+4>>2]|0;c[aD>>2]=c[aC>>2];c[aD+4>>2]=aN;c[aB+(aw+8)>>2]=c[az-16+8>>2]}}while(0);ao=c[K>>2]|0;at=au;continue L1322;break};case 0:{aA=av>>>23;ay=ax+(aA<<4)|0;az=aI;aw=c[ay+4>>2]|0;c[az>>2]=c[ay>>2];c[az+4>>2]=aw;c[ax+(aH<<4)+8>>2]=c[ax+(aA<<4)+8>>2];ao=ax;at=au;continue L1322;break};case 1:{aA=av>>>14;aw=aq+(aA<<4)|0;az=aI;ay=c[aw+4>>2]|0;c[az>>2]=c[aw>>2];c[az+4>>2]=ay;c[ax+(aH<<4)+8>>2]=c[aq+(aA<<4)+8>>2];ao=ax;at=au;continue L1322;break};case 2:{c[aI>>2]=av>>>23;c[ax+(aH<<4)+8>>2]=1;ao=ax;at=(av&8372224|0)==0?au:at+8|0;continue L1322;break};case 3:{aA=ax+(av>>>23<<4)|0;while(1){ay=aA-16|0;c[aA+8>>2]=0;if(ay>>>0<aI>>>0){ao=ax;at=au;continue L1322}else{aA=ay}}break};case 4:{aA=c[(c[ar+(av>>>23<<2)>>2]|0)+8>>2]|0;ay=aA;az=aI;aw=c[ay+4>>2]|0;c[az>>2]=c[ay>>2];c[az+4>>2]=aw;c[ax+(aH<<4)+8>>2]=c[aA+8>>2];ao=ax;at=au;continue L1322;break};case 5:{c[M>>2]=c[as>>2];c[N>>2]=5;c[I>>2]=au;gm(b,G,aq+(av>>>14<<4)|0,aI);ao=c[K>>2]|0;at=au;continue L1322;break};case 6:{c[I>>2]=au;aA=av>>>14;if((aA&256|0)==0){aO=ax+((aA&511)<<4)|0}else{aO=aq+((aA&255)<<4)|0}gm(b,ax+(av>>>23<<4)|0,aO,aI);ao=c[K>>2]|0;at=au;continue L1322;break};case 7:{c[P>>2]=c[as>>2];c[Q>>2]=5;c[I>>2]=au;gn(b,H,aq+(av>>>14<<4)|0,aI);ao=c[K>>2]|0;at=au;continue L1322;break};case 8:{aA=c[ar+(av>>>23<<2)>>2]|0;aw=c[aA+8>>2]|0;az=aI;ay=aw;aB=c[az+4>>2]|0;c[ay>>2]=c[az>>2];c[ay+4>>2]=aB;aB=ax+(aH<<4)+8|0;c[aw+8>>2]=c[aB>>2];if((c[aB>>2]|0)<=3){ao=ax;at=au;continue L1322}aB=c[aI>>2]|0;if((a[aB+5|0]&3)==0){ao=ax;at=au;continue L1322}if((a[aA+5|0]&4)==0){ao=ax;at=au;continue L1322}e7(b,aA,aB);ao=ax;at=au;continue L1322;break};case 9:{c[I>>2]=au;aB=av>>>23;if((aB&256|0)==0){aP=ax+(aB<<4)|0}else{aP=aq+((aB&255)<<4)|0}aB=av>>>14;if((aB&256|0)==0){aQ=ax+((aB&511)<<4)|0}else{aQ=aq+((aB&255)<<4)|0}gn(b,aI,aP,aQ);ao=c[K>>2]|0;at=au;continue L1322;break};case 10:{aB=fp(av>>>23)|0;c[aI>>2]=f5(b,aB,fp(av>>>14&511)|0)|0;c[ax+(aH<<4)+8>>2]=5;c[I>>2]=au;aB=c[S>>2]|0;if((c[aB+68>>2]|0)>>>0>=(c[aB+64>>2]|0)>>>0){e1(b)}ao=c[K>>2]|0;at=au;continue L1322;break};case 11:{aB=av>>>23;aA=ax+(aB<<4)|0;aw=aH+1|0;ay=aA;az=ax+(aw<<4)|0;aN=c[ay+4>>2]|0;c[az>>2]=c[ay>>2];c[az+4>>2]=aN;c[ax+(aw<<4)+8>>2]=c[ax+(aB<<4)+8>>2];c[I>>2]=au;aB=av>>>14;if((aB&256|0)==0){aR=ax+((aB&511)<<4)|0}else{aR=aq+((aB&255)<<4)|0}gm(b,aA,aR,aI);ao=c[K>>2]|0;at=au;continue L1322;break};case 12:{aA=av>>>23;if((aA&256|0)==0){aS=ax+(aA<<4)|0}else{aS=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){aT=ax+((aA&511)<<4)|0}else{aT=aq+((aA&255)<<4)|0}aA=aS+8|0;do{if((c[aA>>2]|0)==3){if((c[aT+8>>2]|0)!=3){break}h[aI>>3]=+h[aS>>3]+ +h[aT>>3];c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}}while(0);c[I>>2]=au;aB=c[aA>>2]|0;do{if((aB|0)==4){if((fw((c[aS>>2]|0)+16|0,v)|0)==0){aG=1051;break}h[W>>3]=+h[v>>3];c[X>>2]=3;aU=F;aG=1045}else if((aB|0)==3){if((aS|0)==0){aG=1051}else{aU=aS;aG=1045}}else{aG=1051}}while(0);do{if((aG|0)==1045){aG=0;aB=c[aT+8>>2]|0;if((aB|0)==4){if((fw((c[aT>>2]|0)+16|0,u)|0)==0){aG=1051;break}aV=+h[u>>3]}else if((aB|0)==3){if((aT|0)==0){aG=1051;break}aV=+h[aT>>3]}else{aG=1051;break}h[aI>>3]=+h[aU>>3]+aV;c[ax+(aH<<4)+8>>2]=3}}while(0);L1432:do{if((aG|0)==1051){aG=0;aB=gg(b,aS,5)|0;do{if((c[aB+8>>2]|0)==0){aw=gg(b,aT,5)|0;if((c[aw+8>>2]|0)!=0){aW=aw;break}eu(b,aS,aT);break L1432}else{aW=aB}}while(0);aB=aI-(c[T>>2]|0)|0;aw=c[U>>2]|0;aN=aW;az=aw;ay=c[aN+4>>2]|0;c[az>>2]=c[aN>>2];c[az+4>>2]=ay;c[aw+8>>2]=c[aW+8>>2];aw=c[U>>2]|0;ay=aS;az=aw+16|0;aN=c[ay+4>>2]|0;c[az>>2]=c[ay>>2];c[az+4>>2]=aN;c[aw+24>>2]=c[aA>>2];aw=c[U>>2]|0;aN=aT;az=aw+32|0;ay=c[aN+4>>2]|0;c[az>>2]=c[aN>>2];c[az+4>>2]=ay;c[aw+40>>2]=c[aT+8>>2];aw=c[U>>2]|0;if(((c[V>>2]|0)-aw|0)<49){eA(b,3);aX=c[U>>2]|0}else{aX=aw}c[U>>2]=aX+48;eG(b,aX,1);aw=c[T>>2]|0;ay=c[U>>2]|0;az=ay-16|0;c[U>>2]=az;aN=az;az=aw+aB|0;aD=c[aN+4>>2]|0;c[az>>2]=c[aN>>2];c[az+4>>2]=aD;c[aw+(aB+8)>>2]=c[ay-16+8>>2]}}while(0);ao=c[K>>2]|0;at=au;continue L1322;break};case 13:{aA=av>>>23;if((aA&256|0)==0){aY=ax+(aA<<4)|0}else{aY=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){aZ=ax+((aA&511)<<4)|0}else{aZ=aq+((aA&255)<<4)|0}aA=aY+8|0;do{if((c[aA>>2]|0)==3){if((c[aZ+8>>2]|0)!=3){break}h[aI>>3]=+h[aY>>3]- +h[aZ>>3];c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}}while(0);c[I>>2]=au;ay=c[aA>>2]|0;do{if((ay|0)==4){if((fw((c[aY>>2]|0)+16|0,t)|0)==0){aG=1077;break}h[Y>>3]=+h[t>>3];c[Z>>2]=3;a_=E;aG=1071}else if((ay|0)==3){if((aY|0)==0){aG=1077}else{a_=aY;aG=1071}}else{aG=1077}}while(0);do{if((aG|0)==1071){aG=0;ay=c[aZ+8>>2]|0;if((ay|0)==4){if((fw((c[aZ>>2]|0)+16|0,s)|0)==0){aG=1077;break}a$=+h[s>>3]}else if((ay|0)==3){if((aZ|0)==0){aG=1077;break}a$=+h[aZ>>3]}else{aG=1077;break}h[aI>>3]=+h[a_>>3]-a$;c[ax+(aH<<4)+8>>2]=3}}while(0);L1467:do{if((aG|0)==1077){aG=0;ay=gg(b,aY,6)|0;do{if((c[ay+8>>2]|0)==0){aB=gg(b,aZ,6)|0;if((c[aB+8>>2]|0)!=0){a0=aB;break}eu(b,aY,aZ);break L1467}else{a0=ay}}while(0);ay=aI-(c[T>>2]|0)|0;aB=c[U>>2]|0;aw=a0;aD=aB;az=c[aw+4>>2]|0;c[aD>>2]=c[aw>>2];c[aD+4>>2]=az;c[aB+8>>2]=c[a0+8>>2];aB=c[U>>2]|0;az=aY;aD=aB+16|0;aw=c[az+4>>2]|0;c[aD>>2]=c[az>>2];c[aD+4>>2]=aw;c[aB+24>>2]=c[aA>>2];aB=c[U>>2]|0;aw=aZ;aD=aB+32|0;az=c[aw+4>>2]|0;c[aD>>2]=c[aw>>2];c[aD+4>>2]=az;c[aB+40>>2]=c[aZ+8>>2];aB=c[U>>2]|0;if(((c[V>>2]|0)-aB|0)<49){eA(b,3);a1=c[U>>2]|0}else{a1=aB}c[U>>2]=a1+48;eG(b,a1,1);aB=c[T>>2]|0;az=c[U>>2]|0;aD=az-16|0;c[U>>2]=aD;aw=aD;aD=aB+ay|0;aN=c[aw+4>>2]|0;c[aD>>2]=c[aw>>2];c[aD+4>>2]=aN;c[aB+(ay+8)>>2]=c[az-16+8>>2]}}while(0);ao=c[K>>2]|0;at=au;continue L1322;break};case 14:{aA=av>>>23;if((aA&256|0)==0){a2=ax+(aA<<4)|0}else{a2=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){a3=ax+((aA&511)<<4)|0}else{a3=aq+((aA&255)<<4)|0}aA=a2+8|0;do{if((c[aA>>2]|0)==3){if((c[a3+8>>2]|0)!=3){break}h[aI>>3]=+h[a2>>3]*+h[a3>>3];c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}}while(0);c[I>>2]=au;az=c[aA>>2]|0;do{if((az|0)==4){if((fw((c[a2>>2]|0)+16|0,r)|0)==0){aG=1103;break}h[_>>3]=+h[r>>3];c[$>>2]=3;a4=D;aG=1097}else if((az|0)==3){if((a2|0)==0){aG=1103}else{a4=a2;aG=1097}}else{aG=1103}}while(0);do{if((aG|0)==1097){aG=0;az=c[a3+8>>2]|0;if((az|0)==4){if((fw((c[a3>>2]|0)+16|0,q)|0)==0){aG=1103;break}a5=+h[q>>3]}else if((az|0)==3){if((a3|0)==0){aG=1103;break}a5=+h[a3>>3]}else{aG=1103;break}h[aI>>3]=+h[a4>>3]*a5;c[ax+(aH<<4)+8>>2]=3}}while(0);L1502:do{if((aG|0)==1103){aG=0;az=gg(b,a2,7)|0;do{if((c[az+8>>2]|0)==0){ay=gg(b,a3,7)|0;if((c[ay+8>>2]|0)!=0){a6=ay;break}eu(b,a2,a3);break L1502}else{a6=az}}while(0);az=aI-(c[T>>2]|0)|0;ay=c[U>>2]|0;aB=a6;aN=ay;aD=c[aB+4>>2]|0;c[aN>>2]=c[aB>>2];c[aN+4>>2]=aD;c[ay+8>>2]=c[a6+8>>2];ay=c[U>>2]|0;aD=a2;aN=ay+16|0;aB=c[aD+4>>2]|0;c[aN>>2]=c[aD>>2];c[aN+4>>2]=aB;c[ay+24>>2]=c[aA>>2];ay=c[U>>2]|0;aB=a3;aN=ay+32|0;aD=c[aB+4>>2]|0;c[aN>>2]=c[aB>>2];c[aN+4>>2]=aD;c[ay+40>>2]=c[a3+8>>2];ay=c[U>>2]|0;if(((c[V>>2]|0)-ay|0)<49){eA(b,3);a7=c[U>>2]|0}else{a7=ay}c[U>>2]=a7+48;eG(b,a7,1);ay=c[T>>2]|0;aD=c[U>>2]|0;aN=aD-16|0;c[U>>2]=aN;aB=aN;aN=ay+az|0;aw=c[aB+4>>2]|0;c[aN>>2]=c[aB>>2];c[aN+4>>2]=aw;c[ay+(az+8)>>2]=c[aD-16+8>>2]}}while(0);ao=c[K>>2]|0;at=au;continue L1322;break};case 15:{aA=av>>>23;if((aA&256|0)==0){a8=ax+(aA<<4)|0}else{a8=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){a9=ax+((aA&511)<<4)|0}else{a9=aq+((aA&255)<<4)|0}aA=a8+8|0;do{if((c[aA>>2]|0)==3){if((c[a9+8>>2]|0)!=3){break}h[aI>>3]=+h[a8>>3]/+h[a9>>3];c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}}while(0);c[I>>2]=au;aD=c[aA>>2]|0;do{if((aD|0)==4){if((fw((c[a8>>2]|0)+16|0,p)|0)==0){aG=1129;break}h[aa>>3]=+h[p>>3];c[ab>>2]=3;ba=C;aG=1123}else if((aD|0)==3){if((a8|0)==0){aG=1129}else{ba=a8;aG=1123}}else{aG=1129}}while(0);do{if((aG|0)==1123){aG=0;aD=c[a9+8>>2]|0;if((aD|0)==4){if((fw((c[a9>>2]|0)+16|0,o)|0)==0){aG=1129;break}bb=+h[o>>3]}else if((aD|0)==3){if((a9|0)==0){aG=1129;break}bb=+h[a9>>3]}else{aG=1129;break}h[aI>>3]=+h[ba>>3]/bb;c[ax+(aH<<4)+8>>2]=3}}while(0);L1537:do{if((aG|0)==1129){aG=0;aD=gg(b,a8,8)|0;do{if((c[aD+8>>2]|0)==0){az=gg(b,a9,8)|0;if((c[az+8>>2]|0)!=0){bc=az;break}eu(b,a8,a9);break L1537}else{bc=aD}}while(0);aD=aI-(c[T>>2]|0)|0;az=c[U>>2]|0;ay=bc;aw=az;aN=c[ay+4>>2]|0;c[aw>>2]=c[ay>>2];c[aw+4>>2]=aN;c[az+8>>2]=c[bc+8>>2];az=c[U>>2]|0;aN=a8;aw=az+16|0;ay=c[aN+4>>2]|0;c[aw>>2]=c[aN>>2];c[aw+4>>2]=ay;c[az+24>>2]=c[aA>>2];az=c[U>>2]|0;ay=a9;aw=az+32|0;aN=c[ay+4>>2]|0;c[aw>>2]=c[ay>>2];c[aw+4>>2]=aN;c[az+40>>2]=c[a9+8>>2];az=c[U>>2]|0;if(((c[V>>2]|0)-az|0)<49){eA(b,3);bd=c[U>>2]|0}else{bd=az}c[U>>2]=bd+48;eG(b,bd,1);az=c[T>>2]|0;aN=c[U>>2]|0;aw=aN-16|0;c[U>>2]=aw;ay=aw;aw=az+aD|0;aB=c[ay+4>>2]|0;c[aw>>2]=c[ay>>2];c[aw+4>>2]=aB;c[az+(aD+8)>>2]=c[aN-16+8>>2]}}while(0);ao=c[K>>2]|0;at=au;continue L1322;break};case 16:{aA=av>>>23;if((aA&256|0)==0){be=ax+(aA<<4)|0}else{be=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){bf=ax+((aA&511)<<4)|0}else{bf=aq+((aA&255)<<4)|0}aA=be+8|0;do{if((c[aA>>2]|0)==3){if((c[bf+8>>2]|0)!=3){break}bg=+h[be>>3];bh=+h[bf>>3];h[aI>>3]=bg-bh*+O(+(bg/bh));c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}}while(0);c[I>>2]=au;aN=c[aA>>2]|0;do{if((aN|0)==4){if((fw((c[be>>2]|0)+16|0,n)|0)==0){aG=1155;break}h[ac>>3]=+h[n>>3];c[ad>>2]=3;bi=B;aG=1149}else if((aN|0)==3){if((be|0)==0){aG=1155}else{bi=be;aG=1149}}else{aG=1155}}while(0);do{if((aG|0)==1149){aG=0;aN=c[bf+8>>2]|0;if((aN|0)==4){if((fw((c[bf>>2]|0)+16|0,m)|0)==0){aG=1155;break}bj=+h[m>>3]}else if((aN|0)==3){if((bf|0)==0){aG=1155;break}bj=+h[bf>>3]}else{aG=1155;break}bh=+h[bi>>3];h[aI>>3]=bh-bj*+O(+(bh/bj));c[ax+(aH<<4)+8>>2]=3}}while(0);L1572:do{if((aG|0)==1155){aG=0;aN=gg(b,be,9)|0;do{if((c[aN+8>>2]|0)==0){aD=gg(b,bf,9)|0;if((c[aD+8>>2]|0)!=0){bk=aD;break}eu(b,be,bf);break L1572}else{bk=aN}}while(0);aN=aI-(c[T>>2]|0)|0;aD=c[U>>2]|0;az=bk;aB=aD;aw=c[az+4>>2]|0;c[aB>>2]=c[az>>2];c[aB+4>>2]=aw;c[aD+8>>2]=c[bk+8>>2];aD=c[U>>2]|0;aw=be;aB=aD+16|0;az=c[aw+4>>2]|0;c[aB>>2]=c[aw>>2];c[aB+4>>2]=az;c[aD+24>>2]=c[aA>>2];aD=c[U>>2]|0;az=bf;aB=aD+32|0;aw=c[az+4>>2]|0;c[aB>>2]=c[az>>2];c[aB+4>>2]=aw;c[aD+40>>2]=c[bf+8>>2];aD=c[U>>2]|0;if(((c[V>>2]|0)-aD|0)<49){eA(b,3);bl=c[U>>2]|0}else{bl=aD}c[U>>2]=bl+48;eG(b,bl,1);aD=c[T>>2]|0;aw=c[U>>2]|0;aB=aw-16|0;c[U>>2]=aB;az=aB;aB=aD+aN|0;ay=c[az+4>>2]|0;c[aB>>2]=c[az>>2];c[aB+4>>2]=ay;c[aD+(aN+8)>>2]=c[aw-16+8>>2]}}while(0);ao=c[K>>2]|0;at=au;continue L1322;break};case 17:{aA=av>>>23;if((aA&256|0)==0){bm=ax+(aA<<4)|0}else{bm=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){bn=ax+((aA&511)<<4)|0}else{bn=aq+((aA&255)<<4)|0}aA=bm+8|0;do{if((c[aA>>2]|0)==3){if((c[bn+8>>2]|0)!=3){break}h[aI>>3]=+R(+(+h[bm>>3]),+(+h[bn>>3]));c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}}while(0);c[I>>2]=au;aw=c[aA>>2]|0;do{if((aw|0)==4){if((fw((c[bm>>2]|0)+16|0,l)|0)==0){aG=1181;break}h[ae>>3]=+h[l>>3];c[af>>2]=3;bo=A;aG=1175}else if((aw|0)==3){if((bm|0)==0){aG=1181}else{bo=bm;aG=1175}}else{aG=1181}}while(0);do{if((aG|0)==1175){aG=0;aw=c[bn+8>>2]|0;if((aw|0)==4){if((fw((c[bn>>2]|0)+16|0,k)|0)==0){aG=1181;break}bp=+h[k>>3]}else if((aw|0)==3){if((bn|0)==0){aG=1181;break}bp=+h[bn>>3]}else{aG=1181;break}h[aI>>3]=+R(+(+h[bo>>3]),+bp);c[ax+(aH<<4)+8>>2]=3}}while(0);L1607:do{if((aG|0)==1181){aG=0;aw=gg(b,bm,10)|0;do{if((c[aw+8>>2]|0)==0){aN=gg(b,bn,10)|0;if((c[aN+8>>2]|0)!=0){bq=aN;break}eu(b,bm,bn);break L1607}else{bq=aw}}while(0);aw=aI-(c[T>>2]|0)|0;aN=c[U>>2]|0;aD=bq;ay=aN;aB=c[aD+4>>2]|0;c[ay>>2]=c[aD>>2];c[ay+4>>2]=aB;c[aN+8>>2]=c[bq+8>>2];aN=c[U>>2]|0;aB=bm;ay=aN+16|0;aD=c[aB+4>>2]|0;c[ay>>2]=c[aB>>2];c[ay+4>>2]=aD;c[aN+24>>2]=c[aA>>2];aN=c[U>>2]|0;aD=bn;ay=aN+32|0;aB=c[aD+4>>2]|0;c[ay>>2]=c[aD>>2];c[ay+4>>2]=aB;c[aN+40>>2]=c[bn+8>>2];aN=c[U>>2]|0;if(((c[V>>2]|0)-aN|0)<49){eA(b,3);br=c[U>>2]|0}else{br=aN}c[U>>2]=br+48;eG(b,br,1);aN=c[T>>2]|0;aB=c[U>>2]|0;ay=aB-16|0;c[U>>2]=ay;aD=ay;ay=aN+aw|0;az=c[aD+4>>2]|0;c[ay>>2]=c[aD>>2];c[ay+4>>2]=az;c[aN+(aw+8)>>2]=c[aB-16+8>>2]}}while(0);ao=c[K>>2]|0;at=au;continue L1322;break};case 19:{aA=av>>>23;aB=c[ax+(aA<<4)+8>>2]|0;do{if((aB|0)==0){bs=1}else{if((aB|0)!=1){bs=0;break}bs=(c[ax+(aA<<4)>>2]|0)==0|0}}while(0);c[aI>>2]=bs;c[ax+(aH<<4)+8>>2]=1;ao=ax;at=au;continue L1322;break};case 20:{aA=av>>>23;aB=ax+(aA<<4)|0;aw=ax+(aA<<4)+8|0;aA=c[aw>>2]|0;if((aA|0)==5){h[aI>>3]=+(ga(c[aB>>2]|0)|0);c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}else if((aA|0)==4){h[aI>>3]=+((c[(c[aB>>2]|0)+12>>2]|0)>>>0>>>0);c[ax+(aH<<4)+8>>2]=3;ao=ax;at=au;continue L1322}else{c[I>>2]=au;aA=gg(b,aB,12)|0;do{if((c[aA+8>>2]|0)==0){aN=gg(b,1032,12)|0;if((c[aN+8>>2]|0)!=0){bt=aN;aG=1214;break}eq(b,aB,3952)}else{bt=aA;aG=1214}}while(0);if((aG|0)==1214){aG=0;aA=aI-(c[T>>2]|0)|0;aN=c[U>>2]|0;az=bt;ay=aN;aD=c[az+4>>2]|0;c[ay>>2]=c[az>>2];c[ay+4>>2]=aD;c[aN+8>>2]=c[bt+8>>2];aN=c[U>>2]|0;aD=aB;ay=aN+16|0;az=c[aD+4>>2]|0;c[ay>>2]=c[aD>>2];c[ay+4>>2]=az;c[aN+24>>2]=c[aw>>2];aN=c[U>>2]|0;az=aN+32|0;ay=1032;aD=c[ay+4>>2]|0;c[az>>2]=c[ay>>2];c[az+4>>2]=aD;c[aN+40>>2]=ai;aN=c[U>>2]|0;if(((c[V>>2]|0)-aN|0)<49){eA(b,3);bu=c[U>>2]|0}else{bu=aN}c[U>>2]=bu+48;eG(b,bu,1);aN=c[T>>2]|0;aD=c[U>>2]|0;az=aD-16|0;c[U>>2]=az;ay=az;az=aN+aA|0;aC=c[ay+4>>2]|0;c[az>>2]=c[ay>>2];c[az+4>>2]=aC;c[aN+(aA+8)>>2]=c[aD-16+8>>2]}ao=c[K>>2]|0;at=au;continue L1322}break};case 21:{aD=av>>>23;aA=av>>>14&511;c[I>>2]=au;gq(b,1-aD+aA|0,aA);aA=c[S>>2]|0;if((c[aA+68>>2]|0)>>>0>=(c[aA+64>>2]|0)>>>0){e1(b)}aA=c[K>>2]|0;aN=aA+(aD<<4)|0;aC=aA+(aH<<4)|0;az=c[aN+4>>2]|0;c[aC>>2]=c[aN>>2];c[aC+4>>2]=az;c[aA+(aH<<4)+8>>2]=c[aA+(aD<<4)+8>>2];ao=aA;at=au;continue L1322;break};case 22:{ao=ax;at=at+((av>>>14)-131070<<2)|0;continue L1322;break};case 23:{aA=av>>>23;if((aA&256|0)==0){bv=ax+(aA<<4)|0}else{bv=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){bw=ax+((aA&511)<<4)|0}else{bw=aq+((aA&255)<<4)|0}c[I>>2]=au;if((c[bv+8>>2]|0)==(c[bw+8>>2]|0)){bx=(gp(b,bv,bw)|0)!=0|0}else{bx=0}if((bx|0)==(aH|0)){by=at+(((c[au>>2]|0)>>>14)-131070<<2)|0}else{by=au}ao=c[K>>2]|0;at=by+4|0;continue L1322;break};case 24:{c[I>>2]=au;aA=av>>>23;if((aA&256|0)==0){bz=ax+(aA<<4)|0}else{bz=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){bA=ax+((aA&511)<<4)|0}else{bA=aq+((aA&255)<<4)|0}if((go(b,bz,bA)|0)==(aH|0)){bB=at+(((c[au>>2]|0)>>>14)-131070<<2)|0}else{bB=au}ao=c[K>>2]|0;at=bB+4|0;continue L1322;break};case 25:{c[I>>2]=au;aA=av>>>23;if((aA&256|0)==0){bC=ax+(aA<<4)|0}else{bC=aq+((aA&255)<<4)|0}aA=av>>>14;if((aA&256|0)==0){bD=ax+((aA&511)<<4)|0}else{bD=aq+((aA&255)<<4)|0}aA=bC+8|0;aD=c[aA>>2]|0;az=bD+8|0;L1677:do{if((aD|0)==(c[az>>2]|0)){if((aD|0)==3){bE=+h[bC>>3]<=+h[bD>>3]|0;break}else if((aD|0)==4){aC=c[bC>>2]|0;aN=c[bD>>2]|0;ay=aC+16|0;bF=aN+16|0;bG=aL(ay|0,bF|0)|0;L1683:do{if((bG|0)==0){bH=ay;bI=c[aC+12>>2]|0;bJ=bF;bK=c[aN+12>>2]|0;while(1){bL=j_(bH|0)|0;bM=(bL|0)==(bI|0);if((bL|0)==(bK|0)){break}if(bM){bN=-1;break L1683}bO=bL+1|0;bL=bH+bO|0;bP=bJ+bO|0;bQ=aL(bL|0,bP|0)|0;if((bQ|0)==0){bH=bL;bI=bI-bO|0;bJ=bP;bK=bK-bO|0}else{bN=bQ;break L1683}}bN=bM&1^1}else{bN=bG}}while(0);bE=(bN|0)<1|0;break}else{bG=gg(b,bC,14)|0;aN=bG+8|0;do{if((c[aN>>2]|0)!=0){if((fr(bG,gg(b,bD,14)|0)|0)==0){break}bF=c[U>>2]|0;aC=bF-(c[T>>2]|0)|0;ay=bG;bK=bF;bJ=c[ay+4>>2]|0;c[bK>>2]=c[ay>>2];c[bK+4>>2]=bJ;c[bF+8>>2]=c[aN>>2];bF=c[U>>2]|0;bJ=bC;bK=bF+16|0;ay=c[bJ+4>>2]|0;c[bK>>2]=c[bJ>>2];c[bK+4>>2]=ay;c[bF+24>>2]=c[aA>>2];bF=c[U>>2]|0;ay=bD;bK=bF+32|0;bJ=c[ay+4>>2]|0;c[bK>>2]=c[ay>>2];c[bK+4>>2]=bJ;c[bF+40>>2]=c[az>>2];bF=c[U>>2]|0;if(((c[V>>2]|0)-bF|0)<49){eA(b,3);bR=c[U>>2]|0}else{bR=bF}c[U>>2]=bR+48;eG(b,bR,1);bF=c[T>>2]|0;bJ=c[U>>2]|0;bK=bJ-16|0;c[U>>2]=bK;ay=bK;bK=bF+aC|0;bI=c[ay+4>>2]|0;c[bK>>2]=c[ay>>2];c[bK+4>>2]=bI;c[bF+(aC+8)>>2]=c[bJ-16+8>>2];bJ=c[U>>2]|0;aC=c[bJ+8>>2]|0;if((aC|0)==0){bE=0;break L1677}if((aC|0)!=1){bE=1;break L1677}bE=(c[bJ>>2]|0)!=0|0;break L1677}}while(0);aN=gg(b,bD,13)|0;bG=aN+8|0;do{if((c[bG>>2]|0)!=0){if((fr(aN,gg(b,bC,13)|0)|0)==0){break}bJ=c[U>>2]|0;aC=bJ-(c[T>>2]|0)|0;bF=aN;bI=bJ;bK=c[bF+4>>2]|0;c[bI>>2]=c[bF>>2];c[bI+4>>2]=bK;c[bJ+8>>2]=c[bG>>2];bJ=c[U>>2]|0;bK=bD;bI=bJ+16|0;bF=c[bK+4>>2]|0;c[bI>>2]=c[bK>>2];c[bI+4>>2]=bF;c[bJ+24>>2]=c[az>>2];bJ=c[U>>2]|0;bF=bC;bI=bJ+32|0;bK=c[bF+4>>2]|0;c[bI>>2]=c[bF>>2];c[bI+4>>2]=bK;c[bJ+40>>2]=c[aA>>2];bJ=c[U>>2]|0;if(((c[V>>2]|0)-bJ|0)<49){eA(b,3);bS=c[U>>2]|0}else{bS=bJ}c[U>>2]=bS+48;eG(b,bS,1);bJ=c[T>>2]|0;bK=c[U>>2]|0;bI=bK-16|0;c[U>>2]=bI;bF=bI;bI=bJ+aC|0;ay=c[bF+4>>2]|0;c[bI>>2]=c[bF>>2];c[bI+4>>2]=ay;c[bJ+(aC+8)>>2]=c[bK-16+8>>2];bK=c[U>>2]|0;aC=c[bK+8>>2]|0;if((aC|0)==0){bE=1;break L1677}if((aC|0)!=1){bE=0;break L1677}bE=(c[bK>>2]|0)==0|0;break L1677}}while(0);bE=ev(b,bC,bD)|0;break}}else{bE=ev(b,bC,bD)|0}}while(0);if((bE|0)==(aH|0)){bT=at+(((c[au>>2]|0)>>>14)-131070<<2)|0}else{bT=au}ao=c[K>>2]|0;at=bT+4|0;continue L1322;break};case 26:{aA=c[ax+(aH<<4)+8>>2]|0;do{if((aA|0)==0){bU=1}else{if((aA|0)!=1){bU=0;break}bU=(c[aI>>2]|0)==0|0}}while(0);if((bU|0)==(av>>>14&511|0)){bV=au}else{bV=at+(((c[au>>2]|0)>>>14)-131070<<2)|0}ao=ax;at=bV+4|0;continue L1322;break};case 27:{aA=av>>>23;az=ax+(aA<<4)|0;aD=c[ax+(aA<<4)+8>>2]|0;do{if((aD|0)==0){bW=1}else{if((aD|0)!=1){bW=0;break}bW=(c[az>>2]|0)==0|0}}while(0);if((bW|0)==(av>>>14&511|0)){bX=au}else{aA=az;aw=aI;aB=c[aA+4>>2]|0;c[aw>>2]=c[aA>>2];c[aw+4>>2]=aB;c[ax+(aH<<4)+8>>2]=aD;bX=at+(((c[au>>2]|0)>>>14)-131070<<2)|0}ao=ax;at=bX+4|0;continue L1322;break};case 28:{aB=av>>>23;aw=av>>>14&511;if((aB|0)!=0){c[U>>2]=ax+(aH+aB<<4)}c[I>>2]=au;aB=eF(b,aI,aw-1|0)|0;if((aB|0)==0){aG=1293;break L1320}else if((aB|0)!=1){aG=1376;break L1318}if((aw|0)!=0){c[U>>2]=c[(c[J>>2]|0)+8>>2]}ao=c[K>>2]|0;at=au;continue L1322;break};case 29:{aw=av>>>23;if((aw|0)!=0){c[U>>2]=ax+(aH+aw<<4)}c[I>>2]=au;aw=eF(b,aI,-1)|0;if((aw|0)==0){break L1322}else if((aw|0)!=1){aG=1377;break L1318}ao=c[K>>2]|0;at=au;continue L1322;break};case 30:{break L1320;break};case 31:{bh=+h[ax+(aH+2<<4)>>3];aw=aI|0;bg=bh+ +h[aw>>3];bY=+h[ax+(aH+1<<4)>>3];if(bh>0.0){if(bg>bY){ao=ax;at=au;continue L1322}}else{if(bY>bg){ao=ax;at=au;continue L1322}}h[aw>>3]=bg;c[ax+(aH<<4)+8>>2]=3;aw=aH+3|0;h[ax+(aw<<4)>>3]=bg;c[ax+(aw<<4)+8>>2]=3;ao=ax;at=at+((av>>>14)-131070<<2)|0;continue L1322;break};case 32:{aw=aH+1|0;aB=ax+(aw<<4)|0;aA=aH+2|0;bG=ax+(aA<<4)|0;c[I>>2]=au;aN=ax+(aH<<4)+8|0;bK=c[aN>>2]|0;L1749:do{if((bK|0)==3){aG=1322}else{do{if((bK|0)==4){if((fw((c[aI>>2]|0)+16|0,y)|0)==0){break}h[aI>>3]=+h[y>>3];c[aN>>2]=3;if((aI|0)!=0){aG=1322;break L1749}}}while(0);es(b,3360,(bZ=i,i=i+1|0,i=i+7>>3<<3,c[bZ>>2]=0,bZ)|0);i=bZ}}while(0);L1755:do{if((aG|0)==1322){aG=0;bK=ax+(aw<<4)+8|0;aD=c[bK>>2]|0;L1757:do{if((aD|0)!=3){do{if((aD|0)==4){if((fw((c[aB>>2]|0)+16|0,x)|0)==0){break}h[aB>>3]=+h[x>>3];c[bK>>2]=3;if((aB|0)!=0){break L1757}}}while(0);es(b,2832,(bZ=i,i=i+1|0,i=i+7>>3<<3,c[bZ>>2]=0,bZ)|0);i=bZ;break L1755}}while(0);bK=ax+(aA<<4)+8|0;aD=c[bK>>2]|0;if((aD|0)==3){break}if((aD|0)!=4){aG=1372;break L1318}if((fw((c[bG>>2]|0)+16|0,w)|0)==0){aG=1373;break L1318}h[bG>>3]=+h[w>>3];c[bK>>2]=3;if((bG|0)==0){aG=1374;break L1318}}}while(0);aA=aI|0;h[aA>>3]=+h[aA>>3]- +h[bG>>3];c[aN>>2]=3;ao=ax;at=at+((av>>>14)-131070<<2)|0;continue L1322;break};case 33:{aA=aH+3|0;aB=ax+(aA<<4)|0;aw=aH+2|0;bK=aH+5|0;aD=ax+(aw<<4)|0;az=ax+(bK<<4)|0;aC=c[aD+4>>2]|0;c[az>>2]=c[aD>>2];c[az+4>>2]=aC;c[ax+(bK<<4)+8>>2]=c[ax+(aw<<4)+8>>2];bK=aH+1|0;aC=aH+4|0;az=ax+(bK<<4)|0;aD=ax+(aC<<4)|0;bJ=c[az+4>>2]|0;c[aD>>2]=c[az>>2];c[aD+4>>2]=bJ;c[ax+(aC<<4)+8>>2]=c[ax+(bK<<4)+8>>2];bK=aI;aC=aB;bJ=c[bK+4>>2]|0;c[aC>>2]=c[bK>>2];c[aC+4>>2]=bJ;c[ax+(aA<<4)+8>>2]=c[ax+(aH<<4)+8>>2];c[U>>2]=ax+(aH+6<<4);c[I>>2]=au;eG(b,aB,av>>>14&511);aB=c[K>>2]|0;c[U>>2]=c[(c[J>>2]|0)+8>>2];bJ=c[aB+(aA<<4)+8>>2]|0;if((bJ|0)==0){b_=au}else{aC=aB+(aA<<4)|0;aA=aB+(aw<<4)|0;bK=c[aC+4>>2]|0;c[aA>>2]=c[aC>>2];c[aA+4>>2]=bK;c[aB+(aw<<4)+8>>2]=bJ;b_=at+(((c[au>>2]|0)>>>14)-131070<<2)|0}ao=aB;at=b_+4|0;continue L1322;break};case 34:{aB=av>>>23;bJ=av>>>14&511;if((aB|0)==0){aw=((c[U>>2]|0)-aI>>4)-1|0;c[U>>2]=c[(c[J>>2]|0)+8>>2];b$=aw}else{b$=aB}if((bJ|0)==0){b0=at+8|0;b1=c[au>>2]|0}else{b0=au;b1=bJ}if((c[ax+(aH<<4)+8>>2]|0)!=5){ao=ax;at=b0;continue L1322}bJ=c[aI>>2]|0;aB=bJ;aw=b$-50+(b1*50|0)|0;if((aw|0)>(c[bJ+28>>2]|0)){f1(b,aB,aw)}if((b$|0)<=0){ao=ax;at=b0;continue L1322}bK=bJ+5|0;bJ=aw;aw=b$;while(1){aA=aw+aH|0;aC=ax+(aA<<4)|0;aD=bJ-1|0;az=gc(b,aB,bJ)|0;ay=aC;bI=az;bF=c[ay+4>>2]|0;c[bI>>2]=c[ay>>2];c[bI+4>>2]=bF;bF=ax+(aA<<4)+8|0;c[az+8>>2]=c[bF>>2];do{if((c[bF>>2]|0)>3){if((a[(c[aC>>2]|0)+5|0]&3)==0){break}if((a[bK]&4)==0){break}e2(b,aB)}}while(0);aC=aw-1|0;if((aC|0)>0){bJ=aD;aw=aC}else{ao=ax;at=b0;continue L1322}}break};case 35:{eU(b,aI);ao=ax;at=au;continue L1322;break};case 36:{aw=c[(c[(c[ap>>2]|0)+16>>2]|0)+(av>>>14<<2)>>2]|0;bJ=a[aw+72|0]|0;aB=bJ&255;bK=eP(b,aB,c[as>>2]|0)|0;aN=bK;c[bK+16>>2]=aw;if(bJ<<24>>24==0){b2=au}else{aw=(bJ&255)>1;bJ=0;bG=au;while(1){aC=c[bG>>2]|0;bF=aC>>>23;if((aC&63|0)==4){c[aN+20+(bJ<<2)>>2]=c[ar+(bF<<2)>>2]}else{c[aN+20+(bJ<<2)>>2]=eR(b,ax+(bF<<4)|0)|0}bF=bJ+1|0;if((bF|0)<(aB|0)){bJ=bF;bG=bG+4|0}else{break}}b2=at+((aw?aB+1|0:2)<<2)|0}c[aI>>2]=bK;c[ax+(aH<<4)+8>>2]=6;c[I>>2]=b2;bG=c[S>>2]|0;if((c[bG+68>>2]|0)>>>0>=(c[bG+64>>2]|0)>>>0){e1(b)}ao=c[K>>2]|0;at=b2;continue L1322;break};case 37:{bG=av>>>23;bJ=bG-1|0;aN=c[J>>2]|0;bF=aN|0;aC=((c[bF>>2]|0)-(c[aN+4>>2]|0)>>4)-(d[(c[ap>>2]|0)+73|0]|0)|0;aN=aC-1|0;if((bG|0)==0){c[I>>2]=au;if(((c[V>>2]|0)-(c[U>>2]|0)|0)<=(aN<<4|0)){eA(b,aN)}bG=c[K>>2]|0;c[U>>2]=bG+(aN+aH<<4);b3=bG;b4=bG+(aH<<4)|0;b5=aN}else{b3=ax;b4=aI;b5=bJ}if((b5|0)<=0){ao=b3;at=au;continue L1322}bJ=1-aC|0;aC=0;while(1){if((aC|0)<(aN|0)){bG=c[bF>>2]|0;az=aC+bJ|0;aA=bG+(az<<4)|0;bI=b4+(aC<<4)|0;ay=c[aA+4>>2]|0;c[bI>>2]=c[aA>>2];c[bI+4>>2]=ay;c[b4+(aC<<4)+8>>2]=c[bG+(az<<4)+8>>2]}else{c[b4+(aC<<4)+8>>2]=0}az=aC+1|0;if((az|0)<(b5|0)){aC=az}else{ao=b3;at=au;continue L1322}}break};default:{ao=ax;at=au;continue L1322}}}ao=c[J>>2]|0;ap=ao-24+4|0;ar=c[ap>>2]|0;as=c[ao+4>>2]|0;aq=ao-24|0;if((c[am>>2]|0)==0){b6=ar}else{eU(b,c[aq>>2]|0);b6=c[ap>>2]|0}ap=b6+((c[ao>>2]|0)-as>>4<<4)|0;c[aq>>2]=ap;c[K>>2]=ap;if(as>>>0<(c[U>>2]|0)>>>0){ap=0;aq=as;aC=ar;while(1){bJ=aq;bF=aC;aN=c[bJ+4>>2]|0;c[bF>>2]=c[bJ>>2];c[bF+4>>2]=aN;c[ar+(ap<<4)+8>>2]=c[as+(ap<<4)+8>>2];aN=ap+1|0;bF=as+(aN<<4)|0;bJ=ar+(aN<<4)|0;if(bF>>>0<(c[U>>2]|0)>>>0){ap=aN;aq=bF;aC=bJ}else{b7=bJ;break}}}else{b7=ar}c[U>>2]=b7;c[ao-24+8>>2]=b7;c[ao-24+12>>2]=c[I>>2];aC=ao-24+20|0;c[aC>>2]=(c[aC>>2]|0)+1;aC=(c[J>>2]|0)-24|0;c[J>>2]=aC;e=aC}if((aG|0)==1293){aG=0;an=an+1|0;continue}e=av>>>23;if((e|0)!=0){c[U>>2]=ax+(e-1+aH<<4)}if((c[am>>2]|0)!=0){eU(b,ax)}c[I>>2]=au;e=eD(b,aI)|0;aC=an-1|0;if((aC|0)==0){aG=1378;break}if((e|0)==0){an=aC;continue}c[U>>2]=c[(c[J>>2]|0)+8>>2];an=aC}if((aG|0)==999){c[I>>2]=at;i=f;return}else if((aG|0)==1372){es(b,2480,(bZ=i,i=i+1|0,i=i+7>>3<<3,c[bZ>>2]=0,bZ)|0);i=bZ}else if((aG|0)==1373){es(b,2480,(bZ=i,i=i+1|0,i=i+7>>3<<3,c[bZ>>2]=0,bZ)|0);i=bZ}else if((aG|0)==1374){es(b,2480,(bZ=i,i=i+1|0,i=i+7>>3<<3,c[bZ>>2]=0,bZ)|0);i=bZ}else if((aG|0)==1376){i=f;return}else if((aG|0)==1377){i=f;return}else if((aG|0)==1378){i=f;return}}function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[b+16>>2]=a;c[b+8>>2]=d;c[b+12>>2]=e;c[b>>2]=0;c[b+4>>2]=0;return}function gt(a,b){a=a|0;b=b|0;c[b+8>>2]=a;c[b>>2]=b+12;c[b+4>>2]=0;return}function gu(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;b=i;i=i+8|0;e=b|0;f=ch[c[a+8>>2]&511](c[a+16>>2]|0,c[a+12>>2]|0,e)|0;if((f|0)==0){g=-1;i=b;return g|0}h=c[e>>2]|0;if((h|0)==0){g=-1;i=b;return g|0}c[a>>2]=h-1;c[a+4>>2]=f+1;g=d[f]|0;i=b;return g|0}\ | |
7840 function gv(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+8|0;e=b|0;f=a|0;do{if((c[f>>2]|0)==0){g=ch[c[a+8>>2]&511](c[a+16>>2]|0,c[a+12>>2]|0,e)|0;if((g|0)==0){h=-1;i=b;return h|0}j=c[e>>2]|0;if((j|0)==0){h=-1;i=b;return h|0}else{c[f>>2]=j;c[a+4>>2]=g;k=g;break}}else{k=c[a+4>>2]|0}}while(0);h=d[k]|0;i=b;return h|0}function gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+8|0;f=e|0;if((d|0)==0){g=0;i=e;return g|0}h=a|0;j=a+16|0;k=a+8|0;l=a+12|0;m=a+4|0;a=b;b=d;d=c[h>>2]|0;while(1){if((d|0)==0){n=ch[c[k>>2]&511](c[j>>2]|0,c[l>>2]|0,f)|0;if((n|0)==0){g=b;o=1410;break}p=c[f>>2]|0;if((p|0)==0){g=b;o=1409;break}c[h>>2]=p;c[m>>2]=n;q=p;r=n}else{q=d;r=c[m>>2]|0}n=b>>>0>q>>>0?q:b;j$(a|0,r|0,n)|0;p=(c[h>>2]|0)-n|0;c[h>>2]=p;c[m>>2]=(c[m>>2]|0)+n;if((b|0)==(n|0)){g=0;o=1408;break}else{a=a+n|0;b=b-n|0;d=p}}if((o|0)==1409){i=e;return g|0}else if((o|0)==1408){i=e;return g|0}else if((o|0)==1410){i=e;return g|0}return 0}function gx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=b+8|0;f=c[e>>2]|0;if(f>>>0>=d>>>0){g=c[b>>2]|0;return g|0}h=d>>>0<32?32:d;if((h+1|0)>>>0<4294967294){d=b|0;i=fu(a,c[d>>2]|0,f,h)|0;j=d}else{i=fv(a)|0;j=b|0}c[j>>2]=i;c[e>>2]=h;g=i;return g|0}function gy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+104|0;f=e|0;if((ej(a,0,f)|0)==0){g=gz(a,6560,(h=i,i=i+16|0,c[h>>2]=b,c[h+8>>2]=d,h)|0)|0;i=h;j=g;i=e;return j|0}en(a,9736,f)|0;do{if((aL(c[f+8>>2]|0,7800)|0)==0){g=b-1|0;if((g|0)!=0){k=g;break}g=gz(a,5928,(h=i,i=i+16|0,c[h>>2]=c[f+4>>2],c[h+8>>2]=d,h)|0)|0;i=h;j=g;i=e;return j|0}else{k=b}}while(0);b=f+4|0;f=c[b>>2]|0;if((f|0)==0){c[b>>2]=4656;l=4656}else{l=f}f=gz(a,3912,(h=i,i=i+24|0,c[h>>2]=k,c[h+8>>2]=l,c[h+16>>2]=d,h)|0)|0;i=h;j=f;i=e;return j|0}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+120|0;f=e|0;g=e+104|0;h=g|0;j=g;c[j>>2]=d;c[j+4>>2]=0;do{if((ej(a,1,f)|0)!=0){en(a,2816,f)|0;j=c[f+20>>2]|0;if((j|0)<=0){break}d=f+36|0;dc(a,2464,(g=i,i=i+16|0,c[g>>2]=d,c[g+8>>2]=j,g)|0)|0;i=g;k=db(a,b,h)|0;dG(a,2);l=dE(a)|0;i=e;return l|0}}while(0);c9(a,10520,0);k=db(a,b,h)|0;dG(a,2);l=dE(a)|0;i=e;return l|0}function gA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=cL(a,cK(a,b)|0)|0;g=dc(a,3328,(h=i,i=i+16|0,c[h>>2]=d,c[h+8>>2]=f,h)|0)|0;i=h;h=gy(a,b,g)|0;i=e;return h|0}function gB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+104|0;e=d|0;do{if((ej(a,b,e)|0)!=0){en(a,2816,e)|0;f=c[e+20>>2]|0;if((f|0)<=0){break}g=e+36|0;dc(a,2464,(h=i,i=i+16|0,c[h>>2]=g,c[h+8>>2]=f,h)|0)|0;i=h;i=d;return}}while(0);c9(a,10520,0);i=d;return}function gC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;do{if((d|0)==0){g=c0(a,b,0)|0;if((g|0)!=0){h=g;break}g=cL(a,4)|0;j=cL(a,cK(a,b)|0)|0;k=dc(a,3328,(l=i,i=i+16|0,c[l>>2]=g,c[l+8>>2]=j,l)|0)|0;i=l;gy(a,b,k)|0;h=0}else{h=gD(a,b,d,0)|0}}while(0);d=0;while(1){k=c[e+(d<<2)>>2]|0;if((k|0)==0){break}if((aL(k|0,h|0)|0)==0){m=d;n=1457;break}else{d=d+1|0}}if((n|0)==1457){i=f;return m|0}n=dc(a,10352,(l=i,i=i+8|0,c[l>>2]=h,l)|0)|0;i=l;m=gy(a,b,n)|0;i=f;return m|0}function gD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;if((cK(a,b)|0)>=1){g=c0(a,b,e)|0;if((g|0)!=0){h=g;i=f;return h|0}g=cL(a,4)|0;j=cL(a,cK(a,b)|0)|0;k=dc(a,3328,(l=i,i=i+16|0,c[l>>2]=g,c[l+8>>2]=j,l)|0)|0;i=l;gy(a,b,k)|0;h=0;i=f;return h|0}if((e|0)==0){h=d;i=f;return h|0}if((d|0)==0){m=0}else{m=j_(d|0)|0}c[e>>2]=m;h=d;i=f;return h|0}function gE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=c0(a,b,d)|0;if((f|0)!=0){i=e;return f|0}d=cL(a,4)|0;g=cL(a,cK(a,b)|0)|0;h=dc(a,3328,(j=i,i=i+16|0,c[j>>2]=d,c[j+8>>2]=g,j)|0)|0;i=j;gy(a,b,h)|0;i=e;return f|0}function gF(a,b){a=a|0;b=b|0;var c=0;df(a,-1e4,b);if((cK(a,-1)|0)!=0){c=0;return c|0}cG(a,-2);di(a,0,0);cJ(a,-1);dm(a,-1e4,b);c=1;return c|0}function gG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=cZ(a,b)|0;do{if((f|0)!=0){if((dj(a,b)|0)==0){break}df(a,-1e4,d);if((cT(a,-1,-2)|0)==0){break}cG(a,-3);g=f;i=e;return g|0}}while(0);f=cL(a,cK(a,b)|0)|0;h=dc(a,3328,(j=i,i=i+16|0,c[j>>2]=d,c[j+8>>2]=f,j)|0)|0;i=j;gy(a,b,h)|0;g=0;i=e;return g|0}function gH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((cN(a,b)|0)!=0){i=e;return}gz(a,10176,(a=i,i=i+8|0,c[a>>2]=d,a)|0)|0;i=a;i=e;return}function gI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;if((cK(a,b)|0)==(d|0)){i=e;return}f=cL(a,d)|0;d=cL(a,cK(a,b)|0)|0;g=dc(a,3328,(h=i,i=i+16|0,c[h>>2]=f,c[h+8>>2]=d,h)|0)|0;i=h;gy(a,b,g)|0;i=e;return}function gJ(a,b){a=a|0;b=b|0;if((cK(a,b)|0)!=-1){return}gy(a,b,9896)|0;return}function gK(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,h=0,j=0;d=i;e=+cW(a,b);if(e!=0.0){i=d;return+e}if((cS(a,b)|0)!=0){i=d;return+e}f=cL(a,3)|0;g=cL(a,cK(a,b)|0)|0;h=dc(a,3328,(j=i,i=i+16|0,c[j>>2]=f,c[j+8>>2]=g,j)|0)|0;i=j;gy(a,b,h)|0;i=d;return+e}function gL(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0;if((cK(a,b)|0)<1){d=c;return+d}d=+gK(a,b);return+d}function gM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=c$(a,b)|0;if((e|0)!=0){i=d;return e|0}if((cS(a,b)|0)!=0){i=d;return e|0}f=cL(a,3)|0;g=cL(a,cK(a,b)|0)|0;h=dc(a,3328,(j=i,i=i+16|0,c[j>>2]=f,c[j+8>>2]=g,j)|0)|0;i=j;gy(a,b,h)|0;i=d;return e|0}function gN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((cK(a,b)|0)<1){d=c;return d|0}d=gM(a,b)|0;return d|0}function gO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((dj(a,b)|0)==0){d=0;return d|0}da(a,c);dg(a,-2);if((cK(a,-1)|0)==0){cG(a,-3);d=0;return d|0}else{cH(a,-2);d=1;return d|0}return 0}function gP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b+9999|0)>>>0>9999){d=b}else{d=b+1+(cF(a)|0)|0}if((dj(a,d)|0)==0){e=0;return e|0}da(a,c);dg(a,-2);if((cK(a,-1)|0)==0){cG(a,-3);e=0;return e|0}else{cH(a,-2);cJ(a,d);dw(a,1,1);e=1;return e|0}return 0}function gQ(a,b,c){a=a|0;b=b|0;c=c|0;gR(a,b,c,0);return}function gR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;g=d|0;if((b|0)!=0){if((c[g>>2]|0)==0){h=0}else{j=d;d=0;while(1){k=d+1|0;l=j+8|0;if((c[l>>2]|0)==0){h=k;break}else{j=l;d=k}}}gS(a,-1e4,9680,1)|0;df(a,-1,b);if((cK(a,-1)|0)!=5){cG(a,-2);if((gS(a,-10002,b,h)|0)!=0){gz(a,9464,(h=i,i=i+8|0,c[h>>2]=b,h)|0)|0;i=h}cJ(a,-1);dm(a,-3,b)}cH(a,-2);cI(a,~e)}if((c[g>>2]|0)==0){m=~e;cG(a,m);i=f;return}b=-2-e|0;h=-e|0;if((e|0)>0){n=g}else{d=g;do{dd(a,c[d+4>>2]|0,e);dm(a,b,c[d>>2]|0);d=d+8|0;}while((c[d>>2]|0)!=0);m=~e;cG(a,m);i=f;return}do{d=0;do{cJ(a,h);d=d+1|0;}while((d|0)<(e|0));dd(a,c[n+4>>2]|0,e);dm(a,b,c[n>>2]|0);n=n+8|0;}while((c[n>>2]|0)!=0);m=~e;cG(a,m);i=f;return}function gS(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;cJ(b,c);c=d;while(1){d=aU(c|0,46)|0;if((d|0)==0){f=c+(j_(c|0)|0)|0}else{f=d}d=f-c|0;c9(b,c,d);dg(b,-2);if((cK(b,-1)|0)==0){cG(b,-2);di(b,0,(a[f]|0)==46?1:e);c9(b,c,d);cJ(b,-2);dl(b,-4)}else{if((cK(b,-1)|0)!=5){break}}cH(b,-2);if((a[f]|0)==46){c=f+1|0}else{g=0;h=1573;break}}if((h|0)==1573){return g|0}cG(b,-3);g=c;return g|0}function gT(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=i;i=i+1040|0;h=g|0;j=j_(e|0)|0;k=h+8|0;c[k>>2]=b;l=h+12|0;m=h|0;c[m>>2]=l;n=h+4|0;c[n>>2]=0;o=aF(d|0,e|0)|0;if((o|0)==0){p=d}else{q=h+1036|0;r=d;d=o;while(1){L2080:do{if((d|0)!=(r|0)){o=r;s=d-r|0;while(1){t=s-1|0;u=c[m>>2]|0;if(u>>>0<q>>>0){v=u}else{gY(h)|0;v=c[m>>2]|0}u=a[o]|0;c[m>>2]=v+1;a[v]=u;if((t|0)==0){break L2080}o=o+1|0;s=t}}}while(0);s=j_(f|0)|0;L2089:do{if((s|0)!=0){o=f;t=s;while(1){u=t-1|0;w=c[m>>2]|0;if(w>>>0<q>>>0){x=w}else{gY(h)|0;x=c[m>>2]|0}w=a[o]|0;c[m>>2]=x+1;a[x]=w;if((u|0)==0){break L2089}o=o+1|0;t=u}}}while(0);s=d+j|0;t=aF(s|0,e|0)|0;if((t|0)==0){p=s;break}else{r=s;d=t}}}d=j_(p|0)|0;L2098:do{if((d|0)!=0){r=h+1036|0;e=p;j=d;while(1){x=j-1|0;q=c[m>>2]|0;if(q>>>0<r>>>0){y=q}else{gY(h)|0;y=c[m>>2]|0}q=a[e]|0;c[m>>2]=y+1;a[y]=q;if((x|0)==0){break L2098}e=e+1|0;j=x}}}while(0);y=c[m>>2]|0;if((y|0)==(l|0)){z=c[n>>2]|0;A=c[k>>2]|0;dG(A,z);c[n>>2]=1;B=c0(b,-1,0)|0;i=g;return B|0}else{c9(c[k>>2]|0,l,y-l|0);c[m>>2]=l;l=(c[n>>2]|0)+1|0;c[n>>2]=l;z=l;A=c[k>>2]|0;dG(A,z);c[n>>2]=1;B=c0(b,-1,0)|0;i=g;return B|0}return 0}function gU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=b+4|0;e=c[a>>2]|0;if((e|0)==0){f=0;return f|0}c[d>>2]=e;c[a>>2]=0;f=c[b>>2]|0;return f|0}function gV(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if((e|0)==0){return}f=b|0;g=b+1036|0;h=d;d=e;while(1){e=d-1|0;i=c[f>>2]|0;if(i>>>0<g>>>0){j=i}else{gY(b)|0;j=c[f>>2]|0}i=a[h]|0;c[f>>2]=j+1;a[j]=i;if((e|0)==0){break}else{h=h+1|0;d=e}}return}function gW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=j_(d|0)|0;if((e|0)==0){return}f=b|0;g=b+1036|0;h=d;d=e;while(1){e=d-1|0;i=c[f>>2]|0;if(i>>>0<g>>>0){j=i}else{gY(b)|0;j=c[f>>2]|0}i=a[h]|0;c[f>>2]=j+1;a[j]=i;if((e|0)==0){break}else{h=h+1|0;d=e}}return}function gX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a|0;d=c[b>>2]|0;e=a+12|0;if((d|0)==(e|0)){f=c[a+4>>2]|0;g=a+8|0}else{h=a+8|0;c9(c[h>>2]|0,e,d-e|0);c[b>>2]=e;e=a+4|0;b=(c[e>>2]|0)+1|0;c[e>>2]=b;f=b;g=h}dG(c[g>>2]|0,f);c[a+4>>2]=1;return}function gY(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=a|0;d=c[b>>2]|0;e=a+12|0;if((d|0)==(e|0)){return e|0}f=a+8|0;c9(c[f>>2]|0,e,d-e|0);c[b>>2]=e;b=a+4|0;a=c[b>>2]|0;c[b>>2]=a+1;if((a|0)<=0){return e|0}a=c[f>>2]|0;f=1;d=c1(a,-1)|0;while(1){g=f+1|0;h=c1(a,~f)|0;i=c[b>>2]|0;if(!((1-f+i|0)>9|d>>>0>h>>>0)){j=f;break}if((g|0)<(i|0)){f=g;d=h+d|0}else{j=g;break}}dG(a,j);c[b>>2]=1-j+(c[b>>2]|0);return e|0}function gZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;i=i+8|0;d=b|0;e=a+8|0;f=c[e>>2]|0;g=c0(f,-1,d)|0;h=c[d>>2]|0;j=a|0;k=c[j>>2]|0;l=a+12|0;m=k;n=l;if(h>>>0<=(n+1024-m|0)>>>0){j$(k|0,g|0,h)|0;c[j>>2]=(c[j>>2]|0)+(c[d>>2]|0);cG(f,-2);i=b;return}if((k|0)==(l|0)){o=a+4|0}else{c9(c[e>>2]|0,l,m-n|0);c[j>>2]=l;l=a+4|0;c[l>>2]=(c[l>>2]|0)+1;cI(f,-2);o=l}l=c[o>>2]|0;c[o>>2]=l+1;if((l|0)<=0){i=b;return}l=c[e>>2]|0;e=1;f=c1(l,-1)|0;while(1){a=e+1|0;j=c1(l,~e)|0;n=c[o>>2]|0;if(!((1-e+n|0)>9|f>>>0>j>>>0)){p=e;break}if((a|0)<(n|0)){e=a;f=j+f|0}else{p=a;break}}dG(l,p);c[o>>2]=1-p+(c[o>>2]|0);i=b;return}function g_(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if((b+9999|0)>>>0>9999){c=b}else{c=b+1+(cF(a)|0)|0}if((cK(a,-1)|0)==0){cG(a,-2);d=-1;return d|0}dh(a,c,0);b=c$(a,-1)|0;cG(a,-2);if((b|0)==0){e=(c1(a,c)|0)+1|0}else{dh(a,c,b);dp(a,c,0);e=b}dp(a,c,e);d=e;return d|0}function g$(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)<=-1){return}if((b+9999|0)>>>0>9999){d=b}else{d=b+1+(cF(a)|0)|0}dh(a,d,0);dp(a,d,c);c5(a,c);dp(a,d,0);return}function g0(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=i;i=i+1032|0;e=d|0;f=(cF(a)|0)+1|0;g=e|0;c[g>>2]=0;h=(b|0)==0;do{if(h){c9(a,9256,6);j=c[m>>2]|0;c[e+4>>2]=j;k=j}else{dc(a,9128,(l=i,i=i+8|0,c[l>>2]=b,l)|0)|0;i=l;j=bl(b|0,8984)|0;c[e+4>>2]=j;if((j|0)!=0){k=j;break}j=bF(c[(bE()|0)>>2]|0)|0;n=(c0(a,f,0)|0)+1|0;dc(a,7280,(l=i,i=i+24|0,c[l>>2]=8824,c[l+8>>2]=n,c[l+16>>2]=j,l)|0)|0;i=l;cH(a,f);o=6;i=d;return o|0}}while(0);j=e+4|0;n=aQ(k|0)|0;L2199:do{if((n|0)==35){c[g>>2]=1;while(1){k=aQ(c[j>>2]|0)|0;if((k|0)==10){break}else if((k|0)==(-1|0)){p=-1;break L2199}}q=aQ(c[j>>2]|0)|0;r=1676}else{q=n;r=1676}}while(0);do{if((r|0)==1676){if((q|0)!=27|h){p=q;break}n=a1(b|0,8440,c[j>>2]|0)|0;c[j>>2]=n;if((n|0)==0){k=bF(c[(bE()|0)>>2]|0)|0;s=(c0(a,f,0)|0)+1|0;dc(a,7280,(l=i,i=i+24|0,c[l>>2]=8224,c[l+8>>2]=s,c[l+16>>2]=k,l)|0)|0;i=l;cH(a,f);o=6;i=d;return o|0}else{t=n}while(1){u=aQ(t|0)|0;if((u|0)==(-1|0)|(u|0)==27){break}t=c[j>>2]|0}c[g>>2]=0;p=u}}while(0);bI(p|0,c[j>>2]|0)|0;p=dB(a,254,e,c0(a,-1,0)|0)|0;e=c[j>>2]|0;j=a4(e|0)|0;if(!h){ar(e|0)|0}if((j|0)==0){cH(a,f);o=p;i=d;return o|0}else{cG(a,f);p=bF(c[(bE()|0)>>2]|0)|0;j=(c0(a,f,0)|0)+1|0;dc(a,7280,(l=i,i=i+24|0,c[l>>2]=7960,c[l+8>>2]=j,c[l+16>>2]=p,l)|0)|0;i=l;cH(a,f);o=6;i=d;return o|0}return 0}function g1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=b;if((c[a>>2]|0)!=0){c[a>>2]=0;c[d>>2]=1;e=7520;return e|0}a=b+4|0;if((bQ(c[a>>2]|0)|0)!=0){e=0;return e|0}f=b+8|0;b=bw(f|0,1,1024,c[a>>2]|0)|0;c[d>>2]=b;e=(b|0)==0?0:f;return e|0}function g2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+8|0;g=f|0;c[g>>2]=b;c[g+4>>2]=d;d=dB(a,256,g,e)|0;i=f;return d|0}function g3(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+8|0;e=d|0;f=j_(b|0)|0;c[e>>2]=b;c[e+4>>2]=f;f=dB(a,256,e,b)|0;i=d;return f|0}function g4(){var a=0;a=fV(254,0)|0;if((a|0)==0){return a|0}cE(a,332)|0;return a|0}function g5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((d|0)==0){jV(b);e=0}else{e=jW(b,d)|0}return e|0}function g6(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[n>>2]|0;e=c0(a,-1,0)|0;bN(d|0,7712|0,(d=i,i=i+8|0,c[d>>2]=e,d)|0)|0;i=d;i=b;return 0}function g7(a){a=a|0;cJ(a,-10002);dm(a,-10002,9248);gQ(a,9248,1864);c9(a,9120,7);dm(a,-10002,8968);dd(a,404,0);dd(a,502,1);dm(a,-2,8816);dd(a,264,0);dd(a,254,1);dm(a,-2,8616);di(a,0,1);cJ(a,-1);dq(a,-2)|0;c9(a,8432,2);dm(a,-2,8216);dd(a,352,1);dm(a,-10002,7944);gQ(a,6064,1808);return 2}function g8(a){a=a|0;var b=0,c=0;b=cO(a)|0;if((cK(a,1)|0)==6){if((cM(a,1)|0)!=0){c=1715}}else{c=1715}if((c|0)==1715){gy(a,1,9440)|0}cJ(a,1);cC(a,b,1);return 1}function g9(a){a=a|0;var b=0,c=0,d=0;b=c_(a,1)|0;if((b|0)==0){gy(a,1,9656)|0}c=hf(a,b,(cF(a)|0)-1|0)|0;if((c|0)<0){c6(a,0);cI(a,-2);d=2;return d|0}else{c6(a,1);cI(a,~c);d=c+1|0;return d|0}return 0}function ha(a){a=a|0;if((c8(a)|0)!=0){c3(a)}return 1}function hb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+104|0;d=b|0;e=c_(a,1)|0;if((e|0)==0){gy(a,1,9656)|0}do{if((e|0)==(a|0)){f=0}else{g=dr(e)|0;if((g|0)==1){f=1;break}else if((g|0)!=0){f=3;break}if((ej(e,0,d)|0)>0){f=2;break}f=(cF(e)|0)==0?3:1}}while(0);da(a,c[312+(f<<2)>>2]|0);i=b;return 1}function hc(a){a=a|0;var b=0,c=0;b=cO(a)|0;if((cK(a,1)|0)==6){if((cM(a,1)|0)!=0){c=1738}}else{c=1738}if((c|0)==1738){gy(a,1,9440)|0}cJ(a,1);cC(a,b,1);dd(a,316,1);return 1}function hd(a){a=a|0;return eI(a,cF(a)|0)|0}function he(a){a=a|0;var b=0,c=0;b=c_(a,-10003)|0;c=hf(a,b,cF(a)|0)|0;if((c|0)>=0){return c|0}if((cQ(a,-1)|0)!=0){gB(a,1);cI(a,-2);dG(a,2)}dE(a)|0;return c|0}function hf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+104|0;f=e|0;do{if((a|0)==(b|0)){g=0}else{h=dr(b)|0;if((h|0)==1){g=1;break}else if((h|0)!=0){g=3;break}if((ej(b,0,f)|0)>0){g=2;break}g=(cF(b)|0)==0?3:1}}while(0);if((cN(b,d)|0)==0){gz(a,2784,(j=i,i=i+1|0,i=i+7>>3<<3,c[j>>2]=0,j)|0)|0;i=j}if((g|0)!=1){f=c[312+(g<<2)>>2]|0;dc(a,2432,(j=i,i=i+8|0,c[j>>2]=f,j)|0)|0;i=j;k=-1;i=e;return k|0}cC(a,b,d);cD(a,b);if((eE(b,d)|0)>>>0>=2){cC(b,a,1);k=-1;i=e;return k|0}d=cF(b)|0;if((cN(a,d+1|0)|0)==0){gz(a,2200,(j=i,i=i+1|0,i=i+7>>3<<3,c[j>>2]=0,j)|0)|0;i=j}cC(b,a,d);k=d;i=e;return k|0}function hg(a){a=a|0;gI(a,1,5);cJ(a,-10003);cJ(a,1);c5(a,0);return 3}function hh(a){a=a|0;var b=0,c=0;b=gM(a,2)|0;gI(a,1,5);c=b+1|0;c5(a,c);dh(a,1,c);return((cK(a,-1)|0)==0?0:2)|0}function hi(a){a=a|0;gI(a,1,5);cJ(a,-10003);cJ(a,1);c3(a);return 3}function hj(a){a=a|0;var b=0;gI(a,1,5);cG(a,2);if((dF(a,1)|0)!=0){b=2;return b|0}c3(a);b=1;return b|0}function hk(a){a=a|0;var b=0,c=0;cG(a,1);dH(a,0)|0;if((cX(a,1)|0)==0){return 1}if((cK(a,1)|0)==1){di(a,0,0);cJ(a,-1);c6(a,1);dn(a,-10003)}else{if((dj(a,1)|0)==0){b=1779}else{dg(a,-10003);c=cX(a,-1)|0;cG(a,-2);if((c|0)==0){b=1779}}if((b|0)==1779){gy(a,1,7680)|0}dj(a,1)|0}dq(a,2)|0;return 1}function hl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;gJ(a,1);if((cX(a,1)|0)==0){d=gD(a,2,2632,0)|0;e=gz(a,2664,(f=i,i=i+8|0,c[f>>2]=d,f)|0)|0;i=f;g=e;i=b;return g|0}else{g=cF(a)|0;i=b;return g|0}return 0}function hm(a){a=a|0;var b=0,d=0,e=0;b=gC(a,1,2896,1336)|0;d=gN(a,2,0)|0;e=c[1304+(b<<2)>>2]|0;b=dD(a,e,d)|0;if((e|0)==3){c4(a,+(b|0)+ +(dD(a,4,0)|0)*.0009765625);return 1}else if((e|0)==5){c6(a,b);return 1}else{c4(a,+(b|0));return 1}return 0}function hn(a){a=a|0;var b=0,c=0;b=gD(a,1,0,0)|0;c=cF(a)|0;if((g0(a,b)|0)!=0){dE(a)|0}dw(a,0,-1);return(cF(a)|0)-c|0}function ho(a){a=a|0;var b=0,c=0;b=gN(a,2,1)|0;cG(a,1);if(!((cQ(a,1)|0)!=0&(b|0)>0)){c=dE(a)|0;return c|0}gB(a,b);cJ(a,1);dG(a,2);c=dE(a)|0;return c|0}function hp(a){a=a|0;c5(a,dD(a,3,0)|0);return 1}function hq(a){a=a|0;hI(a,1);if((cM(a,-1)|0)==0){dk(a,-1);return 1}else{cJ(a,-10002);return 1}return 0}function hr(a){a=a|0;gJ(a,1);if((dj(a,1)|0)==0){c3(a);return 1}else{gO(a,1,3752)|0;return 1}return 0}function hs(a){a=a|0;var b=0;if((g0(a,gD(a,1,0,0)|0)|0)==0){b=1;return b|0}c3(a);cI(a,-2);b=2;return b|0}function ht(a){a=a|0;var b=0,c=0;b=gD(a,2,3024,0)|0;gI(a,1,6);cG(a,3);if((dB(a,252,0,b)|0)==0){c=1;return c|0}c3(a);cI(a,-2);c=2;return c|0}function hu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+8|0;d=b|0;e=gE(a,1,d)|0;f=gD(a,2,e,0)|0;if((g2(a,e,c[d>>2]|0,f)|0)==0){g=1;i=b;return g|0}c3(a);cI(a,-2);g=2;i=b;return g|0}function hv(a){a=a|0;gJ(a,1);c6(a,(dx(a,(cF(a)|0)-1|0,-1,0)|0)==0|0);cI(a,1);return cF(a)|0}function hw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=cF(a)|0;df(a,-10002,4536);L2389:do{if((d|0)>=1){e=1;while(1){cJ(a,-1);cJ(a,e);dw(a,1,1);f=c0(a,-1,0)|0;if((f|0)==0){break}if((e|0)>1){g=c[o>>2]|0;av(9,g|0)|0}az(f|0,c[o>>2]|0)|0;cG(a,-2);e=e+1|0;if((e|0)>(d|0)){break L2389}}e=gz(a,3232,(f=i,i=i+1|0,i=i+7>>3<<3,c[f>>2]=0,f)|0)|0;i=f;h=e;i=b;return h|0}}while(0);av(10,c[o>>2]|0)|0;h=0;i=b;return h|0}function hx(a){a=a|0;gJ(a,1);gJ(a,2);c6(a,cT(a,1,2)|0);return 1}function hy(a){a=a|0;gI(a,1,5);gJ(a,2);cG(a,2);dg(a,1);return 1}function hz(a){a=a|0;gI(a,1,5);gJ(a,2);gJ(a,3);cG(a,3);dn(a,1);return 1}function hA(b){b=b|0;var c=0,d=0,e=0,f=0;c=cF(b)|0;do{if((cK(b,1)|0)==4){if((a[c0(b,1,0)|0]|0)!=35){break}c5(b,c-1|0);d=1;return d|0}}while(0);e=gM(b,1)|0;if((e|0)<0){f=e+c|0}else{f=(e|0)>(c|0)?c:e}if((f|0)<=0){gy(b,1,3296)|0}d=c-f|0;return d|0}function hB(a){a=a|0;var b=0,d=0;b=i;gI(a,2,5);hI(a,0);cJ(a,2);do{if((cS(a,1)|0)!=0){if(+cW(a,1)!=0.0){break}c8(a)|0;cI(a,-2);dv(a,-2)|0;d=0;i=b;return d|0}}while(0);do{if((cM(a,-2)|0)==0){if((dv(a,-2)|0)==0){break}else{d=1}i=b;return d|0}}while(0);gz(a,3640,(a=i,i=i+1|0,i=i+7>>3<<3,c[a>>2]=0,a)|0)|0;i=a;d=1;i=b;return d|0}function hC(a){a=a|0;var b=0,d=0,e=0;b=i;d=cK(a,2)|0;gI(a,1,5);if(!((d|0)==5|(d|0)==0)){gy(a,2,3816)|0}if((gO(a,1,3752)|0)==0){cG(a,2);e=dq(a,1)|0;i=b;return 1}gz(a,3696,(d=i,i=i+1|0,i=i+7>>3<<3,c[d>>2]=0,d)|0)|0;i=d;cG(a,2);e=dq(a,1)|0;i=b;return 1}function hD(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+8|0;f=e|0;g=gN(b,2,10)|0;do{if((g|0)==10){gJ(b,1);if((cS(b,1)|0)==0){break}c4(b,+cW(b,1));i=e;return 1}else{h=gE(b,1,0)|0;if((g-2|0)>>>0>=35){gy(b,2,3856)|0}j=as(h|0,f|0,g|0)|0;k=c[f>>2]|0;if((h|0)==(k|0)){break}if((aB(d[k]|0)|0)==0){l=k}else{h=k;do{h=h+1|0;}while((aB(d[h]|0)|0)!=0);c[f>>2]=h;l=h}if((a[l]|0)!=0){break}c4(b,+(j>>>0>>>0));i=e;return 1}}while(0);c3(b);i=e;return 1}function hE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;gJ(a,1);do{if((gP(a,1,4160)|0)==0){d=cK(a,1)|0;if((d|0)==1){da(a,(cX(a,1)|0)!=0?4096:4056);break}else if((d|0)==4){cJ(a,1);break}else if((d|0)==3){da(a,c0(a,1,0)|0);break}else if((d|0)==0){c9(a,4016,3);break}else{d=cL(a,cK(a,1)|0)|0;e=c2(a,1)|0;dc(a,3944,(f=i,i=i+16|0,c[f>>2]=d,c[f+8>>2]=e,f)|0)|0;i=f;break}}}while(0);i=b;return 1}function hF(a){a=a|0;gJ(a,1);da(a,cL(a,cK(a,1)|0)|0);return 1}function hG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;gI(a,1,5);d=gN(a,2,1)|0;if((cK(a,3)|0)<1){e=c1(a,1)|0}else{e=gM(a,3)|0}if((d|0)>(e|0)){f=0;i=b;return f|0}g=e-d|0;h=g+1|0;do{if((g|0)>=0){if((cN(a,h)|0)==0){break}dh(a,1,d);if((d|0)<(e|0)){j=d}else{f=h;i=b;return f|0}while(1){k=j+1|0;dh(a,1,k);if((k|0)<(e|0)){j=k}else{f=h;break}}i=b;return f|0}}while(0);h=gz(a,4192,(a=i,i=i+1|0,i=i+7>>3<<3,c[a>>2]=0,a)|0)|0;i=a;f=h;i=b;return f|0}function hH(a){a=a|0;gJ(a,2);cG(a,2);cI(a,1);c6(a,(dx(a,0,-1,1)|0)==0|0);cP(a,1);return cF(a)|0}function hI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+104|0;e=d|0;if((cK(a,1)|0)==6){cJ(a,1);i=d;return}if((b|0)==0){f=gM(a,1)|0}else{f=gN(a,1,1)|0}if((f|0)<=-1){gy(a,1,3608)|0}if((ej(a,f,e)|0)==0){gy(a,1,3560)|0}en(a,3552,e)|0;if((cK(a,-1)|0)!=0){i=d;return}gz(a,3448,(a=i,i=i+8|0,c[a>>2]=f,a)|0)|0;i=a;i=d;return}function hJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;b=i;gH(a,2,2992);cJ(a,1);dw(a,0,1);if((cK(a,-1)|0)==0){c[d>>2]=0;e=0;i=b;return e|0}if((cQ(a,-1)|0)==0){gz(a,2952,(f=i,i=i+1|0,i=i+7>>3<<3,c[f>>2]=0,f)|0)|0;i=f;e=0;i=b;return e|0}else{cP(a,3);e=c0(a,3,d)|0;i=b;return e|0}return 0}function hK(a){a=a|0;gQ(a,5440,1688);return 1}function hL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+256|0;aw(4080,11,1,c[n>>2]|0)|0;d=b|0;if((aS(d|0,250,c[m>>2]|0)|0)==0){i=b;return 0}while(1){if((aL(d|0,4040)|0)==0){e=1950;break}if((g2(a,d,j_(d|0)|0,3984)|0)==0){if((dx(a,0,0,0)|0)!=0){e=1948}}else{e=1948}if((e|0)==1948){e=0;f=c0(a,-1,0)|0;g=c[n>>2]|0;az(f|0,g|0)|0;g=c[n>>2]|0;av(10,g|0)|0}cG(a,0);aw(4080,11,1,c[n>>2]|0)|0;if((aS(d|0,250,c[m>>2]|0)|0)==0){e=1951;break}}if((e|0)==1951){i=b;return 0}else if((e|0)==1950){i=b;return 0}return 0}function hM(a){a=a|0;gJ(a,1);dk(a,1);return 1}function hN(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;c=i;i=i+8|0;d=c|0;if((cK(b,1)|0)==8){e=c_(b,1)|0}else{e=b}f=eh(e)|0;g=eg(e)|0;if((g|0)!=0&(g|0)!=262){c9(b,4144,13)}else{h$(b);c7(b,e);dg(b,-2);cH(b,-2)}g=d|0;if((f&1|0)==0){h=0}else{a[g]=99;h=1}if((f&2|0)==0){j=h}else{a[d+h|0]=114;j=h+1|0}if((f&4|0)==0){k=j;l=d+k|0;a[l]=0;da(b,g);m=ei(e)|0;c5(b,m);i=c;return 3}a[d+j|0]=108;k=j+1|0;l=d+k|0;a[l]=0;da(b,g);m=ei(e)|0;c5(b,m);i=c;return 3}function hO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+104|0;d=b|0;if((cK(a,1)|0)==8){e=c_(a,1)|0;f=1}else{e=a;f=0}g=f|2;h=gD(a,g,5744,0)|0;j=f+1|0;do{if((cS(a,j)|0)==0){if((cK(a,j)|0)==6){dc(a,5648,(f=i,i=i+8|0,c[f>>2]=h,f)|0)|0;i=f;f=c0(a,-1,0)|0;cJ(a,j);cC(a,e,1);k=f;break}l=gy(a,j,5560)|0;i=b;return l|0}else{if((ej(e,c$(a,j)|0,d)|0)!=0){k=h;break}c3(a);l=1;i=b;return l|0}}while(0);if((en(e,k,d)|0)==0){l=gy(a,g,5424)|0;i=b;return l|0}di(a,0,2);if((aU(k|0,83)|0)!=0){da(a,c[d+16>>2]|0);dm(a,-2,5320);da(a,d+36|0);dm(a,-2,5208);c5(a,c[d+28>>2]|0);dm(a,-2,5072);c5(a,c[d+32>>2]|0);dm(a,-2,4920);da(a,c[d+12>>2]|0);dm(a,-2,4816)}if((aU(k|0,108)|0)!=0){c5(a,c[d+20>>2]|0);dm(a,-2,4616)}if((aU(k|0,117)|0)!=0){c5(a,c[d+24>>2]|0);dm(a,-2,4528)}if((aU(k|0,110)|0)!=0){da(a,c[d+4>>2]|0);dm(a,-2,4448);da(a,c[d+8>>2]|0);dm(a,-2,4320)}if((aU(k|0,76)|0)!=0){if((e|0)==(a|0)){cJ(a,-2);cH(a,-3)}else{cC(e,a,1)}dm(a,-2,4232)}if((aU(k|0,102)|0)==0){l=1;i=b;return l|0}if((e|0)==(a|0)){cJ(a,-2);cH(a,-3)}else{cC(e,a,1)}dm(a,-2,4184);l=1;i=b;return l|0}function hP(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=i;i=i+104|0;c=b|0;if((cK(a,1)|0)==8){d=c_(a,1)|0;e=1}else{d=a;e=0}f=e+1|0;if((ej(d,gM(a,f)|0,c)|0)==0){g=gy(a,f,6880)|0;i=b;return g|0}f=el(d,c,gM(a,e|2)|0)|0;if((f|0)==0){c3(a);g=1;i=b;return g|0}else{cC(d,a,1);da(a,f);cJ(a,-2);g=2;i=b;return g|0}return 0}function hQ(a){a=a|0;cJ(a,-1e4);return 1}function hR(a){a=a|0;gJ(a,1);if((dj(a,1)|0)!=0){return 1}c3(a);return 1}function hS(a){a=a|0;return hZ(a,1)|0}function hT(a){a=a|0;var b=0;b=i;gI(a,2,5);cG(a,2);if((dv(a,1)|0)!=0){i=b;return 1}gz(a,5848,(a=i,i=i+1|0,i=i+7>>3<<3,c[a>>2]=0,a)|0)|0;i=a;i=b;return 1}function hU(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if((cK(a,1)|0)==8){b=c_(a,1)|0;c=1}else{b=a;c=0}d=c+1|0;if((cK(a,d)|0)<1){cG(a,d);e=0;f=0;g=0}else{h=gE(a,c|2,0)|0;gI(a,d,6);i=gN(a,c+3|0,0)|0;c=(aU(h|0,99)|0)!=0|0;j=(aU(h|0,114)|0)==0?c:c|2;c=(aU(h|0,108)|0)==0?j:j|4;e=(i|0)>0?c|8:c;f=i;g=262}h$(a);c7(a,b);cJ(a,d);dn(a,-3);cG(a,-2);ef(b,g,e,f)|0;return 0}function hV(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=i;i=i+104|0;c=b|0;if((cK(a,1)|0)==8){d=c_(a,1)|0;e=1}else{d=a;e=0}f=e+1|0;if((ej(d,gM(a,f)|0,c)|0)==0){g=gy(a,f,6880)|0;i=b;return g|0}else{f=e+3|0;gJ(a,f);cG(a,f);cC(a,d,1);da(a,em(d,c,gM(a,e|2)|0)|0);g=1;i=b;return g|0}return 0}function hW(a){a=a|0;var b=0;b=cK(a,2)|0;if(!((b|0)==5|(b|0)==0)){gy(a,2,7072)|0}cG(a,2);c6(a,dq(a,1)|0);return 1}function hX(a){a=a|0;gJ(a,3);return hZ(a,0)|0}function hY(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=i;i=i+104|0;e=d|0;if((cK(b,1)|0)==8){f=c_(b,1)|0;g=1}else{f=b;g=0}h=g|2;if((cS(b,h)|0)==0){j=(f|0)==(b|0)|0}else{k=c$(b,h)|0;cG(b,-2);j=k}do{if((cF(b)|0)==(g|0)){c9(b,10568,0)}else{if((cQ(b,g+1|0)|0)==0){i=d;return 1}else{c9(b,9240,1);break}}}while(0);c9(b,9096,16);k=e+36|0;h=e+20|0;l=e+8|0;m=e+12|0;n=e+28|0;o=e+4|0;p=1;q=j;L2655:while(1){j=q+1|0;r=q+11|0;L2657:do{if((j|0)<13){if((ej(f,q,e)|0)==0){break L2655}else{s=p}}else{t=p;while(1){if((ej(f,q,e)|0)==0){break L2655}if((t|0)==0){s=0;break L2657}if((ej(f,r,e)|0)==0){t=0}else{break}}c9(b,8960,5);t=j;while(1){if((ej(f,t+10|0,e)|0)==0){p=0;q=t;continue L2655}else{t=t+1|0}}}}while(0);c9(b,8808,2);en(f,8608,e)|0;dc(b,8424,(r=i,i=i+8|0,c[r>>2]=k,r)|0)|0;i=r;t=c[h>>2]|0;if((t|0)>0){dc(b,8208,(r=i,i=i+8|0,c[r>>2]=t,r)|0)|0;i=r}do{if((a[c[l>>2]|0]|0)==0){t=a[c[m>>2]|0]|0;if((t<<24>>24|0)==109){dc(b,7664,(r=i,i=i+1|0,i=i+7>>3<<3,c[r>>2]=0,r)|0)|0;i=r;break}else if((t<<24>>24|0)==67|(t<<24>>24|0)==116){c9(b,7504,2);break}else{t=c[n>>2]|0;dc(b,7240,(r=i,i=i+16|0,c[r>>2]=k,c[r+8>>2]=t,r)|0)|0;i=r;break}}else{t=c[o>>2]|0;dc(b,7920,(r=i,i=i+8|0,c[r>>2]=t,r)|0)|0;i=r}}while(0);dG(b,(cF(b)|0)-g|0);p=s;q=j}dG(b,(cF(b)|0)-g|0);i=d;return 1}function hZ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=gM(a,2)|0;gI(a,1,6);if((cM(a,1)|0)!=0){d=0;return d|0}if((b|0)==0){e=dJ(a,1,c)|0}else{e=du(a,1,c)|0}if((e|0)==0){d=0;return d|0}da(a,e);cI(a,~b);d=b+1|0;return d|0}function h_(a,b){a=a|0;b=b|0;var d=0;c7(a,10472);dg(a,-1e4);c7(a,a);dg(a,-2);if((cK(a,-1)|0)!=6){return}da(a,c[1488+(c[b>>2]<<2)>>2]|0);d=c[b+20>>2]|0;if((d|0)>-1){c5(a,d)}else{c3(a)}dw(a,2,0);return}function h$(a){a=a|0;c7(a,10472);dg(a,-1e4);if((cK(a,-1)|0)==5){return}cG(a,-2);di(a,0,1);c7(a,10472);cJ(a,-2);dn(a,-1e4);return}function h0(a){a=a|0;var b=0,d=0;gF(a,3848)|0;cJ(a,-1);dm(a,-2,5840);gQ(a,0,1512);di(a,0,1);dd(a,550,0);dm(a,-2,6128);cP(a,-10001);gQ(a,4712,1392);di(a,0,1);dd(a,402,0);dm(a,-2,6128);b=c[m>>2]|0;d=dH(a,4)|0;c[d>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;c[d>>2]=b;cJ(a,-1);dp(a,-10001,1);cJ(a,-2);dv(a,-2)|0;dm(a,-3,9496);b=c[o>>2]|0;d=dH(a,4)|0;c[d>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;c[d>>2]=b;cJ(a,-1);dp(a,-10001,2);cJ(a,-2);dv(a,-2)|0;dm(a,-3,7528);b=c[n>>2]|0;d=dH(a,4)|0;c[d>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;c[d>>2]=b;cJ(a,-2);dv(a,-2)|0;dm(a,-3,5760);cG(a,-2);df(a,-1,4552);di(a,0,1);dd(a,538,0);dm(a,-2,6128);dv(a,-2)|0;cG(a,-2);return 1}function h1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=gG(a,1,3848)|0;e=(ar(c[d>>2]|0)|0)==0;c[d>>2]=0;d=c[(bE()|0)>>2]|0;if(e){c6(a,1);f=1;i=b;return f|0}else{c3(a);e=bF(d|0)|0;dc(a,2752,(g=i,i=i+8|0,c[g>>2]=e,g)|0)|0;i=g;c5(a,d);f=3;i=b;return f|0}return 0}function h2(a){a=a|0;c3(a);c9(a,2392,26);return 2}function h3(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[(gG(a,1,3848)|0)>>2]=0;d=c[(bE()|0)>>2]|0;c3(a);e=bF(d|0)|0;dc(a,2752,(f=i,i=i+8|0,c[f>>2]=e,f)|0)|0;i=f;c5(a,d);i=b;return 3}function h4(a){a=a|0;var b=0,d=0;b=i;if((cK(a,1)|0)==-1){dh(a,-10001,2)}if((c[(gG(a,1,3848)|0)>>2]|0)==0){gz(a,6504,(d=i,i=i+1|0,i=i+7>>3<<3,c[d>>2]=0,d)|0)|0;i=d}dk(a,1);df(a,-1,6128);d=cd[(cY(a,-1)|0)&1023](a)|0;i=b;return d|0}function h5(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;dh(a,-10001,2);d=c[(cZ(a,-1)|0)>>2]|0;if((d|0)==0){gz(a,8576,(e=i,i=i+8|0,c[e>>2]=9432,e)|0)|0;i=e}f=(au(d|0)|0)==0;d=c[(bE()|0)>>2]|0;if(f){c6(a,1);g=1;i=b;return g|0}else{c3(a);f=bF(d|0)|0;dc(a,2752,(e=i,i=i+8|0,c[e>>2]=f,e)|0)|0;i=e;c5(a,d);g=3;i=b;return g|0}return 0}function h6(a){a=a|0;ik(a,1,6872);return 1}function h7(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;if((cK(a,1)|0)<1){dh(a,-10001,1);if((c[(gG(a,1,3848)|0)>>2]|0)==0){gz(a,6504,(d=i,i=i+1|0,i=i+7>>3<<3,c[d>>2]=0,d)|0)|0;i=d}cJ(a,1);c6(a,0);dd(a,396,2);i=b;return 1}else{e=gE(a,1,0)|0;f=dH(a,4)|0;c[f>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;g=bl(e|0,6872)|0;c[f>>2]=g;if((g|0)==0){g=bF(c[(bE()|0)>>2]|0)|0;dc(a,3224,(d=i,i=i+16|0,c[d>>2]=e,c[d+8>>2]=g,d)|0)|0;i=d;d=c0(a,-1,0)|0;gy(a,1,d)|0}cJ(a,cF(a)|0);c6(a,1);dd(a,396,2);i=b;return 1}return 0}function h8(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=gE(a,1,0)|0;e=gD(a,2,6872,0)|0;f=dH(a,4)|0;c[f>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;g=bl(d|0,e|0)|0;c[f>>2]=g;if((g|0)!=0){h=1;i=b;return h|0}g=c[(bE()|0)>>2]|0;c3(a);f=bF(g|0)|0;if((d|0)==0){dc(a,2752,(j=i,i=i+8|0,c[j>>2]=f,j)|0)|0;i=j}else{dc(a,3224,(j=i,i=i+16|0,c[j>>2]=d,c[j+8>>2]=f,j)|0)|0;i=j}c5(a,g);h=3;i=b;return h|0}function h9(a){a=a|0;ik(a,2,6664);return 1}function ia(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=gE(a,1,0)|0;gD(a,2,6872,0)|0;e=dH(a,4)|0;c[e>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;gz(a,6768,(f=i,i=i+1|0,i=i+7>>3<<3,c[f>>2]=0,f)|0)|0;i=f;c[e>>2]=0;e=c[(bE()|0)>>2]|0;c3(a);g=bF(e|0)|0;if((d|0)==0){dc(a,2752,(f=i,i=i+8|0,c[f>>2]=g,f)|0)|0;i=f;c5(a,e);i=b;return 3}else{dc(a,3224,(f=i,i=i+16|0,c[f>>2]=d,c[f+8>>2]=g,f)|0)|0;i=f;c5(a,e);i=b;return 3}return 0}function ib(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;dh(a,-10001,1);d=c[(cZ(a,-1)|0)>>2]|0;if((d|0)!=0){e=ih(a,d,1)|0;i=b;return e|0}gz(a,8576,(f=i,i=i+8|0,c[f>>2]=10144,f)|0)|0;i=f;e=ih(a,d,1)|0;i=b;return e|0}function ic(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=dH(a,4)|0;c[d>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;e=aO()|0;c[d>>2]=e;if((e|0)!=0){f=1;i=b;return f|0}e=c[(bE()|0)>>2]|0;c3(a);d=bF(e|0)|0;dc(a,2752,(g=i,i=i+8|0,c[g>>2]=d,g)|0)|0;i=g;c5(a,e);f=3;i=b;return f|0}function id(a){a=a|0;var b=0;gJ(a,1);b=cZ(a,1)|0;df(a,-1e4,3848);do{if((b|0)!=0){if((dj(a,1)|0)==0){break}if((cT(a,-2,-1)|0)==0){break}if((c[b>>2]|0)==0){c9(a,8192,11);return 1}else{c9(a,7912,4);return 1}}}while(0);c3(a);return 1}function ie(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;dh(a,-10001,2);d=c[(cZ(a,-1)|0)>>2]|0;if((d|0)!=0){e=ig(a,d,1)|0;i=b;return e|0}gz(a,8576,(f=i,i=i+8|0,c[f>>2]=9432,f)|0)|0;i=f;e=ig(a,d,1)|0;i=b;return e|0}function ig(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0;e=i;i=i+8|0;f=e|0;g=(cF(a)|0)-1|0;do{if((g|0)==0){bE()|0}else{j=1;k=d;l=g;while(1){do{if((cK(a,k)|0)==3){if((j|0)==0){m=0;break}n=+cW(a,k);o=bN(b|0,8416,(p=i,i=i+8|0,h[p>>3]=n,p)|0)|0;i=p;m=(o|0)>0|0}else{o=gE(a,k,f)|0;if((j|0)==0){m=0;break}q=aw(o|0,1,c[f>>2]|0,b|0)|0;m=(q|0)==(c[f>>2]|0)|0}}while(0);q=l-1|0;if((q|0)==0){break}else{j=m;k=k+1|0;l=q}}l=c[(bE()|0)>>2]|0;if((m|0)!=0){break}c3(a);k=bF(l|0)|0;dc(a,2752,(p=i,i=i+8|0,c[p>>2]=k,p)|0)|0;i=p;c5(a,l);r=3;i=e;return r|0}}while(0);c6(a,1);r=1;i=e;return r|0}function ih(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=i;i=i+8|0;g=f|0;j=cF(b)|0;bV(d|0);L2804:do{if((j|0)==1){k=e+1|0;l=ii(b,d)|0}else{gH(b,j+19|0,7640);m=e;n=j-2|0;L2806:while(1){do{if((cK(b,m)|0)==3){o=c$(b,m)|0;if((o|0)==0){p=aQ(d|0)|0;bI(p|0,d|0)|0;c9(b,0,0);q=(p|0)!=-1|0;break}else{q=ij(b,d,o)|0;break}}else{o=c0(b,m,0)|0;if((o|0)==0){r=2193}else{if((a[o]|0)!=42){r=2193}}if((r|0)==2193){r=0;gy(b,m,7488)|0}p=a[o+1|0]|0;if((p|0)==108){q=ii(b,d)|0;break}else if((p|0)==97){ij(b,d,-1)|0;q=1;break}else if((p|0)==110){p=aH(d|0,7056,(s=i,i=i+8|0,c[s>>2]=g,s)|0)|0;i=s;if((p|0)!=1){r=2197;break L2806}c4(b,+h[g>>3]);q=1;break}else{break L2806}}}while(0);p=m+1|0;if((n|0)==0|(q|0)==0){k=p;l=q;break L2804}else{m=p;n=n-1|0}}if((r|0)==2197){c3(b);k=m+1|0;l=0;break}t=gy(b,m,7216)|0;i=f;return t|0}}while(0);if((a4(d|0)|0)!=0){d=c[(bE()|0)>>2]|0;c3(b);r=bF(d|0)|0;dc(b,2752,(s=i,i=i+8|0,c[s>>2]=r,s)|0)|0;i=s;c5(b,d);t=3;i=f;return t|0}if((l|0)==0){cG(b,-2);c3(b)}t=k-e|0;i=f;return t|0}function ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+1040|0;f=e|0;gt(b,f);g=gY(f)|0;L2840:do{if((aS(g|0,1024,d|0)|0)!=0){h=f|0;j=g;while(1){k=j_(j|0)|0;if((k|0)!=0){l=k-1|0;if((a[j+l|0]|0)==10){break}}c[h>>2]=(c[h>>2]|0)+k;j=gY(f)|0;if((aS(j|0,1024,d|0)|0)==0){break L2840}}c[h>>2]=(c[h>>2]|0)+l;gX(f);m=1;i=e;return m|0}}while(0);gX(f);m=(c1(b,-1)|0)!=0|0;i=e;return m|0}function ij(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+1040|0;f=e|0;gt(a,f);g=f|0;h=d;d=1024;while(1){j=d>>>0>h>>>0?h:d;k=bw(gY(f)|0,1,j|0,b|0)|0;c[g>>2]=(c[g>>2]|0)+k;if((h|0)==(k|0)){l=2223;break}if((k|0)==(j|0)){h=h-k|0;d=j}else{l=2225;break}}if((l|0)==2225){gX(f);m=(c1(a,-1)|0)!=0|0;i=e;return m|0}else if((l|0)==2223){gX(f);m=1;i=e;return m|0}return 0}function ik(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;if((cK(a,1)|0)<1){dh(a,-10001,b);i=e;return}f=c0(a,1,0)|0;do{if((f|0)==0){if((c[(gG(a,1,3848)|0)>>2]|0)==0){gz(a,6504,(g=i,i=i+1|0,i=i+7>>3<<3,c[g>>2]=0,g)|0)|0;i=g}cJ(a,1)}else{h=dH(a,4)|0;c[h>>2]=0;df(a,-1e4,3848);dq(a,-2)|0;j=bl(f|0,d|0)|0;c[h>>2]=j;if((j|0)!=0){break}j=bF(c[(bE()|0)>>2]|0)|0;dc(a,3224,(g=i,i=i+16|0,c[g>>2]=f,c[g+8>>2]=j,g)|0)|0;i=g;j=c0(a,-1,0)|0;gy(a,1,j)|0}}while(0);dp(a,-10001,b);dh(a,-10001,b);i=e;return}function il(a){a=a|0;var b=0,d=0;b=i;if((c[(gG(a,1,3848)|0)>>2]|0)==0){gz(a,6504,(d=i,i=i+1|0,i=i+7>>3<<3,c[d>>2]=0,d)|0)|0;i=d}cJ(a,1);c6(a,0);dd(a,396,2);i=b;return 1}function im(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=c[(cZ(a,-10003)|0)>>2]|0;if((d|0)==0){gz(a,6344,(e=i,i=i+1|0,i=i+7>>3<<3,c[e>>2]=0,e)|0)|0;i=e}f=ii(a,d)|0;if((a4(d|0)|0)!=0){d=bF(c[(bE()|0)>>2]|0)|0;g=gz(a,2752,(e=i,i=i+8|0,c[e>>2]=d,e)|0)|0;i=e;h=g;i=b;return h|0}if((f|0)!=0){h=1;i=b;return h|0}if((cX(a,-10004)|0)==0){h=0;i=b;return h|0}cG(a,0);cJ(a,-10003);dk(a,1);df(a,-1,6128);cd[(cY(a,-1)|0)&1023](a)|0;h=0;i=b;return h|0}function io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=gG(a,1,3848)|0;e=c[d>>2]|0;if((e|0)==0){gz(a,6504,(f=i,i=i+1|0,i=i+7>>3<<3,c[f>>2]=0,f)|0)|0;i=f;g=c[d>>2]|0}else{g=e}e=(au(g|0)|0)==0;g=c[(bE()|0)>>2]|0;if(e){c6(a,1);h=1;i=b;return h|0}else{c3(a);e=bF(g|0)|0;dc(a,2752,(f=i,i=i+8|0,c[f>>2]=e,f)|0)|0;i=f;c5(a,g);h=3;i=b;return h|0}return 0}function ip(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=gG(a,1,3848)|0;e=c[d>>2]|0;if((e|0)!=0){f=e;g=ih(a,f,2)|0;i=b;return g|0}gz(a,6504,(e=i,i=i+1|0,i=i+7>>3<<3,c[e>>2]=0,e)|0)|0;i=e;f=c[d>>2]|0;g=ih(a,f,2)|0;i=b;return g|0}function iq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=gG(a,1,3848)|0;e=c[d>>2]|0;if((e|0)==0){gz(a,6504,(f=i,i=i+1|0,i=i+7>>3<<3,c[f>>2]=0,f)|0)|0;i=f;g=c[d>>2]|0}else{g=e}e=gC(a,2,4520,1624)|0;d=gN(a,3,0)|0;if((bY(g|0,d|0,c[1640+(e<<2)>>2]|0)|0)==0){c5(a,aZ(g|0)|0);h=1;i=b;return h|0}else{g=c[(bE()|0)>>2]|0;c3(a);e=bF(g|0)|0;dc(a,2752,(f=i,i=i+8|0,c[f>>2]=e,f)|0)|0;i=f;c5(a,g);h=3;i=b;return h|0}return 0}function ir(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=gG(a,1,3848)|0;e=c[d>>2]|0;if((e|0)==0){gz(a,6504,(f=i,i=i+1|0,i=i+7>>3<<3,c[f>>2]=0,f)|0)|0;i=f;g=c[d>>2]|0}else{g=e}e=gC(a,2,0,1592)|0;d=gN(a,3,1024)|0;h=(cc(g|0,0,c[1608+(e<<2)>>2]|0,d|0)|0)==0;d=c[(bE()|0)>>2]|0;if(h){c6(a,1);j=1;i=b;return j|0}else{c3(a);h=bF(d|0)|0;dc(a,2752,(f=i,i=i+8|0,c[f>>2]=h,f)|0)|0;i=f;c5(a,d);j=3;i=b;return j|0}return 0}function is(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=gG(a,1,3848)|0;e=c[d>>2]|0;if((e|0)!=0){f=e;g=ig(a,f,2)|0;i=b;return g|0}gz(a,6504,(e=i,i=i+1|0,i=i+7>>3<<3,c[e>>2]=0,e)|0)|0;i=e;f=c[d>>2]|0;g=ig(a,f,2)|0;i=b;return g|0}function it(a){a=a|0;if((c[(gG(a,1,3848)|0)>>2]|0)==0){return 0}dk(a,1);df(a,-1,6128);cd[(cY(a,-1)|0)&1023](a)|0;return 0}function iu(a){a=a|0;var b=0,d=0;b=i;d=c[(gG(a,1,3848)|0)>>2]|0;if((d|0)==0){c9(a,5304,13);i=b;return 1}else{dc(a,5192,(a=i,i=i+8|0,c[a>>2]=d,a)|0)|0;i=a;i=b;return 1}return 0}function iv(a){a=a|0;gQ(a,4248,512);c4(a,3.141592653589793);dm(a,-2,9336);c4(a,+q);dm(a,-2,7384);df(a,-1,5712);dm(a,-2,4512);return 1}function iw(a){a=a|0;c4(a,+P(+(+gK(a,1))));return 1}function ix(a){a=a|0;c4(a,+V(+(+gK(a,1))));return 1}function iy(a){a=a|0;c4(a,+W(+(+gK(a,1))));return 1}function iz(a){a=a|0;var b=0.0;b=+gK(a,1);c4(a,+Y(+b,+(+gK(a,2))));return 1}function iA(a){a=a|0;c4(a,+X(+(+gK(a,1))));return 1}function iB(a){a=a|0;c4(a,+$(+(+gK(a,1))));return 1}function iC(a){a=a|0;c4(a,+aR(+(+gK(a,1))));return 1}function iD(a){a=a|0;c4(a,+S(+(+gK(a,1))));return 1}function iE(a){a=a|0;c4(a,+gK(a,1)/.017453292519943295);return 1}function iF(a){a=a|0;c4(a,+Z(+(+gK(a,1))));return 1}function iG(a){a=a|0;c4(a,+O(+(+gK(a,1))));return 1}function iH(a){a=a|0;var b=0.0;b=+gK(a,1);c4(a,+aI(+b,+(+gK(a,2))));return 1}function iI(a){a=a|0;var b=0,d=0;b=i;i=i+8|0;d=b|0;c4(a,+bn(+(+gK(a,1)),d|0));c5(a,c[d>>2]|0);i=b;return 2}function iJ(a){a=a|0;var b=0.0;b=+gK(a,1);c4(a,+bi(+b,gM(a,2)|0));return 1}function iK(a){a=a|0;c4(a,+bv(+(+gK(a,1))));return 1}function iL(a){a=a|0;c4(a,+_(+(+gK(a,1))));return 1}function iM(a){a=a|0;var b=0,c=0.0,d=0.0,e=0,f=0.0,g=0.0,h=0;b=cF(a)|0;c=+gK(a,1);if((b|0)<2){d=c}else{e=2;f=c;while(1){c=+gK(a,e);g=c>f?c:f;h=e+1|0;if((h|0)>(b|0)){d=g;break}else{e=h;f=g}}}c4(a,d);return 1}function iN(a){a=a|0;var b=0,c=0.0,d=0.0,e=0,f=0.0,g=0.0,h=0;b=cF(a)|0;c=+gK(a,1);if((b|0)<2){d=c}else{e=2;f=c;while(1){c=+gK(a,e);g=c<f?c:f;h=e+1|0;if((h|0)>(b|0)){d=g;break}else{e=h;f=g}}}c4(a,d);return 1}function iO(a){a=a|0;var b=0,c=0,d=0.0;b=i;i=i+8|0;c=b|0;d=+aK(+(+gK(a,1)),c|0);c4(a,+h[c>>3]);c4(a,d);i=b;return 2}function iP(a){a=a|0;var b=0.0;b=+gK(a,1);c4(a,+R(+b,+(+gK(a,2))));return 1}function iQ(a){a=a|0;c4(a,+gK(a,1)*.017453292519943295);return 1}function iR(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,h=0;b=i;d=+((bf()|0)%2147483647|0|0)/2147483647.0;e=cF(a)|0;if((e|0)==1){f=gM(a,1)|0;if((f|0)<=0){gy(a,1,6104)|0}c4(a,+O(+(d*+(f|0)))+1.0);g=1;i=b;return g|0}else if((e|0)==2){f=gM(a,1)|0;h=gM(a,2)|0;if((f|0)>(h|0)){gy(a,2,6104)|0}c4(a,+(f|0)+ +O(+(d*+(1-f+h|0))));g=1;i=b;return g|0}else if((e|0)==0){c4(a,d);g=1;i=b;return g|0}else{e=gz(a,5808,(a=i,i=i+1|0,i=i+7>>3<<3,c[a>>2]=0,a)|0)|0;i=a;g=e;i=b;return g|0}return 0}function iS(a){a=a|0;bL(gM(a,1)|0);return 0}function iT(a){a=a|0;c4(a,+a7(+(+gK(a,1))));return 1}function iU(a){a=a|0;c4(a,+T(+(+gK(a,1))));return 1}function iV(a){a=a|0;c4(a,+Q(+(+gK(a,1))));return 1}function iW(a){a=a|0;c4(a,+bC(+(+gK(a,1))));return 1}function iX(a){a=a|0;c4(a,+U(+(+gK(a,1))));return 1}function iY(a){a=a|0;gQ(a,4064,88);return 1}function iZ(a){a=a|0;c4(a,+((aW()|0)>>>0>>>0)/1.0e3);return 1}function i_(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=i;i=i+1256|0;e=d|0;f=d+8|0;g=d+16|0;h=d+1056|0;j=gD(b,1,6856,0)|0;if((cK(b,2)|0)<1){k=cb(0)|0}else{k=~~+gK(b,2)}c[e>>2]=k;if((a[j]|0)==33){l=j+1|0;m=a5(e|0)|0}else{l=j;m=aC(e|0)|0}if((m|0)==0){c3(b);i=d;return 1}if((aL(l|0,6752)|0)==0){di(b,0,9);c5(b,c[m>>2]|0);dm(b,-2,9616);c5(b,c[m+4>>2]|0);dm(b,-2,9416);c5(b,c[m+8>>2]|0);dm(b,-2,9192);c5(b,c[m+12>>2]|0);dm(b,-2,9056);c5(b,(c[m+16>>2]|0)+1|0);dm(b,-2,8936);c5(b,(c[m+20>>2]|0)+1900|0);dm(b,-2,8760);c5(b,(c[m+24>>2]|0)+1|0);dm(b,-2,6648);c5(b,(c[m+28>>2]|0)+1|0);dm(b,-2,6488);e=c[m+32>>2]|0;if((e|0)<0){i=d;return 1}c6(b,e);dm(b,-2,8560);i=d;return 1}e=f|0;a[e]=37;a[f+2|0]=0;gt(b,g);b=g|0;j=g+1036|0;k=f+1|0;f=h|0;h=l;L3014:while(1){l=a[h]|0;do{if((l<<24>>24|0)==0){break L3014}else if((l<<24>>24|0)==37){n=h+1|0;o=a[n]|0;if(o<<24>>24==0){p=2362;break}a[k]=o;gV(g,f,be(f|0,200,e|0,m|0)|0);q=n}else{p=2362}}while(0);if((p|0)==2362){p=0;n=c[b>>2]|0;if(n>>>0<j>>>0){r=l;s=n}else{gY(g)|0;r=a[h]|0;s=c[b>>2]|0}c[b>>2]=s+1;a[s]=r;q=h}h=q+1|0}gX(g);i=d;return 1}function i$(a){a=a|0;var b=0;b=~~+gK(a,1);c4(a,+b7(b|0,~~+gL(a,2,0.0)|0));return 1}function i0(a){a=a|0;c5(a,bs(gD(a,1,0,0)|0)|0);return 1}function i1(a){a=a|0;da(a,bz(gE(a,1,0)|0)|0);return 1}function i2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=gE(a,1,0)|0;e=(aJ(d|0)|0)==0;f=c[(bE()|0)>>2]|0;if(e){c6(a,1);g=1;i=b;return g|0}else{c3(a);e=bF(f|0)|0;dc(a,7024,(h=i,i=i+16|0,c[h>>2]=d,c[h+8>>2]=e,h)|0)|0;i=h;c5(a,f);g=3;i=b;return g|0}return 0}function i3(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=gE(a,1,0)|0;e=(bJ(d|0,gE(a,2,0)|0)|0)==0;f=c[(bE()|0)>>2]|0;if(e){c6(a,1);g=1;i=b;return g|0}else{c3(a);e=bF(f|0)|0;dc(a,7024,(h=i,i=i+16|0,c[h>>2]=d,c[h+8>>2]=e,h)|0)|0;i=h;c5(a,f);g=3;i=b;return g|0}return 0}function i4(a){a=a|0;var b=0;b=gD(a,1,0,0)|0;da(a,bh(c[488+((gC(a,2,8176,456)|0)<<2)>>2]|0,b|0)|0);return 1}function i5(a){a=a|0;a_(gN(a,1,0)|0);return 0}function i6(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+48|0;d=b|0;if((cK(a,1)|0)<1){e=cb(0)|0}else{gI(a,1,5);cG(a,1);df(a,-1,9616);if((cS(a,-1)|0)==0){f=0}else{f=c$(a,-1)|0}cG(a,-2);c[d>>2]=f;df(a,-1,9416);if((cS(a,-1)|0)==0){g=0}else{g=c$(a,-1)|0}cG(a,-2);c[d+4>>2]=g;df(a,-1,9192);if((cS(a,-1)|0)==0){h=12}else{h=c$(a,-1)|0}cG(a,-2);c[d+8>>2]=h;df(a,-1,9056);if((cS(a,-1)|0)==0){h=gz(a,8368,(j=i,i=i+8|0,c[j>>2]=9056,j)|0)|0;i=j;k=h}else{h=c$(a,-1)|0;cG(a,-2);k=h}c[d+12>>2]=k;df(a,-1,8936);if((cS(a,-1)|0)==0){k=gz(a,8368,(j=i,i=i+8|0,c[j>>2]=8936,j)|0)|0;i=j;l=k}else{k=c$(a,-1)|0;cG(a,-2);l=k}c[d+16>>2]=l-1;df(a,-1,8760);if((cS(a,-1)|0)==0){l=gz(a,8368,(j=i,i=i+8|0,c[j>>2]=8760,j)|0)|0;i=j;m=l}else{l=c$(a,-1)|0;cG(a,-2);m=l}c[d+20>>2]=m-1900;df(a,-1,8560);if((cK(a,-1)|0)==0){n=-1}else{n=cX(a,-1)|0}cG(a,-2);c[d+32>>2]=n;e=br(d|0)|0}if((e|0)==-1){c3(a);i=b;return 1}else{c4(a,+(e|0));i=b;return 1}return 0}function i7(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+1024|0;d=b|0;if((aA(d|0)|0)==0){e=gz(a,9816,(f=i,i=i+1|0,i=i+7>>3<<3,c[f>>2]=0,f)|0)|0;i=f;g=e;i=b;return g|0}else{da(a,d);g=1;i=b;return g|0}return 0}function i8(a){a=a|0;gQ(a,3880,8);return 1}function i9(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+1048|0;d=b|0;e=b+1040|0;f=gD(a,2,10584,e)|0;gI(a,1,5);g=gN(a,3,1)|0;if((cK(a,4)|0)<1){h=c1(a,1)|0}else{h=gM(a,4)|0}gt(a,d);do{if((g|0)<(h|0)){j=g;do{dh(a,1,j);if((cQ(a,-1)|0)==0){k=cL(a,cK(a,-1)|0)|0;gz(a,9360,(l=i,i=i+16|0,c[l>>2]=k,c[l+8>>2]=j,l)|0)|0;i=l}gZ(d);gV(d,f,c[e>>2]|0);j=j+1|0;}while((j|0)<(h|0))}else{if((g|0)==(h|0)){break}gX(d);i=b;return 1}}while(0);dh(a,1,h);if((cQ(a,-1)|0)==0){g=cL(a,cK(a,-1)|0)|0;gz(a,9360,(l=i,i=i+16|0,c[l>>2]=g,c[l+8>>2]=h,l)|0)|0;i=l}gZ(d);gX(d);i=b;return 1}function ja(a){a=a|0;var b=0,c=0;gI(a,1,5);gI(a,2,6);c3(a);if((dF(a,1)|0)==0){b=0;return b|0}while(1){cJ(a,2);cJ(a,-3);cJ(a,-3);dw(a,2,1);if((cK(a,-1)|0)!=0){b=1;c=2443;break}cG(a,-3);if((dF(a,1)|0)==0){b=0;c=2442;break}}if((c|0)==2442){return b|0}else if((c|0)==2443){return b|0}return 0}function jb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;gI(a,1,5);b=c1(a,1)|0;gI(a,2,6);if((b|0)<1){c=0;return c|0}else{d=1}while(1){cJ(a,2);c5(a,d);dh(a,1,d);dw(a,2,1);if((cK(a,-1)|0)!=0){c=1;e=2450;break}cG(a,-2);f=d+1|0;if((f|0)>(b|0)){c=0;e=2448;break}else{d=f}}if((e|0)==2450){return c|0}else if((e|0)==2448){return c|0}return 0}function jc(a){a=a|0;gI(a,1,5);c5(a,c1(a,1)|0);return 1}function jd(a){a=a|0;var b=0.0,c=0.0,d=0.0;gI(a,1,5);c3(a);L3123:do{if((dF(a,1)|0)==0){b=0.0}else{c=0.0;while(1){while(1){cG(a,-2);if((cK(a,-1)|0)==3){d=+cW(a,-1);if(d>c){break}}if((dF(a,1)|0)==0){b=c;break L3123}}if((dF(a,1)|0)==0){b=d;break}else{c=d}}}}while(0);c4(a,b);return 1}function je(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;gI(a,1,5);d=(c1(a,1)|0)+1|0;e=cF(a)|0;do{if((e|0)==3){f=gM(a,2)|0;g=(f|0)>(d|0)?f:d;if((g|0)>(f|0)){h=g}else{j=f;break}while(1){g=h-1|0;dh(a,1,g);dp(a,1,h);if((g|0)>(f|0)){h=g}else{j=f;break}}}else if((e|0)==2){j=d}else{f=gz(a,9576,(g=i,i=i+1|0,i=i+7>>3<<3,c[g>>2]=0,g)|0)|0;i=g;k=f;i=b;return k|0}}while(0);dp(a,1,j);k=0;i=b;return k|0}function jf(a){a=a|0;var b=0,c=0,d=0,e=0;gI(a,1,5);b=c1(a,1)|0;c=gN(a,2,b)|0;if((c|0)<1|(c|0)>(b|0)){d=0;return d|0}dh(a,1,c);if((c|0)<(b|0)){e=c;while(1){c=e+1|0;dh(a,1,c);dp(a,1,e);if((c|0)<(b|0)){e=c}else{break}}}c3(a);dp(a,1,b);d=1;return d|0}function jg(a){a=a|0;var b=0,d=0;b=i;gI(a,1,5);gz(a,9776,(d=i,i=i+1|0,i=i+7>>3<<3,c[d>>2]=0,d)|0)|0;i=d;cJ(a,1);i=b;return 1}function jh(a){a=a|0;var b=0;gI(a,1,5);b=c1(a,1)|0;gH(a,40,10584);if((cK(a,2)|0)>=1){gI(a,2,6)}cG(a,2);ji(a,1,b);return 0}function ji(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;if((b|0)<(d|0)){f=b;g=d}else{i=e;return}while(1){dh(a,1,f);dh(a,1,g);if((jj(a,-1,-2)|0)==0){cG(a,-3)}else{dp(a,1,f);dp(a,1,g)}d=g-f|0;if((d|0)==1){h=2505;break}b=(g+f|0)/2|0;dh(a,1,b);dh(a,1,f);do{if((jj(a,-2,-1)|0)==0){cG(a,-2);dh(a,1,g);if((jj(a,-1,-2)|0)==0){cG(a,-3);break}else{dp(a,1,b);dp(a,1,g);break}}else{dp(a,1,b);dp(a,1,f)}}while(0);if((d|0)==2){h=2502;break}dh(a,1,b);cJ(a,-1);j=g-1|0;dh(a,1,j);dp(a,1,b);dp(a,1,j);k=j;l=f;while(1){m=l+1|0;dh(a,1,m);if((jj(a,-1,-2)|0)==0){n=l;o=m}else{p=m;while(1){if((p|0)>(g|0)){gz(a,10088,(q=i,i=i+1|0,i=i+7>>3<<3,c[q>>2]=0,q)|0)|0;i=q}cG(a,-2);m=p+1|0;dh(a,1,m);if((jj(a,-1,-2)|0)==0){n=p;o=m;break}else{p=m}}}p=k-1|0;dh(a,1,p);if((jj(a,-3,-1)|0)==0){r=p}else{m=p;while(1){if((m|0)<(f|0)){gz(a,10088,(q=i,i=i+1|0,i=i+7>>3<<3,c[q>>2]=0,q)|0)|0;i=q}cG(a,-2);p=m-1|0;dh(a,1,p);if((jj(a,-3,-1)|0)==0){r=p;break}else{m=p}}}if((r|0)<(o|0)){break}dp(a,1,o);dp(a,1,r);k=r;l=o}cG(a,-4);dh(a,1,j);dh(a,1,o);dp(a,1,j);dp(a,1,o);l=(o-f|0)<(g-o|0);k=n+2|0;b=l?k:f;d=l?g:n;ji(a,l?f:k,l?n:g);if((b|0)<(d|0)){f=b;g=d}else{h=2504;break}}if((h|0)==2502){i=e;return}else if((h|0)==2504){i=e;return}else if((h|0)==2505){i=e;return}}function jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((cK(a,2)|0)==0){d=cV(a,b,c)|0;return d|0}else{cJ(a,2);cJ(a,b-1|0);cJ(a,c-2|0);dw(a,2,1);c=cX(a,-1)|0;cG(a,-2);d=c;return d|0}return 0}function jk(a){a=a|0;gQ(a,3800,184);df(a,-1,9184);dm(a,-2,7192);di(a,0,1);c9(a,10536,0);cJ(a,-2);dq(a,-2)|0;cG(a,-2);cJ(a,-2);dm(a,-2,4424);cG(a,-2);return 1}function jl(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+8|0;e=b|0;f=gE(a,1,e)|0;g=gN(a,2,1)|0;if((g|0)<0){h=g+1+(c[e>>2]|0)|0}else{h=g}g=(h|0)<0?0:h;h=gN(a,3,g)|0;j=c[e>>2]|0;if((h|0)<0){k=h+1+j|0}else{k=h}h=(k|0)<0?0:k;k=(g|0)<1?1:g;g=h>>>0>j>>>0?j:h;if((k|0)>(g|0)){l=0;i=b;return l|0}h=g-k+1|0;if((g|0)==2147483647){gz(a,5040,(g=i,i=i+1|0,i=i+7>>3<<3,c[g>>2]=0,g)|0)|0;i=g}gH(a,h,5040);if((h|0)<=0){l=h;i=b;return l|0}g=k-1|0;k=0;while(1){c5(a,d[f+(g+k)|0]|0);j=k+1|0;if((j|0)<(h|0)){k=j}else{l=h;break}}i=b;return l|0}function jm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+1040|0;e=d|0;f=cF(b)|0;gt(b,e);if((f|0)<1){gX(e);i=d;return 1}g=e|0;h=e+1036|0;j=1;do{k=gM(b,j)|0;if((k&255|0)!=(k|0)){gy(b,j,5176)|0}l=c[g>>2]|0;if(l>>>0<h>>>0){m=l}else{gY(e)|0;m=c[g>>2]|0}c[g>>2]=m+1;a[m]=k&255;j=j+1|0;}while((j|0)<=(f|0));gX(e);i=d;return 1}function jn(a){a=a|0;var b=0,d=0;b=i;i=i+1040|0;d=b|0;gI(a,1,6);cG(a,1);gt(a,d);if((dC(a,252,d)|0)==0){gX(d);i=b;return 1}gz(a,5272,(a=i,i=i+1|0,i=i+7>>3<<3,c[a>>2]=0,a)|0)|0;i=a;gX(d);i=b;return 1}function jo(a){a=a|0;return jA(a,1)|0}function jp(b){b=b|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0;e=i;i=i+1600|0;f=e|0;g=e+8|0;j=e+16|0;k=e+1056|0;l=e+1592|0;m=cF(b)|0;n=gE(b,1,g)|0;o=c[g>>2]|0;g=n+o|0;gt(b,j);L3242:do{if((o|0)>0){p=j|0;q=j+1036|0;r=k|0;s=k+1|0;t=e+1080|0;u=n;v=1;L3244:while(1){x=u;while(1){y=a[x]|0;if(y<<24>>24==37){z=x+1|0;if((a[z]|0)!=37){break}A=c[p>>2]|0;if(A>>>0<q>>>0){B=37;C=A}else{gY(j)|0;B=a[z]|0;C=c[p>>2]|0}c[p>>2]=C+1;a[C]=B;D=x+2|0}else{A=c[p>>2]|0;if(A>>>0<q>>>0){E=y;F=A}else{gY(j)|0;E=a[x]|0;F=c[p>>2]|0}c[p>>2]=F+1;a[F]=E;D=x+1|0}if(D>>>0<g>>>0){x=D}else{break L3242}}v=v+1|0;if((v|0)>(m|0)){gy(b,v,6472)|0;G=z}else{G=z}while(1){x=a[G]|0;if(x<<24>>24==0){H=0;break}if((aM(5616,x<<24>>24|0,6)|0)==0){H=x;break}G=G+1|0}x=z;if((G-x|0)>>>0>5){gz(b,5512,(I=i,i=i+1|0,i=i+7>>3<<3,c[I>>2]=0,I)|0)|0;i=I;J=a[G]|0}else{J=H}A=((J&255)-48|0)>>>0<10?G+1|0:G;y=((d[A]|0)-48|0)>>>0<10?A+1|0:A;A=a[y]|0;do{if(A<<24>>24==46){K=y+1|0;L=((d[K]|0)-48|0)>>>0<10?y+2|0:K;K=a[L]|0;if(((K&255)-48|0)>>>0>=10){M=L;N=K;break}K=L+1|0;M=K;N=a[K]|0}else{M=y;N=A}}while(0);if(((N&255)-48|0)>>>0<10){gz(b,5360,(I=i,i=i+1|0,i=i+7>>3<<3,c[I>>2]=0,I)|0)|0;i=I}a[r]=37;A=M-x|0;j3(s|0,z|0,A+1|0)|0;a[k+(A+2)|0]=0;u=M+1|0;O=a[M]|0;L3277:do{switch(O|0){case 113:{A=gE(b,v,f)|0;y=c[p>>2]|0;if(y>>>0<q>>>0){P=y}else{gY(j)|0;P=c[p>>2]|0}c[p>>2]=P+1;a[P]=34;y=c[f>>2]|0;c[f>>2]=y-1;L3282:do{if((y|0)!=0){K=A;while(1){L=a[K]|0;switch(L<<24>>24|0){case 34:case 92:case 10:{Q=c[p>>2]|0;if(Q>>>0<q>>>0){R=Q}else{gY(j)|0;R=c[p>>2]|0}c[p>>2]=R+1;a[R]=92;Q=c[p>>2]|0;if(Q>>>0<q>>>0){S=Q}else{gY(j)|0;S=c[p>>2]|0}Q=a[K]|0;c[p>>2]=S+1;a[S]=Q;break};case 13:{gV(j,6080,2);break};case 0:{gV(j,5800,4);break};default:{Q=c[p>>2]|0;if(Q>>>0<q>>>0){T=L;U=Q}else{gY(j)|0;T=a[K]|0;U=c[p>>2]|0}c[p>>2]=U+1;a[U]=T}}Q=c[f>>2]|0;c[f>>2]=Q-1;if((Q|0)==0){break L3282}else{K=K+1|0}}}}while(0);A=c[p>>2]|0;if(A>>>0<q>>>0){V=A}else{gY(j)|0;V=c[p>>2]|0}c[p>>2]=V+1;a[V]=34;break};case 115:{A=gE(b,v,l)|0;do{if((aU(r|0,46)|0)==0){if((c[l>>2]|0)>>>0<=99){break}cJ(b,v);gZ(j);break L3277}}while(0);a$(t|0,r|0,(I=i,i=i+8|0,c[I>>2]=A,I)|0)|0;i=I;W=2595;break};case 99:{y=~~+gK(b,v);a$(t|0,r|0,(I=i,i=i+8|0,c[I>>2]=y,I)|0)|0;i=I;W=2595;break};case 100:case 105:{y=j_(r|0)|0;K=k+(y-1)|0;Q=a[K]|0;L=K;w=108;a[L]=w&255;w=w>>8;a[L+1|0]=w&255;a[k+y|0]=Q;a[k+(y+1)|0]=0;y=~~+gK(b,v);a$(t|0,r|0,(I=i,i=i+8|0,c[I>>2]=y,I)|0)|0;i=I;W=2595;break};case 111:case 117:case 120:case 88:{y=j_(r|0)|0;Q=k+(y-1)|0;L=a[Q]|0;K=Q;w=108;a[K]=w&255;w=w>>8;a[K+1|0]=w&255;a[k+y|0]=L;a[k+(y+1)|0]=0;y=~~+gK(b,v);a$(t|0,r|0,(I=i,i=i+8|0,c[I>>2]=y,I)|0)|0;i=I;W=2595;break};case 101:case 69:case 102:case 103:case 71:{X=+gK(b,v);a$(t|0,r|0,(I=i,i=i+8|0,h[I>>3]=X,I)|0)|0;i=I;W=2595;break};default:{break L3244}}}while(0);if((W|0)==2595){W=0;gV(j,t,j_(t|0)|0)}if(u>>>0>=g>>>0){break L3242}}u=gz(b,6288,(I=i,i=i+8|0,c[I>>2]=O,I)|0)|0;i=I;Y=u;i=e;return Y|0}}while(0);gX(j);Y=1;i=e;return Y|0}function jq(a){a=a|0;var b=0,d=0;b=i;d=gz(a,6600,(a=i,i=i+1|0,i=i+7>>3<<3,c[a>>2]=0,a)|0)|0;i=a;i=b;return d|0}function jr(a){a=a|0;gE(a,1,0)|0;gE(a,2,0)|0;cG(a,2);c5(a,0);dd(a,286,3);return 1}function js(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;d=i;i=i+1328|0;e=d|0;f=d+8|0;g=d+16|0;h=d+288|0;j=gE(b,1,f)|0;k=gE(b,2,0)|0;l=cK(b,3)|0;m=gN(b,4,(c[f>>2]|0)+1|0)|0;n=(a[k]|0)==94;o=n?k+1|0:k;if(!((l-3|0)>>>0<2|(l|0)==6|(l|0)==5)){gy(b,3,6824)|0}gt(b,h);l=g+8|0;c[l>>2]=b;k=g|0;c[k>>2]=j;p=g+4|0;c[p>>2]=j+(c[f>>2]|0);f=g+12|0;q=h|0;r=h+1036|0;s=g+20|0;t=g+16|0;u=j;j=0;while(1){if((j|0)>=(m|0)){v=u;w=j;x=2646;break}c[f>>2]=0;y=jB(g,u,o)|0;if((y|0)==0){z=j;x=2640}else{A=j+1|0;B=c[l>>2]|0;C=cK(B,3)|0;do{if((C|0)==3|(C|0)==4){D=c0(c[l>>2]|0,3,e)|0;if((c[e>>2]|0)==0){break}E=y-u|0;F=0;do{G=D+F|0;H=a[G]|0;do{if(H<<24>>24==37){I=F+1|0;J=D+I|0;K=a[J]|0;if(((K&255)-48|0)>>>0<10){if(K<<24>>24==48){gV(h,u,E);L=I;break}else{jC(g,(K<<24>>24)-49|0,u,y);gZ(h);L=I;break}}else{M=c[q>>2]|0;if(M>>>0<r>>>0){N=K;O=M}else{gY(h)|0;N=a[J]|0;O=c[q>>2]|0}c[q>>2]=O+1;a[O]=N;L=I;break}}else{I=c[q>>2]|0;if(I>>>0<r>>>0){P=H;Q=I}else{gY(h)|0;P=a[G]|0;Q=c[q>>2]|0}c[q>>2]=Q+1;a[Q]=P;L=F}}while(0);F=L+1|0;}while(F>>>0<(c[e>>2]|0)>>>0)}else if((C|0)==6){cJ(B,3);F=c[f>>2]|0;E=(F|0)!=0|(u|0)==0?F:1;gH(c[l>>2]|0,E,8536);if((E|0)>0){F=0;do{jC(g,F,u,y);F=F+1|0;}while((F|0)<(E|0))}dw(B,E,1);x=2634}else if((C|0)==5){L3358:do{if((c[f>>2]|0)>0){F=c[s>>2]|0;do{if((F|0)==-1){D=c[l>>2]|0;gz(D,8104,(R=i,i=i+1|0,i=i+7>>3<<3,c[R>>2]=0,R)|0)|0;i=R;S=c[l>>2]|0;T=c[t>>2]|0}else{D=c[l>>2]|0;G=c[t>>2]|0;if((F|0)!=-2){S=D;T=G;break}c5(D,G+1-(c[k>>2]|0)|0);break L3358}}while(0);c9(S,T,F)}else{c9(c[l>>2]|0,u,y-u|0)}}while(0);de(B,3);x=2634}else{x=2634}}while(0);if((x|0)==2634){x=0;do{if((cX(B,-1)|0)==0){cG(B,-2);c9(B,u,y-u|0)}else{if((cQ(B,-1)|0)!=0){break}C=cL(B,cK(B,-1)|0)|0;gz(B,6712,(R=i,i=i+8|0,c[R>>2]=C,R)|0)|0;i=R}}while(0);gZ(h)}if(y>>>0>u>>>0){U=y;V=A}else{z=A;x=2640}}if((x|0)==2640){x=0;if(u>>>0>=(c[p>>2]|0)>>>0){v=u;w=z;x=2647;break}B=c[q>>2]|0;if(B>>>0<r>>>0){W=B}else{gY(h)|0;W=c[q>>2]|0}B=a[u]|0;c[q>>2]=W+1;a[W]=B;U=u+1|0;V=z}if(n){v=U;w=V;x=2648;break}else{u=U;j=V}}if((x|0)==2646){X=c[p>>2]|0;Y=X;Z=v;_=Y-Z|0;gV(h,v,_);gX(h);c5(b,w);i=d;return 2}else if((x|0)==2647){X=c[p>>2]|0;Y=X;Z=v;_=Y-Z|0;gV(h,v,_);gX(h);c5(b,w);i=d;return 2}else if((x|0)==2648){X=c[p>>2]|0;Y=X;Z=v;_=Y-Z|0;gV(h,v,_);gX(h);c5(b,w);i=d;return 2}return 0}function jt(a){a=a|0;var b=0,d=0;b=i;i=i+8|0;d=b|0;gE(a,1,d)|0;c5(a,c[d>>2]|0);i=b;return 1}function ju(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+1048|0;f=e|0;g=e+8|0;h=gE(b,1,f)|0;gt(b,g);if((c[f>>2]|0)==0){gX(g);i=e;return 1}b=g|0;j=g+1036|0;k=0;do{if((c[b>>2]|0)>>>0>=j>>>0){gY(g)|0}l=(j6(d[h+k|0]|0|0)|0)&255;m=c[b>>2]|0;c[b>>2]=m+1;a[m]=l;k=k+1|0;}while(k>>>0<(c[f>>2]|0)>>>0);gX(g);i=e;return 1}function jv(a){a=a|0;return jA(a,0)|0}function jw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+1048|0;d=b|0;e=b+8|0;f=gE(a,1,d)|0;g=gM(a,2)|0;gt(a,e);if((g|0)>0){h=g}else{gX(e);i=b;return 1}do{h=h-1|0;gV(e,f,c[d>>2]|0);}while((h|0)>0);gX(e);i=b;return 1}function jx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+1048|0;e=d|0;f=d+8|0;g=gE(b,1,e)|0;gt(b,f);b=c[e>>2]|0;h=b-1|0;c[e>>2]=h;if((b|0)==0){gX(f);i=d;return 1}b=f|0;j=f+1036|0;k=h;do{h=c[b>>2]|0;if(h>>>0<j>>>0){l=k;m=h}else{gY(f)|0;l=c[e>>2]|0;m=c[b>>2]|0}h=a[g+l|0]|0;c[b>>2]=m+1;a[m]=h;h=c[e>>2]|0;k=h-1|0;c[e>>2]=k;}while((h|0)!=0);gX(f);i=d;return 1}function jy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+8|0;d=b|0;e=gE(a,1,d)|0;f=gM(a,2)|0;if((f|0)<0){g=f+1+(c[d>>2]|0)|0}else{g=f}f=(g|0)<0?0:g;g=gN(a,3,-1)|0;h=c[d>>2]|0;if((g|0)<0){j=g+1+h|0}else{j=g}g=(j|0)<0?0:j;j=(f|0)<1?1:f;f=(g|0)>(h|0)?h:g;if((j|0)>(f|0)){c9(a,10536,0);i=b;return 1}else{c9(a,e+(j-1)|0,1-j+f|0);i=b;return 1}return 0}function jz(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+1048|0;f=e|0;g=e+8|0;h=gE(b,1,f)|0;gt(b,g);if((c[f>>2]|0)==0){gX(g);i=e;return 1}b=g|0;j=g+1036|0;k=0;do{if((c[b>>2]|0)>>>0>=j>>>0){gY(g)|0}l=(bj(d[h+k|0]|0|0)|0)&255;m=c[b>>2]|0;c[b>>2]=m+1;a[m]=l;k=k+1|0;}while(k>>>0<(c[f>>2]|0)>>>0);gX(g);i=e;return 1}function jA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;e=i;i=i+288|0;f=e|0;g=e+8|0;h=e+16|0;j=gE(b,1,f)|0;k=gE(b,2,g)|0;l=gN(b,3,1)|0;if((l|0)<0){m=l+1+(c[f>>2]|0)|0}else{m=l}l=(m|0)<0?-1:m-1|0;if((l|0)<0){n=0}else{m=c[f>>2]|0;n=l>>>0>m>>>0?m:l}l=(d|0)!=0;L3443:do{if(l){if((cX(b,4)|0)==0){if((b2(k|0,8744)|0)!=0){o=2706;break}}d=j+n|0;m=(c[f>>2]|0)-n|0;p=c[g>>2]|0;L3448:do{if((p|0)==0){if((d|0)==0){break L3443}else{q=d}}else{if(p>>>0>m>>>0){break L3443}r=p-1|0;if((r|0)==(m|0)){break L3443}s=a[k]|0;t=k+1|0;u=d;v=m-r|0;while(1){w=aM(u|0,s|0,v|0)|0;if((w|0)==0){break L3443}x=w+1|0;if((j5(x|0,t|0,r|0)|0)==0){q=w;break L3448}w=x;y=u+v|0;if((y|0)==(w|0)){break L3443}else{u=x;v=y-w|0}}}}while(0);m=q-j|0;c5(b,m+1|0);c5(b,m+(c[g>>2]|0)|0);z=2;i=e;return z|0}else{o=2706}}while(0);L3459:do{if((o|0)==2706){g=(a[k]|0)==94;q=g?k+1|0:k;m=j+n|0;d=h+8|0;c[d>>2]=b;c[h>>2]=j;p=h+4|0;c[p>>2]=j+(c[f>>2]|0);v=h+12|0;L3461:do{if(g){c[v>>2]=0;u=jB(h,m,q)|0;if((u|0)==0){break L3459}else{A=m;B=u}}else{u=m;while(1){c[v>>2]=0;r=jB(h,u,q)|0;if((r|0)!=0){A=u;B=r;break L3461}if(u>>>0>=(c[p>>2]|0)>>>0){break L3459}u=u+1|0}}}while(0);if(l){p=j;c5(b,1-p+A|0);c5(b,B-p|0);p=c[v>>2]|0;gH(c[d>>2]|0,p,8536);if((p|0)>0){q=0;do{jC(h,q,0,0);q=q+1|0;}while((q|0)<(p|0))}z=p+2|0;i=e;return z|0}else{q=c[v>>2]|0;m=(q|0)!=0|(A|0)==0?q:1;gH(c[d>>2]|0,m,8536);if((m|0)>0){C=0}else{z=m;i=e;return z|0}while(1){jC(h,C,A,B);q=C+1|0;if((q|0)<(m|0)){C=q}else{z=m;break}}i=e;return z|0}}}while(0);c3(b);z=1;i=e;return z|0}function jB(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0;g=i;h=b+4|0;j=b+8|0;k=b|0;l=b+12|0;m=e;e=f;L3484:while(1){n=m+1|0;f=m-1|0;o=e;L3486:while(1){p=a[o]|0;L3488:do{switch(p|0){case 36:{q=o+1|0;if((a[q]|0)==0){r=2800;break L3484}else{s=q;t=q}break};case 0:{u=m;r=2859;break L3484;break};case 41:{r=2737;break L3484;break};case 37:{q=o+1|0;v=a[q]|0;w=v<<24>>24;if((w|0)==98){r=2744;break L3486}else if((w|0)!=102){x=v&255;if((x-48|0)>>>0<10){r=2791;break L3486}else{y=q;r=2801;break L3488}}q=o+2|0;do{if((a[q]|0)==91){z=o+3|0;r=2761}else{v=c[j>>2]|0;gz(v,7848,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A;v=a[q]|0;w=o+3|0;if((v|0)==91){z=w;r=2761;break}else if((v|0)!=37){B=w;C=w;break}if((a[w]|0)==0){v=c[j>>2]|0;gz(v,7584,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A}B=o+4|0;C=w}}while(0);if((r|0)==2761){r=0;w=(a[z]|0)==94?o+4|0:z;v=w;D=a[w]|0;while(1){if(D<<24>>24==0){w=c[j>>2]|0;gz(w,7432,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A;E=a[v]|0}else{E=D}w=v+1|0;if(E<<24>>24==37){F=(a[w]|0)==0?w:v+2|0}else{F=w}w=a[F]|0;if(w<<24>>24==93){break}else{v=F;D=w}}B=F+1|0;C=z}if((m|0)==(c[k>>2]|0)){G=0}else{G=d[f]|0}D=B-1|0;v=(a[C]|0)==94;w=v?C:q;H=v&1;v=H^1;I=w+1|0;L3517:do{if(I>>>0<D>>>0){J=w;K=I;while(1){L=a[K]|0;M=J+2|0;N=a[M]|0;L3520:do{if(L<<24>>24==37){if((jE(G,N&255)|0)==0){O=M}else{P=v;break L3517}}else{do{if(N<<24>>24==45){Q=J+3|0;if(Q>>>0>=D>>>0){break}if((L&255)>>>0>G>>>0){O=Q;break L3520}if((d[Q]|0)>>>0<G>>>0){O=Q;break L3520}else{P=v;break L3517}}}while(0);if((L&255|0)==(G|0)){P=v;break L3517}else{O=K}}}while(0);L=O+1|0;if(L>>>0<D>>>0){J=O;K=L}else{P=H;break}}}else{P=H}}while(0);if((P|0)!=0){u=0;r=2870;break L3484}H=a[m]|0;v=H&255;I=(a[C]|0)==94;w=I?C:q;K=I&1;I=K^1;J=w+1|0;L3531:do{if(J>>>0<D>>>0){L=w;N=J;while(1){M=a[N]|0;Q=L+2|0;R=a[Q]|0;L3534:do{if(M<<24>>24==37){if((jE(v,R&255)|0)==0){S=Q}else{T=I;break L3531}}else{do{if(R<<24>>24==45){U=L+3|0;if(U>>>0>=D>>>0){break}if((M&255)>(H&255)){S=U;break L3534}if((d[U]|0)<(H&255)){S=U;break L3534}else{T=I;break L3531}}}while(0);if(M<<24>>24==H<<24>>24){T=I;break L3531}else{S=N}}}while(0);M=S+1|0;if(M>>>0<D>>>0){L=S;N=M}else{T=K;break}}}else{T=K}}while(0);if((T|0)==0){u=0;r=2853;break L3484}else{o=B;continue L3486}break};case 40:{r=2728;break L3484;break};default:{y=o+1|0;r=2801}}}while(0);do{if((r|0)==2801){r=0;if((p|0)==37){if((a[y]|0)==0){K=c[j>>2]|0;gz(K,7584,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A}s=o+2|0;t=y;break}else if((p|0)!=91){s=y;t=y;break}K=(a[y]|0)==94?o+2|0:y;D=K;I=a[K]|0;while(1){if(I<<24>>24==0){K=c[j>>2]|0;gz(K,7432,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A;V=a[D]|0}else{V=I}K=D+1|0;if(V<<24>>24==37){W=(a[K]|0)==0?K:D+2|0}else{W=K}K=a[W]|0;if(K<<24>>24==93){break}else{D=W;I=K}}s=W+1|0;t=y}}while(0);if(m>>>0<(c[h>>2]|0)>>>0){p=a[m]|0;I=p&255;D=a[o]|0;K=D<<24>>24;L3564:do{if((K|0)==37){X=jE(I,d[t]|0)|0}else if((K|0)==91){H=s-1|0;v=(a[t]|0)==94;J=v?t:o;w=v&1;v=w^1;q=J+1|0;if(q>>>0<H>>>0){Y=J;Z=q}else{X=w;break}while(1){q=a[Z]|0;J=Y+2|0;N=a[J]|0;L3569:do{if(q<<24>>24==37){if((jE(I,N&255)|0)==0){_=J}else{X=v;break L3564}}else{do{if(N<<24>>24==45){L=Y+3|0;if(L>>>0>=H>>>0){break}if((q&255)>(p&255)){_=L;break L3569}if((d[L]|0)<(p&255)){_=L;break L3569}else{X=v;break L3564}}}while(0);if(q<<24>>24==p<<24>>24){X=v;break L3564}else{_=Z}}}while(0);q=_+1|0;if(q>>>0<H>>>0){Y=_;Z=q}else{X=w;break}}}else if((K|0)==46){X=1}else{X=D<<24>>24==p<<24>>24|0}}while(0);$=(X|0)!=0}else{$=0}p=a[s]|0;if((p|0)==45){r=2827;break L3484}else if((p|0)==42){r=2831;break L3484}else if((p|0)==43){r=2832;break L3484}else if((p|0)!=63){r=2849;break}p=s+1|0;if(!$){o=p;continue}D=jB(b,n,p)|0;if((D|0)==0){o=p}else{u=D;r=2862;break L3484}}if((r|0)==2791){r=0;f=x-49|0;do{if((f|0)<0){r=2794}else{if((f|0)>=(c[l>>2]|0)){r=2794;break}D=c[b+16+(f<<3)+4>>2]|0;if((D|0)==-1){r=2794}else{aa=f;ab=D}}}while(0);if((r|0)==2794){r=0;f=gz(c[j>>2]|0,8344,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A;aa=f;ab=c[b+16+(f<<3)+4>>2]|0}if(((c[h>>2]|0)-m|0)>>>0<ab>>>0){u=0;r=2851;break}if((j5(c[b+16+(aa<<3)>>2]|0,m|0,ab|0)|0)!=0){u=0;r=2854;break}f=m+ab|0;if((f|0)==0){u=0;r=2855;break}m=f;e=o+2|0;continue}else if((r|0)==2744){r=0;f=o+2|0;D=a[f]|0;if(D<<24>>24==0){r=2746}else{if((a[o+3|0]|0)==0){r=2746}else{ac=D}}if((r|0)==2746){r=0;D=c[j>>2]|0;gz(D,7168,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A;ac=a[f]|0}if((a[m]|0)!=ac<<24>>24){u=0;r=2857;break}f=a[o+3|0]|0;D=c[h>>2]|0;if(n>>>0<D>>>0){ad=m;ae=1;af=n}else{u=0;r=2858;break}while(1){p=a[af]|0;if(p<<24>>24==f<<24>>24){K=ae-1|0;if((K|0)==0){break}else{ag=K}}else{ag=(p<<24>>24==ac<<24>>24)+ae|0}p=af+1|0;if(p>>>0<D>>>0){ad=af;ae=ag;af=p}else{u=0;r=2852;break L3484}}D=ad+2|0;if((D|0)==0){u=0;r=2860;break}m=D;e=o+4|0;continue}else if((r|0)==2849){r=0;if($){m=n;e=s;continue}else{u=0;r=2869;break}}}if((r|0)==2800){u=(m|0)==(c[h>>2]|0)?m:0;i=g;return u|0}else if((r|0)==2827){e=s+1|0;ad=jB(b,m,e)|0;if((ad|0)!=0){u=ad;i=g;return u|0}ad=s-1|0;af=m;while(1){if(af>>>0>=(c[h>>2]|0)>>>0){u=0;r=2866;break}ag=a[af]|0;ae=ag&255;ac=a[o]|0;ab=ac<<24>>24;L3620:do{if((ab|0)==37){ah=jE(ae,d[t]|0)|0;r=2847}else if((ab|0)==91){aa=(a[t]|0)==94;x=aa?t:o;X=aa&1;aa=X^1;Z=x+1|0;if(Z>>>0<ad>>>0){ai=x;aj=Z}else{ah=X;r=2847;break}while(1){Z=a[aj]|0;x=ai+2|0;_=a[x]|0;L3625:do{if(Z<<24>>24==37){if((jE(ae,_&255)|0)==0){ak=x}else{ah=aa;r=2847;break L3620}}else{do{if(_<<24>>24==45){Y=ai+3|0;if(Y>>>0>=ad>>>0){break}if((Z&255)>(ag&255)){ak=Y;break L3625}if((d[Y]|0)<(ag&255)){ak=Y;break L3625}else{ah=aa;r=2847;break L3620}}}while(0);if(Z<<24>>24==ag<<24>>24){ah=aa;r=2847;break L3620}else{ak=aj}}}while(0);Z=ak+1|0;if(Z>>>0<ad>>>0){ai=ak;aj=Z}else{ah=X;r=2847;break}}}else if((ab|0)!=46){ah=ac<<24>>24==ag<<24>>24|0;r=2847}}while(0);if((r|0)==2847){r=0;if((ah|0)==0){u=0;r=2867;break}}ag=af+1|0;ac=jB(b,ag,e)|0;if((ac|0)==0){af=ag}else{u=ac;r=2868;break}}if((r|0)==2866){i=g;return u|0}else if((r|0)==2867){i=g;return u|0}else if((r|0)==2868){i=g;return u|0}}else if((r|0)==2831){u=jD(b,m,o,s)|0;i=g;return u|0}else if((r|0)==2832){if(!$){u=0;i=g;return u|0}u=jD(b,n,o,s)|0;i=g;return u|0}else if((r|0)==2851){i=g;return u|0}else if((r|0)==2852){i=g;return u|0}else if((r|0)==2853){i=g;return u|0}else if((r|0)==2854){i=g;return u|0}else if((r|0)==2855){i=g;return u|0}else if((r|0)==2857){i=g;return u|0}else if((r|0)==2858){i=g;return u|0}else if((r|0)==2859){i=g;return u|0}else if((r|0)==2860){i=g;return u|0}else if((r|0)==2862){i=g;return u|0}else if((r|0)==2869){i=g;return u|0}else if((r|0)==2870){i=g;return u|0}else if((r|0)==2737){s=o+1|0;n=c[l>>2]|0;while(1){$=n-1|0;if((n|0)<=0){r=2740;break}if((c[b+16+($<<3)+4>>2]|0)==-1){al=$;break}else{n=$}}if((r|0)==2740){n=gz(c[j>>2]|0,7e3,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A;al=n}n=b+16+(al<<3)+4|0;c[n>>2]=m-(c[b+16+(al<<3)>>2]|0);al=jB(b,m,s)|0;if((al|0)!=0){u=al;i=g;return u|0}c[n>>2]=-1;u=0;i=g;return u|0}else if((r|0)==2728){r=o+1|0;if((a[r]|0)==41){n=c[l>>2]|0;if((n|0)>31){al=c[j>>2]|0;gz(al,8536,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A}c[b+16+(n<<3)>>2]=m;c[b+16+(n<<3)+4>>2]=-2;c[l>>2]=n+1;n=jB(b,m,o+2|0)|0;if((n|0)!=0){u=n;i=g;return u|0}c[l>>2]=(c[l>>2]|0)-1;u=0;i=g;return u|0}else{n=c[l>>2]|0;if((n|0)>31){o=c[j>>2]|0;gz(o,8536,(A=i,i=i+1|0,i=i+7>>3<<3,c[A>>2]=0,A)|0)|0;i=A}c[b+16+(n<<3)>>2]=m;c[b+16+(n<<3)+4>>2]=-1;c[l>>2]=n+1;n=jB(b,m,r)|0;if((n|0)!=0){u=n;i=g;return u|0}c[l>>2]=(c[l>>2]|0)-1;u=0;i=g;return u|0}}return 0}function jC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;if((c[a+12>>2]|0)<=(b|0)){g=c[a+8>>2]|0;if((b|0)==0){c9(g,d,e-d|0);i=f;return}else{gz(g,8344,(h=i,i=i+1|0,i=i+7>>3<<3,c[h>>2]=0,h)|0)|0;i=h;i=f;return}}g=c[a+16+(b<<3)+4>>2]|0;do{if((g|0)==-1){d=a+8|0;e=c[d>>2]|0;gz(e,8104,(h=i,i=i+1|0,i=i+7>>3<<3,c[h>>2]=0,h)|0)|0;i=h;j=c[d>>2]|0;k=c[a+16+(b<<3)>>2]|0}else{d=c[a+8>>2]|0;e=c[a+16+(b<<3)>>2]|0;if((g|0)!=-2){j=d;k=e;break}c5(d,e+1-(c[a>>2]|0)|0);i=f;return}}while(0);c9(j,k,g);i=f;return}function jD(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;h=b+4|0;i=c[h>>2]|0;L3707:do{if(i>>>0>e>>>0){j=f+1|0;k=g-1|0;l=0;m=e;n=i;while(1){o=a[m]|0;p=o&255;q=a[f]|0;r=q<<24>>24;L3711:do{if((r|0)==37){s=jE(p,d[j]|0)|0;t=2905}else if((r|0)==46){u=n}else if((r|0)==91){v=(a[j]|0)==94;w=v?j:f;x=v&1;v=x^1;y=w+1|0;if(y>>>0<k>>>0){z=w;A=y}else{s=x;t=2905;break}while(1){y=a[A]|0;w=z+2|0;B=a[w]|0;L3717:do{if(y<<24>>24==37){if((jE(p,B&255)|0)==0){C=w}else{s=v;t=2905;break L3711}}else{do{if(B<<24>>24==45){D=z+3|0;if(D>>>0>=k>>>0){break}if((y&255)>(o&255)){C=D;break L3717}if((d[D]|0)<(o&255)){C=D;break L3717}else{s=v;t=2905;break L3711}}}while(0);if(y<<24>>24==o<<24>>24){s=v;t=2905;break L3711}else{C=A}}}while(0);y=C+1|0;if(y>>>0<k>>>0){z=C;A=y}else{s=x;t=2905;break}}}else{s=q<<24>>24==o<<24>>24|0;t=2905}}while(0);if((t|0)==2905){t=0;if((s|0)==0){E=l;break L3707}u=c[h>>2]|0}o=l+1|0;q=e+o|0;if(q>>>0<u>>>0){l=o;m=q;n=u}else{E=o;break}}}else{E=0}}while(0);u=g+1|0;g=E;while(1){if((g|0)<=-1){F=0;t=2912;break}E=jB(b,e+g|0,u)|0;if((E|0)==0){g=g-1|0}else{F=E;t=2913;break}}if((t|0)==2913){return F|0}else if((t|0)==2912){return F|0}return 0}function jE(a,b){a=a|0;b=b|0;var c=0,d=0;switch(j6(b|0)|0){case 120:{c=aY(a|0)|0;break};case 122:{c=(a|0)==0|0;break};case 119:{c=bq(a|0)|0;break};case 115:{c=aB(a|0)|0;break};case 112:{c=bU(a|0)|0;break};case 97:{c=bt(a|0)|0;break};case 117:{c=bd(a|0)|0;break};case 108:{c=bb(a|0)|0;break};case 100:{c=(a-48|0)>>>0<10|0;break};case 99:{c=b8(a|0)|0;break};default:{d=(b|0)==(a|0)|0;return d|0}}if((bb(b|0)|0)!=0){d=c;return d|0}d=(c|0)==0|0;return d|0}function jF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+280|0;d=b|0;e=b+272|0;f=c0(a,-10003,e)|0;g=c0(a,-10004,0)|0;h=d+8|0;c[h>>2]=a;c[d>>2]=f;j=f+(c[e>>2]|0)|0;e=d+4|0;c[e>>2]=j;k=d+12|0;l=f+(c$(a,-10005)|0)|0;m=j;while(1){if(l>>>0>m>>>0){n=0;o=2939;break}c[k>>2]=0;p=jB(d,l,g)|0;if((p|0)!=0){break}l=l+1|0;m=c[e>>2]|0}if((o|0)==2939){i=b;return n|0}c5(a,p-f+((p|0)==(l|0))|0);cP(a,-10005);a=c[k>>2]|0;k=(a|0)!=0|(l|0)==0?a:1;gH(c[h>>2]|0,k,8536);if((k|0)>0){q=0}else{n=k;i=b;return n|0}while(1){jC(d,q,l,p);h=q+1|0;if((h|0)<(k|0)){q=h}else{n=k;break}}i=b;return n|0}function jG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;gV(d,b,c);return 0}function jH(a){a=a|0;var b=0,c=0;gF(a,3592)|0;dd(a,380,0);dm(a,-2,9152);gQ(a,7152,432);cJ(a,-1);cP(a,-10001);di(a,4,0);dd(a,388,0);dp(a,-2,1);dd(a,320,0);dp(a,-2,2);dd(a,524,0);dp(a,-2,3);dd(a,276,0);dp(a,-2,4);dm(a,-2,5608);b=bz(3768|0)|0;if((b|0)==0){da(a,3048)}else{c=gT(a,b,6816,6704)|0;gT(a,c,6592,3048)|0;cH(a,-2)}dm(a,-2,4376);c=bz(2344|0)|0;if((c|0)==0){da(a,2072)}else{b=gT(a,c,6816,6704)|0;gT(a,b,6592,2072)|0;cH(a,-2)}dm(a,-2,2680);c9(a,10272,9);dm(a,-2,10048);gS(a,-1e4,9760,2)|0;dm(a,-2,9560);di(a,0,0);dm(a,-2,9344);cJ(a,-10002);gQ(a,0,1368);cG(a,-2);return 1}function jI(a){a=a|0;c[(gG(a,1,3592)|0)>>2]=0;return 0}function jJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+104|0;d=b|0;e=gE(a,1,0)|0;f=cF(a)|0;g=f+1|0;df(a,-1e4,9760);df(a,g,e);do{if((cK(a,-1)|0)!=5){cG(a,-2);if((gS(a,-10002,e,1)|0)==0){cJ(a,-1);dm(a,g,e);break}h=gz(a,8072,(j=i,i=i+8|0,c[j>>2]=e,j)|0)|0;i=j;k=h;i=b;return k|0}}while(0);df(a,-1,7840);g=(cK(a,-1)|0)==0;cG(a,-2);if(g){cJ(a,-1);dm(a,-2,7160);da(a,e);dm(a,-2,7840);g=a0(e|0,46)|0;c9(a,e,((g|0)==0?e:g+1|0)-e|0);dm(a,-2,6976)}cJ(a,-1);do{if((ej(a,1,d)|0)==0){l=2960}else{if((en(a,7576,d)|0)==0){l=2960;break}if((cM(a,-1)|0)!=0){l=2960}}}while(0);if((l|0)==2960){gz(a,7392,(j=i,i=i+1|0,i=i+7>>3<<3,c[j>>2]=0,j)|0)|0;i=j}cJ(a,-2);dv(a,-2)|0;cG(a,-2);if((f|0)<2){k=0;i=b;return k|0}else{m=2}while(1){cJ(a,m);cJ(a,-2);dw(a,1,0);j=m+1|0;if((j|0)>(f|0)){k=0;break}else{m=j}}i=b;return k|0}function jK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=gE(a,1,0)|0;cG(a,1);df(a,-1e4,9760);df(a,2,d);if((cX(a,-1)|0)!=0){if((cZ(a,-1)|0)!=10480){i=b;return 1}gz(a,8880,(e=i,i=i+8|0,c[e>>2]=d,e)|0)|0;i=e;i=b;return 1}df(a,-10001,5608);if((cK(a,-1)|0)!=5){gz(a,8704,(e=i,i=i+1|0,i=i+7>>3<<3,c[e>>2]=0,e)|0)|0;i=e}c9(a,10552,0);f=1;while(1){dh(a,-2,f);if((cK(a,-1)|0)==0){g=c0(a,-2,0)|0;gz(a,8312,(e=i,i=i+16|0,c[e>>2]=d,c[e+8>>2]=g,e)|0)|0;i=e}da(a,d);dw(a,1,1);if((cK(a,-1)|0)==6){break}if((cQ(a,-1)|0)==0){cG(a,-2)}else{dG(a,2)}f=f+1|0}c7(a,10480);dm(a,2,d);da(a,d);dw(a,1,1);if((cK(a,-1)|0)!=0){dm(a,2,d)}df(a,2,d);if((cZ(a,-1)|0)!=10480){i=b;return 1}c6(a,1);cJ(a,-1);dm(a,2,d);i=b;return 1}function jL(a){a=a|0;var b=0,d=0,e=0;b=i;d=gE(a,1,0)|0;df(a,-10001,9344);if((cK(a,-1)|0)!=5){gz(a,4384,(e=i,i=i+1|0,i=i+7>>3<<3,c[e>>2]=0,e)|0)|0;i=e}df(a,-1,d);if((cK(a,-1)|0)!=0){i=b;return 1}dc(a,4272,(e=i,i=i+8|0,c[e>>2]=d,e)|0)|0;i=e;i=b;return 1}function jM(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=jP(a,gE(a,1,0)|0,4376)|0;if((d|0)==0){i=b;return 1}if((g0(a,d)|0)==0){i=b;return 1}e=c0(a,1,0)|0;f=c0(a,-1,0)|0;gz(a,6240,(a=i,i=i+24|0,c[a>>2]=e,c[a+8>>2]=d,c[a+16>>2]=f,a)|0)|0;i=a;i=b;return 1}function jN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=gE(a,1,0)|0;e=jP(a,d,2680)|0;if((e|0)==0){i=b;return 1}f=aU(d|0,45)|0;g=gT(a,(f|0)==0?d:f+1|0,5496,5352)|0;dc(a,5256,(f=i,i=i+8|0,c[f>>2]=g,f)|0)|0;i=f;cH(a,-2);if((jQ(a,e)|0)==0){i=b;return 1}g=c0(a,1,0)|0;d=c0(a,-1,0)|0;gz(a,6240,(f=i,i=i+24|0,c[f>>2]=g,c[f+8>>2]=e,c[f+16>>2]=d,f)|0)|0;i=f;i=b;return 1}function jO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=gE(a,1,0)|0;e=aU(d|0,46)|0;if((e|0)==0){f=0;i=b;return f|0}c9(a,d,e-d|0);e=jP(a,c0(a,-1,0)|0,2680)|0;if((e|0)==0){f=1;i=b;return f|0}g=aU(d|0,45)|0;h=gT(a,(g|0)==0?d:g+1|0,5496,5352)|0;dc(a,5256,(g=i,i=i+8|0,c[g>>2]=h,g)|0)|0;i=g;cH(a,-2);h=jQ(a,e)|0;if((h|0)==0){f=1;i=b;return f|0}else if((h|0)!=2){h=c0(a,1,0)|0;j=c0(a,-1,0)|0;gz(a,6240,(g=i,i=i+24|0,c[g>>2]=h,c[g+8>>2]=e,c[g+16>>2]=j,g)|0)|0;i=g}dc(a,6440,(g=i,i=i+16|0,c[g>>2]=d,c[g+8>>2]=e,g)|0)|0;i=g;f=1;i=b;return f|0}function jP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;g=gT(b,d,5496,5168)|0;df(b,-10001,e);d=c0(b,-1,0)|0;if((d|0)==0){gz(b,5008,(h=i,i=i+8|0,c[h>>2]=e,h)|0)|0;i=h}c9(b,10552,0);e=d;while(1){d=a[e]|0;if((d<<24>>24|0)==0){j=0;k=3034;break}else if((d<<24>>24|0)==59){e=e+1|0;continue}d=aU(e|0,59)|0;if((d|0)==0){l=e+(j_(e|0)|0)|0}else{l=d}c9(b,e,l-e|0);if((l|0)==0){j=0;k=3033;break}m=gT(b,c0(b,-1,0)|0,4880,g)|0;cH(b,-2);n=bl(m|0,4600|0)|0;if((n|0)!=0){k=3029;break}dc(b,4720,(h=i,i=i+8|0,c[h>>2]=m,h)|0)|0;i=h;cH(b,-2);dG(b,2);e=l}if((k|0)==3029){ar(n|0)|0;j=m;i=f;return j|0}else if((k|0)==3033){i=f;return j|0}else if((k|0)==3034){i=f;return j|0}return 0}function jQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;dc(a,5792,(e=i,i=i+16|0,c[e>>2]=5720,c[e+8>>2]=b,e)|0)|0;i=e;de(a,-1e4);if((cK(a,-1)|0)==0){cG(a,-2);f=dH(a,4)|0;c[f>>2]=0;df(a,-1e4,3592);dq(a,-2)|0;dc(a,5792,(e=i,i=i+16|0,c[e>>2]=5720,c[e+8>>2]=b,e)|0)|0;i=e;cJ(a,-2);dl(a,-1e4);g=f}else{g=cZ(a,-1)|0}f=(c[g>>2]|0)==0;c9(a,6e3,58);if(!f){h=2;i=d;return h|0}c[g>>2]=0;h=1;i=d;return h|0}function jR(a){a=a|0;var b=0,c=0,d=0;b=gE(a,1,0)|0;gE(a,2,0)|0;c=jQ(a,b)|0;if((c|0)==0){d=1;return d|0}c3(a);cI(a,-2);da(a,(c|0)==1?4072:4024);d=3;return d|0}function jS(a){a=a|0;gI(a,1,5);if((dj(a,1)|0)==0){di(a,0,1);cJ(a,-1);dq(a,1)|0}cJ(a,-10002);dm(a,-2,4136);return 0}function jT(a){a=a|0;dd(a,504,0);da(a,10528);dw(a,1,0);dd(a,398,0);da(a,9080);dw(a,1,0);dd(a,350,0);da(a,7064);dw(a,1,0);dd(a,282,0);da(a,5552);dw(a,1,0);dd(a,356,0);da(a,4312);dw(a,1,0);dd(a,324,0);da(a,3744);dw(a,1,0);dd(a,296,0);da(a,3040);dw(a,1,0);dd(a,412,0);da(a,2672);dw(a,1,0);return}function jU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0;do{if(a>>>0<245){if(a>>>0<11){b=16}else{b=a+11&-8}d=b>>>3;e=c[2648]|0;f=e>>>(d>>>0);if((f&3|0)!=0){g=(f&1^1)+d|0;h=g<<1;i=10632+(h<<2)|0;j=10632+(h+2<<2)|0;h=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do{if((i|0)==(l|0)){c[2648]=e&~(1<<g)}else{if(l>>>0<(c[2652]|0)>>>0){bM();return 0}m=l+12|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=i;c[j>>2]=l;break}else{bM();return 0}}}while(0);l=g<<3;c[h+4>>2]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}if(b>>>0<=(c[2650]|0)>>>0){o=b;break}if((f|0)!=0){j=2<<d;l=f<<d&(j|-j);j=(l&-l)-1|0;l=j>>>12&16;i=j>>>(l>>>0);j=i>>>5&8;m=i>>>(j>>>0);i=m>>>2&4;p=m>>>(i>>>0);m=p>>>1&2;q=p>>>(m>>>0);p=q>>>1&1;r=(j|l|i|m|p)+(q>>>(p>>>0))|0;p=r<<1;q=10632+(p<<2)|0;m=10632+(p+2<<2)|0;p=c[m>>2]|0;i=p+8|0;l=c[i>>2]|0;do{if((q|0)==(l|0)){c[2648]=e&~(1<<r)}else{if(l>>>0<(c[2652]|0)>>>0){bM();return 0}j=l+12|0;if((c[j>>2]|0)==(p|0)){c[j>>2]=q;c[m>>2]=l;break}else{bM();return 0}}}while(0);l=r<<3;m=l-b|0;c[p+4>>2]=b|3;q=p;e=q+b|0;c[q+(b|4)>>2]=m|1;c[q+l>>2]=m;l=c[2650]|0;if((l|0)!=0){q=c[2653]|0;d=l>>>3;l=d<<1;f=10632+(l<<2)|0;k=c[2648]|0;h=1<<d;do{if((k&h|0)==0){c[2648]=k|h;s=f;t=10632+(l+2<<2)|0}else{d=10632+(l+2<<2)|0;g=c[d>>2]|0;if(g>>>0>=(c[2652]|0)>>>0){s=g;t=d;break}bM();return 0}}while(0);c[t>>2]=q;c[s+12>>2]=q;c[q+8>>2]=s;c[q+12>>2]=f}c[2650]=m;c[2653]=e;n=i;return n|0}l=c[2649]|0;if((l|0)==0){o=b;break}h=(l&-l)-1|0;l=h>>>12&16;k=h>>>(l>>>0);h=k>>>5&8;p=k>>>(h>>>0);k=p>>>2&4;r=p>>>(k>>>0);p=r>>>1&2;d=r>>>(p>>>0);r=d>>>1&1;g=c[10896+((h|l|k|p|r)+(d>>>(r>>>0))<<2)>>2]|0;r=g;d=g;p=(c[g+4>>2]&-8)-b|0;while(1){g=c[r+16>>2]|0;if((g|0)==0){k=c[r+20>>2]|0;if((k|0)==0){break}else{u=k}}else{u=g}g=(c[u+4>>2]&-8)-b|0;k=g>>>0<p>>>0;r=u;d=k?u:d;p=k?g:p}r=d;i=c[2652]|0;if(r>>>0<i>>>0){bM();return 0}e=r+b|0;m=e;if(r>>>0>=e>>>0){bM();return 0}e=c[d+24>>2]|0;f=c[d+12>>2]|0;do{if((f|0)==(d|0)){q=d+20|0;g=c[q>>2]|0;if((g|0)==0){k=d+16|0;l=c[k>>2]|0;if((l|0)==0){v=0;break}else{w=l;x=k}}else{w=g;x=q}while(1){q=w+20|0;g=c[q>>2]|0;if((g|0)!=0){w=g;x=q;continue}q=w+16|0;g=c[q>>2]|0;if((g|0)==0){break}else{w=g;x=q}}if(x>>>0<i>>>0){bM();return 0}else{c[x>>2]=0;v=w;break}}else{q=c[d+8>>2]|0;if(q>>>0<i>>>0){bM();return 0}g=q+12|0;if((c[g>>2]|0)!=(d|0)){bM();return 0}k=f+8|0;if((c[k>>2]|0)==(d|0)){c[g>>2]=f;c[k>>2]=q;v=f;break}else{bM();return 0}}}while(0);L4106:do{if((e|0)!=0){f=d+28|0;i=10896+(c[f>>2]<<2)|0;do{if((d|0)==(c[i>>2]|0)){c[i>>2]=v;if((v|0)!=0){break}c[2649]=c[2649]&~(1<<c[f>>2]);break L4106}else{if(e>>>0<(c[2652]|0)>>>0){bM();return 0}q=e+16|0;if((c[q>>2]|0)==(d|0)){c[q>>2]=v}else{c[e+20>>2]=v}if((v|0)==0){break L4106}}}while(0);if(v>>>0<(c[2652]|0)>>>0){bM();return 0}c[v+24>>2]=e;f=c[d+16>>2]|0;do{if((f|0)!=0){if(f>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[v+16>>2]=f;c[f+24>>2]=v;break}}}while(0);f=c[d+20>>2]|0;if((f|0)==0){break}if(f>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[v+20>>2]=f;c[f+24>>2]=v;break}}}while(0);if(p>>>0<16){e=p+b|0;c[d+4>>2]=e|3;f=r+(e+4)|0;c[f>>2]=c[f>>2]|1}else{c[d+4>>2]=b|3;c[r+(b|4)>>2]=p|1;c[r+(p+b)>>2]=p;f=c[2650]|0;if((f|0)!=0){e=c[2653]|0;i=f>>>3;f=i<<1;q=10632+(f<<2)|0;k=c[2648]|0;g=1<<i;do{if((k&g|0)==0){c[2648]=k|g;y=q;z=10632+(f+2<<2)|0}else{i=10632+(f+2<<2)|0;l=c[i>>2]|0;if(l>>>0>=(c[2652]|0)>>>0){y=l;z=i;break}bM();return 0}}while(0);c[z>>2]=e;c[y+12>>2]=e;c[e+8>>2]=y;c[e+12>>2]=q}c[2650]=p;c[2653]=m}f=d+8|0;if((f|0)==0){o=b;break}else{n=f}return n|0}else{if(a>>>0>4294967231){o=-1;break}f=a+11|0;g=f&-8;k=c[2649]|0;if((k|0)==0){o=g;break}r=-g|0;i=f>>>8;do{if((i|0)==0){A=0}else{if(g>>>0>16777215){A=31;break}f=(i+1048320|0)>>>16&8;l=i<<f;h=(l+520192|0)>>>16&4;j=l<<h;l=(j+245760|0)>>>16&2;B=14-(h|f|l)+(j<<l>>>15)|0;A=g>>>((B+7|0)>>>0)&1|B<<1}}while(0);i=c[10896+(A<<2)>>2]|0;L3914:do{if((i|0)==0){C=0;D=r;E=0}else{if((A|0)==31){F=0}else{F=25-(A>>>1)|0}d=0;m=r;p=i;q=g<<F;e=0;while(1){B=c[p+4>>2]&-8;l=B-g|0;if(l>>>0<m>>>0){if((B|0)==(g|0)){C=p;D=l;E=p;break L3914}else{G=p;H=l}}else{G=d;H=m}l=c[p+20>>2]|0;B=c[p+16+(q>>>31<<2)>>2]|0;j=(l|0)==0|(l|0)==(B|0)?e:l;if((B|0)==0){C=G;D=H;E=j;break}else{d=G;m=H;p=B;q=q<<1;e=j}}}}while(0);if((E|0)==0&(C|0)==0){i=2<<A;r=k&(i|-i);if((r|0)==0){o=g;break}i=(r&-r)-1|0;r=i>>>12&16;e=i>>>(r>>>0);i=e>>>5&8;q=e>>>(i>>>0);e=q>>>2&4;p=q>>>(e>>>0);q=p>>>1&2;m=p>>>(q>>>0);p=m>>>1&1;I=c[10896+((i|r|e|q|p)+(m>>>(p>>>0))<<2)>>2]|0}else{I=E}if((I|0)==0){J=D;K=C}else{p=I;m=D;q=C;while(1){e=(c[p+4>>2]&-8)-g|0;r=e>>>0<m>>>0;i=r?e:m;e=r?p:q;r=c[p+16>>2]|0;if((r|0)!=0){p=r;m=i;q=e;continue}r=c[p+20>>2]|0;if((r|0)==0){J=i;K=e;break}else{p=r;m=i;q=e}}}if((K|0)==0){o=g;break}if(J>>>0>=((c[2650]|0)-g|0)>>>0){o=g;break}q=K;m=c[2652]|0;if(q>>>0<m>>>0){bM();return 0}p=q+g|0;k=p;if(q>>>0>=p>>>0){bM();return 0}e=c[K+24>>2]|0;i=c[K+12>>2]|0;do{if((i|0)==(K|0)){r=K+20|0;d=c[r>>2]|0;if((d|0)==0){j=K+16|0;B=c[j>>2]|0;if((B|0)==0){L=0;break}else{M=B;N=j}}else{M=d;N=r}while(1){r=M+20|0;d=c[r>>2]|0;if((d|0)!=0){M=d;N=r;continue}r=M+16|0;d=c[r>>2]|0;if((d|0)==0){break}else{M=d;N=r}}if(N>>>0<m>>>0){bM();return 0}else{c[N>>2]=0;L=M;break}}else{r=c[K+8>>2]|0;if(r>>>0<m>>>0){bM();return 0}d=r+12|0;if((c[d>>2]|0)!=(K|0)){bM();return 0}j=i+8|0;if((c[j>>2]|0)==(K|0)){c[d>>2]=i;c[j>>2]=r;L=i;break}else{bM();return 0}}}while(0);L3964:do{if((e|0)!=0){i=K+28|0;m=10896+(c[i>>2]<<2)|0;do{if((K|0)==(c[m>>2]|0)){c[m>>2]=L;if((L|0)!=0){break}c[2649]=c[2649]&~(1<<c[i>>2]);break L3964}else{if(e>>>0<(c[2652]|0)>>>0){bM();return 0}r=e+16|0;if((c[r>>2]|0)==(K|0)){c[r>>2]=L}else{c[e+20>>2]=L}if((L|0)==0){break L3964}}}while(0);if(L>>>0<(c[2652]|0)>>>0){bM();return 0}c[L+24>>2]=e;i=c[K+16>>2]|0;do{if((i|0)!=0){if(i>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[L+16>>2]=i;c[i+24>>2]=L;break}}}while(0);i=c[K+20>>2]|0;if((i|0)==0){break}if(i>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[L+20>>2]=i;c[i+24>>2]=L;break}}}while(0);do{if(J>>>0<16){e=J+g|0;c[K+4>>2]=e|3;i=q+(e+4)|0;c[i>>2]=c[i>>2]|1}else{c[K+4>>2]=g|3;c[q+(g|4)>>2]=J|1;c[q+(J+g)>>2]=J;i=J>>>3;if(J>>>0<256){e=i<<1;m=10632+(e<<2)|0;r=c[2648]|0;j=1<<i;do{if((r&j|0)==0){c[2648]=r|j;O=m;P=10632+(e+2<<2)|0}else{i=10632+(e+2<<2)|0;d=c[i>>2]|0;if(d>>>0>=(c[2652]|0)>>>0){O=d;P=i;break}bM();return 0}}while(0);c[P>>2]=k;c[O+12>>2]=k;c[q+(g+8)>>2]=O;c[q+(g+12)>>2]=m;break}e=p;j=J>>>8;do{if((j|0)==0){Q=0}else{if(J>>>0>16777215){Q=31;break}r=(j+1048320|0)>>>16&8;i=j<<r;d=(i+520192|0)>>>16&4;B=i<<d;i=(B+245760|0)>>>16&2;l=14-(d|r|i)+(B<<i>>>15)|0;Q=J>>>((l+7|0)>>>0)&1|l<<1}}while(0);j=10896+(Q<<2)|0;c[q+(g+28)>>2]=Q;c[q+(g+20)>>2]=0;c[q+(g+16)>>2]=0;m=c[2649]|0;l=1<<Q;if((m&l|0)==0){c[2649]=m|l;c[j>>2]=e;c[q+(g+24)>>2]=j;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}if((Q|0)==31){R=0}else{R=25-(Q>>>1)|0}l=J<<R;m=c[j>>2]|0;while(1){if((c[m+4>>2]&-8|0)==(J|0)){break}S=m+16+(l>>>31<<2)|0;j=c[S>>2]|0;if((j|0)==0){T=3202;break}else{l=l<<1;m=j}}if((T|0)==3202){if(S>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[S>>2]=e;c[q+(g+24)>>2]=m;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}}l=m+8|0;j=c[l>>2]|0;i=c[2652]|0;if(m>>>0<i>>>0){bM();return 0}if(j>>>0<i>>>0){bM();return 0}else{c[j+12>>2]=e;c[l>>2]=e;c[q+(g+8)>>2]=j;c[q+(g+12)>>2]=m;c[q+(g+24)>>2]=0;break}}}while(0);q=K+8|0;if((q|0)==0){o=g;break}else{n=q}return n|0}}while(0);K=c[2650]|0;if(o>>>0<=K>>>0){S=K-o|0;J=c[2653]|0;if(S>>>0>15){R=J;c[2653]=R+o;c[2650]=S;c[R+(o+4)>>2]=S|1;c[R+K>>2]=S;c[J+4>>2]=o|3}else{c[2650]=0;c[2653]=0;c[J+4>>2]=K|3;S=J+(K+4)|0;c[S>>2]=c[S>>2]|1}n=J+8|0;return n|0}J=c[2651]|0;if(o>>>0<J>>>0){S=J-o|0;c[2651]=S;J=c[2654]|0;K=J;c[2654]=K+o;c[K+(o+4)>>2]=S|1;c[J+4>>2]=o|3;n=J+8|0;return n|0}do{if((c[2622]|0)==0){J=bK(8)|0;if((J-1&J|0)==0){c[2624]=J;c[2623]=J;c[2625]=-1;c[2626]=-1;c[2627]=0;c[2759]=0;c[2622]=(cb(0)|0)&-16^1431655768;break}else{bM();return 0}}}while(0);J=o+48|0;S=c[2624]|0;K=o+47|0;R=S+K|0;Q=-S|0;S=R&Q;if(S>>>0<=o>>>0){n=0;return n|0}O=c[2758]|0;do{if((O|0)!=0){P=c[2756]|0;L=P+S|0;if(L>>>0<=P>>>0|L>>>0>O>>>0){n=0}else{break}return n|0}}while(0);L4173:do{if((c[2759]&4|0)==0){O=c[2654]|0;L4175:do{if((O|0)==0){T=3232}else{L=O;P=11040;while(1){U=P|0;M=c[U>>2]|0;if(M>>>0<=L>>>0){V=P+4|0;if((M+(c[V>>2]|0)|0)>>>0>L>>>0){break}}M=c[P+8>>2]|0;if((M|0)==0){T=3232;break L4175}else{P=M}}if((P|0)==0){T=3232;break}L=R-(c[2651]|0)&Q;if(L>>>0>=2147483647){W=0;break}m=bB(L|0)|0;e=(m|0)==((c[U>>2]|0)+(c[V>>2]|0)|0);X=e?m:-1;Y=e?L:0;Z=m;_=L;T=3241}}while(0);do{if((T|0)==3232){O=bB(0)|0;if((O|0)==-1){W=0;break}g=O;L=c[2623]|0;m=L-1|0;if((m&g|0)==0){$=S}else{$=S-g+(m+g&-L)|0}L=c[2756]|0;g=L+$|0;if(!($>>>0>o>>>0&$>>>0<2147483647)){W=0;break}m=c[2758]|0;if((m|0)!=0){if(g>>>0<=L>>>0|g>>>0>m>>>0){W=0;break}}m=bB($|0)|0;g=(m|0)==(O|0);X=g?O:-1;Y=g?$:0;Z=m;_=$;T=3241}}while(0);L4195:do{if((T|0)==3241){m=-_|0;if((X|0)!=-1){aa=Y;ab=X;T=3252;break L4173}do{if((Z|0)!=-1&_>>>0<2147483647&_>>>0<J>>>0){g=c[2624]|0;O=K-_+g&-g;if(O>>>0>=2147483647){ac=_;break}if((bB(O|0)|0)==-1){bB(m|0)|0;W=Y;break L4195}else{ac=O+_|0;break}}else{ac=_}}while(0);if((Z|0)==-1){W=Y}else{aa=ac;ab=Z;T=3252;break L4173}}}while(0);c[2759]=c[2759]|4;ad=W;T=3249}else{ad=0;T=3249}}while(0);do{if((T|0)==3249){if(S>>>0>=2147483647){break}W=bB(S|0)|0;Z=bB(0)|0;if(!((Z|0)!=-1&(W|0)!=-1&W>>>0<Z>>>0)){break}ac=Z-W|0;Z=ac>>>0>(o+40|0)>>>0;Y=Z?W:-1;if((Y|0)!=-1){aa=Z?ac:ad;ab=Y;T=3252}}}while(0);do{if((T|0)==3252){ad=(c[2756]|0)+aa|0;c[2756]=ad;if(ad>>>0>(c[2757]|0)>>>0){c[2757]=ad}ad=c[2654]|0;L4215:do{if((ad|0)==0){S=c[2652]|0;if((S|0)==0|ab>>>0<S>>>0){c[2652]=ab}c[2760]=ab;c[2761]=aa;c[2763]=0;c[2657]=c[2622];c[2656]=-1;S=0;do{Y=S<<1;ac=10632+(Y<<2)|0;c[10632+(Y+3<<2)>>2]=ac;c[10632+(Y+2<<2)>>2]=ac;S=S+1|0;}while(S>>>0<32);S=ab+8|0;if((S&7|0)==0){ae=0}else{ae=-S&7}S=aa-40-ae|0;c[2654]=ab+ae;c[2651]=S;c[ab+(ae+4)>>2]=S|1;c[ab+(aa-36)>>2]=40;c[2655]=c[2626]}else{S=11040;while(1){af=c[S>>2]|0;ag=S+4|0;ah=c[ag>>2]|0;if((ab|0)==(af+ah|0)){T=3264;break}ac=c[S+8>>2]|0;if((ac|0)==0){break}else{S=ac}}do{if((T|0)==3264){if((c[S+12>>2]&8|0)!=0){break}ac=ad;if(!(ac>>>0>=af>>>0&ac>>>0<ab>>>0)){break}c[ag>>2]=ah+aa;ac=c[2654]|0;Y=(c[2651]|0)+aa|0;Z=ac;W=ac+8|0;if((W&7|0)==0){ai=0}else{ai=-W&7}W=Y-ai|0;c[2654]=Z+ai;c[2651]=W;c[Z+(ai+4)>>2]=W|1;c[Z+(Y+4)>>2]=40;c[2655]=c[2626];break L4215}}while(0);if(ab>>>0<(c[2652]|0)>>>0){c[2652]=ab}S=ab+aa|0;Y=11040;while(1){aj=Y|0;if((c[aj>>2]|0)==(S|0)){T=3274;break}Z=c[Y+8>>2]|0;if((Z|0)==0){break}else{Y=Z}}do{if((T|0)==3274){if((c[Y+12>>2]&8|0)!=0){break}c[aj>>2]=ab;S=Y+4|0;c[S>>2]=(c[S>>2]|0)+aa;S=ab+8|0;if((S&7|0)==0){ak=0}else{ak=-S&7}S=ab+(aa+8)|0;if((S&7|0)==0){al=0}else{al=-S&7}S=ab+(al+aa)|0;Z=S;W=ak+o|0;ac=ab+W|0;_=ac;K=S-(ab+ak)-o|0;c[ab+(ak+4)>>2]=o|3;do{if((Z|0)==(c[2654]|0)){J=(c[2651]|0)+K|0;c[2651]=J;c[2654]=_;c[ab+(W+4)>>2]=J|1}else{if((Z|0)==(c[2653]|0)){J=(c[2650]|0)+K|0;c[2650]=J;c[2653]=_;c[ab+(W+4)>>2]=J|1;c[ab+(J+W)>>2]=J;break}J=aa+4|0;X=c[ab+(J+al)>>2]|0;if((X&3|0)==1){$=X&-8;V=X>>>3;L4260:do{if(X>>>0<256){U=c[ab+((al|8)+aa)>>2]|0;Q=c[ab+(aa+12+al)>>2]|0;R=10632+(V<<1<<2)|0;do{if((U|0)!=(R|0)){if(U>>>0<(c[2652]|0)>>>0){bM();return 0}if((c[U+12>>2]|0)==(Z|0)){break}bM();return 0}}while(0);if((Q|0)==(U|0)){c[2648]=c[2648]&~(1<<V);break}do{if((Q|0)==(R|0)){am=Q+8|0}else{if(Q>>>0<(c[2652]|0)>>>0){bM();return 0}m=Q+8|0;if((c[m>>2]|0)==(Z|0)){am=m;break}bM();return 0}}while(0);c[U+12>>2]=Q;c[am>>2]=U}else{R=S;m=c[ab+((al|24)+aa)>>2]|0;P=c[ab+(aa+12+al)>>2]|0;do{if((P|0)==(R|0)){O=al|16;g=ab+(J+O)|0;L=c[g>>2]|0;if((L|0)==0){e=ab+(O+aa)|0;O=c[e>>2]|0;if((O|0)==0){an=0;break}else{ao=O;ap=e}}else{ao=L;ap=g}while(1){g=ao+20|0;L=c[g>>2]|0;if((L|0)!=0){ao=L;ap=g;continue}g=ao+16|0;L=c[g>>2]|0;if((L|0)==0){break}else{ao=L;ap=g}}if(ap>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[ap>>2]=0;an=ao;break}}else{g=c[ab+((al|8)+aa)>>2]|0;if(g>>>0<(c[2652]|0)>>>0){bM();return 0}L=g+12|0;if((c[L>>2]|0)!=(R|0)){bM();return 0}e=P+8|0;if((c[e>>2]|0)==(R|0)){c[L>>2]=P;c[e>>2]=g;an=P;break}else{bM();return 0}}}while(0);if((m|0)==0){break}P=ab+(aa+28+al)|0;U=10896+(c[P>>2]<<2)|0;do{if((R|0)==(c[U>>2]|0)){c[U>>2]=an;if((an|0)!=0){break}c[2649]=c[2649]&~(1<<c[P>>2]);break L4260}else{if(m>>>0<(c[2652]|0)>>>0){bM();return 0}Q=m+16|0;if((c[Q>>2]|0)==(R|0)){c[Q>>2]=an}else{c[m+20>>2]=an}if((an|0)==0){break L4260}}}while(0);if(an>>>0<(c[2652]|0)>>>0){bM();return 0}c[an+24>>2]=m;R=al|16;P=c[ab+(R+aa)>>2]|0;do{if((P|0)!=0){if(P>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[an+16>>2]=P;c[P+24>>2]=an;break}}}while(0);P=c[ab+(J+R)>>2]|0;if((P|0)==0){break}if(P>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[an+20>>2]=P;c[P+24>>2]=an;break}}}while(0);aq=ab+(($|al)+aa)|0;ar=$+K|0}else{aq=Z;ar=K}J=aq+4|0;c[J>>2]=c[J>>2]&-2;c[ab+(W+4)>>2]=ar|1;c[ab+(ar+W)>>2]=ar;J=ar>>>3;if(ar>>>0<256){V=J<<1;X=10632+(V<<2)|0;P=c[2648]|0;m=1<<J;do{if((P&m|0)==0){c[2648]=P|m;as=X;at=10632+(V+2<<2)|0}else{J=10632+(V+2<<2)|0;U=c[J>>2]|0;if(U>>>0>=(c[2652]|0)>>>0){as=U;at=J;break}bM();return 0}}while(0);c[at>>2]=_;c[as+12>>2]=_;c[ab+(W+8)>>2]=as;c[ab+(W+12)>>2]=X;break}V=ac;m=ar>>>8;do{if((m|0)==0){au=0}else{if(ar>>>0>16777215){au=31;break}P=(m+1048320|0)>>>16&8;$=m<<P;J=($+520192|0)>>>16&4;U=$<<J;$=(U+245760|0)>>>16&2;Q=14-(J|P|$)+(U<<$>>>15)|0;au=ar>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=10896+(au<<2)|0;c[ab+(W+28)>>2]=au;c[ab+(W+20)>>2]=0;c[ab+(W+16)>>2]=0;X=c[2649]|0;Q=1<<au;if((X&Q|0)==0){c[2649]=X|Q;c[m>>2]=V;c[ab+(W+24)>>2]=m;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}if((au|0)==31){av=0}else{av=25-(au>>>1)|0}Q=ar<<av;X=c[m>>2]|0;while(1){if((c[X+4>>2]&-8|0)==(ar|0)){break}aw=X+16+(Q>>>31<<2)|0;m=c[aw>>2]|0;if((m|0)==0){T=3347;break}else{Q=Q<<1;X=m}}if((T|0)==3347){if(aw>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[aw>>2]=V;c[ab+(W+24)>>2]=X;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}}Q=X+8|0;m=c[Q>>2]|0;$=c[2652]|0;if(X>>>0<$>>>0){bM();return 0}if(m>>>0<$>>>0){bM();return 0}else{c[m+12>>2]=V;c[Q>>2]=V;c[ab+(W+8)>>2]=m;c[ab+(W+12)>>2]=X;c[ab+(W+24)>>2]=0;break}}}while(0);n=ab+(ak|8)|0;return n|0}}while(0);Y=ad;W=11040;while(1){ax=c[W>>2]|0;if(ax>>>0<=Y>>>0){ay=c[W+4>>2]|0;az=ax+ay|0;if(az>>>0>Y>>>0){break}}W=c[W+8>>2]|0}W=ax+(ay-39)|0;if((W&7|0)==0){aA=0}else{aA=-W&7}W=ax+(ay-47+aA)|0;ac=W>>>0<(ad+16|0)>>>0?Y:W;W=ac+8|0;_=ab+8|0;if((_&7|0)==0){aB=0}else{aB=-_&7}_=aa-40-aB|0;c[2654]=ab+aB;c[2651]=_;c[ab+(aB+4)>>2]=_|1;c[ab+(aa-36)>>2]=40;c[2655]=c[2626];c[ac+4>>2]=27;c[W>>2]=c[2760];c[W+4>>2]=c[11044>>2];c[W+8>>2]=c[11048>>2];c[W+12>>2]=c[11052>>2];c[2760]=ab;c[2761]=aa;c[2763]=0;c[2762]=W;W=ac+28|0;c[W>>2]=7;if((ac+32|0)>>>0<az>>>0){_=W;while(1){W=_+4|0;c[W>>2]=7;if((_+8|0)>>>0<az>>>0){_=W}else{break}}}if((ac|0)==(Y|0)){break}_=ac-ad|0;W=Y+(_+4)|0;c[W>>2]=c[W>>2]&-2;c[ad+4>>2]=_|1;c[Y+_>>2]=_;W=_>>>3;if(_>>>0<256){K=W<<1;Z=10632+(K<<2)|0;S=c[2648]|0;m=1<<W;do{if((S&m|0)==0){c[2648]=S|m;aC=Z;aD=10632+(K+2<<2)|0}else{W=10632+(K+2<<2)|0;Q=c[W>>2]|0;if(Q>>>0>=(c[2652]|0)>>>0){aC=Q;aD=W;break}bM();return 0}}while(0);c[aD>>2]=ad;c[aC+12>>2]=ad;c[ad+8>>2]=aC;c[ad+12>>2]=Z;break}K=ad;m=_>>>8;do{if((m|0)==0){aE=0}else{if(_>>>0>16777215){aE=31;break}S=(m+1048320|0)>>>16&8;Y=m<<S;ac=(Y+520192|0)>>>16&4;W=Y<<ac;Y=(W+245760|0)>>>16&2;Q=14-(ac|S|Y)+(W<<Y>>>15)|0;aE=_>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=10896+(aE<<2)|0;c[ad+28>>2]=aE;c[ad+20>>2]=0;c[ad+16>>2]=0;Z=c[2649]|0;Q=1<<aE;if((Z&Q|0)==0){c[2649]=Z|Q;c[m>>2]=K;c[ad+24>>2]=m;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}if((aE|0)==31){aF=0}else{aF=25-(aE>>>1)|0}Q=_<<aF;Z=c[m>>2]|0;while(1){if((c[Z+4>>2]&-8|0)==(_|0)){break}aG=Z+16+(Q>>>31<<2)|0;m=c[aG>>2]|0;if((m|0)==0){T=3382;break}else{Q=Q<<1;Z=m}}if((T|0)==3382){if(aG>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[aG>>2]=K;c[ad+24>>2]=Z;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}}Q=Z+8|0;_=c[Q>>2]|0;m=c[2652]|0;if(Z>>>0<m>>>0){bM();return 0}if(_>>>0<m>>>0){bM();return 0}else{c[_+12>>2]=K;c[Q>>2]=K;c[ad+8>>2]=_;c[ad+12>>2]=Z;c[ad+24>>2]=0;break}}}while(0);ad=c[2651]|0;if(ad>>>0<=o>>>0){break}_=ad-o|0;c[2651]=_;ad=c[2654]|0;Q=ad;c[2654]=Q+o;c[Q+(o+4)>>2]=_|1;c[ad+4>>2]=o|3;n=ad+8|0;return n|0}}while(0);c[(bE()|0)>>2]=12;n=0;return n|0}function jV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;if((a|0)==0){return}b=a-8|0;d=b;e=c[2652]|0;if(b>>>0<e>>>0){bM()}f=c[a-4>>2]|0;g=f&3;if((g|0)==1){bM()}h=f&-8;i=a+(h-8)|0;j=i;L10:do{if((f&1|0)==0){k=c[b>>2]|0;if((g|0)==0){return}l=-8-k|0;m=a+l|0;n=m;o=k+h|0;if(m>>>0<e>>>0){bM()}if((n|0)==(c[2653]|0)){p=a+(h-4)|0;if((c[p>>2]&3|0)!=3){q=n;r=o;break}c[2650]=o;c[p>>2]=c[p>>2]&-2;c[a+(l+4)>>2]=o|1;c[i>>2]=o;return}p=k>>>3;if(k>>>0<256){k=c[a+(l+8)>>2]|0;s=c[a+(l+12)>>2]|0;t=10632+(p<<1<<2)|0;do{if((k|0)!=(t|0)){if(k>>>0<e>>>0){bM()}if((c[k+12>>2]|0)==(n|0)){break}bM()}}while(0);if((s|0)==(k|0)){c[2648]=c[2648]&~(1<<p);q=n;r=o;break}do{if((s|0)==(t|0)){u=s+8|0}else{if(s>>>0<e>>>0){bM()}v=s+8|0;if((c[v>>2]|0)==(n|0)){u=v;break}bM()}}while(0);c[k+12>>2]=s;c[u>>2]=k;q=n;r=o;break}t=m;p=c[a+(l+24)>>2]|0;v=c[a+(l+12)>>2]|0;do{if((v|0)==(t|0)){w=a+(l+20)|0;x=c[w>>2]|0;if((x|0)==0){y=a+(l+16)|0;z=c[y>>2]|0;if((z|0)==0){A=0;break}else{B=z;C=y}}else{B=x;C=w}while(1){w=B+20|0;x=c[w>>2]|0;if((x|0)!=0){B=x;C=w;continue}w=B+16|0;x=c[w>>2]|0;if((x|0)==0){break}else{B=x;C=w}}if(C>>>0<e>>>0){bM()}else{c[C>>2]=0;A=B;break}}else{w=c[a+(l+8)>>2]|0;if(w>>>0<e>>>0){bM()}x=w+12|0;if((c[x>>2]|0)!=(t|0)){bM()}y=v+8|0;if((c[y>>2]|0)==(t|0)){c[x>>2]=v;c[y>>2]=w;A=v;break}else{bM()}}}while(0);if((p|0)==0){q=n;r=o;break}v=a+(l+28)|0;m=10896+(c[v>>2]<<2)|0;do{if((t|0)==(c[m>>2]|0)){c[m>>2]=A;if((A|0)!=0){break}c[2649]=c[2649]&~(1<<c[v>>2]);q=n;r=o;break L10}else{if(p>>>0<(c[2652]|0)>>>0){bM()}k=p+16|0;if((c[k>>2]|0)==(t|0)){c[k>>2]=A}else{c[p+20>>2]=A}if((A|0)==0){q=n;r=o;break L10}}}while(0);if(A>>>0<(c[2652]|0)>>>0){bM()}c[A+24>>2]=p;t=c[a+(l+16)>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[2652]|0)>>>0){bM()}else{c[A+16>>2]=t;c[t+24>>2]=A;break}}}while(0);t=c[a+(l+20)>>2]|0;if((t|0)==0){q=n;r=o;break}if(t>>>0<(c[2652]|0)>>>0){bM()}else{c[A+20>>2]=t;c[t+24>>2]=A;q=n;r=o;break}}else{q=d;r=h}}while(0);d=q;if(d>>>0>=i>>>0){bM()}A=a+(h-4)|0;e=c[A>>2]|0;if((e&1|0)==0){bM()}do{if((e&2|0)==0){if((j|0)==(c[2654]|0)){B=(c[2651]|0)+r|0;c[2651]=B;c[2654]=q;c[q+4>>2]=B|1;if((q|0)!=(c[2653]|0)){return}c[2653]=0;c[2650]=0;return}if((j|0)==(c[2653]|0)){B=(c[2650]|0)+r|0;c[2650]=B;c[2653]=q;c[q+4>>2]=B|1;c[d+B>>2]=B;return}B=(e&-8)+r|0;C=e>>>3;L112:do{if(e>>>0<256){u=c[a+h>>2]|0;g=c[a+(h|4)>>2]|0;b=10632+(C<<1<<2)|0;do{if((u|0)!=(b|0)){if(u>>>0<(c[2652]|0)>>>0){bM()}if((c[u+12>>2]|0)==(j|0)){break}bM()}}while(0);if((g|0)==(u|0)){c[2648]=c[2648]&~(1<<C);break}do{if((g|0)==(b|0)){D=g+8|0}else{if(g>>>0<(c[2652]|0)>>>0){bM()}f=g+8|0;if((c[f>>2]|0)==(j|0)){D=f;break}bM()}}while(0);c[u+12>>2]=g;c[D>>2]=u}else{b=i;f=c[a+(h+16)>>2]|0;t=c[a+(h|4)>>2]|0;do{if((t|0)==(b|0)){p=a+(h+12)|0;v=c[p>>2]|0;if((v|0)==0){m=a+(h+8)|0;k=c[m>>2]|0;if((k|0)==0){E=0;break}else{F=k;G=m}}else{F=v;G=p}while(1){p=F+20|0;v=c[p>>2]|0;if((v|0)!=0){F=v;G=p;continue}p=F+16|0;v=c[p>>2]|0;if((v|0)==0){break}else{F=v;G=p}}if(G>>>0<(c[2652]|0)>>>0){bM()}else{c[G>>2]=0;E=F;break}}else{p=c[a+h>>2]|0;if(p>>>0<(c[2652]|0)>>>0){bM()}v=p+12|0;if((c[v>>2]|0)!=(b|0)){bM()}m=t+8|0;if((c[m>>2]|0)==(b|0)){c[v>>2]=t;c[m>>2]=p;E=t;break}else{bM()}}}while(0);if((f|0)==0){break}t=a+(h+20)|0;u=10896+(c[t>>2]<<2)|0;do{if((b|0)==(c[u>>2]|0)){c[u>>2]=E;if((E|0)!=0){break}c[2649]=c[2649]&~(1<<c[t>>2]);break L112}else{if(f>>>0<(c[2652]|0)>>>0){bM()}g=f+16|0;if((c[g>>2]|0)==(b|0)){c[g>>2]=E}else{c[f+20>>2]=E}if((E|0)==0){break L112}}}while(0);if(E>>>0<(c[2652]|0)>>>0){bM()}c[E+24>>2]=f;b=c[a+(h+8)>>2]|0;do{if((b|0)!=0){if(b>>>0<(c[2652]|0)>>>0){bM()}else{c[E+16>>2]=b;c[b+24>>2]=E;break}}}while(0);b=c[a+(h+12)>>2]|0;if((b|0)==0){break}if(b>>>0<(c[2652]|0)>>>0){bM()}else{c[E+20>>2]=b;c[b+24>>2]=E;break}}}while(0);c[q+4>>2]=B|1;c[d+B>>2]=B;if((q|0)!=(c[2653]|0)){H=B;break}c[2650]=B;return}else{c[A>>2]=e&-2;c[q+4>>2]=r|1;c[d+r>>2]=r;H=r}}while(0);r=H>>>3;if(H>>>0<256){d=r<<1;e=10632+(d<<2)|0;A=c[2648]|0;E=1<<r;do{if((A&E|0)==0){c[2648]=A|E;I=e;J=10632+(d+2<<2)|0}else{r=10632+(d+2<<2)|0;h=c[r>>2]|0;if(h>>>0>=(c[2652]|0)>>>0){I=h;J=r;break}bM()}}while(0);c[J>>2]=q;c[I+12>>2]=q;c[q+8>>2]=I;c[q+12>>2]=e;return}e=q;I=H>>>8;do{if((I|0)==0){K=0}else{if(H>>>0>16777215){K=31;break}J=(I+1048320|0)>>>16&8;d=I<<J;E=(d+520192|0)>>>16&4;A=d<<E;d=(A+245760|0)>>>16&2;r=14-(E|J|d)+(A<<d>>>15)|0;K=H>>>((r+7|0)>>>0)&1|r<<1}}while(0);I=10896+(K<<2)|0;c[q+28>>2]=K;c[q+20>>2]=0;c[q+16>>2]=0;r=c[2649]|0;d=1<<K;do{if((r&d|0)==0){c[2649]=r|d;c[I>>2]=e;c[q+24>>2]=I;c[q+12>>2]=q;c[q+8>>2]=q}else{if((K|0)==31){L=0}else{L=25-(K>>>1)|0}A=H<<L;J=c[I>>2]|0;while(1){if((c[J+4>>2]&-8|0)==(H|0)){break}M=J+16+(A>>>31<<2)|0;E=c[M>>2]|0;if((E|0)==0){N=129;break}else{A=A<<1;J=E}}if((N|0)==129){if(M>>>0<(c[2652]|0)>>>0){bM()}else{c[M>>2]=e;c[q+24>>2]=J;c[q+12>>2]=q;c[q+8>>2]=q;break}}A=J+8|0;B=c[A>>2]|0;E=c[2652]|0;if(J>>>0<E>>>0){bM()}if(B>>>0<E>>>0){bM()}else{c[B+12>>2]=e;c[A>>2]=e;c[q+8>>2]=B;c[q+12>>2]=J;c[q+24>>2]=0;break}}}while(0);q=(c[2656]|0)-1|0;c[2656]=q;if((q|0)==0){O=11048}else{return}while(1){q=c[O>>2]|0;if((q|0)==0){break}else{O=q+8|0}}c[2656]=-1;return}function jW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((a|0)==0){d=jU(b)|0;return d|0}if(b>>>0>4294967231){c[(bE()|0)>>2]=12;d=0;return d|0}if(b>>>0<11){e=16}else{e=b+11&-8}f=jX(a-8|0,e)|0;if((f|0)!=0){d=f+8|0;return d|0}f=jU(b)|0;if((f|0)==0){d=0;return d|0}e=c[a-4>>2]|0;g=(e&-8)-((e&3|0)==0?8:4)|0;e=g>>>0<b>>>0?g:b;j$(f|0,a|0,e)|0;jV(a);d=f;return d|0}function jX(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=a+4|0;e=c[d>>2]|0;f=e&-8;g=a;h=g+f|0;i=h;j=c[2652]|0;if(g>>>0<j>>>0){bM();return 0}k=e&3;if(!((k|0)!=1&g>>>0<h>>>0)){bM();return 0}l=g+(f|4)|0;m=c[l>>2]|0;if((m&1|0)==0){bM();return 0}if((k|0)==0){if(b>>>0<256){n=0;return n|0}do{if(f>>>0>=(b+4|0)>>>0){if((f-b|0)>>>0>c[2624]<<1>>>0){break}else{n=a}return n|0}}while(0);n=0;return n|0}if(f>>>0>=b>>>0){k=f-b|0;if(k>>>0<=15){n=a;return n|0}c[d>>2]=e&1|b|2;c[g+(b+4)>>2]=k|3;c[l>>2]=c[l>>2]|1;jY(g+b|0,k);n=a;return n|0}if((i|0)==(c[2654]|0)){k=(c[2651]|0)+f|0;if(k>>>0<=b>>>0){n=0;return n|0}l=k-b|0;c[d>>2]=e&1|b|2;c[g+(b+4)>>2]=l|1;c[2654]=g+b;c[2651]=l;n=a;return n|0}if((i|0)==(c[2653]|0)){l=(c[2650]|0)+f|0;if(l>>>0<b>>>0){n=0;return n|0}k=l-b|0;if(k>>>0>15){c[d>>2]=e&1|b|2;c[g+(b+4)>>2]=k|1;c[g+l>>2]=k;o=g+(l+4)|0;c[o>>2]=c[o>>2]&-2;p=g+b|0;q=k}else{c[d>>2]=e&1|l|2;e=g+(l+4)|0;c[e>>2]=c[e>>2]|1;p=0;q=0}c[2650]=q;c[2653]=p;n=a;return n|0}if((m&2|0)!=0){n=0;return n|0}p=(m&-8)+f|0;if(p>>>0<b>>>0){n=0;return n|0}q=p-b|0;e=m>>>3;L299:do{if(m>>>0<256){l=c[g+(f+8)>>2]|0;k=c[g+(f+12)>>2]|0;o=10632+(e<<1<<2)|0;do{if((l|0)!=(o|0)){if(l>>>0<j>>>0){bM();return 0}if((c[l+12>>2]|0)==(i|0)){break}bM();return 0}}while(0);if((k|0)==(l|0)){c[2648]=c[2648]&~(1<<e);break}do{if((k|0)==(o|0)){r=k+8|0}else{if(k>>>0<j>>>0){bM();return 0}s=k+8|0;if((c[s>>2]|0)==(i|0)){r=s;break}bM();return 0}}while(0);c[l+12>>2]=k;c[r>>2]=l}else{o=h;s=c[g+(f+24)>>2]|0;t=c[g+(f+12)>>2]|0;do{if((t|0)==(o|0)){u=g+(f+20)|0;v=c[u>>2]|0;if((v|0)==0){w=g+(f+16)|0;x=c[w>>2]|0;if((x|0)==0){y=0;break}else{z=x;A=w}}else{z=v;A=u}while(1){u=z+20|0;v=c[u>>2]|0;if((v|0)!=0){z=v;A=u;continue}u=z+16|0;v=c[u>>2]|0;if((v|0)==0){break}else{z=v;A=u}}if(A>>>0<j>>>0){bM();return 0}else{c[A>>2]=0;y=z;break}}else{u=c[g+(f+8)>>2]|0;if(u>>>0<j>>>0){bM();return 0}v=u+12|0;if((c[v>>2]|0)!=(o|0)){bM();return 0}w=t+8|0;if((c[w>>2]|0)==(o|0)){c[v>>2]=t;c[w>>2]=u;y=t;break}else{bM();return 0}}}while(0);if((s|0)==0){break}t=g+(f+28)|0;l=10896+(c[t>>2]<<2)|0;do{if((o|0)==(c[l>>2]|0)){c[l>>2]=y;if((y|0)!=0){break}c[2649]=c[2649]&~(1<<c[t>>2]);break L299}else{if(s>>>0<(c[2652]|0)>>>0){bM();return 0}k=s+16|0;if((c[k>>2]|0)==(o|0)){c[k>>2]=y}else{c[s+20>>2]=y}if((y|0)==0){break L299}}}while(0);if(y>>>0<(c[2652]|0)>>>0){bM();return 0}c[y+24>>2]=s;o=c[g+(f+16)>>2]|0;do{if((o|0)!=0){if(o>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[y+16>>2]=o;c[o+24>>2]=y;break}}}while(0);o=c[g+(f+20)>>2]|0;if((o|0)==0){break}if(o>>>0<(c[2652]|0)>>>0){bM();return 0}else{c[y+20>>2]=o;c[o+24>>2]=y;break}}}while(0);if(q>>>0<16){c[d>>2]=p|c[d>>2]&1|2;y=g+(p|4)|0;c[y>>2]=c[y>>2]|1;n=a;return n|0}else{c[d>>2]=c[d>>2]&1|b|2;c[g+(b+4)>>2]=q|3;d=g+(p|4)|0;c[d>>2]=c[d>>2]|1;jY(g+b|0,q);n=a;return n|0}return 0}function jY(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;d=a;e=d+b|0;f=e;g=c[a+4>>2]|0;L375:do{if((g&1|0)==0){h=c[a>>2]|0;if((g&3|0)==0){return}i=d+(-h|0)|0;j=i;k=h+b|0;l=c[2652]|0;if(i>>>0<l>>>0){bM()}if((j|0)==(c[2653]|0)){m=d+(b+4)|0;if((c[m>>2]&3|0)!=3){n=j;o=k;break}c[2650]=k;c[m>>2]=c[m>>2]&-2;c[d+(4-h)>>2]=k|1;c[e>>2]=k;return}m=h>>>3;if(h>>>0<256){p=c[d+(8-h)>>2]|0;q=c[d+(12-h)>>2]|0;r=10632+(m<<1<<2)|0;do{if((p|0)!=(r|0)){if(p>>>0<l>>>0){bM()}if((c[p+12>>2]|0)==(j|0)){break}bM()}}while(0);if((q|0)==(p|0)){c[2648]=c[2648]&~(1<<m);n=j;o=k;break}do{if((q|0)==(r|0)){s=q+8|0}else{if(q>>>0<l>>>0){bM()}t=q+8|0;if((c[t>>2]|0)==(j|0)){s=t;break}bM()}}while(0);c[p+12>>2]=q;c[s>>2]=p;n=j;o=k;break}r=i;m=c[d+(24-h)>>2]|0;t=c[d+(12-h)>>2]|0;do{if((t|0)==(r|0)){u=16-h|0;v=d+(u+4)|0;w=c[v>>2]|0;if((w|0)==0){x=d+u|0;u=c[x>>2]|0;if((u|0)==0){y=0;break}else{z=u;A=x}}else{z=w;A=v}while(1){v=z+20|0;w=c[v>>2]|0;if((w|0)!=0){z=w;A=v;continue}v=z+16|0;w=c[v>>2]|0;if((w|0)==0){break}else{z=w;A=v}}if(A>>>0<l>>>0){bM()}else{c[A>>2]=0;y=z;break}}else{v=c[d+(8-h)>>2]|0;if(v>>>0<l>>>0){bM()}w=v+12|0;if((c[w>>2]|0)!=(r|0)){bM()}x=t+8|0;if((c[x>>2]|0)==(r|0)){c[w>>2]=t;c[x>>2]=v;y=t;break}else{bM()}}}while(0);if((m|0)==0){n=j;o=k;break}t=d+(28-h)|0;l=10896+(c[t>>2]<<2)|0;do{if((r|0)==(c[l>>2]|0)){c[l>>2]=y;if((y|0)!=0){break}c[2649]=c[2649]&~(1<<c[t>>2]);n=j;o=k;break L375}else{if(m>>>0<(c[2652]|0)>>>0){bM()}i=m+16|0;if((c[i>>2]|0)==(r|0)){c[i>>2]=y}else{c[m+20>>2]=y}if((y|0)==0){n=j;o=k;break L375}}}while(0);if(y>>>0<(c[2652]|0)>>>0){bM()}c[y+24>>2]=m;r=16-h|0;t=c[d+r>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[2652]|0)>>>0){bM()}else{c[y+16>>2]=t;c[t+24>>2]=y;break}}}while(0);t=c[d+(r+4)>>2]|0;if((t|0)==0){n=j;o=k;break}if(t>>>0<(c[2652]|0)>>>0){bM()}else{c[y+20>>2]=t;c[t+24>>2]=y;n=j;o=k;break}}else{n=a;o=b}}while(0);a=c[2652]|0;if(e>>>0<a>>>0){bM()}y=d+(b+4)|0;z=c[y>>2]|0;do{if((z&2|0)==0){if((f|0)==(c[2654]|0)){A=(c[2651]|0)+o|0;c[2651]=A;c[2654]=n;c[n+4>>2]=A|1;if((n|0)!=(c[2653]|0)){return}c[2653]=0;c[2650]=0;return}if((f|0)==(c[2653]|0)){A=(c[2650]|0)+o|0;c[2650]=A;c[2653]=n;c[n+4>>2]=A|1;c[n+A>>2]=A;return}A=(z&-8)+o|0;s=z>>>3;L474:do{if(z>>>0<256){g=c[d+(b+8)>>2]|0;t=c[d+(b+12)>>2]|0;h=10632+(s<<1<<2)|0;do{if((g|0)!=(h|0)){if(g>>>0<a>>>0){bM()}if((c[g+12>>2]|0)==(f|0)){break}bM()}}while(0);if((t|0)==(g|0)){c[2648]=c[2648]&~(1<<s);break}do{if((t|0)==(h|0)){B=t+8|0}else{if(t>>>0<a>>>0){bM()}m=t+8|0;if((c[m>>2]|0)==(f|0)){B=m;break}bM()}}while(0);c[g+12>>2]=t;c[B>>2]=g}else{h=e;m=c[d+(b+24)>>2]|0;l=c[d+(b+12)>>2]|0;do{if((l|0)==(h|0)){i=d+(b+20)|0;p=c[i>>2]|0;if((p|0)==0){q=d+(b+16)|0;v=c[q>>2]|0;if((v|0)==0){C=0;break}else{D=v;E=q}}else{D=p;E=i}while(1){i=D+20|0;p=c[i>>2]|0;if((p|0)!=0){D=p;E=i;continue}i=D+16|0;p=c[i>>2]|0;if((p|0)==0){break}else{D=p;E=i}}if(E>>>0<a>>>0){bM()}else{c[E>>2]=0;C=D;break}}else{i=c[d+(b+8)>>2]|0;if(i>>>0<a>>>0){bM()}p=i+12|0;if((c[p>>2]|0)!=(h|0)){bM()}q=l+8|0;if((c[q>>2]|0)==(h|0)){c[p>>2]=l;c[q>>2]=i;C=l;break}else{bM()}}}while(0);if((m|0)==0){break}l=d+(b+28)|0;g=10896+(c[l>>2]<<2)|0;do{if((h|0)==(c[g>>2]|0)){c[g>>2]=C;if((C|0)!=0){break}c[2649]=c[2649]&~(1<<c[l>>2]);break L474}else{if(m>>>0<(c[2652]|0)>>>0){bM()}t=m+16|0;if((c[t>>2]|0)==(h|0)){c[t>>2]=C}else{c[m+20>>2]=C}if((C|0)==0){break L474}}}while(0);if(C>>>0<(c[2652]|0)>>>0){bM()}c[C+24>>2]=m;h=c[d+(b+16)>>2]|0;do{if((h|0)!=0){if(h>>>0<(c[2652]|0)>>>0){bM()}else{c[C+16>>2]=h;c[h+24>>2]=C;break}}}while(0);h=c[d+(b+20)>>2]|0;if((h|0)==0){break}if(h>>>0<(c[2652]|0)>>>0){bM()}else{c[C+20>>2]=h;c[h+24>>2]=C;break}}}while(0);c[n+4>>2]=A|1;c[n+A>>2]=A;if((n|0)!=(c[2653]|0)){F=A;break}c[2650]=A;return}else{c[y>>2]=z&-2;c[n+4>>2]=o|1;c[n+o>>2]=o;F=o}}while(0);o=F>>>3;if(F>>>0<256){z=o<<1;y=10632+(z<<2)|0;C=c[2648]|0;b=1<<o;do{if((C&b|0)==0){c[2648]=C|b;G=y;H=10632+(z+2<<2)|0}else{o=10632+(z+2<<2)|0;d=c[o>>2]|0;if(d>>>0>=(c[2652]|0)>>>0){G=d;H=o;break}bM()}}while(0);c[H>>2]=n;c[G+12>>2]=n;c[n+8>>2]=G;c[n+12>>2]=y;return}y=n;G=F>>>8;do{if((G|0)==0){I=0}else{if(F>>>0>16777215){I=31;break}H=(G+1048320|0)>>>16&8;z=G<<H;b=(z+520192|0)>>>16&4;C=z<<b;z=(C+245760|0)>>>16&2;o=14-(b|H|z)+(C<<z>>>15)|0;I=F>>>((o+7|0)>>>0)&1|o<<1}}while(0);G=10896+(I<<2)|0;c[n+28>>2]=I;c[n+20>>2]=0;c[n+16>>2]=0;o=c[2649]|0;z=1<<I;if((o&z|0)==0){c[2649]=o|z;c[G>>2]=y;c[n+24>>2]=G;c[n+12>>2]=n;c[n+8>>2]=n;return}if((I|0)==31){J=0}else{J=25-(I>>>1)|0}I=F<<J;J=c[G>>2]|0;while(1){if((c[J+4>>2]&-8|0)==(F|0)){break}K=J+16+(I>>>31<<2)|0;G=c[K>>2]|0;if((G|0)==0){L=409;break}else{I=I<<1;J=G}}if((L|0)==409){if(K>>>0<(c[2652]|0)>>>0){bM()}c[K>>2]=y;c[n+24>>2]=J;c[n+12>>2]=n;c[n+8>>2]=n;return}K=J+8|0;L=c[K>>2]|0;I=c[2652]|0;if(J>>>0<I>>>0){bM()}if(L>>>0<I>>>0){bM()}c[L+12>>2]=y;c[K>>2]=y;c[n+8>>2]=L;c[n+12>>2]=J;c[n+24>>2]=0;return}function jZ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0.0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0.0,R=0.0,S=0.0;e=b;while(1){f=e+1|0;if((aB(a[e]|0)|0)==0){break}else{e=f}}g=a[e]|0;if((g<<24>>24|0)==43){i=f;j=0}else if((g<<24>>24|0)==45){i=f;j=1}else{i=e;j=0}e=-1;f=0;g=i;while(1){k=a[g]|0;if(((k<<24>>24)-48|0)>>>0<10){l=e}else{if(k<<24>>24!=46|(e|0)>-1){break}else{l=f}}e=l;f=f+1|0;g=g+1|0}l=g+(-f|0)|0;i=(e|0)<0;m=((i^1)<<31>>31)+f|0;n=(m|0)>18;o=(n?-18:-m|0)+(i?f:e)|0;e=n?18:m;do{if((e|0)==0){p=b;q=0.0}else{if((e|0)>9){m=l;n=e;f=0;while(1){i=a[m]|0;r=m+1|0;if(i<<24>>24==46){s=a[r]|0;t=m+2|0}else{s=i;t=r}u=(f*10|0)-48+(s<<24>>24)|0;r=n-1|0;if((r|0)>9){m=t;n=r;f=u}else{break}}v=+(u|0)*1.0e9;w=9;x=t;y=457}else{if((e|0)>0){v=0.0;w=e;x=l;y=457}else{z=0.0;A=0.0}}if((y|0)==457){f=x;n=w;m=0;while(1){r=a[f]|0;i=f+1|0;if(r<<24>>24==46){B=a[i]|0;C=f+2|0}else{B=r;C=i}D=(m*10|0)-48+(B<<24>>24)|0;i=n-1|0;if((i|0)>0){f=C;n=i;m=D}else{break}}z=+(D|0);A=v}E=A+z;do{if((k<<24>>24|0)==69|(k<<24>>24|0)==101){m=g+1|0;n=a[m]|0;if((n<<24>>24|0)==45){F=g+2|0;G=1}else if((n<<24>>24|0)==43){F=g+2|0;G=0}else{F=m;G=0}m=a[F]|0;if(((m<<24>>24)-48|0)>>>0<10){H=F;I=0;J=m}else{K=0;L=F;M=G;break}while(1){m=(I*10|0)-48+(J<<24>>24)|0;n=H+1|0;f=a[n]|0;if(((f<<24>>24)-48|0)>>>0<10){H=n;I=m;J=f}else{K=m;L=n;M=G;break}}}else{K=0;L=g;M=0}}while(0);n=o+((M|0)==0?K:-K|0)|0;m=(n|0)<0?-n|0:n;if((m|0)>511){c[(bE()|0)>>2]=34;N=1.0;O=360;P=511;y=474}else{if((m|0)==0){Q=1.0}else{N=1.0;O=360;P=m;y=474}}if((y|0)==474){while(1){y=0;if((P&1|0)==0){R=N}else{R=N*+h[O>>3]}m=P>>1;if((m|0)==0){Q=R;break}else{N=R;O=O+8|0;P=m;y=474}}}if((n|0)>-1){p=L;q=E*Q;break}else{p=L;q=E/Q;break}}}while(0);if((d|0)!=0){c[d>>2]=p}if((j|0)==0){S=q;return+S}S=-0.0-q;return+S}function j_(b){b=b|0;var c=0;c=b;while(a[c]|0){c=c+1|0}return c-b|0}function j$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b|0;if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function j0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;t=t+1|0;c[a>>2]=t;while((e|0)<40){if((c[d+(e<<2)>>2]|0)==0){c[d+(e<<2)>>2]=t;c[d+((e<<2)+4)>>2]=b;c[d+((e<<2)+8)>>2]=0;return 0}e=e+2|0}ba(116);ba(111);ba(111);ba(32);ba(109);ba(97);ba(110);ba(121);ba(32);ba(115);ba(101);ba(116);ba(106);ba(109);ba(112);ba(115);ba(32);ba(105);ba(110);ba(32);ba(97);ba(32);ba(102);ba(117);ba(110);ba(99);ba(116);ba(105);ba(111);ba(110);ba(32);ba(99);ba(97);ba(108);ba(108);ba(44);ba(32);ba(98);ba(117);ba(105);ba(108);ba(100);ba(32);ba(119);ba(105);ba(116);ba(104);ba(32);ba(97);ba(32);ba(104);ba(105);ba(103);ba(104);ba(101);ba(114);ba(32);ba(118);ba(97);ba(108);ba(117);ba(101);ba(32);ba(102);ba(111);ba(114);ba(32);ba(77);ba(65);ba(88);ba(95);ba(83);ba(69);ba(84);ba(74);ba(77);ba(80);ba(83);ba(10);ab(0);return 0}function j1(a,b){a=a|0;b=b|0;var d=0,e=0;while((d|0)<20){e=c[b+(d<<2)>>2]|0;if((e|0)==0)break;if((e|0)==(a|0)){return c[b+((d<<2)+4)>>2]|0}d=d+2|0}return 0}function j2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=b+e|0;if((e|0)>=20){d=d&255;e=b&3;g=d|d<<8|d<<16|d<<24;h=f&~3;if(e){e=b+4-e|0;while((b|0)<(e|0)){a[b]=d;b=b+1|0}}while((b|0)<(h|0)){c[b>>2]=g;b=b+4|0}}while((b|0)<(f|0)){a[b]=d;b=b+1|0}}function j3(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;while((e|0)<(d|0)){a[b+e|0]=f?0:a[c+e|0]|0;f=f?1:(a[c+e|0]|0)==0;e=e+1|0}return b|0}function j4(b,c){b=b|0;c=c|0;var d=0,e=0;d=b+(j_(b)|0)|0;do{a[d+e|0]=a[c+e|0];e=e+1|0}while(a[c+(e-1)|0]|0);return b|0}function j5(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0;while((e|0)<(c|0)){f=d[a+e|0]|0;g=d[b+e|0]|0;if((f|0)!=(g|0))return((f|0)>(g|0)?1:-1)|0;e=e+1|0}return 0}function j6(a){a=a|0;if((a|0)<65)return a|0;if((a|0)>90)return a|0;return a-65+97|0}function j7(a,b){a=a|0;b=b|0;return cd[a&1023](b|0)|0}function j8(a){a=a|0;return ag(0,a|0)|0}function j9(a){a=a|0;return ag(1,a|0)|0}function ka(a){a=a|0;return ag(2,a|0)|0}function kb(a){a=a|0;return ag(3,a|0)|0}function kc(a){a=a|0;return ag(4,a|0)|0}function kd(a){a=a|0;return ag(5,a|0)|0}function ke(a){a=a|0;return ag(6,a|0)|0}function kf(a){a=a|0;return ag(7,a|0)|0}function kg(a){a=a|0;return ag(8,a|0)|0}function kh(a){a=a|0;return ag(9,a|0)|0}function ki(a){a=a|0;return ag(10,a|0)|0}function kj(a){a=a|0;return ag(11,a|0)|0}function kk(a){a=a|0;return ag(12,a|0)|0}function kl(a){a=a|0;return ag(13,a|0)|0}function km(a){a=a|0;return ag(14,a|0)|0}function kn(a){a=a|0;return ag(15,a|0)|0}function ko(a){a=a|0;return ag(16,a|0)|0}function kp(a){a=a|0;return ag(17,a|0)|0}function kq(a){a=a|0;return ag(18,a|0)|0}function kr(a){a=a|0;return ag(19,a|0)|0}function ks(a){a=a|0;return ag(20,a|0)|0}function kt(a){a=a|0;return ag(21,a|0)|0}function ku(a){a=a|0;return ag(22,a|0)|0}function kv(a){a=a|0;return ag(23,a|0)|0}function kw(a){a=a|0;return ag(24,a|0)|0}function kx(a){a=a|0;return ag(25,a|0)|0}function ky(a){a=a|0;return ag(26,a|0)|0}function kz(a){a=a|0;return ag(27,a|0)|0}function kA(a){a=a|0;return ag(28,a|0)|0}function kB(a){a=a|0;return ag(29,a|0)|0}function kC(a){a=a|0;return ag(30,a|0)|0}function kD(a){a=a|0;return ag(31,a|0)|0}function kE(a){a=a|0;return ag(32,a|0)|0}function kF(a){a=a|0;return ag(33,a|0)|0}function kG(a){a=a|0;return ag(34,a|0)|0}function kH(a){a=a|0;return ag(35,a|0)|0}function kI(a){a=a|0;return ag(36,a|0)|0}function kJ(a){a=a|0;return ag(37,a|0)|0}function kK(a){a=a|0;return ag(38,a|0)|0}function kL(a){a=a|0;return ag(39,a|0)|0}function kM(a){a=a|0;return ag(40,a|0)|0}function kN(a){a=a|0;return ag(41,a|0)|0}function kO(a){a=a|0;return ag(42,a|0)|0}function kP(a){a=a|0;return ag(43,a|0)|0}function kQ(a){a=a|0;return ag(44,a|0)|0}function kR(a){a=a|0;return ag(45,a|0)|0}function kS(a){a=a|0;return ag(46,a|0)|0}function kT(a){a=a|0;return ag(47,a|0)|0}function kU(a){a=a|0;return ag(48,a|0)|0}function kV(a){a=a|0;return ag(49,a|0)|0}function kW(a){a=a|0;return ag(50,a|0)|0}function kX(a){a=a|0;return ag(51,a|0)|0}function kY(a){a=a|0;return ag(52,a|0)|0}function kZ(a){a=a|0;return ag(53,a|0)|0}function k_(a){a=a|0;return ag(54,a|0)|0}function k$(a){a=a|0;return ag(55,a|0)|0}function k0(a){a=a|0;return ag(56,a|0)|0}function k1(a){a=a|0;return ag(57,a|0)|0}function k2(a){a=a|0;return ag(58,a|0)|0}function k3(a){a=a|0;return ag(59,a|0)|0}function k4(a){a=a|0;return ag(60,a|0)|0}function k5(a){a=a|0;return ag(61,a|0)|0}function k6(a){a=a|0;return ag(62,a|0)|0}function k7(a){a=a|0;return ag(63,a|0)|0}function k8(a){a=a|0;return ag(64,a|0)|0}function k9(a){a=a|0;return ag(65,a|0)|0}function la(a){a=a|0;return ag(66,a|0)|0}function lb(a){a=a|0;return ag(67,a|0)|0}function lc(a){a=a|0;return ag(68,a|0)|0}function ld(a){a=a|0;return ag(69,a|0)|0}function le(a){a=a|0;return ag(70,a|0)|0}function lf(a){a=a|0;return ag(71,a|0)|0}function lg(a){a=a|0;return ag(72,a|0)|0}function lh(a){a=a|0;return ag(73,a|0)|0}function li(a){a=a|0;return ag(74,a|0)|0}function lj(a){a=a|0;return ag(75,a|0)|0}function lk(a){a=a|0;return ag(76,a|0)|0}function ll(a){a=a|0;return ag(77,a|0)|0}function lm(a){a=a|0;return ag(78,a|0)|0}function ln(a){a=a|0;return ag(79,a|0)|0}function lo(a){a=a|0;return ag(80,a|0)|0}function lp(a){a=a|0;return ag(81,a|0)|0}function lq(a){a=a|0;return ag(82,a|0)|0}function lr(a){a=a|0;return ag(83,a|0)|0}function ls(a){a=a|0;return ag(84,a|0)|0}function lt(a){a=a|0;return ag(85,a|0)|0}function lu(a){a=a|0;return ag(86,a|0)|0}function lv(a){a=a|0;return ag(87,a|0)|0}function lw(a){a=a|0;return ag(88,a|0)|0}function lx(a){a=a|0;return ag(89,a|0)|0}function ly(a){a=a|0;return ag(90,a|0)|0}function lz(a){a=a|0;return ag(91,a|0)|0}function lA(a){a=a|0;return ag(92,a|0)|0}function lB(a){a=a|0;return ag(93,a|0)|0}function lC(a){a=a|0;return ag(94,a|0)|0}function lD(a){a=a|0;return ag(95,a|0)|0}function lE(a){a=a|0;return ag(96,a|0)|0}function lF(a){a=a|0;return ag(97,a|0)|0}function lG(a){a=a|0;return ag(98,a|0)|0}function lH(a){a=a|0;return ag(99,a|0)|0}function lI(a){a=a|0;return ag(100,a|0)|0}function lJ(a){a=a|0;return ag(101,a|0)|0}function lK(a){a=a|0;return ag(102,a|0)|0}function lL(a){a=a|0;return ag(103,a|0)|0}function lM(a){a=a|0;return ag(104,a|0)|0}function lN(a){a=a|0;return ag(105,a|0)|0}function lO(a){a=a|0;return ag(106,a|0)|0}function lP(a){a=a|0;return ag(107,a|0)|0}function lQ(a){a=a|0;return ag(108,a|0)|0}function lR(a){a=a|0;return ag(109,a|0)|0}function lS(a){a=a|0;return ag(110,a|0)|0}function lT(a){a=a|0;return ag(111,a|0)|0}function lU(a){a=a|0;return ag(112,a|0)|0}function lV(a){a=a|0;return ag(113,a|0)|0}function lW(a){a=a|0;return ag(114,a|0)|0}function lX(a){a=a|0;return ag(115,a|0)|0}function lY(a){a=a|0;return ag(116,a|0)|0}function lZ(a){a=a|0;return ag(117,a|0)|0}function l_(a){a=a|0;return ag(118,a|0)|0}function l$(a){a=a|0;return ag(119,a|0)|0}function l0(a){a=a|0;return ag(120,a|0)|0}function l1(a){a=a|0;return ag(121,a|0)|0}function l2(a){a=a|0;return ag(122,a|0)|0}function l3(a){a=a|0;return ag(123,a|0)|0}function l4(a){a=a|0;return ag(124,a|0)|0}function l5(a,b){a=a|0;b=b|0;ce[a&255](b|0)}function l6(a){a=a|0;ag(0,a|0)}function l7(a){a=a|0;ag(1,a|0)}function l8(a){a=a|0;ag(2,a|0)}function l9(a){a=a|0;ag(3,a|0)}function ma(a){a=a|0;ag(4,a|0)}function mb(a){a=a|0;ag(5,a|0)}function mc(a){a=a|0;ag(6,a|0)}function md(a){a=a|0;ag(7,a|0)}function me(a){a=a|0;ag(8,a|0)}function mf(a){a=a|0;ag(9,a|0)}function mg(a){a=a|0;ag(10,a|0)}function mh(a){a=a|0;ag(11,a|0)}function mi(a){a=a|0;ag(12,a|0)}function mj(a){a=a|0;ag(13,a|0)}function mk(a){a=a|0;ag(14,a|0)}function ml(a){a=a|0;ag(15,a|0)}function mm(a){a=a|0;ag(16,a|0)}function mn(a){a=a|0;ag(17,a|0)}function mo(a){a=a|0;ag(18,a|0)}function mp(a){a=a|0;ag(19,a|0)}function mq(a){a=a|0;ag(20,a|0)}function mr(a){a=a|0;ag(21,a|0)}function ms(a){a=a|0;ag(22,a|0)}function mt(a){a=a|0;ag(23,a|0)}function mu(a){a=a|0;ag(24,a|0)}function mv(a){a=a|0;ag(25,a|0)}function mw(a){a=a|0;ag(26,a|0)}function mx(a){a=a|0;ag(27,a|0)}function my(a){a=a|0;ag(28,a|0)}function mz(a){a=a|0;ag(29,a|0)}function mA(a){a=a|0;ag(30,a|0)}function mB(a){a=a|0;ag(31,a|0)}function mC(a){a=a|0;ag(32,a|0)}function mD(a){a=a|0;ag(33,a|0)}function mE(a){a=a|0;ag(34,a|0)}function mF(a){a=a|0;ag(35,a|0)}function mG(a){a=a|0;ag(36,a|0)}function mH(a){a=a|0;ag(37,a|0)}function mI(a){a=a|0;ag(38,a|0)}function mJ(a){a=a|0;ag(39,a|0)}function mK(a){a=a|0;ag(40,a|0)}function mL(a){a=a|0;ag(41,a|0)}function mM(a){a=a|0;ag(42,a|0)}function mN(a){a=a|0;ag(43,a|0)}function mO(a){a=a|0;ag(44,a|0)}function mP(a){a=a|0;ag(45,a|0)}function mQ(a){a=a|0;ag(46,a|0)}function mR(a){a=a|0;ag(47,a|0)}function mS(a){a=a|0;ag(48,a|0)}function mT(a){a=a|0;ag(49,a|0)}function mU(a){a=a|0;ag(50,a|0)}function mV(a){a=a|0;ag(51,a|0)}function mW(a){a=a|0;ag(52,a|0)}function mX(a){a=a|0;ag(53,a|0)}function mY(a){a=a|0;ag(54,a|0)}function mZ(a){a=a|0;ag(55,a|0)}function m_(a){a=a|0;ag(56,a|0)}function m$(a){a=a|0;ag(57,a|0)}function m0(a){a=a|0;ag(58,a|0)}function m1(a){a=a|0;ag(59,a|0)}function m2(a){a=a|0;ag(60,a|0)}function m3(a){a=a|0;ag(61,a|0)}function m4(a){a=a|0;ag(62,a|0)}function m5(a){a=a|0;ag(63,a|0)}function m6(a){a=a|0;ag(64,a|0)}function m7(a){a=a|0;ag(65,a|0)}function m8(a){a=a|0;ag(66,a|0)}function m9(a){a=a|0;ag(67,a|0)}function na(a){a=a|0;ag(68,a|0)}function nb(a){a=a|0;ag(69,a|0)}function nc(a){a=a|0;ag(70,a|0)}function nd(a){a=a|0;ag(71,a|0)}function ne(a){a=a|0;ag(72,a|0)}function nf(a){a=a|0;ag(73,a|0)}function ng(a){a=a|0;ag(74,a|0)}function nh(a){a=a|0;ag(75,a|0)}function ni(a){a=a|0;ag(76,a|0)}function nj(a){a=a|0;ag(77,a|0)}function nk(a){a=a|0;ag(78,a|0)}function nl(a){a=a|0;ag(79,a|0)}function nm(a){a=a|0;ag(80,a|0)}function nn(a){a=a|0;ag(81,a|0)}function no(a){a=a|0;ag(82,a|0)}function np(a){a=a|0;ag(83,a|0)}function nq(a){a=a|0;ag(84,a|0)}function nr(a){a=a|0;ag(85,a|0)}function ns(a){a=a|0;ag(86,a|0)}function nt(a){a=a|0;ag(87,a|0)}function nu(a){a=a|0;ag(88,a|0)}function nv(a){a=a|0;ag(89,a|0)}function nw(a){a=a|0;ag(90,a|0)}function nx(a){a=a|0;ag(91,a|0)}function ny(a){a=a|0;ag(92,a|0)}function nz(a){a=a|0;ag(93,a|0)}function nA(a){a=a|0;ag(94,a|0)}function nB(a){a=a|0;ag(95,a|0)}function nC(a){a=a|0;ag(96,a|0)}function nD(a){a=a|0;ag(97,a|0)}function nE(a){a=a|0;ag(98,a|0)}function nF(a){a=a|0;ag(99,a|0)}function nG(a){a=a|0;ag(100,a|0)}function nH(a){a=a|0;ag(101,a|0)}function nI(a){a=a|0;ag(102,a|0)}function nJ(a){a=a|0;ag(103,a|0)}function nK(a){a=a|0;ag(104,a|0)}function nL(a){a=a|0;ag(105,a|0)}function nM(a){a=a|0;ag(106,a|0)}function nN(a){a=a|0;ag(107,a|0)}function nO(a){a=a|0;ag(108,a|0)}function nP(a){a=a|0;ag(109,a|0)}function nQ(a){a=a|0;ag(110,a|0)}function nR(a){a=a|0;ag(111,a|0)}function nS(a){a=a|0;ag(112,a|0)}function nT(a){a=a|0;ag(113,a|0)}function nU(a){a=a|0;ag(114,a|0)}function nV(a){a=a|0;ag(115,a|0)}function nW(a){a=a|0;ag(116,a|0)}function nX(a){a=a|0;ag(117,a|0)}function nY(a){a=a|0;ag(118,a|0)}function nZ(a){a=a|0;ag(119,a|0)}function n_(a){a=a|0;ag(120,a|0)}function n$(a){a=a|0;ag(121,a|0)}function n0(a){a=a|0;ag(122,a|0)}function n1(a){a=a|0;ag(123,a|0)}function n2(a){a=a|0;ag(124,a|0)}function n3(a,b,c){a=a|0;b=b|0;c=c|0;cf[a&511](b|0,c|0)}function n4(a,b){a=a|0;b=b|0;ag(0,a|0,b|0)}function n5(a,b){a=a|0;b=b|0;ag(1,a|0,b|0)}function n6(a,b){a=a|0;b=b|0;ag(2,a|0,b|0)}function n7(a,b){a=a|0;b=b|0;ag(3,a|0,b|0)}function n8(a,b){a=a|0;b=b|0;ag(4,a|0,b|0)}function n9(a,b){a=a|0;b=b|0;ag(5,a|0,b|0)}function oa(a,b){a=a|0;b=b|0;ag(6,a|0,b|0)}function ob(a,b){a=a|0;b=b|0;ag(7,a|0,b|0)}function oc(a,b){a=a|0;b=b|0;ag(8,a|0,b|0)}function od(a,b){a=a|0;b=b|0;ag(9,a|0,b|0)}function oe(a,b){a=a|0;b=b|0;ag(10,a|0,b|0)}function of(a,b){a=a|0;b=b|0;ag(11,a|0,b|0)}function og(a,b){a=a|0;b=b|0;ag(12,a|0,b|0)}function oh(a,b){a=a|0;b=b|0;ag(13,a|0,b|0)}function oi(a,b){a=a|0;b=b|0;ag(14,a|0,b|0)}function oj(a,b){a=a|0;b=b|0;ag(15,a|0,b|0)}function ok(a,b){a=a|0;b=b|0;ag(16,a|0,b|0)}function ol(a,b){a=a|0;b=b|0;ag(17,a|0,b|0)}function om(a,b){a=a|0;b=b|0;ag(18,a|0,b|0)}function on(a,b){a=a|0;b=b|0;ag(19,a|0,b|0)}function oo(a,b){a=a|0;b=b|0;ag(20,a|0,b|0)}function op(a,b){a=a|0;b=b|0;ag(21,a|0,b|0)}function oq(a,b){a=a|0;b=b|0;ag(22,a|0,b|0)}function or(a,b){a=a|0;b=b|0;ag(23,a|0,b|0)}function os(a,b){a=a|0;b=b|0;ag(24,a|0,b|0)}function ot(a,b){a=a|0;b=b|0;ag(25,a|0,b|0)}function ou(a,b){a=a|0;b=b|0;ag(26,a|0,b|0)}function ov(a,b){a=a|0;b=b|0;ag(27,a|0,b|0)}function ow(a,b){a=a|0;b=b|0;ag(28,a|0,b|0)}function ox(a,b){a=a|0;b=b|0;ag(29,a|0,b|0)}function oy(a,b){a=a|0;b=b|0;ag(30,a|0,b|0)}function oz(a,b){a=a|0;b=b|0;ag(31,a|0,b|0)}function oA(a,b){a=a|0;b=b|0;ag(32,a|0,b|0)}function oB(a,b){a=a|0;b=b|0;ag(33,a|0,b|0)}function oC(a,b){a=a|0;b=b|0;ag(34,a|0,b|0)}function oD(a,b){a=a|0;b=b|0;ag(35,a|0,b|0)}function oE(a,b){a=a|0;b=b|0;ag(36,a|0,b|0)}function oF(a,b){a=a|0;b=b|0;ag(37,a|0,b|0)}function oG(a,b){a=a|0;b=b|0;ag(38,a|0,b|0)}function oH(a,b){a=a|0;b=b|0;ag(39,a|0,b|0)}function oI(a,b){a=a|0;b=b|0;ag(40,a|0,b|0)}function oJ(a,b){a=a|0;b=b|0;ag(41,a|0,b|0)}function oK(a,b){a=a|0;b=b|0;ag(42,a|0,b|0)}function oL(a,b){a=a|0;b=b|0;ag(43,a|0,b|0)}function oM(a,b){a=a|0;b=b|0;ag(44,a|0,b|0)}function oN(a,b){a=a|0;b=b|0;ag(45,a|0,b|0)}function oO(a,b){a=a|0;b=b|0;ag(46,a|0,b|0)}function oP(a,b){a=a|0;b=b|0;ag(47,a|0,b|0)}function oQ(a,b){a=a|0;b=b|0;ag(48,a|0,b|0)}function oR(a,b){a=a|0;b=b|0;ag(49,a|0,b|0)}function oS(a,b){a=a|0;b=b|0;ag(50,a|0,b|0)}function oT(a,b){a=a|0;b=b|0;ag(51,a|0,b|0)}function oU(a,b){a=a|0;b=b|0;ag(52,a|0,b|0)}function oV(a,b){a=a|0;b=b|0;ag(53,a|0,b|0)}function oW(a,b){a=a|0;b=b|0;ag(54,a|0,b|0)}function oX(a,b){a=a|0;b=b|0;ag(55,a|0,b|0)}function oY(a,b){a=a|0;b=b|0;ag(56,a|0,b|0)}function oZ(a,b){a=a|0;b=b|0;ag(57,a|0,b|0)}function o_(a,b){a=a|0;b=b|0;ag(58,a|0,b|0)}function o$(a,b){a=a|0;b=b|0;ag(59,a|0,b|0)}function o0(a,b){a=a|0;b=b|0;ag(60,a|0,b|0)}function o1(a,b){a=a|0;b=b|0;ag(61,a|0,b|0)}function o2(a,b){a=a|0;b=b|0;ag(62,a|0,b|0)}function o3(a,b){a=a|0;b=b|0;ag(63,a|0,b|0)}function o4(a,b){a=a|0;b=b|0;ag(64,a|0,b|0)}function o5(a,b){a=a|0;b=b|0;ag(65,a|0,b|0)}function o6(a,b){a=a|0;b=b|0;ag(66,a|0,b|0)}function o7(a,b){a=a|0;b=b|0;ag(67,a|0,b|0)}function o8(a,b){a=a|0;b=b|0;ag(68,a|0,b|0)}function o9(a,b){a=a|0;b=b|0;ag(69,a|0,b|0)}function pa(a,b){a=a|0;b=b|0;ag(70,a|0,b|0)}function pb(a,b){a=a|0;b=b|0;ag(71,a|0,b|0)}function pc(a,b){a=a|0;b=b|0;ag(72,a|0,b|0)}function pd(a,b){a=a|0;b=b|0;ag(73,a|0,b|0)}function pe(a,b){a=a|0;b=b|0;ag(74,a|0,b|0)}function pf(a,b){a=a|0;b=b|0;ag(75,a|0,b|0)}function pg(a,b){a=a|0;b=b|0;ag(76,a|0,b|0)}function ph(a,b){a=a|0;b=b|0;ag(77,a|0,b|0)}function pi(a,b){a=a|0;b=b|0;ag(78,a|0,b|0)}function pj(a,b){a=a|0;b=b|0;ag(79,a|0,b|0)}function pk(a,b){a=a|0;b=b|0;ag(80,a|0,b|0)}function pl(a,b){a=a|0;b=b|0;ag(81,a|0,b|0)}function pm(a,b){a=a|0;b=b|0;ag(82,a|0,b|0)}function pn(a,b){a=a|0;b=b|0;ag(83,a|0,b|0)}function po(a,b){a=a|0;b=b|0;ag(84,a|0,b|0)}function pp(a,b){a=a|0;b=b|0;ag(85,a|0,b|0)}function pq(a,b){a=a|0;b=b|0;ag(86,a|0,b|0)}function pr(a,b){a=a|0;b=b|0;ag(87,a|0,b|0)}function ps(a,b){a=a|0;b=b|0;ag(88,a|0,b|0)}function pt(a,b){a=a|0;b=b|0;ag(89,a|0,b|0)}function pu(a,b){a=a|0;b=b|0;ag(90,a|0,b|0)}function pv(a,b){a=a|0;b=b|0;ag(91,a|0,b|0)}function pw(a,b){a=a|0;b=b|0;ag(92,a|0,b|0)}function px(a,b){a=a|0;b=b|0;ag(93,a|0,b|0)}function py(a,b){a=a|0;b=b|0;ag(94,a|0,b|0)}function pz(a,b){a=a|0;b=b|0;ag(95,a|0,b|0)}function pA(a,b){a=a|0;b=b|0;ag(96,a|0,b|0)}function pB(a,b){a=a|0;b=b|0;ag(97,a|0,b|0)}function pC(a,b){a=a|0;b=b|0;ag(98,a|0,b|0)}function pD(a,b){a=a|0;b=b|0;ag(99,a|0,b|0)}function pE(a,b){a=a|0;b=b|0;ag(100,a|0,b|0)}function pF(a,b){a=a|0;b=b|0;ag(101,a|0,b|0)}function pG(a,b){a=a|0;b=b|0;ag(102,a|0,b|0)}function pH(a,b){a=a|0;b=b|0;ag(103,a|0,b|0)}function pI(a,b){a=a|0;b=b|0;ag(104,a|0,b|0)}function pJ(a,b){a=a|0;b=b|0;ag(105,a|0,b|0)}function pK(a,b){a=a|0;b=b|0;ag(106,a|0,b|0)}function pL(a,b){a=a|0;b=b|0;ag(107,a|0,b|0)}function pM(a,b){a=a|0;b=b|0;ag(108,a|0,b|0)}function pN(a,b){a=a|0;b=b|0;ag(109,a|0,b|0)}function pO(a,b){a=a|0;b=b|0;ag(110,a|0,b|0)}function pP(a,b){a=a|0;b=b|0;ag(111,a|0,b|0)}function pQ(a,b){a=a|0;b=b|0;ag(112,a|0,b|0)}function pR(a,b){a=a|0;b=b|0;ag(113,a|0,b|0)}function pS(a,b){a=a|0;b=b|0;ag(114,a|0,b|0)}function pT(a,b){a=a|0;b=b|0;ag(115,a|0,b|0)}function pU(a,b){a=a|0;b=b|0;ag(116,a|0,b|0)}function pV(a,b){a=a|0;b=b|0;ag(117,a|0,b|0)}function pW(a,b){a=a|0;b=b|0;ag(118,a|0,b|0)}function pX(a,b){a=a|0;b=b|0;ag(119,a|0,b|0)}function pY(a,b){a=a|0;b=b|0;ag(120,a|0,b|0)}function pZ(a,b){a=a|0;b=b|0;ag(121,a|0,b|0)}function p_(a,b){a=a|0;b=b|0;ag(122,a|0,b|0)}function p$(a,b){a=a|0;b=b|0;ag(123,a|0,b|0)}function p0(a,b){a=a|0;b=b|0;ag(124,a|0,b|0)}function p1(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return cg[a&511](b|0,c|0,d|0,e|0)|0}function p2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(0,a|0,b|0,c|0,d|0)|0}function p3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(1,a|0,b|0,c|0,d|0)|0}function p4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(2,a|0,b|0,c|0,d|0)|0}function p5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(3,a|0,b|0,c|0,d|0)|0}function p6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(4,a|0,b|0,c|0,d|0)|0}function p7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(5,a|0,b|0,c|0,d|0)|0}function p8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(6,a|0,b|0,c|0,d|0)|0}function p9(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(7,a|0,b|0,c|0,d|0)|0}function qa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(8,a|0,b|0,c|0,d|0)|0}function qb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(9,a|0,b|0,c|0,d|0)|0}function qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(10,a|0,b|0,c|0,d|0)|0}function qd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(11,a|0,b|0,c|0,d|0)|0}function qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(12,a|0,b|0,c|0,d|0)|0}function qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(13,a|0,b|0,c|0,d|0)|0}function qg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(14,a|0,b|0,c|0,d|0)|0}function qh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(15,a|0,b|0,c|0,d|0)|0}function qi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(16,a|0,b|0,c|0,d|0)|0}function qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(17,a|0,b|0,c|0,d|0)|0}function qk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(18,a|0,b|0,c|0,d|0)|0}function ql(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(19,a|0,b|0,c|0,d|0)|0}function qm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(20,a|0,b|0,c|0,d|0)|0}function qn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(21,a|0,b|0,c|0,d|0)|0}function qo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(22,a|0,b|0,c|0,d|0)|0}function qp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(23,a|0,b|0,c|0,d|0)|0}function qq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(24,a|0,b|0,c|0,d|0)|0}function qr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(25,a|0,b|0,c|0,d|0)|0}function qs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(26,a|0,b|0,c|0,d|0)|0}function qt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(27,a|0,b|0,c|0,d|0)|0}function qu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(28,a|0,b|0,c|0,d|0)|0}function qv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(29,a|0,b|0,c|0,d|0)|0}function qw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(30,a|0,b|0,c|0,d|0)|0}function qx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(31,a|0,b|0,c|0,d|0)|0}function qy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(32,a|0,b|0,c|0,d|0)|0}function qz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(33,a|0,b|0,c|0,d|0)|0}function qA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(34,a|0,b|0,c|0,d|0)|0}function qB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(35,a|0,b|0,c|0,d|0)|0}function qC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(36,a|0,b|0,c|0,d|0)|0}function qD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(37,a|0,b|0,c|0,d|0)|0}function qE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(38,a|0,b|0,c|0,d|0)|0}function qF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(39,a|0,b|0,c|0,d|0)|0}function qG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(40,a|0,b|0,c|0,d|0)|0}function qH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(41,a|0,b|0,c|0,d|0)|0}function qI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(42,a|0,b|0,c|0,d|0)|0}function qJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(43,a|0,b|0,c|0,d|0)|0}function qK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(44,a|0,b|0,c|0,d|0)|0}function qL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(45,a|0,b|0,c|0,d|0)|0}function qM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(46,a|0,b|0,c|0,d|0)|0}function qN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(47,a|0,b|0,c|0,d|0)|0}function qO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(48,a|0,b|0,c|0,d|0)|0}function qP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(49,a|0,b|0,c|0,d|0)|0}function qQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(50,a|0,b|0,c|0,d|0)|0}function qR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(51,a|0,b|0,c|0,d|0)|0}function qS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(52,a|0,b|0,c|0,d|0)|0}function qT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(53,a|0,b|0,c|0,d|0)|0}function qU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(54,a|0,b|0,c|0,d|0)|0}function qV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(55,a|0,b|0,c|0,d|0)|0}function qW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(56,a|0,b|0,c|0,d|0)|0}function qX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(57,a|0,b|0,c|0,d|0)|0}function qY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(58,a|0,b|0,c|0,d|0)|0}function qZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(59,a|0,b|0,c|0,d|0)|0}function q_(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(60,a|0,b|0,c|0,d|0)|0}function q$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(61,a|0,b|0,c|0,d|0)|0}function q0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(62,a|0,b|0,c|0,d|0)|0}function q1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(63,a|0,b|0,c|0,d|0)|0}function q2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(64,a|0,b|0,c|0,d|0)|0}function q3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(65,a|0,b|0,c|0,d|0)|0}function q4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(66,a|0,b|0,c|0,d|0)|0}function q5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(67,a|0,b|0,c|0,d|0)|0}function q6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(68,a|0,b|0,c|0,d|0)|0}function q7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(69,a|0,b|0,c|0,d|0)|0}function q8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(70,a|0,b|0,c|0,d|0)|0}function q9(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(71,a|0,b|0,c|0,d|0)|0}function ra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(72,a|0,b|0,c|0,d|0)|0}function rb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(73,a|0,b|0,c|0,d|0)|0}function rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(74,a|0,b|0,c|0,d|0)|0}function rd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(75,a|0,b|0,c|0,d|0)|0}function re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(76,a|0,b|0,c|0,d|0)|0}function rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(77,a|0,b|0,c|0,d|0)|0}function rg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(78,a|0,b|0,c|0,d|0)|0}function rh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(79,a|0,b|0,c|0,d|0)|0}function ri(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(80,a|0,b|0,c|0,d|0)|0}function rj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(81,a|0,b|0,c|0,d|0)|0}function rk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(82,a|0,b|0,c|0,d|0)|0}function rl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(83,a|0,b|0,c|0,d|0)|0}function rm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(84,a|0,b|0,c|0,d|0)|0}function rn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(85,a|0,b|0,c|0,d|0)|0}function ro(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(86,a|0,b|0,c|0,d|0)|0}function rp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(87,a|0,b|0,c|0,d|0)|0}function rq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(88,a|0,b|0,c|0,d|0)|0}function rr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(89,a|0,b|0,c|0,d|0)|0}function rs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(90,a|0,b|0,c|0,d|0)|0}function rt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(91,a|0,b|0,c|0,d|0)|0}function ru(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(92,a|0,b|0,c|0,d|0)|0}function rv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(93,a|0,b|0,c|0,d|0)|0}function rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(94,a|0,b|0,c|0,d|0)|0}function rx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(95,a|0,b|0,c|0,d|0)|0}function ry(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(96,a|0,b|0,c|0,d|0)|0}function rz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(97,a|0,b|0,c|0,d|0)|0}function rA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(98,a|0,b|0,c|0,d|0)|0}function rB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(99,a|0,b|0,c|0,d|0)|0}function rC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(100,a|0,b|0,c|0,d|0)|0}function rD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(101,a|0,b|0,c|0,d|0)|0}function rE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(102,a|0,b|0,c|0,d|0)|0}function rF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(103,a|0,b|0,c|0,d|0)|0}function rG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(104,a|0,b|0,c|0,d|0)|0}function rH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(105,a|0,b|0,c|0,d|0)|0}function rI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(106,a|0,b|0,c|0,d|0)|0}function rJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(107,a|0,b|0,c|0,d|0)|0}function rK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(108,a|0,b|0,c|0,d|0)|0}function rL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(109,a|0,b|0,c|0,d|0)|0}function rM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(110,a|0,b|0,c|0,d|0)|0}function rN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(111,a|0,b|0,c|0,d|0)|0}function rO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(112,a|0,b|0,c|0,d|0)|0}function rP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(113,a|0,b|0,c|0,d|0)|0}function rQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(114,a|0,b|0,c|0,d|0)|0}function rR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(115,a|0,b|0,c|0,d|0)|0}function rS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(116,a|0,b|0,c|0,d|0)|0}function rT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(117,a|0,b|0,c|0,d|0)|0}function rU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(118,a|0,b|0,c|0,d|0)|0}function rV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(119,a|0,b|0,c|0,d|0)|0}function rW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(120,a|0,b|0,c|0,d|0)|0}function rX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(121,a|0,b|0,c|0,d|0)|0}function rY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(122,a|0,b|0,c|0,d|0)|0}function rZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(123,a|0,b|0,c|0,d|0)|0}function r_(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(124,a|0,b|0,c|0,d|0)|0}function r$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ch[a&511](b|0,c|0,d|0)|0}function r0(a,b,c){a=a|0;b=b|0;c=c|0;return ag(0,a|0,b|0,c|0)|0}function r1(a,b,c){a=a|0;b=b|0;c=c|0;return ag(1,a|0,b|0,c|0)|0}function r2(a,b,c){a=a|0;b=b|0;c=c|0;return ag(2,a|0,b|0,c|0)|0}function r3(a,b,c){a=a|0;b=b|0;c=c|0;return ag(3,a|0,b|0,c|0)|0}function r4(a,b,c){a=a|0;b=b|0;c=c|0;return ag(4,a|0,b|0,c|0)|0}function r5(a,b,c){a=a|0;b=b|0;c=c|0;return ag(5,a|0,b|0,c|0)|0}function r6(a,b,c){a=a|0;b=b|0;c=c|0;return ag(6,a|0,b|0,c|0)|0}function r7(a,b,c){a=a|0;b=b|0;c=c|0;return ag(7,a|0,b|0,c|0)|0}function r8(a,b,c){a=a|0;b=b|0;c=c|0;return ag(8,a|0,b|0,c|0)|0}function r9(a,b,c){a=a|0;b=b|0;c=c|0;return ag(9,a|0,b|0,c|0)|0}function sa(a,b,c){a=a|0;b=b|0;c=c|0;return ag(10,a|0,b|0,c|0)|0}function sb(a,b,c){a=a|0;b=b|0;c=c|0;return ag(11,a|0,b|0,c|0)|0}function sc(a,b,c){a=a|0;b=b|0;c=c|0;return ag(12,a|0,b|0,c|0)|0}function sd(a,b,c){a=a|0;b=b|0;c=c|0;return ag(13,a|0,b|0,c|0)|0}function se(a,b,c){a=a|0;b=b|0;c=c|0;return ag(14,a|0,b|0,c|0)|0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;return ag(15,a|0,b|0,c|0)|0}function sg(a,b,c){a=a|0;b=b|0;c=c|0;return ag(16,a|0,b|0,c|0)|0}function sh(a,b,c){a=a|0;b=b|0;c=c|0;return ag(17,a|0,b|0,c|0)|0}function si(a,b,c){a=a|0;b=b|0;c=c|0;return ag(18,a|0,b|0,c|0)|0}function sj(a,b,c){a=a|0;b=b|0;c=c|0;return ag(19,a|0,b|0,c|0)|0}function sk(a,b,c){a=a|0;b=b|0;c=c|0;return ag(20,a|0,b|0,c|0)|0}function sl(a,b,c){a=a|0;b=b|0;c=c|0;return ag(21,a|0,b|0,c|0)|0}function sm(a,b,c){a=a|0;b=b|0;c=c|0;return ag(22,a|0,b|0,c|0)|0}function sn(a,b,c){a=a|0;b=b|0;c=c|0;return ag(23,a|0,b|0,c|0)|0}function so(a,b,c){a=a|0;b=b|0;c=c|0;return ag(24,a|0,b|0,c|0)|0}function sp(a,b,c){a=a|0;b=b|0;c=c|0;return ag(25,a|0,b|0,c|0)|0}function sq(a,b,c){a=a|0;b=b|0;c=c|0;return ag(26,a|0,b|0,c|0)|0}function sr(a,b,c){a=a|0;b=b|0;c=c|0;return ag(27,a|0,b|0,c|0)|0}function ss(a,b,c){a=a|0;b=b|0;c=c|0;return ag(28,a|0,b|0,c|0)|0}function st(a,b,c){a=a|0;b=b|0;c=c|0;return ag(29,a|0,b|0,c|0)|0}function su(a,b,c){a=a|0;b=b|0;c=c|0;return ag(30,a|0,b|0,c|0)|0}function sv(a,b,c){a=a|0;b=b|0;c=c|0;return ag(31,a|0,b|0,c|0)|0}function sw(a,b,c){a=a|0;b=b|0;c=c|0;return ag(32,a|0,b|0,c|0)|0}function sx(a,b,c){a=a|0;b=b|0;c=c|0;return ag(33,a|0,b|0,c|0)|0}function sy(a,b,c){a=a|0;b=b|0;c=c|0;return ag(34,a|0,b|0,c|0)|0}function sz(a,b,c){a=a|0;b=b|0;c=c|0;return ag(35,a|0,b|0,c|0)|0}function sA(a,b,c){a=a|0;b=b|0;c=c|0;return ag(36,a|0,b|0,c|0)|0}function sB(a,b,c){a=a|0;b=b|0;c=c|0;return ag(37,a|0,b|0,c|0)|0}function sC(a,b,c){a=a|0;b=b|0;c=c|0;return ag(38,a|0,b|0,c|0)|0}function sD(a,b,c){a=a|0;b=b|0;c=c|0;return ag(39,a|0,b|0,c|0)|0}function sE(a,b,c){a=a|0;b=b|0;c=c|0;return ag(40,a|0,b|0,c|0)|0}function sF(a,b,c){a=a|0;b=b|0;c=c|0;return ag(41,a|0,b|0,c|0)|0}function sG(a,b,c){a=a|0;b=b|0;c=c|0;return ag(42,a|0,b|0,c|0)|0}function sH(a,b,c){a=a|0;b=b|0;c=c|0;return ag(43,a|0,b|0,c|0)|0}function sI(a,b,c){a=a|0;b=b|0;c=c|0;return ag(44,a|0,b|0,c|0)|0}function sJ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(45,a|0,b|0,c|0)|0}function sK(a,b,c){a=a|0;b=b|0;c=c|0;return ag(46,a|0,b|0,c|0)|0}function sL(a,b,c){a=a|0;b=b|0;c=c|0;return ag(47,a|0,b|0,c|0)|0}function sM(a,b,c){a=a|0;b=b|0;c=c|0;return ag(48,a|0,b|0,c|0)|0}function sN(a,b,c){a=a|0;b=b|0;c=c|0;return ag(49,a|0,b|0,c|0)|0}function sO(a,b,c){a=a|0;b=b|0;c=c|0;return ag(50,a|0,b|0,c|0)|0}function sP(a,b,c){a=a|0;b=b|0;c=c|0;return ag(51,a|0,b|0,c|0)|0}function sQ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(52,a|0,b|0,c|0)|0}function sR(a,b,c){a=a|0;b=b|0;c=c|0;return ag(53,a|0,b|0,c|0)|0}function sS(a,b,c){a=a|0;b=b|0;c=c|0;return ag(54,a|0,b|0,c|0)|0}function sT(a,b,c){a=a|0;b=b|0;c=c|0;return ag(55,a|0,b|0,c|0)|0}function sU(a,b,c){a=a|0;b=b|0;c=c|0;return ag(56,a|0,b|0,c|0)|0}function sV(a,b,c){a=a|0;b=b|0;c=c|0;return ag(57,a|0,b|0,c|0)|0}function sW(a,b,c){a=a|0;b=b|0;c=c|0;return ag(58,a|0,b|0,c|0)|0}function sX(a,b,c){a=a|0;b=b|0;c=c|0;return ag(59,a|0,b|0,c|0)|0}function sY(a,b,c){a=a|0;b=b|0;c=c|0;return ag(60,a|0,b|0,c|0)|0}function sZ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(61,a|0,b|0,c|0)|0}function s_(a,b,c){a=a|0;b=b|0;c=c|0;return ag(62,a|0,b|0,c|0)|0}function s$(a,b,c){a=a|0;b=b|0;c=c|0;return ag(63,a|0,b|0,c|0)|0}function s0(a,b,c){a=a|0;b=b|0;c=c|0;return ag(64,a|0,b|0,c|0)|0}function s1(a,b,c){a=a|0;b=b|0;c=c|0;return ag(65,a|0,b|0,c|0)|0}function s2(a,b,c){a=a|0;b=b|0;c=c|0;return ag(66,a|0,b|0,c|0)|0}function s3(a,b,c){a=a|0;b=b|0;c=c|0;return ag(67,a|0,b|0,c|0)|0}function s4(a,b,c){a=a|0;b=b|0;c=c|0;return ag(68,a|0,b|0,c|0)|0}function s5(a,b,c){a=a|0;b=b|0;c=c|0;return ag(69,a|0,b|0,c|0)|0}function s6(a,b,c){a=a|0;b=b|0;c=c|0;return ag(70,a|0,b|0,c|0)|0}function s7(a,b,c){a=a|0;b=b|0;c=c|0;return ag(71,a|0,b|0,c|0)|0}function s8(a,b,c){a=a|0;b=b|0;c=c|0;return ag(72,a|0,b|0,c|0)|0}function s9(a,b,c){a=a|0;b=b|0;c=c|0;return ag(73,a|0,b|0,c|0)|0}function ta(a,b,c){a=a|0;b=b|0;c=c|0;return ag(74,a|0,b|0,c|0)|0}function tb(a,b,c){a=a|0;b=b|0;c=c|0;return ag(75,a|0,b|0,c|0)|0}function tc(a,b,c){a=a|0;b=b|0;c=c|0;return ag(76,a|0,b|0,c|0)|0}function td(a,b,c){a=a|0;b=b|0;c=c|0;return ag(77,a|0,b|0,c|0)|0}function te(a,b,c){a=a|0;b=b|0;c=c|0;return ag(78,a|0,b|0,c|0)|0}function tf(a,b,c){a=a|0;b=b|0;c=c|0;return ag(79,a|0,b|0,c|0)|0}function tg(a,b,c){a=a|0;b=b|0;c=c|0;return ag(80,a|0,b|0,c|0)|0}function th(a,b,c){a=a|0;b=b|0;c=c|0;return ag(81,a|0,b|0,c|0)|0}function ti(a,b,c){a=a|0;b=b|0;c=c|0;return ag(82,a|0,b|0,c|0)|0}function tj(a,b,c){a=a|0;b=b|0;c=c|0;return ag(83,a|0,b|0,c|0)|0}function tk(a,b,c){a=a|0;b=b|0;c=c|0;return ag(84,a|0,b|0,c|0)|0}function tl(a,b,c){a=a|0;b=b|0;c=c|0;return ag(85,a|0,b|0,c|0)|0}function tm(a,b,c){a=a|0;b=b|0;c=c|0;return ag(86,a|0,b|0,c|0)|0}function tn(a,b,c){a=a|0;b=b|0;c=c|0;return ag(87,a|0,b|0,c|0)|0}function to(a,b,c){a=a|0;b=b|0;c=c|0;return ag(88,a|0,b|0,c|0)|0}function tp(a,b,c){a=a|0;b=b|0;c=c|0;return ag(89,a|0,b|0,c|0)|0}function tq(a,b,c){a=a|0;b=b|0;c=c|0;return ag(90,a|0,b|0,c|0)|0}function tr(a,b,c){a=a|0;b=b|0;c=c|0;return ag(91,a|0,b|0,c|0)|0}function ts(a,b,c){a=a|0;b=b|0;c=c|0;return ag(92,a|0,b|0,c|0)|0}function tt(a,b,c){a=a|0;b=b|0;c=c|0;return ag(93,a|0,b|0,c|0)|0}function tu(a,b,c){a=a|0;b=b|0;c=c|0;return ag(94,a|0,b|0,c|0)|0}function tv(a,b,c){a=a|0;b=b|0;c=c|0;return ag(95,a|0,b|0,c|0)|0}function tw(a,b,c){a=a|0;b=b|0;c=c|0;return ag(96,a|0,b|0,c|0)|0}function tx(a,b,c){a=a|0;b=b|0;c=c|0;return ag(97,a|0,b|0,c|0)|0}function ty(a,b,c){a=a|0;b=b|0;c=c|0;return ag(98,a|0,b|0,c|0)|0}function tz(a,b,c){a=a|0;b=b|0;c=c|0;return ag(99,a|0,b|0,c|0)|0}function tA(a,b,c){a=a|0;b=b|0;c=c|0;return ag(100,a|0,b|0,c|0)|0}function tB(a,b,c){a=a|0;b=b|0;c=c|0;return ag(101,a|0,b|0,c|0)|0}function tC(a,b,c){a=a|0;b=b|0;c=c|0;return ag(102,a|0,b|0,c|0)|0}function tD(a,b,c){a=a|0;b=b|0;c=c|0;return ag(103,a|0,b|0,c|0)|0}function tE(a,b,c){a=a|0;b=b|0;c=c|0;return ag(104,a|0,b|0,c|0)|0}function tF(a,b,c){a=a|0;b=b|0;c=c|0;return ag(105,a|0,b|0,c|0)|0}function tG(a,b,c){a=a|0;b=b|0;c=c|0;return ag(106,a|0,b|0,c|0)|0}function tH(a,b,c){a=a|0;b=b|0;c=c|0;return ag(107,a|0,b|0,c|0)|0}function tI(a,b,c){a=a|0;b=b|0;c=c|0;return ag(108,a|0,b|0,c|0)|0}function tJ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(109,a|0,b|0,c|0)|0}function tK(a,b,c){a=a|0;b=b|0;c=c|0;return ag(110,a|0,b|0,c|0)|0}function tL(a,b,c){a=a|0;b=b|0;c=c|0;return ag(111,a|0,b|0,c|0)|0}function tM(a,b,c){a=a|0;b=b|0;c=c|0;return ag(112,a|0,b|0,c|0)|0}function tN(a,b,c){a=a|0;b=b|0;c=c|0;return ag(113,a|0,b|0,c|0)|0}function tO(a,b,c){a=a|0;b=b|0;c=c|0;return ag(114,a|0,b|0,c|0)|0}function tP(a,b,c){a=a|0;b=b|0;c=c|0;return ag(115,a|0,b|0,c|0)|0}function tQ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(116,a|0,b|0,c|0)|0}function tR(a,b,c){a=a|0;b=b|0;c=c|0;return ag(117,a|0,b|0,c|0)|0}function tS(a,b,c){a=a|0;b=b|0;c=c|0;return ag(118,a|0,b|0,c|0)|0}function tT(a,b,c){a=a|0;b=b|0;c=c|0;return ag(119,a|0,b|0,c|0)|0}function tU(a,b,c){a=a|0;b=b|0;c=c|0;return ag(120,a|0,b|0,c|0)|0}function tV(a,b,c){a=a|0;b=b|0;c=c|0;return ag(121,a|0,b|0,c|0)|0}function tW(a,b,c){a=a|0;b=b|0;c=c|0;return ag(122,a|0,b|0,c|0)|0}function tX(a,b,c){a=a|0;b=b|0;c=c|0;return ag(123,a|0,b|0,c|0)|0}function tY(a,b,c){a=a|0;b=b|0;c=c|0;return ag(124,a|0,b|0,c|0)|0}function tZ(a){a=a|0;ci[a&255]()}function t_(){ag(0)}function t$(){ag(1)}function t0(){ag(2)}function t1(){ag(3)}function t2(){ag(4)}function t3(){ag(5)}function t4(){ag(6)}function t5(){ag(7)}function t6(){ag(8)}function t7(){ag(9)}function t8(){ag(10)}function t9(){ag(11)}function ua(){ag(12)}function ub(){ag(13)}function uc(){ag(14)}function ud(){ag(15)}function ue(){ag(16)}function uf(){ag(17)}function ug(){ag(18)}function uh(){ag(19)}function ui(){ag(20)}function uj(){ag(21)}function uk(){ag(22)}function ul(){ag(23)}function um(){ag(24)}function un(){ag(25)}function uo(){ag(26)}function up(){ag(27)}function uq(){ag(28)}function ur(){ag(29)}function us(){ag(30)}function ut(){ag(31)}function uu(){ag(32)}function uv(){ag(33)}function uw(){ag(34)}function ux(){ag(35)}function uy(){ag(36)}function uz(){ag(37)}function uA(){ag(38)}function uB(){ag(39)}function uC(){ag(40)}function uD(){ag(41)}function uE(){ag(42)}function uF(){ag(43)}function uG(){ag(44)}function uH(){ag(45)}function uI(){ag(46)}function uJ(){ag(47)}function uK(){ag(48)}function uL(){ag(49)}function uM(){ag(50)}function uN(){ag(51)}function uO(){ag(52)}function uP(){ag(53)}function uQ(){ag(54)}function uR(){ag(55)}function uS(){ag(56)}function uT(){ag(57)}function uU(){ag(58)}function uV(){ag(59)}function uW(){ag(60)}function uX(){ag(61)}function uY(){ag(62)}function uZ(){ag(63)}function u_(){ag(64)}function u$(){ag(65)}function u0(){ag(66)}function u1(){ag(67)}function u2(){ag(68)}function u3(){ag(69)}function u4(){ag(70)}function u5(){ag(71)}function u6(){ag(72)}function u7(){ag(73)}function u8(){ag(74)}function u9(){ag(75)}function va(){ag(76)}function vb(){ag(77)}function vc(){ag(78)}function vd(){ag(79)}function ve(){ag(80)}function vf(){ag(81)}function vg(){ag(82)}function vh(){ag(83)}function vi(){ag(84)}function vj(){ag(85)}function vk(){ag(86)}function vl(){ag(87)}function vm(){ag(88)}function vn(){ag(89)}function vo(){ag(90)}function vp(){ag(91)}function vq(){ag(92)}function vr(){ag(93)}function vs(){ag(94)}function vt(){ag(95)}function vu(){ag(96)}function vv(){ag(97)}function vw(){ag(98)}function vx(){ag(99)}function vy(){ag(100)}function vz(){ag(101)}function vA(){ag(102)}function vB(){ag(103)}function vC(){ag(104)}function vD(){ag(105)}function vE(){ag(106)}function vF(){ag(107)}function vG(){ag(108)}function vH(){ag(109)}function vI(){ag(110)}function vJ(){ag(111)}function vK(){ag(112)}function vL(){ag(113)}function vM(){ag(114)}function vN(){ag(115)}function vO(){ag(116)}function vP(){ag(117)}function vQ(){ag(118)}function vR(){ag(119)}function vS(){ag(120)}function vT(){ag(121)}function vU(){ag(122)}function vV(){ag(123)}function vW(){ag(124)}function vX(a,b,c){a=a|0;b=b|0;c=c|0;return cj[a&255](b|0,c|0)|0}function vY(a,b){a=a|0;b=b|0;return ag(0,a|0,b|0)|0}function vZ(a,b){a=a|0;b=b|0;return ag(1,a|0,b|0)|0}function v_(a,b){a=a|0;b=b|0;return ag(2,a|0,b|0)|0}function v$(a,b){a=a|0;b=b|0;return ag(3,a|0,b|0)|0}function v0(a,b){a=a|0;b=b|0;return ag(4,a|0,b|0)|0}function v1(a,b){a=a|0;b=b|0;return ag(5,a|0,b|0)|0}function v2(a,b){a=a|0;b=b|0;return ag(6,a|0,b|0)|0}function v3(a,b){a=a|0;b=b|0;return ag(7,a|0,b|0)|0}function v4(a,b){a=a|0;b=b|0;return ag(8,a|0,b|0)|0}function v5(a,b){a=a|0;b=b|0;return ag(9,a|0,b|0)|0}function v6(a,b){a=a|0;b=b|0;return ag(10,a|0,b|0)|0}function v7(a,b){a=a|0;b=b|0;return ag(11,a|0,b|0)|0}function v8(a,b){a=a|0;b=b|0;return ag(12,a|0,b|0)|0}function v9(a,b){a=a|0;b=b|0;return ag(13,a|0,b|0)|0}function wa(a,b){a=a|0;b=b|0;return ag(14,a|0,b|0)|0}function wb(a,b){a=a|0;b=b|0;return ag(15,a|0,b|0)|0}function wc(a,b){a=a|0;b=b|0;return ag(16,a|0,b|0)|0}function wd(a,b){a=a|0;b=b|0;return ag(17,a|0,b|0)|0}function we(a,b){a=a|0;b=b|0;return ag(18,a|0,b|0)|0}function wf(a,b){a=a|0;b=b|0;return ag(19,a|0,b|0)|0}function wg(a,b){a=a|0;b=b|0;return ag(20,a|0,b|0)|0}function wh(a,b){a=a|0;b=b|0;return ag(21,a|0,b|0)|0}function wi(a,b){a=a|0;b=b|0;return ag(22,a|0,b|0)|0}function wj(a,b){a=a|0;b=b|0;return ag(23,a|0,b|0)|0}function wk(a,b){a=a|0;b=b|0;return ag(24,a|0,b|0)|0}function wl(a,b){a=a|0;b=b|0;return ag(25,a|0,b|0)|0}function wm(a,b){a=a|0;b=b|0;return ag(26,a|0,b|0)|0}function wn(a,b){a=a|0;b=b|0;return ag(27,a|0,b|0)|0}function wo(a,b){a=a|0;b=b|0;return ag(28,a|0,b|0)|0}function wp(a,b){a=a|0;b=b|0;return ag(29,a|0,b|0)|0}function wq(a,b){a=a|0;b=b|0;return ag(30,a|0,b|0)|0}function wr(a,b){a=a|0;b=b|0;return ag(31,a|0,b|0)|0}function ws(a,b){a=a|0;b=b|0;return ag(32,a|0,b|0)|0}function wt(a,b){a=a|0;b=b|0;return ag(33,a|0,b|0)|0}function wu(a,b){a=a|0;b=b|0;return ag(34,a|0,b|0)|0}function wv(a,b){a=a|0;b=b|0;return ag(35,a|0,b|0)|0}function ww(a,b){a=a|0;b=b|0;return ag(36,a|0,b|0)|0}function wx(a,b){a=a|0;b=b|0;return ag(37,a|0,b|0)|0}function wy(a,b){a=a|0;b=b|0;return ag(38,a|0,b|0)|0}function wz(a,b){a=a|0;b=b|0;return ag(39,a|0,b|0)|0}function wA(a,b){a=a|0;b=b|0;return ag(40,a|0,b|0)|0}function wB(a,b){a=a|0;b=b|0;return ag(41,a|0,b|0)|0}function wC(a,b){a=a|0;b=b|0;return ag(42,a|0,b|0)|0}function wD(a,b){a=a|0;b=b|0;return ag(43,a|0,b|0)|0}function wE(a,b){a=a|0;b=b|0;return ag(44,a|0,b|0)|0}function wF(a,b){a=a|0;b=b|0;return ag(45,a|0,b|0)|0}function wG(a,b){a=a|0;b=b|0;return ag(46,a|0,b|0)|0}function wH(a,b){a=a|0;b=b|0;return ag(47,a|0,b|0)|0}function wI(a,b){a=a|0;b=b|0;return ag(48,a|0,b|0)|0}function wJ(a,b){a=a|0;b=b|0;return ag(49,a|0,b|0)|0}function wK(a,b){a=a|0;b=b|0;return ag(50,a|0,b|0)|0}function wL(a,b){a=a|0;b=b|0;return ag(51,a|0,b|0)|0}function wM(a,b){a=a|0;b=b|0;return ag(52,a|0,b|0)|0}function wN(a,b){a=a|0;b=b|0;return ag(53,a|0,b|0)|0}function wO(a,b){a=a|0;b=b|0;return ag(54,a|0,b|0)|0}function wP(a,b){a=a|0;b=b|0;return ag(55,a|0,b|0)|0}function wQ(a,b){a=a|0;b=b|0;return ag(56,a|0,b|0)|0}function wR(a,b){a=a|0;b=b|0;return ag(57,a|0,b|0)|0}function wS(a,b){a=a|0;b=b|0;return ag(58,a|0,b|0)|0}function wT(a,b){a=a|0;b=b|0;return ag(59,a|0,b|0)|0}function wU(a,b){a=a|0;b=b|0;return ag(60,a|0,b|0)|0}function wV(a,b){a=a|0;b=b|0;return ag(61,a|0,b|0)|0}function wW(a,b){a=a|0;b=b|0;return ag(62,a|0,b|0)|0}function wX(a,b){a=a|0;b=b|0;return ag(63,a|0,b|0)|0}function wY(a,b){a=a|0;b=b|0;return ag(64,a|0,b|0)|0}function wZ(a,b){a=a|0;b=b|0;return ag(65,a|0,b|0)|0}function w_(a,b){a=a|0;b=b|0;return ag(66,a|0,b|0)|0}function w$(a,b){a=a|0;b=b|0;return ag(67,a|0,b|0)|0}function w0(a,b){a=a|0;b=b|0;return ag(68,a|0,b|0)|0}function w1(a,b){a=a|0;b=b|0;return ag(69,a|0,b|0)|0}function w2(a,b){a=a|0;b=b|0;return ag(70,a|0,b|0)|0}function w3(a,b){a=a|0;b=b|0;return ag(71,a|0,b|0)|0}function w4(a,b){a=a|0;b=b|0;return ag(72,a|0,b|0)|0}function w5(a,b){a=a|0;b=b|0;return ag(73,a|0,b|0)|0}function w6(a,b){a=a|0;b=b|0;return ag(74,a|0,b|0)|0}function w7(a,b){a=a|0;b=b|0;return ag(75,a|0,b|0)|0}function w8(a,b){a=a|0;b=b|0;return ag(76,a|0,b|0)|0}function w9(a,b){a=a|0;b=b|0;return ag(77,a|0,b|0)|0}function xa(a,b){a=a|0;b=b|0;return ag(78,a|0,b|0)|0}function xb(a,b){a=a|0;b=b|0;return ag(79,a|0,b|0)|0}function xc(a,b){a=a|0;b=b|0;return ag(80,a|0,b|0)|0}function xd(a,b){a=a|0;b=b|0;return ag(81,a|0,b|0)|0}function xe(a,b){a=a|0;b=b|0;return ag(82,a|0,b|0)|0}function xf(a,b){a=a|0;b=b|0;return ag(83,a|0,b|0)|0}function xg(a,b){a=a|0;b=b|0;return ag(84,a|0,b|0)|0}function xh(a,b){a=a|0;b=b|0;return ag(85,a|0,b|0)|0}function xi(a,b){a=a|0;b=b|0;return ag(86,a|0,b|0)|0}function xj(a,b){a=a|0;b=b|0;return ag(87,a|0,b|0)|0}function xk(a,b){a=a|0;b=b|0;return ag(88,a|0,b|0)|0}function xl(a,b){a=a|0;b=b|0;return ag(89,a|0,b|0)|0}function xm(a,b){a=a|0;b=b|0;return ag(90,a|0,b|0)|0}function xn(a,b){a=a|0;b=b|0;return ag(91,a|0,b|0)|0}function xo(a,b){a=a|0;b=b|0;return ag(92,a|0,b|0)|0}function xp(a,b){a=a|0;b=b|0;return ag(93,a|0,b|0)|0}function xq(a,b){a=a|0;b=b|0;return ag(94,a|0,b|0)|0}function xr(a,b){a=a|0;b=b|0;return ag(95,a|0,b|0)|0}function xs(a,b){a=a|0;b=b|0;return ag(96,a|0,b|0)|0}function xt(a,b){a=a|0;b=b|0;return ag(97,a|0,b|0)|0}function xu(a,b){a=a|0;b=b|0;return ag(98,a|0,b|0)|0}function xv(a,b){a=a|0;b=b|0;return ag(99,a|0,b|0)|0}function xw(a,b){a=a|0;b=b|0;return ag(100,a|0,b|0)|0}function xx(a,b){a=a|0;b=b|0;return ag(101,a|0,b|0)|0}function xy(a,b){a=a|0;b=b|0;return ag(102,a|0,b|0)|0}function xz(a,b){a=a|0;b=b|0;return ag(103,a|0,b|0)|0}function xA(a,b){a=a|0;b=b|0;return ag(104,a|0,b|0)|0}function xB(a,b){a=a|0;b=b|0;return ag(105,a|0,b|0)|0}function xC(a,b){a=a|0;b=b|0;return ag(106,a|0,b|0)|0}function xD(a,b){a=a|0;b=b|0;return ag(107,a|0,b|0)|0}function xE(a,b){a=a|0;b=b|0;return ag(108,a|0,b|0)|0}function xF(a,b){a=a|0;b=b|0;return ag(109,a|0,b|0)|0}function xG(a,b){a=a|0;b=b|0;return ag(110,a|0,b|0)|0}function xH(a,b){a=a|0;b=b|0;return ag(111,a|0,b|0)|0}function xI(a,b){a=a|0;b=b|0;return ag(112,a|0,b|0)|0}function xJ(a,b){a=a|0;b=b|0;return ag(113,a|0,b|0)|0}function xK(a,b){a=a|0;b=b|0;return ag(114,a|0,b|0)|0}function xL(a,b){a=a|0;b=b|0;return ag(115,a|0,b|0)|0}function xM(a,b){a=a|0;b=b|0;return ag(116,a|0,b|0)|0}function xN(a,b){a=a|0;b=b|0;return ag(117,a|0,b|0)|0}function xO(a,b){a=a|0;b=b|0;return ag(118,a|0,b|0)|0}function xP(a,b){a=a|0;b=b|0;return ag(119,a|0,b|0)|0}function xQ(a,b){a=a|0;b=b|0;return ag(120,a|0,b|0)|0}function xR(a,b){a=a|0;b=b|0;return ag(121,a|0,b|0)|0}function xS(a,b){a=a|0;b=b|0;return ag(122,a|0,b|0)|0}function xT(a,b){a=a|0;b=b|0;return ag(123,a|0,b|0)|0}function xU(a,b){a=a|0;b=b|0;return ag(124,a|0,b|0)|0}function xV(a){a=a|0;ab(0);return 0}function xW(a){a=a|0;ab(1)}function xX(a,b){a=a|0;b=b|0;ab(2)}function xY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ab(3);return 0}function xZ(a,b,c){a=a|0;b=b|0;c=c|0;ab(4);return 0}function x_(){ab(5)}function x$(a,b){a=a|0;b=b|0;ab(6);return 0}\ | |
7841 // EMSCRIPTEN_END_FUNCS\ | |
7842 var cd=[xV,xV,j8,xV,j9,xV,ka,xV,kb,xV,kc,xV,kd,xV,ke,xV,kf,xV,kg,xV,kh,xV,ki,xV,kj,xV,kk,xV,kl,xV,km,xV,kn,xV,ko,xV,kp,xV,kq,xV,kr,xV,ks,xV,kt,xV,ku,xV,kv,xV,kw,xV,kx,xV,ky,xV,kz,xV,kA,xV,kB,xV,kC,xV,kD,xV,kE,xV,kF,xV,kG,xV,kH,xV,kI,xV,kJ,xV,kK,xV,kL,xV,kM,xV,kN,xV,kO,xV,kP,xV,kQ,xV,kR,xV,kS,xV,kT,xV,kU,xV,kV,xV,kW,xV,kX,xV,kY,xV,kZ,xV,k_,xV,k$,xV,k0,xV,k1,xV,k2,xV,k3,xV,k4,xV,k5,xV,k6,xV,k7,xV,k8,xV,k9,xV,la,xV,lb,xV,lc,xV,ld,xV,le,xV,lf,xV,lg,xV,lh,xV,li,xV,lj,xV,lk,xV,ll,xV,lm,xV,ln,xV,lo,xV,lp,xV,lq,xV,lr,xV,ls,xV,lt,xV,lu,xV,lv,xV,lw,xV,lx,xV,ly,xV,lz,xV,lA,xV,lB,xV,lC,xV,lD,xV,lE,xV,lF,xV,lG,xV,lH,xV,lI,xV,lJ,xV,lK,xV,lL,xV,lM,xV,lN,xV,lO,xV,lP,xV,lQ,xV,lR,xV,lS,xV,lT,xV,lU,xV,lV,xV,lW,xV,lX,xV,lY,xV,lZ,xV,l_,xV,l$,xV,l0,xV,l1,xV,l2,xV,l3,xV,l4,xV,iq,xV,hi,xV,hF,xV,ie,xV,hR,xV,iA,xV,hj,xV,iK,xV,hx,xV,iT,xV,iw,xV,hN,xV,jO,xV,ix,xV,hB,xV,h0,xV,il,xV,jF,xV,it,xV,iZ,xV,hP,xV,is,xV,iv,xV,jx,xV,jm,xV,i6,xV,hX,xV,ic,xV,i2,xV,hM,xV,jo,xV,iE,xV,he,xV,jv,xV,jM,xV,iQ,xV,jk,xV,hl,xV,hE,xV,iG,xV,g6,xV,iF,xV,je,xV,jz,xV,h7,xV,jn,xV,hO,xV,hW,xV,iO,xV,i8,xV,hk,xV,jr,xV,iY,xV,jg,xV,iy,xV,jw,xV,i7,xV,hS,xV,hD,xV,g8,xV,jp,xV,jK,xV,h4,xV,js,xV,jI,xV,iR,xV,hH,xV,ip,xV,jL,xV,hc,xV,ha,xV,iz,xV,im,xV,jH,xV,iP,xV,h2,xV,hh,xV,iX,xV,hp,xV,ia,xV,hK,xV,iI,xV,iB,xV,hv,xV,iD,xV,iW,xV,jq,xV,h9,xV,jf,xV,hd,xV,hT,xV,hU,xV,i$,xV,ho,xV,ju,xV,iN,xV,hn,xV,iM,xV,jl,xV,i4,xV,iS,xV,hQ,xV,io,xV,hr,xV,iH,xV,ib,xV,iJ,xV,jd,xV,hs,xV,i1,xV,hw,xV,hu,xV,h8,xV,iL,xV,hb,xV,jy,xV,hG,xV,hV,xV,g9,xV,jt,xV,hY,xV,hL,xV,hC,xV,i3,xV,i9,xV,hg,xV,g7,xV,iu,xV,id,xV,iU,xV,jb,xV,ja,xV,i_,xV,i5,xV,hA,xV,h6,xV,jN,xV,hz,xV,jR,xV,hm,xV,jS,xV,hq,xV,ht,xV,h3,xV,jc,xV,iV,xV,iC,xV,hy,xV,i0,xV,h1,xV,jh,xV,h5,xV,ir,xV,jJ,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV,xV];var ce=[xW,xW,l6,xW,l7,xW,l8,xW,l9,xW,ma,xW,mb,xW,mc,xW,md,xW,me,xW,mf,xW,mg,xW,mh,xW,mi,xW,mj,xW,mk,xW,ml,xW,mm,xW,mn,xW,mo,xW,mp,xW,mq,xW,mr,xW,ms,xW,mt,xW,mu,xW,mv,xW,mw,xW,mx,xW,my,xW,mz,xW,mA,xW,mB,xW,mC,xW,mD,xW,mE,xW,mF,xW,mG,xW,mH,xW,mI,xW,mJ,xW,mK,xW,mL,xW,mM,xW,mN,xW,mO,xW,mP,xW,mQ,xW,mR,xW,mS,xW,mT,xW,mU,xW,mV,xW,mW,xW,mX,xW,mY,xW,mZ,xW,m_,xW,m$,xW,m0,xW,m1,xW,m2,xW,m3,xW,m4,xW,m5,xW,m6,xW,m7,xW,m8,xW,m9,xW,na,xW,nb,xW,nc,xW,nd,xW,ne,xW,nf,xW,ng,xW,nh,xW,ni,xW,nj,xW,nk,xW,nl,xW,nm,xW,nn,xW,no,xW,np,xW,nq,xW,nr,xW,ns,xW,nt,xW,nu,xW,nv,xW,nw,xW,nx,xW,ny,xW,nz,xW,nA,xW,nB,xW,nC,xW,nD,xW,nE,xW,nF,xW,nG,xW,nH,xW,nI,xW,nJ,xW,nK,xW,nL,xW,nM,xW,nN,xW,nO,xW,nP,xW,nQ,xW,nR,xW,nS,xW,nT,xW,nU,xW,nV,xW,nW,xW,nX,xW,nY,xW,nZ,xW,n_,xW,n$,xW,n0,xW,n1,xW,n2,xW,xW,xW,xW,xW];var cf=[xX,xX,n4,xX,n5,xX,n6,xX,n7,xX,n8,xX,n9,xX,oa,xX,ob,xX,oc,xX,od,xX,oe,xX,of,xX,og,xX,oh,xX,oi,xX,oj,xX,ok,xX,ol,xX,om,xX,on,xX,oo,xX,op,xX,oq,xX,or,xX,os,xX,ot,xX,ou,xX,ov,xX,ow,xX,ox,xX,oy,xX,oz,xX,oA,xX,oB,xX,oC,xX,oD,xX,oE,xX,oF,xX,oG,xX,oH,xX,oI,xX,oJ,xX,oK,xX,oL,xX,oM,xX,oN,xX,oO,xX,oP,xX,oQ,xX,oR,xX,oS,xX,oT,xX,oU,xX,oV,xX,oW,xX,oX,xX,oY,xX,oZ,xX,o_,xX,o$,xX,o0,xX,o1,xX,o2,xX,o3,xX,o4,xX,o5,xX,o6,xX,o7,xX,o8,xX,o9,xX,pa,xX,pb,xX,pc,xX,pd,xX,pe,xX,pf,xX,pg,xX,ph,xX,pi,xX,pj,xX,pk,xX,pl,xX,pm,xX,pn,xX,po,xX,pp,xX,pq,xX,pr,xX,ps,xX,pt,xX,pu,xX,pv,xX,pw,xX,px,xX,py,xX,pz,xX,pA,xX,pB,xX,pC,xX,pD,xX,pE,xX,pF,xX,pG,xX,pH,xX,pI,xX,pJ,xX,pK,xX,pL,xX,pM,xX,pN,xX,pO,xX,pP,xX,pQ,xX,pR,xX,pS,xX,pT,xX,pU,xX,pV,xX,pW,xX,pX,xX,pY,xX,pZ,xX,p_,xX,p$,xX,p0,xX,dy,xX,fW,xX,fY,xX,eL,xX,eH,xX,h_,xX,dA,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX,xX];var cg=[xY,xY,p2,xY,p3,xY,p4,xY,p5,xY,p6,xY,p7,xY,p8,xY,p9,xY,qa,xY,qb,xY,qc,xY,qd,xY,qe,xY,qf,xY,qg,xY,qh,xY,qi,xY,qj,xY,qk,xY,ql,xY,qm,xY,qn,xY,qo,xY,qp,xY,qq,xY,qr,xY,qs,xY,qt,xY,qu,xY,qv,xY,qw,xY,qx,xY,qy,xY,qz,xY,qA,xY,qB,xY,qC,xY,qD,xY,qE,xY,qF,xY,qG,xY,qH,xY,qI,xY,qJ,xY,qK,xY,qL,xY,qM,xY,qN,xY,qO,xY,qP,xY,qQ,xY,qR,xY,qS,xY,qT,xY,qU,xY,qV,xY,qW,xY,qX,xY,qY,xY,qZ,xY,q_,xY,q$,xY,q0,xY,q1,xY,q2,xY,q3,xY,q4,xY,q5,xY,q6,xY,q7,xY,q8,xY,q9,xY,ra,xY,rb,xY,rc,xY,rd,xY,re,xY,rf,xY,rg,xY,rh,xY,ri,xY,rj,xY,rk,xY,rl,xY,rm,xY,rn,xY,ro,xY,rp,xY,rq,xY,rr,xY,rs,xY,rt,xY,ru,xY,rv,xY,rw,xY,rx,xY,ry,xY,rz,xY,rA,xY,rB,xY,rC,xY,rD,xY,rE,xY,rF,xY,rG,xY,rH,xY,rI,xY,rJ,xY,rK,xY,rL,xY,rM,xY,rN,xY,rO,xY,rP,xY,rQ,xY,rR,xY,rS,xY,rT,xY,rU,xY,rV,xY,rW,xY,rX,xY,rY,xY,rZ,xY,r_,xY,jG,xY,g5,xY,gh,xY,fA,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY];var ch=[xZ,xZ,r0,xZ,r1,xZ,r2,xZ,r3,xZ,r4,xZ,r5,xZ,r6,xZ,r7,xZ,r8,xZ,r9,xZ,sa,xZ,sb,xZ,sc,xZ,sd,xZ,se,xZ,sf,xZ,sg,xZ,sh,xZ,si,xZ,sj,xZ,sk,xZ,sl,xZ,sm,xZ,sn,xZ,so,xZ,sp,xZ,sq,xZ,sr,xZ,ss,xZ,st,xZ,su,xZ,sv,xZ,sw,xZ,sx,xZ,sy,xZ,sz,xZ,sA,xZ,sB,xZ,sC,xZ,sD,xZ,sE,xZ,sF,xZ,sG,xZ,sH,xZ,sI,xZ,sJ,xZ,sK,xZ,sL,xZ,sM,xZ,sN,xZ,sO,xZ,sP,xZ,sQ,xZ,sR,xZ,sS,xZ,sT,xZ,sU,xZ,sV,xZ,sW,xZ,sX,xZ,sY,xZ,sZ,xZ,s_,xZ,s$,xZ,s0,xZ,s1,xZ,s2,xZ,s3,xZ,s4,xZ,s5,xZ,s6,xZ,s7,xZ,s8,xZ,s9,xZ,ta,xZ,tb,xZ,tc,xZ,td,xZ,te,xZ,tf,xZ,tg,xZ,th,xZ,ti,xZ,tj,xZ,tk,xZ,tl,xZ,tm,xZ,tn,xZ,to,xZ,tp,xZ,tq,xZ,tr,xZ,ts,xZ,tt,xZ,tu,xZ,tv,xZ,tw,xZ,tx,xZ,ty,xZ,tz,xZ,tA,xZ,tB,xZ,tC,xZ,tD,xZ,tE,xZ,tF,xZ,tG,xZ,tH,xZ,tI,xZ,tJ,xZ,tK,xZ,tL,xZ,tM,xZ,tN,xZ,tO,xZ,tP,xZ,tQ,xZ,tR,xZ,tS,xZ,tT,xZ,tU,xZ,tV,xZ,tW,xZ,tX,xZ,tY,xZ,hJ,xZ,g1,xZ,gU,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ,xZ];var ci=[x_,x_,t_,x_,t$,x_,t0,x_,t1,x_,t2,x_,t3,x_,t4,x_,t5,x_,t6,x_,t7,x_,t8,x_,t9,x_,ua,x_,ub,x_,uc,x_,ud,x_,ue,x_,uf,x_,ug,x_,uh,x_,ui,x_,uj,x_,uk,x_,ul,x_,um,x_,un,x_,uo,x_,up,x_,uq,x_,ur,x_,us,x_,ut,x_,uu,x_,uv,x_,uw,x_,ux,x_,uy,x_,uz,x_,uA,x_,uB,x_,uC,x_,uD,x_,uE,x_,uF,x_,uG,x_,uH,x_,uI,x_,uJ,x_,uK,x_,uL,x_,uM,x_,uN,x_,uO,x_,uP,x_,uQ,x_,uR,x_,uS,x_,uT,x_,uU,x_,uV,x_,uW,x_,uX,x_,uY,x_,uZ,x_,u_,x_,u$,x_,u0,x_,u1,x_,u2,x_,u3,x_,u4,x_,u5,x_,u6,x_,u7,x_,u8,x_,u9,x_,va,x_,vb,x_,vc,x_,vd,x_,ve,x_,vf,x_,vg,x_,vh,x_,vi,x_,vj,x_,vk,x_,vl,x_,vm,x_,vn,x_,vo,x_,vp,x_,vq,x_,vr,x_,vs,x_,vt,x_,vu,x_,vv,x_,vw,x_,vx,x_,vy,x_,vz,x_,vA,x_,vB,x_,vC,x_,vD,x_,vE,x_,vF,x_,vG,x_,vH,x_,vI,x_,vJ,x_,vK,x_,vL,x_,vM,x_,vN,x_,vO,x_,vP,x_,vQ,x_,vR,x_,vS,x_,vT,x_,vU,x_,vV,x_,vW,x_,x_,x_,x_,x_];var cj=[x$,x$,vY,x$,vZ,x$,v_,x$,v$,x$,v0,x$,v1,x$,v2,x$,v3,x$,v4,x$,v5,x$,v6,x$,v7,x$,v8,x$,v9,x$,wa,x$,wb,x$,wc,x$,wd,x$,we,x$,wf,x$,wg,x$,wh,x$,wi,x$,wj,x$,wk,x$,wl,x$,wm,x$,wn,x$,wo,x$,wp,x$,wq,x$,wr,x$,ws,x$,wt,x$,wu,x$,wv,x$,ww,x$,wx,x$,wy,x$,wz,x$,wA,x$,wB,x$,wC,x$,wD,x$,wE,x$,wF,x$,wG,x$,wH,x$,wI,x$,wJ,x$,wK,x$,wL,x$,wM,x$,wN,x$,wO,x$,wP,x$,wQ,x$,wR,x$,wS,x$,wT,x$,wU,x$,wV,x$,wW,x$,wX,x$,wY,x$,wZ,x$,w_,x$,w$,x$,w0,x$,w1,x$,w2,x$,w3,x$,w4,x$,w5,x$,w6,x$,w7,x$,w8,x$,w9,x$,xa,x$,xb,x$,xc,x$,xd,x$,xe,x$,xf,x$,xg,x$,xh,x$,xi,x$,xj,x$,xk,x$,xl,x$,xm,x$,xn,x$,xo,x$,xp,x$,xq,x$,xr,x$,xs,x$,xt,x$,xu,x$,xv,x$,xw,x$,xx,x$,xy,x$,xz,x$,xA,x$,xB,x$,xC,x$,xD,x$,xE,x$,xF,x$,xG,x$,xH,x$,xI,x$,xJ,x$,xK,x$,xL,x$,xM,x$,xN,x$,xO,x$,xP,x$,xQ,x$,xR,x$,xS,x$,xT,x$,xU,x$,x$,x$,x$,x$];return{_luaL_checkstack:gH,_strlen:j_,_strcat:j4,_lua_pushlightuserdata:c7,_lua_createtable:di,_luaL_optinteger:gN,_lua_rawset:dn,_strncpy:j3,_lua_setmetatable:dq,_lua_concat:dG,_luaL_optlstring:gD,_luaopen_io:h0,_memcpy:j$,_lua_pcall:dx,_lua_pushthread:c8,_lua_close:fX,_luaopen_math:iv,_lua_setupvalue:dJ,_lua_replace:cP,_memcmp:j5,_lua_gethookmask:eh,_lua_xmove:cC,_lua_load:dB,_lua_touserdata:cZ,_lua_rawget:dg,_free:jV,_lua_pushcclosure:dd,_lua_pushstring:da,_tolower:j6,_lua_getfenv:dk,_luaopen_string:jk,_lua_isuserdata:cR,_luaL_buffinit:gt,_lua_resume:eE,_lua_iscfunction:cM,_lua_remove:cH,_luaL_checkoption:gC,_lua_tointeger:c$,_lua_pushvfstring:db,_luaL_prepbuffer:gY,_lua_isnumber:cS,_luaL_checklstring:gE,_lua_isstring:cQ,_lua_pushlstring:c9,_lua_setfenv:dv,_lua_lessthan:cV,_luaopen_os:iY,_lua_yield:eI,_luaL_checkany:gJ,_luaL_addstring:gW,_lua_pushfstring:dc,_lua_insert:cI,_lua_tolstring:c0,_lua_pushnil:c3,_luaL_register:gQ,_lua_getupvalue:du,_lua_checkstack:cN,_luaopen_package:jH,_luaL_pushresult:gX,_lua_topointer:c2,_lua_error:dE,_lua_gettable:de,_luaopen_debug:hK,_lua_tonumber:cW,_luaL_checkinteger:gM,_lua_getstack:ej,_lua_gettop:cF,_lua_getlocal:el,_luaL_checktype:gI,_lua_newuserdata:dH,_lua_settable:dl,_luaL_addlstring:gV,_luaL_loadbuffer:g2,_lua_toboolean:cX,_lua_setallocf:dt,_memset:j2,_lua_gethook:eg,_lua_gethookcount:ei,_luaL_openlibs:jT,_lua_setlocal:em,_lua_tothread:c_,_lua_newstate:fV,_lua_pushvalue:cJ,_lua_tocfunction:cY,_lua_newthread:cO,_lua_typename:cL,_luaL_argerror:gy,_lua_rawgeti:dh,_testSetjmp:j1,_lua_sethook:ef,_lua_equal:cU,_luaL_callmeta:gP,_lua_call:dw,_luaL_typerror:gA,_malloc:jU,_lua_rawequal:cT,_lua_type:cK,_lua_getfield:df,_lua_objlen:c1,_luaL_checknumber:gK,_luaL_newmetatable:gF,_lua_getmetatable:dj,_luaL_newstate:g4,_luaopen_base:g7,_luaL_gsub:gT,_luaL_addvalue:gZ,_lua_atpanic:cE,_luaL_getmetafield:gO,_lua_getinfo:en,_lua_gc:dD,_lua_settop:cG,_lua_pushboolean:c6,_lua_setfield:dm,_luaL_ref:g_,_lua_next:dF,_luaL_findtable:gS,_luaL_checkudata:gG,_realloc:jW,_luaopen_table:i8,_lua_setlevel:cD,_luaL_loadfile:g0,_lua_pushnumber:c4,_lua_rawseti:dp,_saveSetjmp:j0,_luaL_optnumber:gL,_lua_pushinteger:c5,_lua_getallocf:ds,_lua_dump:dC,_lua_status:dr,_luaL_where:gB,_lua_cpcall:dz,_luaL_error:gz,_luaL_loadstring:g3,_luaL_unref:g$,runPostSets:cA,stackAlloc:ck,stackSave:cl,stackRestore:cm,setThrew:cn,setTempRet0:cq,setTempRet1:cr,setTempRet2:cs,setTempRet3:ct,setTempRet4:cu,setTempRet5:cv,setTempRet6:cw,setTempRet7:cx,setTempRet8:cy,setTempRet9:cz,dynCall_ii:j7,dynCall_vi:l5,dynCall_vii:n3,dynCall_iiiii:p1,dynCall_iiii:r$,dynCall_v:tZ,dynCall_iii:vX}})\ | |
7843 // EMSCRIPTEN_END_ASM\ | |
7844 ({ \"Math\": Math, \"Int8Array\": Int8Array, \"Int16Array\": Int16Array, \"Int32Array\": Int32Array, \"Uint8Array\": Uint8Array, \"Uint16Array\": Uint16Array, \"Uint32Array\": Uint32Array, \"Float32Array\": Float32Array, \"Float64Array\": Float64Array }, { \"abort\": abort, \"assert\": assert, \"asmPrintInt\": asmPrintInt, \"asmPrintFloat\": asmPrintFloat, \"min\": Math_min, \"jsCall\": jsCall, \"invoke_ii\": invoke_ii, \"invoke_vi\": invoke_vi, \"invoke_vii\": invoke_vii, \"invoke_iiiii\": invoke_iiiii, \"invoke_iiii\": invoke_iiii, \"invoke_v\": invoke_v, \"invoke_iii\": invoke_iii, \"_llvm_lifetime_end\": _llvm_lifetime_end, \"_lseek\": _lseek, \"__scanString\": __scanString, \"_fclose\": _fclose, \"_strtoul\": _strtoul, \"__isFloat\": __isFloat, \"_fflush\": _fflush, \"_fputc\": _fputc, \"_fwrite\": _fwrite, \"_strncmp\": _strncmp, \"_send\": _send, \"_fputs\": _fputs, \"_tmpnam\": _tmpnam, \"_isspace\": _isspace, \"_localtime\": _localtime, \"_read\": _read, \"_ceil\": _ceil, \"_strstr\": _strstr, \"_fsync\": _fsync, \"_fscanf\": _fscanf, \"_fmod\": _fmod, \"_remove\": _remove, \"_modf\": _modf, \"_strcmp\": _strcmp, \"_memchr\": _memchr, \"_llvm_va_end\": _llvm_va_end, \"_tmpfile\": _tmpfile, \"_snprintf\": _snprintf, \"_fgetc\": _fgetc, \"_cosh\": _cosh, \"_fgets\": _fgets, \"_close\": _close, \"_strchr\": _strchr, \"_asin\": _asin, \"_clock\": _clock, \"___setErrNo\": ___setErrNo, \"_isxdigit\": _isxdigit, \"_ftell\": _ftell, \"_exit\": _exit, \"_sprintf\": _sprintf, \"_strrchr\": _strrchr, \"_freopen\": _freopen, \"_strcspn\": _strcspn, \"__isLeapYear\": __isLeapYear, \"_ferror\": _ferror, \"_gmtime\": _gmtime, \"_localtime_r\": _localtime_r, \"_sinh\": _sinh, \"_recv\": _recv, \"_cos\": _cos, \"_putchar\": _putchar, \"_islower\": _islower, \"__exit\": __exit, \"_isupper\": _isupper, \"_strftime\": _strftime, \"_rand\": _rand, \"_tzset\": _tzset, \"_setlocale\": _setlocale, \"_ldexp\": _ldexp, \"_toupper\": _toupper, \"_pread\": _pread, \"_fopen\": _fopen, \"_open\": _open, \"_frexp\": _frexp, \"__arraySum\": __arraySum, \"_log\": _log, \"_isalnum\": _isalnum, \"_mktime\": _mktime, \"_system\": _system, \"_isalpha\": _isalpha, \"_rmdir\": _rmdir, \"_log10\": _log10, \"_fread\": _fread, \"__reallyNegative\": __reallyNegative, \"__formatString\": __formatString, \"_getenv\": _getenv, \"_llvm_pow_f64\": _llvm_pow_f64, \"_sbrk\": _sbrk, \"_tanh\": _tanh, \"_localeconv\": _localeconv, \"___errno_location\": ___errno_location, \"_strerror\": _strerror, \"_llvm_lifetime_start\": _llvm_lifetime_start, \"__parseInt\": __parseInt, \"_ungetc\": _ungetc, \"_rename\": _rename, \"_sysconf\": _sysconf, \"_srand\": _srand, \"_abort\": _abort, \"_fprintf\": _fprintf, \"_tan\": _tan, \"___buildEnvironment\": ___buildEnvironment, \"_feof\": _feof, \"__addDays\": __addDays, \"_strncat\": _strncat, \"_gmtime_r\": _gmtime_r, \"_ispunct\": _ispunct, \"_clearerr\": _clearerr, \"_fabs\": _fabs, \"_floor\": _floor, \"_fseek\": _fseek, \"_sqrt\": _sqrt, \"_write\": _write, \"_sin\": _sin, \"_longjmp\": _longjmp, \"_atan\": _atan, \"_strpbrk\": _strpbrk, \"_unlink\": _unlink, \"_acos\": _acos, \"_pwrite\": _pwrite, \"_strerror_r\": _strerror_r, \"_difftime\": _difftime, \"_iscntrl\": _iscntrl, \"_atan2\": _atan2, \"_exp\": _exp, \"_time\": _time, \"_setvbuf\": _setvbuf, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX, \"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"NaN\": NaN, \"Infinity\": Infinity, \"_stdin\": _stdin, \"_stderr\": _stderr, \"_stdout\": _stdout }, buffer);\ | |
7845 var _luaL_checkstack = Module[\"_luaL_checkstack\"] = asm[\"_luaL_checkstack\"];\ | |
7846 var _strlen = Module[\"_strlen\"] = asm[\"_strlen\"];\ | |
7847 var _strcat = Module[\"_strcat\"] = asm[\"_strcat\"];\ | |
7848 var _lua_pushlightuserdata = Module[\"_lua_pushlightuserdata\"] = asm[\"_lua_pushlightuserdata\"];\ | |
7849 var _lua_createtable = Module[\"_lua_createtable\"] = asm[\"_lua_createtable\"];\ | |
7850 var _luaL_optinteger = Module[\"_luaL_optinteger\"] = asm[\"_luaL_optinteger\"];\ | |
7851 var _lua_rawset = Module[\"_lua_rawset\"] = asm[\"_lua_rawset\"];\ | |
7852 var _strncpy = Module[\"_strncpy\"] = asm[\"_strncpy\"];\ | |
7853 var _lua_setmetatable = Module[\"_lua_setmetatable\"] = asm[\"_lua_setmetatable\"];\ | |
7854 var _lua_concat = Module[\"_lua_concat\"] = asm[\"_lua_concat\"];\ | |
7855 var _luaL_optlstring = Module[\"_luaL_optlstring\"] = asm[\"_luaL_optlstring\"];\ | |
7856 var _luaopen_io = Module[\"_luaopen_io\"] = asm[\"_luaopen_io\"];\ | |
7857 var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\ | |
7858 var _lua_pcall = Module[\"_lua_pcall\"] = asm[\"_lua_pcall\"];\ | |
7859 var _lua_pushthread = Module[\"_lua_pushthread\"] = asm[\"_lua_pushthread\"];\ | |
7860 var _lua_close = Module[\"_lua_close\"] = asm[\"_lua_close\"];\ | |
7861 var _luaopen_math = Module[\"_luaopen_math\"] = asm[\"_luaopen_math\"];\ | |
7862 var _lua_setupvalue = Module[\"_lua_setupvalue\"] = asm[\"_lua_setupvalue\"];\ | |
7863 var _lua_replace = Module[\"_lua_replace\"] = asm[\"_lua_replace\"];\ | |
7864 var _memcmp = Module[\"_memcmp\"] = asm[\"_memcmp\"];\ | |
7865 var _lua_gethookmask = Module[\"_lua_gethookmask\"] = asm[\"_lua_gethookmask\"];\ | |
7866 var _lua_xmove = Module[\"_lua_xmove\"] = asm[\"_lua_xmove\"];\ | |
7867 var _lua_load = Module[\"_lua_load\"] = asm[\"_lua_load\"];\ | |
7868 var _lua_touserdata = Module[\"_lua_touserdata\"] = asm[\"_lua_touserdata\"];\ | |
7869 var _lua_rawget = Module[\"_lua_rawget\"] = asm[\"_lua_rawget\"];\ | |
7870 var _free = Module[\"_free\"] = asm[\"_free\"];\ | |
7871 var _lua_pushcclosure = Module[\"_lua_pushcclosure\"] = asm[\"_lua_pushcclosure\"];\ | |
7872 var _lua_pushstring = Module[\"_lua_pushstring\"] = asm[\"_lua_pushstring\"];\ | |
7873 var _tolower = Module[\"_tolower\"] = asm[\"_tolower\"];\ | |
7874 var _lua_getfenv = Module[\"_lua_getfenv\"] = asm[\"_lua_getfenv\"];\ | |
7875 var _luaopen_string = Module[\"_luaopen_string\"] = asm[\"_luaopen_string\"];\ | |
7876 var _lua_isuserdata = Module[\"_lua_isuserdata\"] = asm[\"_lua_isuserdata\"];\ | |
7877 var _luaL_buffinit = Module[\"_luaL_buffinit\"] = asm[\"_luaL_buffinit\"];\ | |
7878 var _lua_resume = Module[\"_lua_resume\"] = asm[\"_lua_resume\"];\ | |
7879 var _lua_iscfunction = Module[\"_lua_iscfunction\"] = asm[\"_lua_iscfunction\"];\ | |
7880 var _lua_remove = Module[\"_lua_remove\"] = asm[\"_lua_remove\"];\ | |
7881 var _luaL_checkoption = Module[\"_luaL_checkoption\"] = asm[\"_luaL_checkoption\"];\ | |
7882 var _lua_tointeger = Module[\"_lua_tointeger\"] = asm[\"_lua_tointeger\"];\ | |
7883 var _lua_pushvfstring = Module[\"_lua_pushvfstring\"] = asm[\"_lua_pushvfstring\"];\ | |
7884 var _luaL_prepbuffer = Module[\"_luaL_prepbuffer\"] = asm[\"_luaL_prepbuffer\"];\ | |
7885 var _lua_isnumber = Module[\"_lua_isnumber\"] = asm[\"_lua_isnumber\"];\ | |
7886 var _luaL_checklstring = Module[\"_luaL_checklstring\"] = asm[\"_luaL_checklstring\"];\ | |
7887 var _lua_isstring = Module[\"_lua_isstring\"] = asm[\"_lua_isstring\"];\ | |
7888 var _lua_pushlstring = Module[\"_lua_pushlstring\"] = asm[\"_lua_pushlstring\"];\ | |
7889 var _lua_setfenv = Module[\"_lua_setfenv\"] = asm[\"_lua_setfenv\"];\ | |
7890 var _lua_lessthan = Module[\"_lua_lessthan\"] = asm[\"_lua_lessthan\"];\ | |
7891 var _luaopen_os = Module[\"_luaopen_os\"] = asm[\"_luaopen_os\"];\ | |
7892 var _lua_yield = Module[\"_lua_yield\"] = asm[\"_lua_yield\"];\ | |
7893 var _luaL_checkany = Module[\"_luaL_checkany\"] = asm[\"_luaL_checkany\"];\ | |
7894 var _luaL_addstring = Module[\"_luaL_addstring\"] = asm[\"_luaL_addstring\"];\ | |
7895 var _lua_pushfstring = Module[\"_lua_pushfstring\"] = asm[\"_lua_pushfstring\"];\ | |
7896 var _lua_insert = Module[\"_lua_insert\"] = asm[\"_lua_insert\"];\ | |
7897 var _lua_tolstring = Module[\"_lua_tolstring\"] = asm[\"_lua_tolstring\"];\ | |
7898 var _lua_pushnil = Module[\"_lua_pushnil\"] = asm[\"_lua_pushnil\"];\ | |
7899 var _luaL_register = Module[\"_luaL_register\"] = asm[\"_luaL_register\"];\ | |
7900 var _lua_getupvalue = Module[\"_lua_getupvalue\"] = asm[\"_lua_getupvalue\"];\ | |
7901 var _lua_checkstack = Module[\"_lua_checkstack\"] = asm[\"_lua_checkstack\"];\ | |
7902 var _luaopen_package = Module[\"_luaopen_package\"] = asm[\"_luaopen_package\"];\ | |
7903 var _luaL_pushresult = Module[\"_luaL_pushresult\"] = asm[\"_luaL_pushresult\"];\ | |
7904 var _lua_topointer = Module[\"_lua_topointer\"] = asm[\"_lua_topointer\"];\ | |
7905 var _lua_error = Module[\"_lua_error\"] = asm[\"_lua_error\"];\ | |
7906 var _lua_gettable = Module[\"_lua_gettable\"] = asm[\"_lua_gettable\"];\ | |
7907 var _luaopen_debug = Module[\"_luaopen_debug\"] = asm[\"_luaopen_debug\"];\ | |
7908 var _lua_tonumber = Module[\"_lua_tonumber\"] = asm[\"_lua_tonumber\"];\ | |
7909 var _luaL_checkinteger = Module[\"_luaL_checkinteger\"] = asm[\"_luaL_checkinteger\"];\ | |
7910 var _lua_getstack = Module[\"_lua_getstack\"] = asm[\"_lua_getstack\"];\ | |
7911 var _lua_gettop = Module[\"_lua_gettop\"] = asm[\"_lua_gettop\"];\ | |
7912 var _lua_getlocal = Module[\"_lua_getlocal\"] = asm[\"_lua_getlocal\"];\ | |
7913 var _luaL_checktype = Module[\"_luaL_checktype\"] = asm[\"_luaL_checktype\"];\ | |
7914 var _lua_newuserdata = Module[\"_lua_newuserdata\"] = asm[\"_lua_newuserdata\"];\ | |
7915 var _lua_settable = Module[\"_lua_settable\"] = asm[\"_lua_settable\"];\ | |
7916 var _luaL_addlstring = Module[\"_luaL_addlstring\"] = asm[\"_luaL_addlstring\"];\ | |
7917 var _luaL_loadbuffer = Module[\"_luaL_loadbuffer\"] = asm[\"_luaL_loadbuffer\"];\ | |
7918 var _lua_toboolean = Module[\"_lua_toboolean\"] = asm[\"_lua_toboolean\"];\ | |
7919 var _lua_setallocf = Module[\"_lua_setallocf\"] = asm[\"_lua_setallocf\"];\ | |
7920 var _memset = Module[\"_memset\"] = asm[\"_memset\"];\ | |
7921 var _lua_gethook = Module[\"_lua_gethook\"] = asm[\"_lua_gethook\"];\ | |
7922 var _lua_gethookcount = Module[\"_lua_gethookcount\"] = asm[\"_lua_gethookcount\"];\ | |
7923 var _luaL_openlibs = Module[\"_luaL_openlibs\"] = asm[\"_luaL_openlibs\"];\ | |
7924 var _lua_setlocal = Module[\"_lua_setlocal\"] = asm[\"_lua_setlocal\"];\ | |
7925 var _lua_tothread = Module[\"_lua_tothread\"] = asm[\"_lua_tothread\"];\ | |
7926 var _lua_newstate = Module[\"_lua_newstate\"] = asm[\"_lua_newstate\"];\ | |
7927 var _lua_pushvalue = Module[\"_lua_pushvalue\"] = asm[\"_lua_pushvalue\"];\ | |
7928 var _lua_tocfunction = Module[\"_lua_tocfunction\"] = asm[\"_lua_tocfunction\"];\ | |
7929 var _lua_newthread = Module[\"_lua_newthread\"] = asm[\"_lua_newthread\"];\ | |
7930 var _lua_typename = Module[\"_lua_typename\"] = asm[\"_lua_typename\"];\ | |
7931 var _luaL_argerror = Module[\"_luaL_argerror\"] = asm[\"_luaL_argerror\"];\ | |
7932 var _lua_rawgeti = Module[\"_lua_rawgeti\"] = asm[\"_lua_rawgeti\"];\ | |
7933 var _testSetjmp = Module[\"_testSetjmp\"] = asm[\"_testSetjmp\"];\ | |
7934 var _lua_sethook = Module[\"_lua_sethook\"] = asm[\"_lua_sethook\"];\ | |
7935 var _lua_equal = Module[\"_lua_equal\"] = asm[\"_lua_equal\"];\ | |
7936 var _luaL_callmeta = Module[\"_luaL_callmeta\"] = asm[\"_luaL_callmeta\"];\ | |
7937 var _lua_call = Module[\"_lua_call\"] = asm[\"_lua_call\"];\ | |
7938 var _luaL_typerror = Module[\"_luaL_typerror\"] = asm[\"_luaL_typerror\"];\ | |
7939 var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\ | |
7940 var _lua_rawequal = Module[\"_lua_rawequal\"] = asm[\"_lua_rawequal\"];\ | |
7941 var _lua_type = Module[\"_lua_type\"] = asm[\"_lua_type\"];\ | |
7942 var _lua_getfield = Module[\"_lua_getfield\"] = asm[\"_lua_getfield\"];\ | |
7943 var _lua_objlen = Module[\"_lua_objlen\"] = asm[\"_lua_objlen\"];\ | |
7944 var _luaL_checknumber = Module[\"_luaL_checknumber\"] = asm[\"_luaL_checknumber\"];\ | |
7945 var _luaL_newmetatable = Module[\"_luaL_newmetatable\"] = asm[\"_luaL_newmetatable\"];\ | |
7946 var _lua_getmetatable = Module[\"_lua_getmetatable\"] = asm[\"_lua_getmetatable\"];\ | |
7947 var _luaL_newstate = Module[\"_luaL_newstate\"] = asm[\"_luaL_newstate\"];\ | |
7948 var _luaopen_base = Module[\"_luaopen_base\"] = asm[\"_luaopen_base\"];\ | |
7949 var _luaL_gsub = Module[\"_luaL_gsub\"] = asm[\"_luaL_gsub\"];\ | |
7950 var _luaL_addvalue = Module[\"_luaL_addvalue\"] = asm[\"_luaL_addvalue\"];\ | |
7951 var _lua_atpanic = Module[\"_lua_atpanic\"] = asm[\"_lua_atpanic\"];\ | |
7952 var _luaL_getmetafield = Module[\"_luaL_getmetafield\"] = asm[\"_luaL_getmetafield\"];\ | |
7953 var _lua_getinfo = Module[\"_lua_getinfo\"] = asm[\"_lua_getinfo\"];\ | |
7954 var _lua_gc = Module[\"_lua_gc\"] = asm[\"_lua_gc\"];\ | |
7955 var _lua_settop = Module[\"_lua_settop\"] = asm[\"_lua_settop\"];\ | |
7956 var _lua_pushboolean = Module[\"_lua_pushboolean\"] = asm[\"_lua_pushboolean\"];\ | |
7957 var _lua_setfield = Module[\"_lua_setfield\"] = asm[\"_lua_setfield\"];\ | |
7958 var _luaL_ref = Module[\"_luaL_ref\"] = asm[\"_luaL_ref\"];\ | |
7959 var _lua_next = Module[\"_lua_next\"] = asm[\"_lua_next\"];\ | |
7960 var _luaL_findtable = Module[\"_luaL_findtable\"] = asm[\"_luaL_findtable\"];\ | |
7961 var _luaL_checkudata = Module[\"_luaL_checkudata\"] = asm[\"_luaL_checkudata\"];\ | |
7962 var _realloc = Module[\"_realloc\"] = asm[\"_realloc\"];\ | |
7963 var _luaopen_table = Module[\"_luaopen_table\"] = asm[\"_luaopen_table\"];\ | |
7964 var _lua_setlevel = Module[\"_lua_setlevel\"] = asm[\"_lua_setlevel\"];\ | |
7965 var _luaL_loadfile = Module[\"_luaL_loadfile\"] = asm[\"_luaL_loadfile\"];\ | |
7966 var _lua_pushnumber = Module[\"_lua_pushnumber\"] = asm[\"_lua_pushnumber\"];\ | |
7967 var _lua_rawseti = Module[\"_lua_rawseti\"] = asm[\"_lua_rawseti\"];\ | |
7968 var _saveSetjmp = Module[\"_saveSetjmp\"] = asm[\"_saveSetjmp\"];\ | |
7969 var _luaL_optnumber = Module[\"_luaL_optnumber\"] = asm[\"_luaL_optnumber\"];\ | |
7970 var _lua_pushinteger = Module[\"_lua_pushinteger\"] = asm[\"_lua_pushinteger\"];\ | |
7971 var _lua_getallocf = Module[\"_lua_getallocf\"] = asm[\"_lua_getallocf\"];\ | |
7972 var _lua_dump = Module[\"_lua_dump\"] = asm[\"_lua_dump\"];\ | |
7973 var _lua_status = Module[\"_lua_status\"] = asm[\"_lua_status\"];\ | |
7974 var _luaL_where = Module[\"_luaL_where\"] = asm[\"_luaL_where\"];\ | |
7975 var _lua_cpcall = Module[\"_lua_cpcall\"] = asm[\"_lua_cpcall\"];\ | |
7976 var _luaL_error = Module[\"_luaL_error\"] = asm[\"_luaL_error\"];\ | |
7977 var _luaL_loadstring = Module[\"_luaL_loadstring\"] = asm[\"_luaL_loadstring\"];\ | |
7978 var _luaL_unref = Module[\"_luaL_unref\"] = asm[\"_luaL_unref\"];\ | |
7979 var runPostSets = Module[\"runPostSets\"] = asm[\"runPostSets\"];\ | |
7980 var dynCall_ii = Module[\"dynCall_ii\"] = asm[\"dynCall_ii\"];\ | |
7981 var dynCall_vi = Module[\"dynCall_vi\"] = asm[\"dynCall_vi\"];\ | |
7982 var dynCall_vii = Module[\"dynCall_vii\"] = asm[\"dynCall_vii\"];\ | |
7983 var dynCall_iiiii = Module[\"dynCall_iiiii\"] = asm[\"dynCall_iiiii\"];\ | |
7984 var dynCall_iiii = Module[\"dynCall_iiii\"] = asm[\"dynCall_iiii\"];\ | |
7985 var dynCall_v = Module[\"dynCall_v\"] = asm[\"dynCall_v\"];\ | |
7986 var dynCall_iii = Module[\"dynCall_iii\"] = asm[\"dynCall_iii\"];\ | |
7987 Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) };\ | |
7988 Runtime.stackSave = function() { return asm['stackSave']() };\ | |
7989 Runtime.stackRestore = function(top) { asm['stackRestore'](top) };\ | |
7990 // Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included\ | |
7991 var i64Math = null;\ | |
7992 // === Auto-generated postamble setup entry stuff ===\ | |
7993 function ExitStatus(status) {\ | |
7994 this.name = \"ExitStatus\";\ | |
7995 this.message = \"Program terminated with exit(\" + status + \")\";\ | |
7996 this.status = status;\ | |
7997 };\ | |
7998 ExitStatus.prototype = new Error();\ | |
7999 ExitStatus.prototype.constructor = ExitStatus;\ | |
8000 var initialStackTop;\ | |
8001 var preloadStartTime = null;\ | |
8002 var calledMain = false;\ | |
8003 Module['callMain'] = Module.callMain = function callMain(args) {\ | |
8004 assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');\ | |
8005 assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');\ | |
8006 args = args || [];\ | |
8007 if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {\ | |
8008 Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms');\ | |
8009 }\ | |
8010 ensureInitRuntime();\ | |
8011 var argc = args.length+1;\ | |
8012 function pad() {\ | |
8013 for (var i = 0; i < 4-1; i++) {\ | |
8014 argv.push(0);\ | |
8015 }\ | |
8016 }\ | |
8017 var argv = [allocate(intArrayFromString(\"/bin/this.program\"), 'i8', ALLOC_NORMAL) ];\ | |
8018 pad();\ | |
8019 for (var i = 0; i < argc-1; i = i + 1) {\ | |
8020 argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));\ | |
8021 pad();\ | |
8022 }\ | |
8023 argv.push(0);\ | |
8024 argv = allocate(argv, 'i32', ALLOC_NORMAL);\ | |
8025 initialStackTop = STACKTOP;\ | |
8026 try {\ | |
8027 var ret = Module['_main'](argc, argv, 0);\ | |
8028 // if we're not running an evented main loop, it's time to exit\ | |
8029 if (!Module['noExitRuntime']) {\ | |
8030 exit(ret);\ | |
8031 }\ | |
8032 }\ | |
8033 catch(e) {\ | |
8034 if (e instanceof ExitStatus) {\ | |
8035 // exit() throws this once it's done to make sure execution\ | |
8036 // has been stopped completely\ | |
8037 return;\ | |
8038 } else if (e == 'SimulateInfiniteLoop') {\ | |
8039 // running an evented main loop, don't immediately exit\ | |
8040 Module['noExitRuntime'] = true;\ | |
8041 return;\ | |
8042 } else {\ | |
8043 throw e;\ | |
8044 }\ | |
8045 } finally {\ | |
8046 calledMain = true;\ | |
8047 }\ | |
8048 }\ | |
8049 function run(args) {\ | |
8050 args = args || Module['arguments'];\ | |
8051 if (preloadStartTime === null) preloadStartTime = Date.now();\ | |
8052 if (runDependencies > 0) {\ | |
8053 Module.printErr('run() called, but dependencies remain, so not running');\ | |
8054 return;\ | |
8055 }\ | |
8056 preRun();\ | |
8057 if (runDependencies > 0) {\ | |
8058 // a preRun added a dependency, run will be called later\ | |
8059 return;\ | |
8060 }\ | |
8061 function doRun() {\ | |
8062 ensureInitRuntime();\ | |
8063 preMain();\ | |
8064 calledRun = true;\ | |
8065 if (Module['_main'] && shouldRunNow) {\ | |
8066 Module['callMain'](args);\ | |
8067 }\ | |
8068 postRun();\ | |
8069 }\ | |
8070 if (Module['setStatus']) {\ | |
8071 Module['setStatus']('Running...');\ | |
8072 setTimeout(function() {\ | |
8073 setTimeout(function() {\ | |
8074 Module['setStatus']('');\ | |
8075 }, 1);\ | |
8076 if (!ABORT) doRun();\ | |
8077 }, 1);\ | |
8078 } else {\ | |
8079 doRun();\ | |
8080 }\ | |
8081 }\ | |
8082 Module['run'] = Module.run = run;\ | |
8083 function exit(status) {\ | |
8084 ABORT = true;\ | |
8085 EXITSTATUS = status;\ | |
8086 STACKTOP = initialStackTop;\ | |
8087 // exit the runtime\ | |
8088 exitRuntime();\ | |
8089 // TODO We should handle this differently based on environment.\ | |
8090 // In the browser, the best we can do is throw an exception\ | |
8091 // to halt execution, but in node we could process.exit and\ | |
8092 // I'd imagine SM shell would have something equivalent.\ | |
8093 // This would let us set a proper exit status (which\ | |
8094 // would be great for checking test exit statuses).\ | |
8095 // https://github.com/kripken/emscripten/issues/1371\ | |
8096 // throw an exception to halt the current execution\ | |
8097 throw new ExitStatus(status);\ | |
8098 }\ | |
8099 Module['exit'] = Module.exit = exit;\ | |
8100 function abort(text) {\ | |
8101 if (text) {\ | |
8102 Module.print(text);\ | |
8103 Module.printErr(text);\ | |
8104 }\ | |
8105 ABORT = true;\ | |
8106 EXITSTATUS = 1;\ | |
8107 throw 'abort() at ' + (new Error().stack);\ | |
8108 }\ | |
8109 Module['abort'] = Module.abort = abort;\ | |
8110 // {{PRE_RUN_ADDITIONS}}\ | |
8111 if (Module['preInit']) {\ | |
8112 if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\ | |
8113 while (Module['preInit'].length > 0) {\ | |
8114 Module['preInit'].pop()();\ | |
8115 }\ | |
8116 }\ | |
8117 // shouldRunNow refers to calling main(), not run().\ | |
8118 var shouldRunNow = true;\ | |
8119 if (Module['noInitialRun']) {\ | |
8120 shouldRunNow = false;\ | |
8121 }\ | |
8122 run();\ | |
8123 // {{POST_RUN_ADDITIONS}}\ | |
8124 // {{MODULE_ADDITIONS}}\ | |
8125 \ | |
8126 \ | |
8127 ////////////////////////////////////////////////////////////////////////////////\ | |
8128 \ | |
8129 var C = { };\ | |
8130 \ | |
8131 var F = Module.cwrap;\ | |
8132 \ | |
8133 ////////////////////////////////////////////////////////////////////////////////\ | |
8134 // c_type.js: basic C \"types\" for Lua 5.1 C API cwraps (fragment file)\ | |
8135 // This file is a part of lua5.1.js project:\ | |
8136 // Copyright (c) LogicEditor <info@logiceditor.com>\ | |
8137 // Copyright (c) lua5.1.js authors\ | |
8138 // See file `COPYRIGHT` for the license\ | |
8139 ////////////////////////////////////////////////////////////////////////////////\ | |
8140 \ | |
8141 var void_t = null;\ | |
8142 var void_ptr_t = \"number\";\ | |
8143 var void_ptr_t_ptr_t = \"number\";\ | |
8144 var const_void_ptr_t = \"number\";\ | |
8145 var int_t = \"number\";\ | |
8146 var size_t_ptr_t = \"number\";\ | |
8147 var size_t = \"number\";\ | |
8148 var const_char_ptr_t = \"string\";\ | |
8149 \ | |
8150 var NULL = 0;\ | |
8151 \ | |
8152 ////////////////////////////////////////////////////////////////////////////////\ | |
8153 // lua.h.js: Lua 5.1 C API, lua.h definitions (fragment file)\ | |
8154 // This file is a part of lua5.1.js project:\ | |
8155 // Copyright (c) LogicEditor <info@logiceditor.com>\ | |
8156 // Copyright (c) lua5.1.js authors\ | |
8157 // See file `COPYRIGHT` for the license\ | |
8158 // Based on original Lua 5.1.5 header files:\ | |
8159 // Copyright (c) 1994-2012 Lua.org, PUC-Rio\ | |
8160 ////////////////////////////////////////////////////////////////////////////////\ | |
8161 // Note: Keeping this file as close to Lua sources as possible.\ | |
8162 // This includes avoiding breaking lines at 80 char limit\ | |
8163 // to keep original formatting despite JS code being somewhat longer.\ | |
8164 ////////////////////////////////////////////////////////////////////////////////\ | |
8165 \ | |
8166 var lua_Number = \"number\";\ | |
8167 var lua_Integer = \"number\";\ | |
8168 \ | |
8169 C.LUA_VERSION = \"Lua 5.1\";\ | |
8170 C.LUA_RELEASE = \"Lua 5.1.5\";\ | |
8171 C.LUA_VERSION_NUM = 501;\ | |
8172 C.LUA_COPYRIGHT = \"Copyright (C) 1994-2012 Lua.org, PUC-Rio\";\ | |
8173 C.LUA_AUTHORS = \"R. Ierusalimschy, L. H. de Figueiredo & W. Celes\";\ | |
8174 \ | |
8175 /* mark for precompiled code (`<esc>Lua') */\ | |
8176 C.LUA_SIGNATURE = \"\\033Lua\";\ | |
8177 \ | |
8178 /* option for multiple returns in `lua_pcall' and `lua_call' */\ | |
8179 C.LUA_MULTRET = (-1);\ | |
8180 \ | |
8181 /*\ | |
8182 ** pseudo-indices\ | |
8183 */\ | |
8184 C.LUA_REGISTRYINDEX = (-10000);\ | |
8185 C.LUA_ENVIRONINDEX = (-10001);\ | |
8186 C.LUA_GLOBALSINDEX = (-10002);\ | |
8187 C.lua_upvalueindex = function(i) { return (C.LUA_GLOBALSINDEX-(i)); };\ | |
8188 \ | |
8189 /* thread status; 0 is OK */\ | |
8190 C.LUA_YIELD = 1;\ | |
8191 C.LUA_ERRRUN = 2;\ | |
8192 C.LUA_ERRSYNTAX = 3;\ | |
8193 C.LUA_ERRMEM = 4;\ | |
8194 C.LUA_ERRERR = 5;\ | |
8195 \ | |
8196 var lua_State = \"number\";\ | |
8197 \ | |
8198 // typedef int (*lua_CFunction) (lua_State *L);\ | |
8199 var lua_CFunction = \"number\";\ | |
8200 \ | |
8201 /*\ | |
8202 ** functions that read/write blocks when loading/dumping Lua chunks\ | |
8203 */\ | |
8204 // typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);\ | |
8205 var lua_Reader = \"number\";\ | |
8206 \ | |
8207 // typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);\ | |
8208 var lua_Writer = \"number\";\ | |
8209 \ | |
8210 /*\ | |
8211 ** prototype for memory-allocation functions\ | |
8212 */\ | |
8213 // typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);\ | |
8214 var lua_Alloc = \"number\";\ | |
8215 \ | |
8216 /*\ | |
8217 ** basic types\ | |
8218 */\ | |
8219 C.LUA_TNONE = (-1);\ | |
8220 \ | |
8221 C.LUA_TNIL = 0;\ | |
8222 C.LUA_TBOOLEAN = 1;\ | |
8223 C.LUA_TLIGHTUSERDATA = 2;\ | |
8224 C.LUA_TNUMBER = 3;\ | |
8225 C.LUA_TSTRING = 4;\ | |
8226 C.LUA_TTABLE = 5;\ | |
8227 C.LUA_TFUNCTION = 6;\ | |
8228 C.LUA_TUSERDATA = 7;\ | |
8229 C.LUA_TTHREAD = 8;\ | |
8230 \ | |
8231 /* minimum Lua stack available to a C function */\ | |
8232 C.LUA_MINSTACK = 20;\ | |
8233 \ | |
8234 /* type of numbers in Lua */\ | |
8235 var LUA_NUMBER = lua_Number;\ | |
8236 \ | |
8237 /* type for integer functions */\ | |
8238 var LUA_INTEGER = lua_Integer;\ | |
8239 \ | |
8240 /*\ | |
8241 ** state manipulation\ | |
8242 */\ | |
8243 C.lua_newstate = F(\"lua_newstate\", lua_State, [lua_Alloc, void_ptr_t]);\ | |
8244 C.lua_close = F(\"lua_close\", void_t, [lua_State]);\ | |
8245 C.lua_newthread = F(\"lua_newthread\", lua_State, [lua_State]);\ | |
8246 \ | |
8247 C.lua_atpanic = F(\"lua_atpanic\", lua_CFunction, [lua_State, lua_CFunction]);\ | |
8248 \ | |
8249 /*\ | |
8250 ** basic stack manipulation\ | |
8251 */\ | |
8252 C.lua_gettop = F(\"lua_gettop\", int_t, [lua_State]);\ | |
8253 C.lua_settop = F(\"lua_settop\", void_t, [lua_State, int_t]);\ | |
8254 C.lua_pushvalue = F(\"lua_pushvalue\", void_t, [lua_State, int_t]);\ | |
8255 C.lua_remove = F(\"lua_remove\", void_t, [lua_State, int_t]);\ | |
8256 C.lua_insert = F(\"lua_insert\", void_t, [lua_State, int_t]);\ | |
8257 C.lua_replace = F(\"lua_replace\", void_t, [lua_State, int_t]);\ | |
8258 C.lua_checkstack = F(\"lua_checkstack\", int_t, [lua_State, int_t]);\ | |
8259 \ | |
8260 C.lua_xmove = F(\"lua_xmove\", void_t, [lua_State, lua_State, int_t]);\ | |
8261 \ | |
8262 /*\ | |
8263 ** access functions (stack -> C)\ | |
8264 */\ | |
8265 \ | |
8266 C.lua_isnumber = F(\"lua_isnumber\", int_t, [lua_State, int_t]);\ | |
8267 C.lua_isstring = F(\"lua_isstring\", int_t, [lua_State, int_t]);\ | |
8268 C.lua_iscfunction = F(\"lua_iscfunction\", int_t, [lua_State, int_t]);\ | |
8269 C.lua_isuserdata = F(\"lua_isuserdata\", int_t, [lua_State, int_t]);\ | |
8270 C.lua_type = F(\"lua_type\", int_t, [lua_State, int_t]);\ | |
8271 C.lua_typename = F(\"lua_typename\", const_char_ptr_t, [lua_State, int_t]);\ | |
8272 \ | |
8273 C.lua_equal = F(\"lua_equal\", int_t, [lua_State, int_t, int_t]);\ | |
8274 C.lua_rawequal = F(\"lua_rawequal\", int_t, [lua_State, int_t, int_t]);\ | |
8275 C.lua_lessthan = F(\"lua_lessthan\", int_t, [lua_State, int_t, int_t]);\ | |
8276 \ | |
8277 C.lua_tonumber = F(\"lua_tonumber\", lua_Number, [lua_State, int_t]);\ | |
8278 C.lua_tointeger = F(\"lua_tointeger\", lua_Integer, [lua_State, int_t]);\ | |
8279 C.lua_toboolean = F(\"lua_toboolean\", int_t, [lua_State, int_t]);\ | |
8280 C.lua_tolstring = F(\"lua_tolstring\", const_char_ptr_t, [lua_State, int_t, size_t_ptr_t]);\ | |
8281 C.lua_objlen = F(\"lua_objlen\", size_t, [lua_State, int_t]);\ | |
8282 C.lua_tocfunction = F(\"lua_tocfunction\", lua_CFunction, [lua_State, int_t]);\ | |
8283 C.lua_touserdata = F(\"lua_touserdata\", void_ptr_t, [lua_State, int_t]);\ | |
8284 C.lua_tothread = F(\"lua_tothread\", lua_State, [lua_State, int_t]);\ | |
8285 C.lua_topointer = F(\"lua_topointer\", const_void_ptr_t, [lua_State, int_t]);\ | |
8286 \ | |
8287 /*\ | |
8288 ** push functions (C -> stack)\ | |
8289 */\ | |
8290 C.lua_pushnil = F(\"lua_pushnil\", void_t, [lua_State]);\ | |
8291 C.lua_pushnumber = F(\"lua_pushnumber\", void_t, [lua_State, lua_Number]);\ | |
8292 C.lua_pushinteger = F(\"lua_pushinteger\", void_t, [lua_State, lua_Integer]);\ | |
8293 C.lua_pushlstring = F(\"lua_pushlstring\", void_t, [lua_State, const_char_ptr_t, size_t]);\ | |
8294 C.lua_pushstring = F(\"lua_pushstring\", void_t, [lua_State, const_char_ptr_t]);\ | |
8295 /*\ | |
8296 // TODO: Support these.\ | |
8297 LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,\ | |
8298 va_list argp);\ | |
8299 LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);\ | |
8300 */\ | |
8301 C.lua_pushcclosure = F(\"lua_pushcclosure\", void_t, [lua_State, lua_CFunction, int_t]);\ | |
8302 C.lua_pushboolean = F(\"lua_pushboolean\", void_t, [lua_State, int_t]);\ | |
8303 C.lua_pushlightuserdata = F(\"lua_pushlightuserdata\", void_t, [lua_State, void_ptr_t]);\ | |
8304 C.lua_pushthread = F(\"lua_pushthread\", int_t, [lua_State]);\ | |
8305 \ | |
8306 /*\ | |
8307 ** get functions (Lua -> stack)\ | |
8308 */\ | |
8309 C.lua_gettable = F(\"lua_gettable\", void_t, [lua_State, int_t]);\ | |
8310 C.lua_getfield = F(\"lua_getfield\", void_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8311 C.lua_rawget = F(\"lua_rawget\", void_t, [lua_State, int_t]);\ | |
8312 C.lua_rawgeti = F(\"lua_rawgeti\", void_t, [lua_State, int_t, int_t]);\ | |
8313 C.lua_createtable = F(\"lua_createtable\", void_t, [lua_State, int_t, int_t]);\ | |
8314 C.lua_newuserdata = F(\"lua_newuserdata\", void_ptr_t, [lua_State, size_t]);\ | |
8315 C.lua_getmetatable = F(\"lua_getmetatable\", int_t, [lua_State, int_t]);\ | |
8316 C.lua_getfenv = F(\"lua_getfenv\", void_t, [lua_State, int_t]);\ | |
8317 \ | |
8318 /*\ | |
8319 ** set functions (stack -> Lua)\ | |
8320 */\ | |
8321 C.lua_settable = F(\"lua_settable\", void_t, [lua_State, int_t]);\ | |
8322 C.lua_setfield = F(\"lua_setfield\", void_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8323 C.lua_rawset = F(\"lua_rawset\", void_t, [lua_State, int_t]);\ | |
8324 C.lua_rawseti = F(\"lua_rawseti\", void_t, [lua_State, int_t, int_t]);\ | |
8325 C.lua_setmetatable = F(\"lua_setmetatable\", int_t, [lua_State, int_t]);\ | |
8326 C.lua_setfenv = F(\"lua_setfenv\", int_t, [lua_State, int_t]);\ | |
8327 \ | |
8328 /*\ | |
8329 ** `load' and `call' functions (load and run Lua code)\ | |
8330 */\ | |
8331 C.lua_call = F(\"lua_call\", void_t, [lua_State, int_t, int_t]);\ | |
8332 C.lua_pcall = F(\"lua_pcall\", int_t, [lua_State, int_t, int_t, int_t]);\ | |
8333 C.lua_cpcall = F(\"lua_cpcall\", int_t, [lua_State, lua_CFunction, void_ptr_t]);\ | |
8334 C.lua_load = F(\"lua_load\", int_t, [lua_State, lua_Reader, void_ptr_t,\ | |
8335 const_char_ptr_t]);\ | |
8336 \ | |
8337 C.lua_dump = F(\"lua_dump\", int_t, [lua_State, lua_Writer, void_ptr_t]);\ | |
8338 \ | |
8339 /*\ | |
8340 ** coroutine functions\ | |
8341 */\ | |
8342 C.lua_yield = F(\"lua_yield\", int_t, [lua_State, int_t]);\ | |
8343 C.lua_resume = F(\"lua_resume\", int_t, [lua_State, int_t]);\ | |
8344 C.lua_status = F(\"lua_status\", int_t, [lua_State]);\ | |
8345 \ | |
8346 /*\ | |
8347 ** garbage-collection function and options\ | |
8348 */\ | |
8349 \ | |
8350 C.LUA_GCSTOP = 0;\ | |
8351 C.LUA_GCRESTART = 1;\ | |
8352 C.LUA_GCCOLLECT = 2;\ | |
8353 C.LUA_GCCOUNT = 3;\ | |
8354 C.LUA_GCCOUNTB = 4;\ | |
8355 C.LUA_GCSTEP = 5;\ | |
8356 C.LUA_GCSETPAUSE = 6;\ | |
8357 C.LUA_GCSETSTEPMUL = 7;\ | |
8358 \ | |
8359 C.lua_gc = F(\"lua_gc\", int_t, [lua_State, int_t, int_t]);\ | |
8360 \ | |
8361 /*\ | |
8362 ** miscellaneous functions\ | |
8363 */\ | |
8364 \ | |
8365 C.lua_error = F(\"lua_error\", int_t, [lua_State]);\ | |
8366 \ | |
8367 C.lua_next = F(\"lua_next\", int_t, [lua_State, int_t]);\ | |
8368 \ | |
8369 C.lua_concat = F(\"lua_concat\", void_t, [lua_State, int_t]);\ | |
8370 \ | |
8371 C.lua_getallocf = F(\"lua_getallocf\", lua_Alloc, [lua_State, void_ptr_t_ptr_t]);\ | |
8372 C.lua_setallocf = F(\"lua_setallocf\", void_t, [lua_State, lua_Alloc, void_ptr_t]);\ | |
8373 \ | |
8374 /*\ | |
8375 ** ===============================================================\ | |
8376 ** some useful macros\ | |
8377 ** ===============================================================\ | |
8378 */\ | |
8379 \ | |
8380 C.lua_pop = function(L,n) { return C.lua_settop(L, -(n)-1); };\ | |
8381 \ | |
8382 C.lua_newtable = function(L) { return C.lua_createtable(L, 0, 0); };\ | |
8383 \ | |
8384 C.lua_register = function(L,n,f) { return (C.lua_pushcfunction(L, (f)), C.lua_setglobal(L, (n))); };\ | |
8385 \ | |
8386 C.lua_pushcfunction = function(L,f) { return C.lua_pushcclosure(L, (f), 0); };\ | |
8387 \ | |
8388 C.lua_strlen = function(L,i) { return C.lua_objlen(L, (i)); };\ | |
8389 \ | |
8390 C.lua_isfunction = function(L,n) { return (C.lua_type(L, (n)) == C.LUA_TFUNCTION); };\ | |
8391 C.lua_istable = function(L,n) { return (C.lua_type(L, (n)) == C.LUA_TTABLE); };\ | |
8392 C.lua_islightuserdata = function(L,n) { return (C.lua_type(L, (n)) == C.LUA_TLIGHTUSERDATA); };\ | |
8393 C.lua_isnil = function(L,n) { return (C.lua_type(L, (n)) == C.LUA_TNIL); };\ | |
8394 C.lua_isboolean = function(L,n) { return (C.lua_type(L, (n)) == C.LUA_TBOOLEAN); };\ | |
8395 C.lua_isthread = function(L,n) { return (C.lua_type(L, (n)) == C.LUA_TTHREAD); };\ | |
8396 C.lua_isnone = function(L,n) { return (C.lua_type(L, (n)) == C.LUA_TNONE); };\ | |
8397 C.lua_isnoneornil = function(L, n) { return (C.lua_type(L, (n)) <= 0); };\ | |
8398 \ | |
8399 C.lua_pushliteral = C.lua_pushstring;\ | |
8400 \ | |
8401 C.lua_setglobal = function(L,s) { return C.lua_setfield(L, C.LUA_GLOBALSINDEX, (s)); };\ | |
8402 C.lua_getglobal = function(L,s) { return C.lua_getfield(L, C.LUA_GLOBALSINDEX, (s)); };\ | |
8403 \ | |
8404 C.lua_tostring = function(L,i) { return C.lua_tolstring(L, (i), NULL); };\ | |
8405 \ | |
8406 /*\ | |
8407 ** compatibility macros and functions\ | |
8408 */\ | |
8409 \ | |
8410 C.lua_open = function() { return C.luaL_newstate(); };\ | |
8411 \ | |
8412 C.lua_getregistry = function(L) { return C.lua_pushvalue(L, C.LUA_REGISTRYINDEX); };\ | |
8413 \ | |
8414 C.lua_getgccount = function(L) { return C.lua_gc(L, C.LUA_GCCOUNT, 0); }\ | |
8415 \ | |
8416 var lua_Chunkreader = lua_Reader;\ | |
8417 var lua_Chunkwriter = lua_Writer;\ | |
8418 \ | |
8419 /* hack */\ | |
8420 C.lua_setlevel = F(\"lua_setlevel\", void_t, [lua_State, lua_State]);\ | |
8421 \ | |
8422 /*\ | |
8423 ** {======================================================================\ | |
8424 ** Debug API\ | |
8425 ** =======================================================================\ | |
8426 */\ | |
8427 \ | |
8428 /*\ | |
8429 ** Event codes\ | |
8430 */\ | |
8431 C.LUA_HOOKCALL = 0;\ | |
8432 C.LUA_HOOKRET = 1;\ | |
8433 C.LUA_HOOKLINE = 2;\ | |
8434 C.LUA_HOOKCOUNT = 3;\ | |
8435 C.LUA_HOOKTAILRET = 4;\ | |
8436 \ | |
8437 /*\ | |
8438 ** Event masks\ | |
8439 */\ | |
8440 C.LUA_MASKCALL = (1 << C.LUA_HOOKCALL);\ | |
8441 C.LUA_MASKRET = (1 << C.LUA_HOOKRET);\ | |
8442 C.LUA_MASKLINE = (1 << C.LUA_HOOKLINE);\ | |
8443 C.LUA_MASKCOUNT = (1 << C.LUA_HOOKCOUNT);\ | |
8444 \ | |
8445 // TODO: Support these. (Note LUA_IDSIZE.)\ | |
8446 /*\ | |
8447 typedef struct lua_Debug lua_Debug; /* activation record * /\ | |
8448 \ | |
8449 /* Functions to be called by the debuger in specific events * /\ | |
8450 typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);\ | |
8451 \ | |
8452 LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar);\ | |
8453 LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);\ | |
8454 LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);\ | |
8455 LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);\ | |
8456 LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n);\ | |
8457 LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n);\ | |
8458 \ | |
8459 LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count);\ | |
8460 LUA_API lua_Hook lua_gethook (lua_State *L);\ | |
8461 LUA_API int lua_gethookmask (lua_State *L);\ | |
8462 LUA_API int lua_gethookcount (lua_State *L);\ | |
8463 \ | |
8464 struct lua_Debug {\ | |
8465 int event;\ | |
8466 const char *name; /* (n) * /\ | |
8467 const char *namewhat; /* (n) `global', `local', `field', `method' * /\ | |
8468 const char *what; /* (S) `Lua', `C', `main', `tail' * /\ | |
8469 const char *source; /* (S) * /\ | |
8470 int currentline; /* (l) * /\ | |
8471 int nups; /* (u) number of upvalues * /\ | |
8472 int linedefined; /* (S) * /\ | |
8473 int lastlinedefined; /* (S) * /\ | |
8474 char short_src[LUA_IDSIZE]; /* (S) * /\ | |
8475 /* private part * /\ | |
8476 int i_ci; /* active function * /\ | |
8477 };\ | |
8478 */\ | |
8479 \ | |
8480 ////////////////////////////////////////////////////////////////////////////////\ | |
8481 // lualib.h.js: Lua 5.1 C API, lualib.h definitions (fragment file)\ | |
8482 // This file is a part of lua5.1.js project:\ | |
8483 // Copyright (c) LogicEditor <info@logiceditor.com>\ | |
8484 // Copyright (c) lua5.1.js authors\ | |
8485 // See file `COPYRIGHT` for the license\ | |
8486 // Based on original Lua 5.1.5 header files:\ | |
8487 // Copyright (c) 1994-2012 Lua.org, PUC-Rio\ | |
8488 ////////////////////////////////////////////////////////////////////////////////\ | |
8489 // Note: Keeping this file as close to Lua sources as possible.\ | |
8490 // This includes avoiding breaking lines at 80 char limit\ | |
8491 // to keep original formatting despite JS code being somewhat longer.\ | |
8492 ////////////////////////////////////////////////////////////////////////////////\ | |
8493 \ | |
8494 /* Key to file-handle type */\ | |
8495 C.LUA_FILEHANDLE = \"FILE*\";\ | |
8496 \ | |
8497 C.LUA_COLIBNAME = \"coroutine\";\ | |
8498 C.luaopen_base = F(\"luaopen_base\", int_t, [lua_State]);\ | |
8499 \ | |
8500 C.LUA_TABLIBNAME = \"table\";\ | |
8501 C.luaopen_table = F(\"luaopen_table\", int_t, [lua_State]);\ | |
8502 \ | |
8503 C.LUA_IOLIBNAME = \"io\";\ | |
8504 C.luaopen_io = F(\"luaopen_io\", int_t, [lua_State]);\ | |
8505 \ | |
8506 C.LUA_OSLIBNAME = \"os\";\ | |
8507 C.luaopen_os = F(\"luaopen_os\", int_t, [lua_State]);\ | |
8508 \ | |
8509 C.LUA_STRLIBNAME = \"string\";\ | |
8510 C.luaopen_string = F(\"luaopen_string\", int_t, [lua_State]);\ | |
8511 \ | |
8512 C.LUA_MATHLIBNAME = \"math\";\ | |
8513 C.luaopen_math = F(\"luaopen_math\", int_t, [lua_State]);\ | |
8514 \ | |
8515 C.LUA_DBLIBNAME = \"debug\";\ | |
8516 C.luaopen_debug = F(\"luaopen_debug\", int_t, [lua_State]);\ | |
8517 \ | |
8518 C.LUA_LOADLIBNAME = \"package\";\ | |
8519 C.luaopen_package = F(\"luaopen_package\", int_t, [lua_State]);\ | |
8520 \ | |
8521 /* open all previous libraries */\ | |
8522 C.luaL_openlibs = F(\"luaL_openlibs\", void_t, [lua_State]);\ | |
8523 \ | |
8524 C.lua_assert = function() { }; // Do nothing.\ | |
8525 \ | |
8526 ////////////////////////////////////////////////////////////////////////////////\ | |
8527 // lauxlib.h.js: Lua 5.1 C API, lauxlib.h definitions (fragment file)\ | |
8528 // This file is a part of lua5.1.js project:\ | |
8529 // Copyright (c) LogicEditor <info@logiceditor.com>\ | |
8530 // Copyright (c) lua5.1.js authors\ | |
8531 // See file `COPYRIGHT` for the license\ | |
8532 // Based on original Lua 5.1.5 header files:\ | |
8533 // Copyright (c) 1994-2012 Lua.org, PUC-Rio\ | |
8534 ////////////////////////////////////////////////////////////////////////////////\ | |
8535 // Note: Keeping this file as close to Lua sources as possible.\ | |
8536 // This includes avoiding breaking lines at 80 char limit\ | |
8537 // to keep original formatting despite JS code being somewhat longer.\ | |
8538 ////////////////////////////////////////////////////////////////////////////////\ | |
8539 \ | |
8540 C.luaL_getn = function(L,i) { return C.lua_objlen(L, i); };\ | |
8541 C.luaL_setn = function(L,i,j) { }; /* no op! */\ | |
8542 \ | |
8543 // C.luaI_openlib defined below\ | |
8544 \ | |
8545 /* extra error code for `luaL_load' */\ | |
8546 C.LUA_ERRFILE = (C.LUA_ERRERR+1);\ | |
8547 \ | |
8548 /*\ | |
8549 // TODO: Support these.\ | |
8550 typedef struct luaL_Reg {\ | |
8551 const char *name;\ | |
8552 lua_CFunction func;\ | |
8553 } luaL_Reg;\ | |
8554 \ | |
8555 LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname,\ | |
8556 const luaL_Reg *l, int nup);\ | |
8557 LUALIB_API void (luaL_register) (lua_State *L, const char *libname,\ | |
8558 const luaL_Reg *l);\ | |
8559 */\ | |
8560 \ | |
8561 C.luaL_getmetafield = F(\"luaL_getmetafield\", int_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8562 C.luaL_callmeta = F(\"luaL_callmeta\", int_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8563 C.luaL_typerror = F(\"luaL_typerror\", int_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8564 C.luaL_argerror = F(\"luaL_argerror\", int_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8565 C.luaL_checklstring = F(\"luaL_checklstring\", const_char_ptr_t, [lua_State, int_t,\ | |
8566 size_t_ptr_t]);\ | |
8567 C.luaL_optlstring = F(\"luaL_optlstring\", const_char_ptr_t, [lua_State, int_t,\ | |
8568 const_char_ptr_t, size_t_ptr_t]);\ | |
8569 C.luaL_checknumber = F(\"luaL_checknumber\", lua_Number, [lua_State, int_t]);\ | |
8570 C.luaL_optnumber = F(\"luaL_optnumber\", lua_Number, [lua_State, int_t, lua_Number]);\ | |
8571 \ | |
8572 C.luaL_checkinteger = F(\"luaL_checkinteger\", lua_Integer, [lua_State, int_t]);\ | |
8573 C.luaL_optinteger = F(\"luaL_optinteger\", lua_Integer, [lua_State, int_t,\ | |
8574 lua_Integer]);\ | |
8575 \ | |
8576 C.luaL_checkstack = F(\"luaL_checkstack\", void_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8577 C.luaL_checktype = F(\"luaL_checktype\", void_t, [lua_State, int_t, int_t]);\ | |
8578 C.luaL_checkany = F(\"luaL_checkany\", void_t, [lua_State, int_t]);\ | |
8579 \ | |
8580 C.luaL_newmetatable = F(\"luaL_newmetatable\", int_t, [lua_State, const_char_ptr_t]);\ | |
8581 C.luaL_checkudata = F(\"luaL_checkudata\", void_ptr_t, [lua_State, int_t, const_char_ptr_t]);\ | |
8582 \ | |
8583 C.luaL_where = F(\"luaL_where\", void_t, [lua_State, int_t]);\ | |
8584 /*\ | |
8585 // TODO: Support these\ | |
8586 LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);\ | |
8587 \ | |
8588 LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def,\ | |
8589 const char *const lst[]);\ | |
8590 */\ | |
8591 \ | |
8592 C.luaL_ref = F(\"luaL_ref\", int_t, [lua_State, int_t]);\ | |
8593 C.luaL_unref = F(\"luaL_unref\", void_t, [lua_State, int_t, int_t]);\ | |
8594 \ | |
8595 C.luaL_loadfile = F(\"luaL_loadfile\", int_t, [lua_State, const_char_ptr_t]);\ | |
8596 C.luaL_loadbuffer = F(\"luaL_loadbuffer\", int_t, [lua_State, const_char_ptr_t, size_t,\ | |
8597 const_char_ptr_t]);\ | |
8598 C.luaL_loadstring = F(\"luaL_loadstring\", int_t, [lua_State, const_char_ptr_t]);\ | |
8599 \ | |
8600 C.luaL_newstate = F(\"luaL_newstate\", lua_State, []);\ | |
8601 \ | |
8602 \ | |
8603 C.luaL_gsub = F(\"luaL_gsub\", const_char_ptr_t, [lua_State, const_char_ptr_t, const_char_ptr_t,\ | |
8604 const_char_ptr_t]);\ | |
8605 \ | |
8606 C.luaL_findtable = F(\"luaL_findtable\", const_char_ptr_t, [lua_State, int_t,\ | |
8607 const_char_ptr_t, int_t]);\ | |
8608 \ | |
8609 /*\ | |
8610 ** ===============================================================\ | |
8611 ** some useful macros\ | |
8612 ** ===============================================================\ | |
8613 */\ | |
8614 \ | |
8615 C.luaL_argcheck = function(L, cond,numarg,extramsg) {\ | |
8616 if (!cond) { C.luaL_argerror(L, (numarg), (extramsg)); } };\ | |
8617 C.luaL_checkstring = function(L,n) { return C.luaL_checklstring(L, (n), NULL); };\ | |
8618 C.luaL_optstring = function(L,n,d) { return C.luaL_optlstring(L, (n), (d), NULL); };\ | |
8619 C.luaL_checkint = C.luaL_checkinteger;\ | |
8620 C.luaL_optint = C.luaL_optinteger;\ | |
8621 C.luaL_checklong = C.luaL_checkinteger;\ | |
8622 C.luaL_optlong = C.luaL_optinteger;\ | |
8623 \ | |
8624 C.luaL_typename = function(L,i) { return C.lua_typename(L, C.lua_type(L,(i))); };\ | |
8625 \ | |
8626 C.luaL_dofile = function(L, fn) {\ | |
8627 return (C.luaL_loadfile(L, fn) || C.lua_pcall(L, 0, C.LUA_MULTRET, 0)); };\ | |
8628 \ | |
8629 C.luaL_dostring = function(L, s) {\ | |
8630 return (C.luaL_loadstring(L, s) || C.lua_pcall(L, 0, C.LUA_MULTRET, 0)); };\ | |
8631 \ | |
8632 C.luaL_getmetatable = function(L,n) { return (C.lua_getfield(L, C.LUA_REGISTRYINDEX, (n))); };\ | |
8633 \ | |
8634 C.luaL_opt = function(L,f,n,d) { return (C.lua_isnoneornil(L,(n)) ? (d) : f(L,(n))); };\ | |
8635 \ | |
8636 /*\ | |
8637 ** {======================================================\ | |
8638 ** Generic Buffer manipulation\ | |
8639 ** =======================================================\ | |
8640 */\ | |
8641 \ | |
8642 /*\ | |
8643 // TODO: Support these\ | |
8644 typedef struct luaL_Buffer {\ | |
8645 char *p; /* current position in buffer * /\ | |
8646 int lvl; /* number of strings in the stack (level) * /\ | |
8647 lua_State *L;\ | |
8648 char buffer[LUAL_BUFFERSIZE];\ | |
8649 } luaL_Buffer;\ | |
8650 \ | |
8651 #define luaL_addchar(B,c) \\\ | |
8652 ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \\\ | |
8653 (*(B)->p++ = (char)(c)))\ | |
8654 \ | |
8655 /* compatibility only * /\ | |
8656 #define luaL_putchar(B,c) luaL_addchar(B,c)\ | |
8657 \ | |
8658 #define luaL_addsize(B,n) ((B)->p += (n))\ | |
8659 \ | |
8660 LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);\ | |
8661 LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B);\ | |
8662 LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);\ | |
8663 LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s);\ | |
8664 LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);\ | |
8665 LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);\ | |
8666 */\ | |
8667 \ | |
8668 /* }====================================================== */\ | |
8669 \ | |
8670 /* compatibility with ref system */\ | |
8671 \ | |
8672 /* pre-defined references */\ | |
8673 C.LUA_NOREF = (-2);\ | |
8674 C.LUA_REFNIL = (-1);\ | |
8675 \ | |
8676 C.lua_ref = function(L,lock)\ | |
8677 {\ | |
8678 if (lock)\ | |
8679 {\ | |
8680 return C.luaL_ref(L, C.LUA_REGISTRYINDEX);\ | |
8681 }\ | |
8682 \ | |
8683 C.lua_pushstring(L, \"unlocked references are obsolete\");\ | |
8684 C.lua_error(L);\ | |
8685 return 0;\ | |
8686 }\ | |
8687 \ | |
8688 C.lua_unref = function(L,ref) { return C.luaL_unref(L, C.LUA_REGISTRYINDEX, (ref)); };\ | |
8689 \ | |
8690 C.lua_getref = function(L,ref) { return C.lua_rawgeti(L, C.LUA_REGISTRYINDEX, (ref)); };\ | |
8691 \ | |
8692 C.luaL_reg = C.luaL_Reg;\ | |
8693 \ | |
8694 ////////////////////////////////////////////////////////////////////////////////\ | |
8695 \ | |
8696 Lua5_1.C = C;\ | |
8697 Lua5_1.Runtime = Runtime;\ | |
8698 \ | |
8699 Lua5_1.provide_file = function(parent, name, data, can_read, can_write)\ | |
8700 {\ | |
8701 if (typeof(parent) === \"string\" && parent !== \"/\")\ | |
8702 {\ | |
8703 if (parent.charAt(0) !== \"/\")\ | |
8704 {\ | |
8705 throw new Error(\"can't create relative path: `\" + parent + \"'\");\ | |
8706 }\ | |
8707 parent = parent.substr(1);\ | |
8708 parent = FS.createPath(\"/\", parent, true, true);\ | |
8709 }\ | |
8710 return FS.createDataFile(parent, name, data, can_read, can_write);\ | |
8711 }\ | |
8712 \ | |
8713 })(Lua5_1);\ | |
8714 "e["LuaState.js"]="LuaState = (function () {\ | |
8715 var C = Lua5_1.C;\ | |
8716 \ | |
8717 function push_jsfunction(L, func, return_type, args) {\ | |
8718 var arg_getters = [];\ | |
8719 for(var i = 0; i < args.length; i++) {\ | |
8720 arg_getters.push(\"C.luaL_check\"+args[i]+\"(L, \"+(i+1)+\")\");\ | |
8721 }\ | |
8722 \ | |
8723 var wrapper = eval(\"(function (func, return_type) { return (function (L) { \\\ | |
8724 var ret = func(\"+arg_getters.join(\", \")+\"); \\\ | |
8725 C.lua_push\"+return_type+\"(L, ret); \\\ | |
8726 return 1; \\\ | |
8727 }); })\")(func, return_type);\ | |
8728 C.lua_pushcfunction(L, Lua5_1.Runtime.addFunction(wrapper));\ | |
8729 return 1;\ | |
8730 }\ | |
8731 \ | |
8732 function push_jsobject(L, obj) {\ | |
8733 C.lua_newtable(L);\ | |
8734 for (var key in obj) {\ | |
8735 var val = obj[key];\ | |
8736 if (obj.hasOwnProperty(key)) {\ | |
8737 switch(typeof val) {\ | |
8738 case \"string\":\ | |
8739 C.lua_pushstring(L, val);\ | |
8740 break;\ | |
8741 case \"number\":\ | |
8742 C.lua_pushnumber(L, val);\ | |
8743 break;\ | |
8744 case \"object\":\ | |
8745 push_jsobject(L, val);\ | |
8746 break;\ | |
8747 default:\ | |
8748 C.luaL_pushfstring(L, \"Unable to convert field '%s' from type '%s'\", key, typeof val);\ | |
8749 return C.lua_error(L);\ | |
8750 }\ | |
8751 C.lua_setfield(L, key, -2);\ | |
8752 }\ | |
8753 }\ | |
8754 \ | |
8755 // TODO: metatable for __index if obj.constructor !== Object?\ | |
8756 \ | |
8757 return 1;\ | |
8758 }\ | |
8759 \ | |
8760 function JSFunction(L) {\ | |
8761 var funcname = C.luaL_checkstring(L, 1);\ | |
8762 var ret = C.luaL_checkstring(L, 2);\ | |
8763 var n_args = C.lua_gettop(L)-2;\ | |
8764 var args = [];\ | |
8765 for(var i = 0; i < n_args; i++) {\ | |
8766 args.push(C.luaL_checkstring(L, i+3));\ | |
8767 }\ | |
8768 var func = eval(funcname);\ | |
8769 if(funcname.indexOf(\".\")!=-1) {\ | |
8770 func = func.bind(eval(funcname.substr(0, funcname.lastIndexOf(\".\"))));\ | |
8771 }\ | |
8772 return push_jsfunction(L, func, ret, args);\ | |
8773 }\ | |
8774 var JSFunction_ptr = Lua5_1.Runtime.addFunction(JSFunction);\ | |
8775 \ | |
8776 return (function() {\ | |
8777 var L = C.lua_open();\ | |
8778 C.luaL_openlibs(L);\ | |
8779 \ | |
8780 C.lua_pushcfunction(L, JSFunction_ptr);\ | |
8781 C.lua_setglobal(L, \"JSFunction\");\ | |
8782 \ | |
8783 return {\ | |
8784 run: function (s) {\ | |
8785 if(L == 0) throw new Error(\"Lua state is invalid\"); // FIXME\ | |
8786 if (C.luaL_dostring(L, s) != 0)\ | |
8787 {\ | |
8788 var err = C.lua_tostring(L, -1);\ | |
8789 C.lua_close(L);\ | |
8790 L = 0;\ | |
8791 throw new Error(\"Lua error: \" + err);\ | |
8792 } \ | |
8793 }\ | |
8794 };\ | |
8795 });\ | |
8796 })();\ | |
8797 "function require_resource(t)return e[t]or error("resource '"..tostring(t).."' not found");end end | 2755 "function require_resource(t)return e[t]or error("resource '"..tostring(t).."' not found");end end |
8798 pcall(require,"luarocks.require"); | 2756 pcall(require,"luarocks.require"); |
8799 local o={v="verbose",vv="very_verbose",o="output",q="quiet",qq="very_quiet",g="debug"} | 2757 local o={v="verbose",vv="very_verbose",o="output",q="quiet",qq="very_quiet",g="debug"} |
8800 local e={use_http=false}; | 2758 local e={use_http=false,module_compat=not not _ENV}; |
8801 for t,a in ipairs(arg)do | 2759 for t,a in ipairs(arg)do |
8802 if a:match("^%-")then | 2760 if a:match("^%-")then |
8803 local t=a:match("^%-%-?([^%s=]+)()") | 2761 local t=a:match("^%-%-?([^%s=]+)()") |
8804 t=(o[t]or t):gsub("%-+","_"); | 2762 t=(o[t]or t):gsub("%-+","_"); |
8805 if t:match("^no_")then | 2763 if t:match("^no_")then |
8813 end | 2771 end |
8814 end | 2772 end |
8815 if e.very_verbose then e.verbose=true;end | 2773 if e.very_verbose then e.verbose=true;end |
8816 if e.very_quiet then e.quiet=true;end | 2774 if e.very_quiet then e.quiet=true;end |
8817 local t=function()end | 2775 local t=function()end |
8818 local t,o,h,s=t,t,t,t; | 2776 local t,o,s,h=t,t,t,t; |
8819 if not e.very_quiet then t=print;end | 2777 if not e.very_quiet then t=print;end |
8820 if not e.quiet then o=print;end | 2778 if not e.quiet then o=print;end |
8821 if e.verbose or e.very_verbose then h=print;end | 2779 if e.verbose or e.very_verbose then s=print;end |
8822 if e.very_verbose then s=print;end | 2780 if e.very_verbose then h=print;end |
8823 print=h; | 2781 print=s; |
8824 local i,d,n={},{},{}; | 2782 local i,d,n={},{},{}; |
8825 function Module(e) | 2783 function Module(e) |
8826 if i[e]then | 2784 if i[e]then |
8827 h("Ignoring duplicate module definition for "..e); | 2785 s("Ignoring duplicate module definition for "..e); |
8828 return function()end | 2786 return function()end |
8829 end | 2787 end |
8830 local t=#i+1; | 2788 local t=#i+1; |
8831 i[t]={name=e,url=___fetch_url}; | 2789 i[t]={name=e,url=___fetch_url}; |
8832 i[e]=i[t]; | 2790 i[e]=i[t]; |
8833 return function(e) | 2791 return function(e) |
8834 i[t].path=e; | 2792 i[t].path=e; |
8835 end | 2793 end |
8836 end | 2794 end |
8837 function Resource(e,a) | 2795 function Resource(t,a) |
8838 local t=#n+1; | 2796 local e=#n+1; |
8839 n[t]={name=e,path=a or e}; | 2797 n[e]={name=t,path=a or t}; |
8840 return function(e) | 2798 return function(t) |
8841 n[t].path=e; | 2799 n[e].path=t; |
8842 end | 2800 end |
8843 end | 2801 end |
8844 function AutoFetchURL(e) | 2802 function AutoFetchURL(e) |
8845 ___fetch_url=e; | 2803 ___fetch_url=e; |
8846 end | 2804 end |
8880 os.exit(1); | 2838 os.exit(1); |
8881 end | 2839 end |
8882 base_path=(base_path or"."):gsub("/$","").."/" | 2840 base_path=(base_path or"."):gsub("/$","").."/" |
8883 squishy_file=base_path.."squishy"; | 2841 squishy_file=base_path.."squishy"; |
8884 out_fn=e.output; | 2842 out_fn=e.output; |
8885 local a,r=pcall(dofile,squishy_file); | 2843 local r,a=pcall(dofile,squishy_file); |
8886 if not a then | 2844 if not r then |
8887 t("Couldn't read squishy file: "..r); | 2845 t("Couldn't read squishy file: "..a); |
8888 os.exit(1); | 2846 os.exit(1); |
8889 end | 2847 end |
8890 if not out_fn then | 2848 if not out_fn then |
8891 t("No output file specified by user or squishy file"); | 2849 t("No output file specified by user or squishy file"); |
8892 os.exit(1); | 2850 os.exit(1); |
8901 local t=e:read("*a"); | 2859 local t=e:read("*a"); |
8902 e:close(); | 2860 e:close(); |
8903 return t; | 2861 return t; |
8904 end | 2862 end |
8905 if e.use_http then | 2863 if e.use_http then |
8906 function r.http(e) | 2864 function r.http(t) |
8907 local t=require"socket.http"; | 2865 local e=require"socket.http"; |
8908 local t,e=t.request(e); | 2866 local t,e=e.request(t); |
8909 if e==200 then | 2867 if e==200 then |
8910 return t; | 2868 return t; |
8911 end | 2869 end |
8912 return false,"HTTP status code: "..tostring(e); | 2870 return false,"HTTP status code: "..tostring(e); |
8913 end | 2871 end |
8914 else | 2872 else |
8915 function r.http(e) | 2873 function r.http(e) |
8916 return false,"Module not found. Re-squish with --use-http option to fetch it from "..e; | 2874 return false,"Module not found. Re-squish with --use-http option to fetch it from "..e; |
8917 end | 2875 end |
8918 end | 2876 end |
8919 h("Resolving modules..."); | 2877 s("Resolving modules..."); |
8920 do | 2878 do |
8921 local e=package.config:sub(1,1); | 2879 local e=package.config:sub(1,1); |
8922 local n=package.config:sub(5,5); | 2880 local n=package.config:sub(5,5); |
8923 local o=package.path:gsub("[^;]+",function(t) | 2881 local o=package.path:gsub("[^;]+",function(t) |
8924 if not t:match("^%"..e)then | 2882 if not t:match("^%"..e)then |
8932 end):gsub("/%./","/"); | 2890 end):gsub("/%./","/"); |
8933 function resolve_module(t,a) | 2891 function resolve_module(t,a) |
8934 t=t:gsub("%.",e); | 2892 t=t:gsub("%.",e); |
8935 for e in a:gmatch("[^;]+")do | 2893 for e in a:gmatch("[^;]+")do |
8936 e=e:gsub("%"..n,t); | 2894 e=e:gsub("%"..n,t); |
8937 s("Looking for "..e) | 2895 h("Looking for "..e) |
8938 local t=io.open(e); | 2896 local t=io.open(e); |
8939 if t then | 2897 if t then |
8940 s("Found!"); | 2898 h("Found!"); |
8941 t:close(); | 2899 t:close(); |
8942 return e; | 2900 return e; |
8943 end | 2901 end |
8944 end | 2902 end |
8945 return nil; | 2903 return nil; |
8991 end | 2949 end |
8992 if e.executable then | 2950 if e.executable then |
8993 if e.executable==true then | 2951 if e.executable==true then |
8994 a:write("#!/usr/bin/env lua\n"); | 2952 a:write("#!/usr/bin/env lua\n"); |
8995 else | 2953 else |
8996 a:write(e.executable,"\n"); | 2954 a:write("#!"..e.executable,"\n"); |
8997 end | 2955 end |
8998 end | 2956 end |
8999 h("Packing modules..."); | 2957 s("Packing modules..."); |
9000 for o,i in ipairs(i)do | 2958 for o,i in ipairs(i)do |
9001 local h,d=i.name,i.path; | 2959 local d,s=i.name,i.path; |
9002 if i.path:sub(1,1)~="/"then | 2960 if i.path:sub(1,1)~="/"then |
9003 d=base_path..i.path; | 2961 s=base_path..i.path; |
9004 end | 2962 end |
9005 s("Packing "..h.." ("..d..")..."); | 2963 h("Packing "..d.." ("..s..")..."); |
9006 local o,n=r.filesystem(d); | 2964 local o,n=r.filesystem(s); |
9007 if(not o)and i.url then | 2965 if(not o)and i.url then |
9008 local e=i.url:gsub("%?",i.path); | 2966 local e=i.url:gsub("%?",i.path); |
9009 s("Fetching: "..e) | 2967 h("Fetching: "..e) |
9010 if e:match("^https?://")then | 2968 if e:match("^https?://")then |
9011 o,n=r.http(e); | 2969 o,n=r.http(e); |
9012 elseif e:match("^file://")or e:match("^[/%.]")then | 2970 elseif e:match("^file://")or e:match("^[/%.]")then |
9013 local e,t=io.open((e:gsub("^file://",""))); | 2971 local e,t=io.open((e:gsub("^file://",""))); |
9014 if e then | 2972 if e then |
9020 end | 2978 end |
9021 end | 2979 end |
9022 if o then | 2980 if o then |
9023 o=o:gsub("^#[^\r\n]*\r?\n",""); | 2981 o=o:gsub("^#[^\r\n]*\r?\n",""); |
9024 if not e.debug then | 2982 if not e.debug then |
9025 a:write("package.preload['",h,"'] = (function (...)\n"); | 2983 a:write("package.preload['",d,"'] = (function (...)\n"); |
2984 if e.module_compat then | |
2985 a:write[[ | |
2986 local _ENV = _ENV; | |
2987 local function module(name, ...) | |
2988 local t = package.loaded[name] or _ENV[name] or { _NAME = name }; | |
2989 package.loaded[name] = t; | |
2990 for i = 1, select("#", ...) do | |
2991 (select(i, ...))(t); | |
2992 end | |
2993 _ENV = t; | |
2994 _M = t; | |
2995 return t; | |
2996 end | |
2997 ]]; | |
2998 end | |
9026 a:write(o); | 2999 a:write(o); |
9027 a:write(" end)\n"); | 3000 a:write(" end)\n"); |
9028 else | 3001 else |
9029 a:write("package.preload['",h,"'] = assert(loadstring(\n"); | 3002 a:write("package.preload['",d,"'] = assert(loadstring(\n"); |
9030 a:write(("%q\n"):format(o)); | 3003 a:write(("%q\n"):format(o)); |
9031 a:write(", ",("%q"):format("@"..d),"))\n"); | 3004 a:write(", ",("%q"):format("@"..s),"))\n"); |
9032 end | 3005 end |
9033 else | 3006 else |
9034 t("Couldn't pack module '"..h.."': "..(n or"unknown error... path to module file correct?")); | 3007 t("Couldn't pack module '"..d.."': "..(n or"unknown error... path to module file correct?")); |
9035 os.exit(1); | 3008 os.exit(1); |
9036 end | 3009 end |
9037 end | 3010 end |
9038 if#n>0 then | 3011 if#n>0 then |
9039 h("Packing resources...") | 3012 s("Packing resources...") |
9040 a:write("do local resources = {};\n"); | 3013 a:write("do local resources = {};\n"); |
9041 for o,e in ipairs(n)do | 3014 for o,e in ipairs(n)do |
9042 local o,e=e.name,e.path; | 3015 local o,e=e.name,e.path; |
9043 local e,i=io.open(base_path..e,"rb"); | 3016 local e,i=io.open(base_path..e,"rb"); |
9044 if not e then | 3017 if not e then |
9084 end end ]] | 3057 end end ]] |
9085 end | 3058 end |
9086 end | 3059 end |
9087 a:write[[function require_resource(name) return resources[name] or error("resource '"..tostring(name).."' not found"); end end ]] | 3060 a:write[[function require_resource(name) return resources[name] or error("resource '"..tostring(name).."' not found"); end end ]] |
9088 end | 3061 end |
9089 s("Finalising...") | 3062 h("Finalising...") |
9090 for e,o in pairs(d)do | 3063 for e,o in pairs(d)do |
9091 local e,i=io.open(base_path..o); | 3064 local e,i=io.open(base_path..o); |
9092 if not e then | 3065 if not e then |
9093 t("Failed to open "..o..": "..i); | 3066 t("Failed to open "..o..": "..i); |
9094 os.exit(1); | 3067 os.exit(1); |
9097 e:close(); | 3070 e:close(); |
9098 end | 3071 end |
9099 end | 3072 end |
9100 a:close(); | 3073 a:close(); |
9101 o("OK!"); | 3074 o("OK!"); |
9102 local s=require"optlex" | 3075 local h=require"optlex" |
9103 local h=require"optparser" | 3076 local r=require"optparser" |
9104 local a=require"llex" | 3077 local a=require"llex" |
9105 local r=require"lparser" | 3078 local d=require"lparser" |
9106 local i={ | 3079 local i={ |
9107 none={}; | 3080 none={}; |
9108 debug={"whitespace","locals","entropy","comments","numbers"}; | 3081 debug={"whitespace","locals","entropy","comments","numbers"}; |
9109 default={"comments","whitespace","emptylines","numbers","locals"}; | 3082 default={"comments","whitespace","emptylines","numbers","locals"}; |
9110 basic={"comments","whitespace","emptylines"}; | 3083 basic={"comments","whitespace","emptylines"}; |
9138 local a=t:read("*a") | 3111 local a=t:read("*a") |
9139 if not a then i("cannot read from \""..e.."\"")end | 3112 if not a then i("cannot read from \""..e.."\"")end |
9140 t:close() | 3113 t:close() |
9141 return a | 3114 return a |
9142 end | 3115 end |
9143 local function d(e,a) | 3116 local function u(e,a) |
9144 local t=io.open(e,"wb") | 3117 local t=io.open(e,"wb") |
9145 if not t then i("cannot open \""..e.."\" for writing")end | 3118 if not t then i("cannot open \""..e.."\" for writing")end |
9146 local a=t:write(a) | 3119 local a=t:write(a) |
9147 if not a then i("cannot write to \""..e.."\"")end | 3120 if not a then i("cannot write to \""..e.."\"")end |
9148 t:close() | 3121 t:close() |
9151 a.init(e) | 3124 a.init(e) |
9152 a.llex() | 3125 a.llex() |
9153 local t,e,a | 3126 local t,e,a |
9154 =a.tok,a.seminfo,a.tokln | 3127 =a.tok,a.seminfo,a.tokln |
9155 if n["opt-locals"]then | 3128 if n["opt-locals"]then |
3129 r.print=print | |
3130 d.init(t,e,a) | |
3131 local o,a=d.parser() | |
3132 r.optimize(n,t,e,o,a) | |
3133 end | |
9156 h.print=print | 3134 h.print=print |
9157 r.init(t,e,a) | |
9158 local o,a=r.parser() | |
9159 h.optimize(n,t,e,o,a) | |
9160 end | |
9161 s.print=print | |
9162 t,e,a | 3135 t,e,a |
9163 =s.optimize(n,t,e,a) | 3136 =h.optimize(n,t,e,a) |
9164 local e=table.concat(e) | 3137 local e=table.concat(e) |
9165 if string.find(e,"\r\n",1,1)or | 3138 if string.find(e,"\r\n",1,1)or |
9166 string.find(e,"\n\r",1,1)then | 3139 string.find(e,"\n\r",1,1)then |
9167 s.warn.mixedeol=true | 3140 h.warn.mixedeol=true |
9168 end | 3141 end |
9169 return e; | 3142 return e; |
9170 end | 3143 end |
9171 function minify_file(e,t) | 3144 function minify_file(e,t) |
9172 local e=l(e); | 3145 local e=l(e); |
9173 e=minify_string(e); | 3146 e=minify_string(e); |
9174 d(t,e); | 3147 u(t,e); |
9175 end | 3148 end |
9176 if e.minify~=false then | 3149 if e.minify~=false then |
9177 o("Minifying "..out_fn.."..."); | 3150 o("Minifying "..out_fn.."..."); |
9178 minify_file(out_fn,out_fn); | 3151 minify_file(out_fn,out_fn); |
9179 o("OK!"); | 3152 o("OK!"); |
9180 end | 3153 end |
9181 local s=require"llex" | 3154 local h=require"llex" |
9182 local i=128; | 3155 local i=128; |
9183 local n={"and","break","do","else","elseif", | 3156 local n={"and","break","do","else","elseif", |
9184 "end","false","for","function","if", | 3157 "end","false","for","function","if", |
9185 "in","local","nil","not","or","repeat", | 3158 "in","local","nil","not","or","repeat", |
9186 "return","then","true","until","while"} | 3159 "return","then","true","until","while"} |
9187 function uglify_file(l,o) | 3160 function uglify_file(l,o) |
9188 local h,a=io.open(l); | 3161 local r,a=io.open(l); |
9189 if not h then | 3162 if not r then |
9190 t("Can't open input file for reading: "..tostring(a)); | 3163 t("Can't open input file for reading: "..tostring(a)); |
9191 return; | 3164 return; |
9192 end | 3165 end |
9193 local a,r=io.open(o..".uglified","wb+"); | 3166 local a,s=io.open(o..".uglified","w+b"); |
9194 if not a then | 3167 if not a then |
9195 t("Can't open output file for writing: "..tostring(r)); | 3168 t("Can't open output file for writing: "..tostring(s)); |
9196 return; | 3169 return; |
9197 end | 3170 end |
9198 local d=h:read("*a"); | 3171 local s=r:read("*a"); |
9199 h:close(); | 3172 r:close(); |
9200 local h,t=d:match("^(#.-\n)(.+)$"); | 3173 local r,t=s:match("^(#.-\n)(.+)$"); |
9201 local t=t or d; | 3174 local t=t or s; |
9202 if h then | 3175 if r then |
9203 a:write(h) | 3176 a:write(r) |
9204 end | 3177 end |
9205 while i+#n<=255 and t:find("["..string.char(i).."-"..string.char(i+#n-1).."]")do | 3178 while i+#n<=255 and t:find("["..string.char(i).."-"..string.char(i+#n-1).."]")do |
9206 i=i+1; | 3179 i=i+1; |
9207 end | 3180 end |
9208 if i+#n>255 then | 3181 if i+#n>255 then |
9209 a:write(t); | 3182 a:write(t); |
9210 a:close(); | 3183 a:close(); |
9211 os.rename(o..".uglified",o); | 3184 os.rename(o..".uglified",o); |
9212 return; | 3185 return; |
9213 end | 3186 end |
9214 local r={} | 3187 local d={} |
9215 for e,t in ipairs(n)do | 3188 for t,e in ipairs(n)do |
9216 r[t]=string.char(i+e); | 3189 d[e]=string.char(i+t); |
9217 end | 3190 end |
9218 local h=0; | 3191 local r=0; |
9219 d:gsub("(=+)",function(e)h=math.max(h,#e);end); | 3192 s:gsub("(=+)",function(e)r=math.max(r,#e);end); |
9220 s.init(t,"@"..l); | 3193 h.init(t,"@"..l); |
9221 s.llex() | 3194 h.llex() |
9222 local t=s.seminfo; | 3195 local s=h.seminfo; |
9223 if e.uglify_level=="full"and i+#n<255 then | 3196 if e.uglify_level=="full"and i+#n<255 then |
9224 local e={}; | 3197 local e={}; |
9225 for i,o in ipairs(s.tok)do | 3198 for o,a in ipairs(h.tok)do |
9226 if o=="TK_NAME"or o=="TK_STRING"then | 3199 if a=="TK_NAME"or a=="TK_STRING"then |
9227 local a=string.format("%q,%q",o,t[i]); | 3200 local t=string.format("%q,%q",a,s[o]); |
9228 if not e[a]then | 3201 if not e[t]then |
9229 e[a]={type=o,value=t[i],count=0}; | 3202 e[t]={type=a,value=s[o],count=0}; |
9230 e[#e+1]=e[a]; | 3203 e[#e+1]=e[t]; |
9231 end | 3204 end |
9232 e[a].count=e[a].count+1; | 3205 e[t].count=e[t].count+1; |
9233 end | 3206 end |
9234 end | 3207 end |
9235 for t=1,#e do | 3208 for t=1,#e do |
9236 local e=e[t]; | 3209 local e=e[t]; |
9237 e.score=(e.count)*(#e.value-1)-#string.format("%q",e.value)-1; | 3210 e.score=(e.count)*(#e.value-1)-#string.format("%q",e.value)-1; |
9238 end | 3211 end |
9239 table.sort(e,function(t,e)return t.score>e.score;end); | 3212 table.sort(e,function(e,t)return e.score>t.score;end); |
9240 local t=255-(i+#n); | 3213 local t=255-(i+#n); |
9241 for t=t+1,#e do | 3214 for t=t+1,#e do |
9242 e[t]=nil; | 3215 e[t]=nil; |
9243 end | 3216 end |
9244 local t=#n; | 3217 local t=#n; |
9245 for a,e in ipairs(e)do | 3218 for a,e in ipairs(e)do |
9246 if e.score>0 then | 3219 if e.score>0 then |
9247 table.insert(n,e.value); | 3220 table.insert(n,e.value); |
9248 r[e.value]=string.char(i+t+a); | 3221 d[e.value]=string.char(i+t+a); |
9249 end | 3222 end |
9250 end | 3223 end |
9251 end | 3224 end |
9252 a:write("local base_char,keywords=",tostring(i),",{"); | 3225 a:write("local base_char,keywords=",tostring(i),",{"); |
9253 for t,e in ipairs(n)do | 3226 for t,e in ipairs(n)do |
9254 a:write(string.format("%q",e),','); | 3227 a:write(string.format("%q",e),','); |
9255 end | 3228 end |
9256 a:write[[}; function prettify(code) return code:gsub("["..string.char(base_char).."-"..string.char(base_char+#keywords).."]", | 3229 a:write[[}; function prettify(code) return code:gsub("["..string.char(base_char).."-"..string.char(base_char+#keywords).."]", |
9257 function (c) return keywords[c:byte()-base_char]; end) end ]] | 3230 function (c) return keywords[c:byte()-base_char]; end) end ]] |
9258 a:write[[return assert(loadstring(prettify]] | 3231 a:write[[return setfenv(assert(loadstring(prettify]] |
9259 a:write("[",string.rep("=",h+1),"["); | 3232 a:write("[",string.rep("=",r+1),"["); |
9260 for o,e in ipairs(s.tok)do | 3233 for e,t in ipairs(h.tok)do |
9261 if e=="TK_KEYWORD"or e=="TK_NAME"or e=="TK_STRING"then | 3234 if t=="TK_KEYWORD"or t=="TK_NAME"or t=="TK_STRING"then |
9262 local e=r[t[o]]; | 3235 local t=d[s[e]]; |
9263 if e then | 3236 if t then |
9264 a:write(e); | 3237 a:write(t); |
9265 else | 3238 else |
9266 a:write(t[o]); | 3239 a:write(s[e]); |
9267 end | 3240 end |
9268 else | 3241 else |
9269 a:write(t[o]); | 3242 a:write(s[e]); |
9270 end | 3243 end |
9271 end | 3244 end |
9272 a:write("]",string.rep("=",h+1),"]"); | 3245 a:write("]",string.rep("=",r+1),"]"); |
9273 a:write(", '@",o,"'))()"); | 3246 a:write(", '@",o,"')), getfenv())()"); |
9274 a:close(); | 3247 a:close(); |
9275 os.rename(o..".uglified",o); | 3248 os.rename(o..".uglified",o); |
9276 end | 3249 end |
9277 if e.uglify then | 3250 if e.uglify then |
9278 o("Uglifying "..out_fn.."..."); | 3251 o("Uglifying "..out_fn.."..."); |
9279 uglify_file(out_fn,out_fn); | 3252 uglify_file(out_fn,out_fn); |
9280 o("OK!"); | 3253 o("OK!"); |
9281 end | 3254 end |
9282 function gzip_file(a,e) | 3255 local i=require"minichunkspy" |
3256 function compile_string(t,a) | |
3257 local o=string.dump(loadstring(t,a)); | |
3258 if((not e.debug)or e.compile_strip)and e.compile_strip~=false then | |
3259 local t=i.disassemble(o); | |
3260 local function a(e) | |
3261 e.source_lines,e.locals,e.upvalues={},{},{}; | |
3262 for t,e in ipairs(e.prototypes)do | |
3263 a(e); | |
3264 end | |
3265 end | |
3266 s("Stripping debug info..."); | |
3267 a(t.body); | |
3268 return i.assemble(t); | |
3269 end | |
3270 return o; | |
3271 end | |
3272 function compile_file(a,e) | |
9283 local o,a=io.open(a); | 3273 local o,a=io.open(a); |
9284 if not o then | 3274 if not o then |
9285 t("Can't open input file for reading: "..tostring(a)); | 3275 t("Can't open input file for reading: "..tostring(a)); |
9286 return; | 3276 return; |
9287 end | 3277 end |
9288 local a,i=io.open(e..".gzipped","wb+"); | 3278 local a,i=io.open(e..".compiled","w+"); |
9289 if not a then | 3279 if not a then |
3280 t("Can't open output file for writing: "..tostring(i)); | |
3281 return; | |
3282 end | |
3283 local i=o:read("*a"); | |
3284 o:close(); | |
3285 local t,o=i:match("^(#.-\n)(.+)$"); | |
3286 local o=o or i; | |
3287 if t then | |
3288 a:write(t) | |
3289 end | |
3290 a:write(compile_string(o,e)); | |
3291 os.rename(e..".compiled",e); | |
3292 end | |
3293 if e.compile then | |
3294 o("Compiling "..out_fn.."..."); | |
3295 compile_file(out_fn,out_fn); | |
3296 o("OK!"); | |
3297 end | |
3298 function gzip_file(e,a) | |
3299 local o,e=io.open(e); | |
3300 if not o then | |
3301 t("Can't open input file for reading: "..tostring(e)); | |
3302 return; | |
3303 end | |
3304 local e,i=io.open(a..".gzipped","wb+"); | |
3305 if not e then | |
9290 t("Can't open output file for writing: "..tostring(i)); | 3306 t("Can't open output file for writing: "..tostring(i)); |
9291 return; | 3307 return; |
9292 end | 3308 end |
9293 local i=o:read("*a"); | 3309 local i=o:read("*a"); |
9294 o:close(); | 3310 o:close(); |
9295 local n,o=i:match("^(#.-\n)(.+)$"); | 3311 local n,o=i:match("^(#.-\n)(.+)$"); |
9296 local o=o or i; | 3312 local o=o or i; |
9297 if n then | 3313 if n then |
9298 a:write(n) | 3314 e:write(n) |
9299 end | 3315 end |
9300 local i,n=io.open(e..".pregzip","wb+"); | 3316 local i,n=io.open(a..".pregzip","wb+"); |
9301 if not i then | 3317 if not i then |
9302 t("Can't open temp file for writing: "..tostring(n)); | 3318 t("Can't open temp file for writing: "..tostring(n)); |
9303 return; | 3319 return; |
9304 end | 3320 end |
9305 i:write(o); | 3321 i:write(o); |
9306 i:close(); | 3322 i:close(); |
9307 local t=io.popen("gzip -c '"..e..".pregzip'"); | 3323 local t=io.popen("gzip -c '"..a..".pregzip'"); |
9308 o=t:read("*a"); | 3324 o=t:read("*a"); |
9309 t:close(); | 3325 t:close(); |
9310 os.remove(e..".pregzip"); | 3326 os.remove(a..".pregzip"); |
9311 local t=0; | 3327 local t=0; |
9312 o:gsub("(=+)",function(e)t=math.max(t,#e);end); | 3328 o:gsub("(=+)",function(e)t=math.max(t,#e);end); |
9313 a:write("local ungz = (function ()",require_resource"gunzip.lua"," end)()\n"); | 3329 e:write("local ungz = (function ()",require_resource"gunzip.lua"," end)()\n"); |
9314 a:write[[return assert(loadstring((function (i)local o={} ungz{input=i,output=function(b)table.insert(o,string.char(b))end}return table.concat(o)end) ]]; | 3330 e:write[[return assert(loadstring((function (i)local o={} ungz{input=i,output=function(b)table.insert(o,string.char(b))end}return table.concat(o)end) ]]; |
9315 a:write((string.format("%q",o):gsub("\026","\\026"))); | 3331 e:write((string.format("%q",o):gsub("\026","\\026"))); |
9316 a:write(", '@",e,"'))()"); | 3332 e:write(", '@",a,"'))()"); |
9317 a:close(); | 3333 e:close(); |
9318 os.rename(e..".gzipped",e); | 3334 os.rename(a..".gzipped",a); |
9319 end | 3335 end |
9320 if e.gzip then | 3336 if e.gzip then |
9321 o("Gzipping "..out_fn.."..."); | 3337 o("Gzipping "..out_fn.."..."); |
9322 gzip_file(out_fn,out_fn); | 3338 gzip_file(out_fn,out_fn); |
9323 o("OK!"); | 3339 o("OK!"); |
9324 end | 3340 end |
9325 if e.js then | |
9326 o("Generating Javascript for "..out_fn.."..."); | |
9327 local e={ | |
9328 ["\""]="\\\"",["\\"]="\\\\",["\b"]="\\b", | |
9329 ["\f"]="\\f",["\n"]="\\\n",["\r"]="\\r",["\t"]="\\t"}; | |
9330 for t=0,31 do | |
9331 local a=string.char(t); | |
9332 if not e[a]then e[a]=("\\u%.4X"):format(t);end | |
9333 end | |
9334 local t=io.open(out_fn); | |
9335 local a=t:read("*a"); | |
9336 t:close(); | |
9337 local t=io.open(out_fn,"w+"); | |
9338 t:write("(function(){\n", | |
9339 require_resource("lua5.1.min.js"),"\n", | |
9340 require_resource("LuaState.js"),"\n", | |
9341 "LuaState().run(\""..a:gsub(".",e).."\")\n", | |
9342 "})()" | |
9343 ); | |
9344 t:close(); | |
9345 o("OK!"); | |
9346 end |