Advertisement
Guest User

"Happy New Year" (in flames)

a guest
Dec 26th, 2017
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 53.02 KB | None | 0 0
  1. REM "HAPPY NEW YEAR"
  2. REM For 'BBC BASIC for Windows'
  3. REM Not compatible with BBCSDL
  4.  
  5. REM Made in one heck of a rush, and is not intended to be 'instructive'
  6.  
  7. *ESC OFF
  8.  
  9. ON ERROR OSCLI "REFRESH ON" : CLS : ON : VDU 7 : PRINT REPORT$ + " at line " + STR$ERL; : REPEAT UNTIL INKEY(1)=0
  10.  
  11. Wait% = FALSE : REM Set to TRUE to reduce CPU usage (will probably hugely slow it down)
  12.  
  13. PROCFixWindowSize
  14.  
  15. WinW% = 640
  16. WinH% = 480
  17. VDU 23, 22, WinW%; WinH%; 8, 16, 16, 0 : OFF
  18.  
  19. DIM gfx{ bmBuffAddr%, bmBuffW%, bmBuffH%, \
  20. \ flags{paint&, flipY&}}
  21.  
  22. PROCasm
  23.  
  24. DIM BITMAPINFOHEADER{Size%, Width%, Height%, Planes{l&,h&}, BitCount{l&,h&}, \
  25. \ Compression%, SizeImage%, XPelsPerMeter%, YPelsPerMeter%, \
  26. \ ClrUsed%, ClrImportant%}
  27. DIM bmi{Header{} = BITMAPINFOHEADER{}, Palette%(255)}
  28. bmi.Header.Size% = DIM(BITMAPINFOHEADER{})
  29. bmi.Header.Width% = @vdu%!208
  30. bmi.Header.Height% = @vdu%!212
  31. bmi.Header.Planes.l& = 1
  32. bmi.Header.BitCount.l& = 8
  33.  
  34. DIM hpndata% 32768
  35. s% = FNget_data_string
  36. i% = 0
  37. FOR I% = 0 TO LEN($s%)-1 STEP 2
  38. hpndata%?i% = EVAL("&" + CHR$(s%?I%) + CHR$(s%?(I%+1)) )
  39. i% += 1
  40. NEXT I%
  41. npts% = hpndata%!0
  42. DIM u%(npts%-1), v%(npts%-1)
  43. FOR I% = 0 TO npts%-1
  44. u%(I%) = (hpndata%!(4 + 4*I%)) AND &FFFF
  45. v%(I%) = ((hpndata%!(4 + 4*I%)) AND &FFFF0000) >>> 16
  46. NEXT
  47.  
  48. RESTORE
  49. FOR I% = 0 TO 255
  50. READ rgb%
  51. r& = rgb% >> 16
  52. g& = rgb% >> 8
  53. b& = rgb%
  54. bmi.Palette%(I%) = b& + (g&<<8) + (r&<<16)
  55. NEXT I%
  56.  
  57. SYS "CreateDIBSection", @memhdc%, bmi{}, 0, ^bits%, 0, 0 TO hbitmap%
  58. IF hbitmap% = 0 ERROR 100, "Couldn't create DIBSection"
  59. SYS "SelectObject", @memhdc%, hbitmap% TO oldhbm%
  60. SYS "DeleteObject", oldhbm%
  61. CLS : OFF
  62.  
  63. gfx.bmBuffAddr% = bits%
  64. gfx.bmBuffW% = @vdu%!208
  65. gfx.bmBuffH% = @vdu%!212
  66. gfx.flags.paint& = 1
  67. gfx.flags.flipY& = 0
  68.  
  69. sprSz% = 31
  70. DIM spr% sprSz%^2
  71. FOR Y% = 0 TO sprSz%-1
  72. FOR X% = 0 TO sprSz%-1
  73. d = SQR( (sprSz%/2 - X%)^2 + (sprSz%/2 - Y%)^2 )
  74. IF d < sprSz%/2 THEN
  75. spr%?(sprSz%*Y% + X%) = 255
  76. ENDIF
  77. NEXT
  78. NEXT
  79.  
  80. N% = npts%
  81. DIM x%(N%-1), L%(N%-1), y(N%-1), yv(N%-1), ya(N%-1)
  82. FOR I% = 0 TO N%-1
  83. PROCnew
  84. NEXT
  85.  
  86. B% = spr%
  87. D% = gfx{}
  88. P% = GFXLIB_PlotShape%
  89. K% = sprSz%/2
  90. S% = sprSz%
  91.  
  92.  
  93. *REFRESH OFF
  94.  
  95. REPEAT
  96. CLS
  97. FOR I% = 0 TO N%-1
  98. SYS P%, D%, B%, S%, S%, x%(I%)-K%, y(I%)-K%
  99. IF L%(I%) > 0 THEN
  100. L%(I%) - =1
  101. ELSE
  102. PROCnew
  103. ENDIF
  104. y(I%) += yv(I%)
  105. yv(I%) += ya(I%)
  106. NEXT
  107. SYS "InvalidateRect", @hwnd%, 0, 0
  108. *REFRESH
  109. IF Wait% THEN WAIT 1
  110. UNTIL FALSE
  111. END
  112. :
  113. :
  114. :
  115. :
  116. DEF PROCnew
  117. a = 2*PI*RND(1)
  118. r = 8*RND(1)
  119. i% = RND(N%)-1
  120. REMx%(I%) = WinW%/2 + r*SINa
  121. REMy(I%) = 32 + r*COSa
  122. x%(I%) = u%(i%) + r*SINa
  123. y(I%) = v%(i%) + r*COSa
  124. L%(I%) = 50 + RND(100)
  125. ya(I%) = 0.001 + 0.005*RND(1)
  126. yv(I%) = ya(I%)*RND(100)
  127. ENDPROC
  128. :
  129. :
  130. :
  131. :
  132. DEF PROCasm
  133. LOCAL I%, P%, code%, varsblk%
  134. _gBMBUFFADDR = ^gfx.bmBuffAddr% - gfx{}
  135. _gBMBUFFW = ^gfx.bmBuffW% - gfx{}
  136. _gBMBUFFH = ^gfx.bmBuffH% - gfx{}
  137. _gPAINTF = ^gfx.flags.paint& - gfx{}
  138. _gFLIPYF = ^gfx.flags.flipY& - gfx{}
  139. DIM GFXLIB_clip{ skip1%, skip2%, skip3%, skip4%, check_y%, set_plotflag%, exit% }
  140. DIM GFXLIB_Plot{ cont%, xloop%, yloop%, next_pxl%, exit% }
  141. DIM GFXLIB_PlotShape{ cont%, xloop%, yloop%, next_pxl%, exit% }
  142. DIM code% 32767, varsblk% 4096
  143. FOR I% = 0 TO 2 STEP 2
  144. P% = code%
  145. [OPT I%
  146.  
  147. .GFXLIB_PlotShape%
  148.  
  149. ;
  150. ; SYS GFXLIB_PlotShape%, gfx{}, bmAddr, bmW, bmH, x, y
  151. ;
  152.  
  153. ;----*----*----*----*----*----*----*----|
  154.  
  155. pushad
  156.  
  157. ;REM. ESP +36 = gfx
  158. ;REM. ESP +40 = bmAddr
  159. ;REM. ESP +44 = bmW
  160. ;REM. ESP +48 = bmH
  161. ;REM. ESP +52 = x
  162. ;REM. ESP +56 = y
  163.  
  164. ;REM. ------------------------------------------------------
  165. ;REM. Setup the entry params for the bitmap clipping routine
  166. ;REM. ------------------------------------------------------
  167.  
  168. mov eax, [esp + 36] ; EAX = ptr to gfx{} struct
  169.  
  170. test BYTE [eax + _gPAINTF], &FF
  171. jz near GFXLIB_PlotShape.exit%
  172.  
  173. test BYTE [eax + _gFLIPYF], &FF
  174. jz GFXLIB_PlotShape.cont%
  175.  
  176. ;REM. Flip Y-coord
  177. mov ebx, [eax + 8] ; EBX = gfx.bmBuffH%
  178. sub ebx, [esp + 56] ; = gfx.bmBuffH% - y
  179. sub ebx, [esp + 48] ; = gfx.bmBuffH% - y - bmH
  180. mov [esp + 56], ebx ; store new Y
  181.  
  182. .GFXLIB_PlotShape.cont%
  183.  
  184. ;REM. copy GFXLIB_PlotShape's entry vars from the stack to varsblk% (this makes life easier)
  185.  
  186. mov ebx,[esp+40] : mov [varsblk%+64],ebx ; varsblk%+64 = bmAddr
  187. mov ebx,[esp+44] : mov [varsblk%+68],ebx ; varsblk%+68 = bmW
  188. mov ebx,[esp+48] : mov [varsblk%+72],ebx ; varsblk%+72 = bmH
  189. mov ebx,[esp+52] : mov [varsblk%+76],ebx ; varsblk%+76 = x
  190. mov ebx,[esp+56] : mov [varsblk%+80],ebx ; varsblk%+80 = y
  191.  
  192. ;REM. Call the clipping routine (GFXLIB_clip) after PUSHing the required vars onto the stack
  193.  
  194. ;REM. SYS GFXLIB_clip, gfx, bmW, bmH, bmX, bmY, clipValsBlk
  195.  
  196. push (varsblk%+128) ; ptr to clipValsBlk
  197. push dword [varsblk%+80] ; y
  198. push dword [varsblk%+76] ; x
  199. push dword [varsblk%+72] ; bmH
  200. push dword [varsblk%+68] ; bmW
  201. push eax ; ptr to params blk
  202. call GFXLIB_clip%
  203.  
  204. ;REM.
  205. ;REM. clipValsBlk
  206. ;REM.
  207. ;REM. +128 PlotShapeFlag (TRUE or FALSE) - if FALSE, do not attempt to PlotShape/display bitmap
  208. ;REM. +132 clipFlag (TRUE or FALSE) - if TRUE then clipping is required
  209. ;REM. +136 startX
  210. ;REM. +140 startY
  211. ;REM. +144 numRows
  212. ;REM. +148 rowLen
  213. ;REM. +152 skipRows
  214. ;REM. +156 skipPxls
  215. ;REM.
  216.  
  217. cmp [varsblk%+128], dword TRUE ; check PlotShapeFlag
  218. jne GFXLIB_PlotShape.exit% ; exit if PlotShapeFlag=FALSE
  219.  
  220. ;----*----*----*----*----*----*----*----|
  221.  
  222. ; EAX = ptr to params blk
  223.  
  224. mov ebx, [eax + 0] ; load base addr of 'bmp buffer' (bmpBuffAddr)
  225. mov ecx, [varsblk% + 140] ; startY
  226. imul ecx, [eax + 4] ; = startY*bmpBuffW
  227. add ecx, [varsblk% + 136] ; = startY*bmpBuffW + startX
  228. ;REM shl ecx, 2 ; = 4*(startY*bmpBuffW + startX)
  229. add ecx, ebx ; = bmpBuffAddr + 4*(startY*bmpBuffW + startX)
  230.  
  231. mov edi, [varsblk% + 64] ; bmAddr
  232.  
  233. mov ebx, [varsblk% + 152] ; skipRows
  234. add ebx, [varsblk% + 156] ; skipRows+skipPxls
  235. ;REM shl ebx, 2 ; 4*(skipRows + skipPxls)
  236. add edi, ebx ; bmAddr += 4*(skipRows + skipPxls)
  237.  
  238. mov ebp, [varsblk% + 68] ; bmW
  239. ;REM shl ebp, 2 ; = 4*bmW
  240.  
  241. mov eax, [eax + 4] ; bmBuffW
  242. ;REM shl eax, 2 ; = 4*bmBuffW
  243.  
  244. mov esi, [varsblk% + 144] ; numRows (Y-loop counter)
  245. dec esi ; numRows -= 1
  246.  
  247. .GFXLIB_PlotShape.yloop%
  248.  
  249. push esi ; preserve ESI (Y-loop counter)
  250.  
  251. mov esi, [varsblk% + 148] ; rowLen (X-loop counter)
  252. dec esi ; rowLen -= 1
  253.  
  254. .GFXLIB_PlotShape.xloop%
  255. movzx edx, BYTE [edi + esi] ; load byte from source bitmap
  256. test dl, &FF ; is it 0 ?
  257. jz GFXLIB_PlotShape.next_pxl% ; skip (i.e. don't PlotShape) if so
  258.  
  259. cmp BYTE [ecx + esi], &FF ; test dest byte
  260. je GFXLIB_PlotShape.next_pxl% ; skip if = 255
  261.  
  262. ; inc BYTE [ecx + esi] ; inc dest byte
  263. add BYTE [ecx + esi], 2
  264.  
  265. .GFXLIB_PlotShape.next_pxl%
  266. dec esi ; X -= 1
  267. jge GFXLIB_PlotShape.xloop% ; loop if X >= 0
  268.  
  269. add edi, ebp ; bmAddr += 4*bmW
  270. add ecx, eax ; bmBuffAddr += 4*bmBuffW
  271.  
  272. pop esi ; recover numRows (Y-loop)
  273. dec esi ; Y -= 1
  274. jge GFXLIB_PlotShape.yloop% ; loop if Y >= 0
  275.  
  276. .GFXLIB_PlotShape.exit%
  277. popad
  278. ret (6*4)
  279.  
  280.  
  281.  
  282.  
  283.  
  284. .GFXLIB_clip% ; for internal use only
  285.  
  286. ; SYS GFXLIB_clip, gfx, bmW, bmH, bmX, bmY, clipValsBlk
  287.  
  288. ;
  289. ; On exit:
  290. ;
  291. ; clipValsBlk
  292. ;
  293. ; +0 plotFlag (TRUE or FALSE) - if FALSE, do not attempt to plot/display bitmap
  294. ; +4 clipFlag (TRUE or FALSE) - if TRUE, bitmap needs to be clipped
  295. ; +8 startX
  296. ; +12 startY
  297. ; +16 numRows
  298. ; +20 rowLen
  299. ; +24 skipRows
  300. ; +28 skipPxls
  301. ;
  302.  
  303. pushad
  304.  
  305. ; ESP+36 = gfx
  306. ; ESP+40 = bmW
  307. ; ESP+44 = bmH
  308. ; ESP+48 = x
  309. ; ESP+52 = y
  310. ; ESP+56 = clipValsBlk
  311.  
  312. ;----*----*----*----*----*----*----*----|
  313.  
  314. mov ebp, [esp + 56] ; EBP = ptr to clipvarsblk%
  315.  
  316. ; init. clipVarlBlk
  317.  
  318. mov [ebp + 0], dword FALSE ; plotFlag
  319. mov [ebp + 4], dword FALSE ; clipFlag
  320. mov eax,[esp+48] : mov [ebp + 8],eax ; startX = bmX
  321. mov eax,[esp+52] : mov [ebp +12],eax ; startY = bmY
  322. mov eax,[esp+44] : mov [ebp +16],eax ; numRows = bmH
  323. mov eax,[esp+40] : mov [ebp +20],eax ; rowLen = bmW
  324. mov [ebp +24], dword 0 ; skipRows
  325. mov [ebp +28], dword 0 ; skipPxls
  326.  
  327. cmp [esp+40], dword 0 ; is bmW <= 0 ?
  328. jle near GFXLIB_clip.exit%
  329.  
  330. cmp [esp+44], dword 0 ; is bmH <= 0 ?
  331. jle near GFXLIB_clip.exit%
  332.  
  333. mov esi, [esp + 36] ; load ptr to params blk
  334.  
  335. mov eax, [esp + 48] ; load bmX
  336. mov ebx, [esp + 52] ; load bmY
  337.  
  338. cmp eax, [esi + 4] ; is bmX >= bmpBuffW ?
  339. jge near GFXLIB_clip.exit%
  340.  
  341. mov ecx, [esp+40] ; bmW
  342. neg ecx ; -bmW
  343. cmp eax, ecx ; is bmX <= -bmW
  344. jle near GFXLIB_clip.exit%
  345.  
  346. cmp ebx, [esi + 8] ; is bmY >= bmpBuffH ?
  347. jge near GFXLIB_clip.exit%
  348.  
  349. mov ecx, [esp+44] ; bmH
  350. neg ecx ; -bmH
  351. cmp ebx, ecx ; is bmY <= -bmH
  352. jle near GFXLIB_clip.exit%
  353.  
  354. ;REM IF bmX% < 0 AND (bmX% + bmW%) < bmBuffW% THEN
  355. ;REM clip% = TRUE
  356. ;REM rowlen% += bmX%
  357. ;REM skippxls% = -bmX%
  358. ;REM x`% = 0
  359. ;REM ENDIF
  360.  
  361. cmp eax, 0 ; bmX < 0 ?
  362. jge near GFXLIB_clip.skip1%
  363. mov ecx, [esp+40] ; ecx = bmW
  364. add ecx, eax ; = bmX + bmW
  365. cmp ecx, [esi+4] ; (bmX + bmW) < bmpBuffW ?
  366. jge near GFXLIB_clip.skip1%
  367. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  368. add [ebp+20], eax ; rowLen += bmX (note bmX is -ve)
  369. mov [ebp+28], eax ; skipPxls = -bmX
  370. neg dword [ebp+28] ;
  371. mov [ebp+8], dword 0 ; startX = 0
  372.  
  373. .GFXLIB_clip.skip1%
  374.  
  375. ;REM IF bmX% > bmBuffW%-bmW% THEN
  376. ;REM clip% = TRUE
  377. ;REM rowlen% = bmBuffW% - bmX%
  378. ;REM ENDIF
  379.  
  380. mov ecx, [esi+4] ; ecx = bmpBuffW
  381. mov edx, ecx ; copy ecx
  382. sub ecx, [esp+40] ; ecx -= bmW
  383. cmp eax, ecx ; is bmX > bmpBuffW-bmW ?
  384. jle near GFXLIB_clip.skip2%
  385. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  386. sub edx, eax ; bmpBuffW - bmX
  387. mov [ebp+20], edx ; rowLen = bmpBuffW - bmX
  388.  
  389. .GFXLIB_clip.skip2%
  390.  
  391. ;REM IF bmX% < 0 AND (bmX% + bmW%) >= bmBuffW% THEN
  392. ;REM clip% = TRUE
  393. ;REM rowlen% = bmBuffW%
  394. ;REM skippxls% = -bmX%
  395. ;REM x`% = 0
  396. ;REM ENDIF
  397.  
  398. cmp eax, 0
  399. jge near GFXLIB_clip.check_y%
  400. mov ecx, [esp+40] ; ecx = bmW
  401. add ecx, eax ; = bmX + bmW
  402. cmp ecx, [esi+4] ; is (bmX+bmW) >= bmpBuffW ?
  403. jl near GFXLIB_clip.check_y%
  404. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  405. mov ecx, [esi+4] ; bmpBuffW
  406. mov [ebp+20], ecx ; rowLen = bmpBuffW
  407. mov ecx, eax ; ecx = bmX
  408. neg ecx ; = -bmX
  409. mov [ebp+28], ecx ; skipPxls = -bmX
  410. mov [ebp+8], dword 0 ; startX = 0
  411.  
  412. .GFXLIB_clip.check_y%
  413.  
  414. ;REM IF bmY% < 0 AND (bmY% + bmH%) < bmBuffH% THEN
  415. ;REM clip% = TRUE
  416. ;REM numrows% += bmY%+bmH%
  417. ;REM skiprows% -= bmW%*bmY%
  418. ;REM y`% = 0
  419. ;REM ENDIF
  420.  
  421. cmp ebx, 0 ; bmY < 0 ?
  422. jge near GFXLIB_clip.skip3%
  423. mov ecx, [esp+44] ; ecx = bmH
  424. mov edx, ecx ; copy ecx (bmH)
  425. add ecx, ebx ; bmY + bmH
  426. cmp ecx, [esi+8] ; is (bmY+bmH) < bmpBuffH ?
  427. jge near GFXLIB_clip.skip3%
  428. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  429. mov [ebp+16], ebx ; numRows = bmY
  430. add [ebp+16], edx ; = bmY+bmH
  431. mov ecx, ebx ; ecx = bmY
  432. imul ecx, [esp+40] ; = bmY*bmW
  433. sub [ebp+24], ecx ; skipRows -= bmY*bmW
  434. mov [ebp+12], dword 0 ; startY = 0
  435.  
  436. .GFXLIB_clip.skip3%
  437.  
  438. ;REM IF bmY% > bmBuffH%-bmH% THEN
  439. ;REM clip% = TRUE
  440. ;REM numrows% = bmBuffH% - bmY%
  441. ;REM ENDIF
  442.  
  443. mov ecx, [esi+8] ; ecx = bmpBuffH
  444. sub ecx, [esp+44] ; = bmpBuffH - bmH
  445. cmp ebx, ecx ; is bmY > (bmpBuffH-bmH) ?
  446. jle near GFXLIB_clip.skip4%
  447. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  448. mov ecx, [esi+8] ; ecx = bmpBuffH
  449. sub ecx, ebx ; bmpBuffH-bmY
  450. mov [ebp+16], ecx ; numRows = bmpBuffH-bmY
  451.  
  452. .GFXLIB_clip.skip4%
  453.  
  454. ;REM IF bmY% < 0 AND (bmY% + bmH%) >= bmBuffH% THEN
  455. ;REM clip% = TRUE
  456. ;REM numrows% = bmBuffH%
  457. ;REM skiprows% -= bmW%*bmY%
  458. ;REM y`% = 0
  459. ;REM ENDIF
  460.  
  461. cmp ebx, 0 ; is bmY < 0 ?
  462. jge GFXLIB_clip.set_plotflag%
  463. mov ecx, [esp+44] ; ecx = bmH
  464. add ecx, ebx ; ecx = bmY+bmH
  465. cmp ecx, [esi+8] ; is (bmY+bmH) >= bmpBuffH ?
  466. jl GFXLIB_clip.set_plotflag%
  467. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  468. mov ecx, [esi+8] ; ecx = bmpBuffH
  469. mov [ebp+16], ecx ; numRows = bmpBuffH
  470. mov ecx, [esp+40]
  471. imul ecx, ebx ; bmW*bmY
  472. sub [ebp+24], ecx ; skipRows -= bmW*bmY
  473. mov [ebp+12], dword 0 ; startY = 0
  474.  
  475. .GFXLIB_clip.set_plotflag%
  476. mov [ebp+0], dword TRUE ; plot flag = TRUE
  477.  
  478. .GFXLIB_clip.exit%
  479. popad
  480. ret (6*4)
  481.  
  482. ]
  483. NEXT I%
  484. ENDPROC
  485.  
  486. DEF PROCFixWindowSize
  487. REM GWL_STYLE = -16
  488. REM WS_THICKFRAME = &40000
  489. REM WS_MAXIMIZEBOX = &10000
  490. REM SYS "GetWindowLong", @hwnd%, GWL_STYLE TO ws%
  491. REM SYS "SetWindowLong", @hwnd%, GWL_STYLE, ws% AND NOT WS_THICKFRAME \
  492. REM \ AND NOT WS_MAXIMIZEBOX
  493. LOCAL W%
  494. SYS "GetWindowLong", @hwnd%, -16 TO W%
  495. SYS "SetWindowLong", @hwnd%, -16, W% AND NOT &40000 AND NOT &10000
  496. ENDPROC
  497.  
  498. DEF FNget_data_string
  499. LOCAL S%
  500. DIM S% 32768
  501. $S%="6F0D000078002E003A022E0078002F0046012F00B1012F00D6012F0039022F007800300047013000B0013000D6013000380230007800310047013100B0013100"
  502. $S%+="D60131003702310078003200D3003200D4003200D5003200D6003200D7003200D8003200D9003200DA003200DB003200DC003200DD003200DE003200DF003200"
  503. $S%+="E0003200E1003200E2003200E3003200E4003200E5003200E6003200E7003200E8003200E9003200EA003200EB003200EC003200ED003200EE003200EF003200"
  504. $S%+="F0003200F1003200F2003200F3003200F4003200F5003200F6003200F7003200F8003200F9003200FA003200FB003200FC003200FD003200FE003200FF003200"
  505. $S%+="000132000101320002013200030132000401320005013200060132000701320008013200090132000A0132000B0132000C0132000D0132000E0132000F013200"
  506. $S%+="100132001101320012013200130132001401320015013200160132001701320018013200190132001A0132001B0132001C0132001D0132001E0132001F013200"
  507. $S%+="200132002101320022013200230132002401320025013200260132002701320028013200290132002A0132002B0132002C0132002D0132002E0132002F013200"
  508. $S%+="48013200AF013200D60132003602320078003300D300330049013300AE013300D60133003502330078003400D300340049013400AE013400D601340034023400"
  509. $S%+="78003500D30035004A013500AD013500D60135003302350078003600D30036004A013600AC013600D60136003202360078003700D30037004B013700AC013700"
  510. $S%+="D60137003102370078003800D30038004C013800AB013800D60138003002380078003900D30039004C013900AA013900D60139002F02390078003A00D3003A00"
  511. $S%+="4D013A00AA013A00D6013A002E023A0078003B00D3003B004E013B00A9013B00D6013B002D023B0078003C00D3003C004E013C00A8013C00D6013C002C023C00"
  512. $S%+="78003D00D3003D004F013D00A8013D00D6013D002B023D0078003E00D3003E0050013E00A7013E00D6013E002A023E0078003F00D3003F0050013F00A6013F00"
  513. $S%+="D6013F0029023F0078004000D300400051014000A6014000D60140002802400078004100D300410051014100A5014100D60141002702410078004200D3004200"
  514. $S%+="52014200A4014200D60142002602420078004300D300430053014300A4014300D60143002502430078004400D300440053014400A3014400D601440024024400"
  515. $S%+="78004500D300450054014500A2014500D60145002302450078004600D300460055014600A2014600D60146002202460078004700D300470055014700A1014700"
  516. $S%+="D60147002102470078004800D300480056014800A0014800D60148002002480078004900D300490056014900A0014900D60149001F02490078004A00D3004A00"
  517. $S%+="57014A009F014A00D6014A001E024A0078004B00D3004B0058014B009E014B00D6014B001C024B001D024B0078004C00D3004C0058014C0059014C005A014C00"
  518. $S%+="5B014C005C014C005D014C005E014C005F014C0060014C0061014C0062014C0063014C0064014C0065014C0066014C0067014C0068014C0069014C006A014C00"
  519. $S%+="6B014C006C014C006D014C006E014C006F014C0070014C0071014C0072014C0073014C0074014C0075014C0076014C0077014C0078014C0079014C007A014C00"
  520. $S%+="7B014C007C014C007D014C007E014C007F014C0080014C0081014C0082014C0083014C0084014C0085014C0086014C0087014C0088014C0089014C008A014C00"
  521. $S%+="8B014C008C014C008D014C008E014C008F014C0090014C0091014C0092014C0093014C0094014C0095014C0096014C0097014C0098014C0099014C009A014C00"
  522. $S%+="9B014C009C014C009D014C009E014C00D6014C001B024C0078004D00D3004D0059014D009D014D00D6014D001A024D0078004E00D3004E005A014E009C014E00"
  523. $S%+="D6014E0018024E0019024E0078004F00D3004F005A014F009C014F00D6014F0017024F0078005000D30050005B0150009B015000D60150001602500078005100"
  524. $S%+="D30051005C0151009A015100D6015100140251001502510078005200D30052005C0152009A015200D6015200130252007800530079005300D30053005D015300"
  525. $S%+="99015300D601530012025300770054007A005400D30054005D01540098015400D60154001002540011025400760055007B005500D30055005E01550098015500"
  526. $S%+="D60155000E0255000F025500750056007C005600D30056005F01560097015600D60156000C0256000D025600740057007D005700D30057005F01570096015700"
  527. $S%+="D60157000A0257000B025700730058007E005800D30058006001580096015800D601580009025800720059007F005900D30059006101590095015900D6015900"
  528. $S%+="D7015900D8015900D9015900DA015900DB015900DC015900DD015900DE015900DF015900E0015900E1015900E2015900E3015900E4015900E5015900E6015900"
  529. $S%+="E7015900E8015900E9015900EA015900EB015900EC015900ED015900EE015900EF015900F0015900F1015900F2015900F3015900F4015900F5015900F6015900"
  530. $S%+="F7015900F8015900F9015900FA015900FB015900FC015900FD015900FE015900FF01590000025900010259000202590003025900040259000502590006025900"
  531. $S%+="0702590008025900090259000A02590071005A0080005A00D3005A00D4005A00D5005A00D6005A00D7005A00D8005A00D9005A00DA005A00DB005A00DC005A00"
  532. $S%+="DD005A00DE005A00DF005A00E0005A00E1005A00E2005A00E3005A00E4005A00E5005A00E6005A00E7005A00E8005A00E9005A00EA005A00EB005A00EC005A00"
  533. $S%+="ED005A00EE005A00EF005A00F0005A00F1005A00F2005A00F3005A00F4005A00F5005A00F6005A00F7005A00F8005A00F9005A00FA005A00FB005A00FC005A00"
  534. $S%+="FD005A00FE005A00FF005A0000015A0001015A0002015A0003015A0004015A0005015A0006015A0007015A0008015A0009015A000A015A000B015A000C015A00"
  535. $S%+="0D015A000E015A000F015A0010015A0011015A0012015A0013015A0014015A0015015A0016015A0017015A0018015A0019015A001A015A001B015A001C015A00"
  536. $S%+="1D015A001E015A001F015A0020015A0021015A0022015A0023015A0024015A0025015A0026015A0061015A0094015A00D6015A000B025A000C025A000D025A00"
  537. $S%+="0E025A000F025A0010025A0011025A0012025A0013025A0014025A0015025A0016025A0070005B0081005B00D3005B0062015B0093015B00D6015B0017025B00"
  538. $S%+="18025B0019025B001A025B001B025B001C025B001D025B006F005C0082005C00D3005C0063015C0093015C00D6015C001E025C001F025C006E005D0083005D00"
  539. $S%+="D3005D0063015D0092015D00D6015D0020025D0021025D0022025D006D005E0084005E00D3005E0064015E0091015E00D6015E0023025E0024025E006C005F00"
  540. $S%+="85005F0086005F00D3005F0064015F0091015F00D6015F0025025F0026025F0027025F006B00600087006000D30060006501600090016000D601600028026000"
  541. $S%+="290260006A00610088006100D3006100660161008F016100D60161002A0261002B0261006900620089006200D3006200660162008F016200D60162002C026200"
  542. $S%+="680063008A006300D3006300670163008E016300D60163002D026300670064008B006400D3006400680164008D016400D60164002E026400660065008C006500"
  543. $S%+="D3006500680165008D016500D60165002F026500650066008D006600D3006600690166008C016600D60166002F026600640067008E006700D30067006A016700"
  544. $S%+="8B016700D601670030026700630068008F006800D30068006A0168008B016800D6016800310268006200690090006900D30069006B0169008A016900D6016900"
  545. $S%+="3202690061006A0091006A00D3006A006B016A0089016A00D6016A0032026A005F006B0060006B0092006B00D3006B006C016B0089016B00D6016B0032026B00"
  546. $S%+="5E006C0093006C00D3006C006D016C0088016C00D6016C0031026C005D006D0094006D00D3006D006D016D0087016D00D6016D0031026D005C006E0095006E00"
  547. $S%+="D3006E006E016E0087016E00D6016E0031026E005B006F0096006F00D3006F006F016F0086016F00D6016F0031026F005A00700097007000D30070006F017000"
  548. $S%+="85017000D6017000310270005900710098007100D30071007001710085017100D6017100300271005800720099007200D30072007001720084017200D6017200"
  549. $S%+="30027200570073009A007300D30073007101730083017300D601730030027300560074009B007400D30074007201740083017400D60174002F02740055007500"
  550. $S%+="9C007500D30075007201750082017500D60175002E027500540076009D007600D30076007301760081017600D60176002D027600530077009E007700D3007700"
  551. $S%+="7401770081017700D60177002C027700520078009F007800A0007800D30078007401780080017800D60178002B02780051007900A1007900D300790075017900"
  552. $S%+="7F017900D60179002A02790050007A00A2007A00D3007A0076017A007F017A00D6017A0029027A004F007B00A3007B00D3007B0076017B007E017B00D6017B00"
  553. $S%+="27027B0028027B004E007C00A4007C00D3007C0077017C007D017C00D6017C0025027C0026027C004D007D00A5007D00D3007D0077017D007D017D00D6017D00"
  554. $S%+="23027D0024027D004C007E00A6007E00D3007E0078017E007C017E00D6017E0021027E0022027E004B007F00A7007F00D3007F0079017F007B017F00D6017F00"
  555. $S%+="1B027F001C027F001D027F001E027F001F027F0020027F004A008000A8008000D3008000D4008000D5008000D6008000D7008000D8008000D9008000DA008000"
  556. $S%+="DB008000DC008000DD008000DE008000DF008000E0008000E1008000E2008000E3008000E4008000E5008000E6008000E7008000E8008000E9008000EA008000"
  557. $S%+="EB008000EC008000ED008000EE008000EF008000F0008000F1008000F2008000F3008000F4008000F5008000F6008000F7008000F8008000F9008000FA008000"
  558. $S%+="FB008000FC008000FD008000FE008000FF008000000180000101800002018000030180000401800005018000060180000701800008018000090180000A018000"
  559. $S%+="0B0180000C0180000D0180000E0180000F018000100180001101800012018000130180001401800015018000160180001701800018018000190180001A018000"
  560. $S%+="1B0180001C0180001D0180001E0180001F018000200180002101800022018000230180002401800025018000260180002701800028018000290180002A018000"
  561. $S%+="2B0180002C0180002D018000790180007B018000D6018000D7018000D8018000D9018000DA018000DB018000DC018000DD018000DE018000DF018000E0018000"
  562. $S%+="E1018000E2018000E3018000E4018000E5018000E6018000E7018000E8018000E9018000EA018000EB018000EC018000ED018000EE018000EF018000F0018000"
  563. $S%+="F1018000F2018000F3018000F4018000F5018000F6018000F7018000F8018000F9018000FA018000FB018000FC018000FD018000FE018000FF01800000028000"
  564. $S%+="0102800002028000030280000402800005028000060280000702800008028000090280000A0280000B0280000C0280000D0280000E0280000F02800010028000"
  565. $S%+="1102800012028000130280001402800015028000160280001702800018028000190280001A02800049008100A90081007A01810048008200AA00820047008300"
  566. $S%+="AB00830046008400AC0084005200BA00BA00BA005200BB00B900BB00BA00BB005200BC00B700BC00B800BC00BA00BC00F701BC005200BD00B600BD00BA00BD00"
  567. $S%+="F601BD00F701BD005200BE00B500BE00BA00BE009701BE00F601BE00F801BE005200BF00B400BF00BA00BF009701BF009801BF00F501BF00F801BF005200C000"
  568. $S%+="B200C000B300C000BA00C000EE00C000EF00C000F000C000F100C000F200C000F300C000F400C000F500C000F600C000F700C000F800C000F900C000FA00C000"
  569. $S%+="FB00C000FC00C000FD00C000FE00C000FF00C0000001C0000101C0000201C0000301C0000401C0000501C0000601C0000701C0000801C0000901C0000A01C000"
  570. $S%+="0B01C0000C01C0000D01C0000E01C0000F01C0001001C0001101C0001201C0001301C0001401C0001501C0001601C0001701C0001801C0001901C0001A01C000"
  571. $S%+="1B01C0001C01C0001D01C0001E01C0001F01C0002001C0002101C0002201C0002301C0002401C0002501C0002601C0002701C0002801C0002901C0002A01C000"
  572. $S%+="2B01C0002C01C0002D01C0002E01C0002F01C0003001C0003101C0003201C0003301C0003401C0003501C0003601C0003701C0003801C0003901C0003A01C000"
  573. $S%+="3B01C0003C01C0003D01C0003E01C0003F01C0004001C0004101C0004201C0004301C0004401C0004501C0004601C0004701C0004801C0004901C0004A01C000"
  574. $S%+="4B01C0004C01C0004D01C0004E01C0004F01C0005001C0005101C0005201C0005301C0005401C0005501C0009601C0009801C000F501C000F901C0005200C100"
  575. $S%+="B100C100BA00C100EE00C1009601C1009901C100F401C100F901C1005200C200B000C200BA00C200EE00C2009501C2009901C200F401C200FA01C2005200C300"
  576. $S%+="AF00C300BA00C300EE00C3009501C3009A01C300F301C300FA01C3005200C400AD00C400AE00C400BA00C400EE00C4009401C4009A01C400F301C400FB01C400"
  577. $S%+="5200C500AC00C500BA00C500EE00C5009401C5009B01C500F201C500FB01C5005200C600AB00C600BA00C600EE00C6009301C6009C01C600F101C600FC01C600"
  578. $S%+="5200C700AA00C700BA00C700EE00C7009301C7009C01C700F101C700FC01C7005200C800A900C800BA00C800EE00C8009201C8009D01C800F001C800FC01C800"
  579. $S%+="5200C900A700C900A800C900BA00C900EE00C9009201C9009D01C900F001C900FD01C9005200CA00A600CA00BA00CA00EE00CA009201CA009E01CA00EF01CA00"
  580. $S%+="FD01CA005200CB00A500CB00BA00CB00EE00CB009101CB009E01CB00EF01CB00FE01CB005200CC00A400CC00BA00CC00EE00CC009101CC009F01CC00EE01CC00"
  581. $S%+="FE01CC005200CD00A200CD00A300CD00BA00CD00EE00CD009001CD00A001CD00EE01CD00FF01CD005200CE00A100CE00BA00CE00EE00CE009001CE00A001CE00"
  582. $S%+="ED01CE00FF01CE005200CF00A000CF00BA00CF00EE00CF008F01CF00A101CF00EC01CF000002CF005200D0009F00D000BA00D000EE00D0008F01D000A101D000"
  583. $S%+="EC01D0000002D0005200D1009D00D1009E00D100B900D100EE00D1008E01D100A201D100EB01D1000102D1005200D2009C00D200B900D200EE00D2008E01D200"
  584. $S%+="A201D200EB01D2000102D2005200D3009B00D300B900D300EE00D3008D01D300A301D300EA01D3000102D3005200D4009A00D400B900D400EE00D4008D01D400"
  585. $S%+="A401D400EA01D4000202D4005200D5009800D5009900D500B900D500EE00D5008D01D500A401D500E901D5000202D5005200D6009700D600B900D600EE00D600"
  586. $S%+="8C01D600A501D600E801D6000302D6005200D7009600D700B900D700EE00D7008C01D700A501D700E801D7000302D7005200D8009500D800B900D800EE00D800"
  587. $S%+="8B01D800A601D800E701D8000402D8005200D9009300D9009400D900B900D900EE00D9008B01D900A601D900E701D9000402D9005200DA009200DA00B900DA00"
  588. $S%+="EE00DA008A01DA00A701DA00E601DA000502DA005200DB009100DB00B900DB00EE00DB008A01DB00A801DB00E601DB000502DB005200DC009000DC00B900DC00"
  589. $S%+="EE00DC008901DC00A801DC00E501DC000602DC005200DD008F00DD00B900DD00EE00DD008901DD00A901DD00E501DD000602DD005200DE008D00DE008E00DE00"
  590. $S%+="B900DE00EE00DE008801DE00A901DE00E401DE000602DE005200DF008C00DF00B900DF00EE00DF008801DF00AA01DF00E301DF000702DF005200E0008B00E000"
  591. $S%+="B900E000EE00E0008801E000AA01E000E301E0000702E0005200E1008A00E100B900E100EE00E1008701E100AB01E100E201E1000802E1005200E2008800E200"
  592. $S%+="8900E200B900E200EE00E2008701E200AC01E200E201E2000802E2005200E3008700E300B900E300EE00E3008601E300AC01E300E101E3000902E3005200E400"
  593. $S%+="8600E400B900E400EE00E4008601E400AD01E400E101E4000902E4005200E5008500E500B900E500EE00E5008501E500AD01E500E001E5000A02E5005200E600"
  594. $S%+="8300E6008400E600B900E600EE00E6008501E600AE01E600E001E6000A02E6005200E7008200E700B900E700EE00E7008401E700AE01E700DF01E7000B02E700"
  595. $S%+="5200E8008100E800B900E800EE00E8008401E800AF01E800DE01E8000B02E8005200E9008000E900B900E900EE00E9008401E900B001E900DE01E9000B02E900"
  596. $S%+="5200EA007E00EA007F00EA00B900EA00EE00EA00EF00EA00F000EA00F100EA00F200EA00F300EA00F400EA00F500EA00F600EA00F700EA00F800EA00F900EA00"
  597. $S%+="FA00EA00FB00EA00FC00EA00FD00EA00FE00EA00FF00EA000001EA000101EA000201EA000301EA000401EA000501EA000601EA000701EA000801EA000901EA00"
  598. $S%+="0A01EA000B01EA000C01EA000D01EA000E01EA000F01EA001001EA001101EA001201EA001301EA001401EA001501EA001601EA001701EA001801EA001901EA00"
  599. $S%+="1A01EA001B01EA001C01EA001D01EA001E01EA001F01EA002001EA002101EA002201EA002301EA002401EA002501EA002601EA002701EA002801EA002901EA00"
  600. $S%+="2A01EA002B01EA002C01EA002D01EA002E01EA002F01EA003001EA003101EA003201EA003301EA003401EA003501EA003601EA003701EA003801EA003901EA00"
  601. $S%+="3A01EA003B01EA003C01EA003D01EA003E01EA003F01EA004001EA004101EA004201EA004301EA004401EA004501EA004601EA004701EA004801EA004901EA00"
  602. $S%+="4A01EA004B01EA004C01EA008301EA00B001EA00DD01EA000C02EA005200EB007D00EB00B900EB00EE00EB008301EB00B101EB00DD01EB000C02EB005200EC00"
  603. $S%+="7C00EC00B900EC00EE00EC008201EC00B101EC00DC01EC000D02EC005200ED007B00ED00B900ED00EE00ED008201ED00B201ED00DC01ED000D02ED005200EE00"
  604. $S%+="7900EE007A00EE00B900EE00EE00EE008101EE00B201EE00DB01EE000E02EE005200EF007800EF00B900EF00EE00EF008101EF00B301EF00DB01EF000E02EF00"
  605. $S%+="5200F0007700F000B900F000EE00F0008001F000B401F000DA01F0000F02F0005200F1007600F100B900F100EE00F1008001F100B401F100D901F1000F02F100"
  606. $S%+="5200F2007500F200B900F200EE00F2007F01F200B501F200D901F2001002F2005200F3007300F3007400F300B900F300EE00F3007F01F300B501F300D801F300"
  607. $S%+="1002F3005200F4007200F400B900F400EE00F4007F01F400B601F400D801F4001002F4005200F5007100F500B900F500EE00F5007E01F500B601F500D701F500"
  608. $S%+="1102F5005200F6007000F600B900F600EE00F6007E01F600B701F600D701F6001102F6005200F7006E00F7006F00F700B900F700EE00F7007D01F700B801F700"
  609. $S%+="D601F7001202F7005200F8006D00F800B900F800EE00F8007D01F800B801F800D601F8001202F8005200F9006C00F900B900F900EE00F9007C01F900B901F900"
  610. $S%+="D501F9001302F9005200FA006B00FA00B900FA00EE00FA007C01FA00B901FA00D401FA001302FA005200FB006900FB006A00FB00B900FB00EE00FB007B01FB00"
  611. $S%+="BA01FB00D401FB001402FB005200FC006800FC00B900FC00EE00FC007B01FC00BA01FC00D301FC001402FC005200FD006700FD00B800FD00EE00FD007A01FD00"
  612. $S%+="BB01FD00D301FD001502FD005200FE006600FE00B800FE00EE00FE007A01FE00BC01FE00D201FE001502FE005200FF006400FF006500FF00B800FF00EE00FF00"
  613. $S%+="7A01FF00BC01FF00D201FF001502FF005200000163000001B8000001EE00000179010001BD010001D1010001160200015200010162000101B8000101EE000101"
  614. $S%+="79010101BD010101D0010101160201015200020161000201B8000201EE00020178010201BE010201D001020117020201520003015F00030160000301B8000301"
  615. $S%+="EE00030178010301BE010301CF01030117020301520004015E000401B8000401EE00040177010401BF010401CF01040118020401520005015D000501B8000501"
  616. $S%+="EE00050177010501C0010501CE01050118020501520006015C000601B8000601EE00060176010601C0010601CE01060119020601520007015B000701B8000701"
  617. $S%+="EE00070176010701C1010701CD0107011902070152000801590008015A000801B8000801EE00080175010801C1010801CD0108011A0208015200090158000901"
  618. $S%+="B8000901EE00090175010901C2010901CC0109011A02090152000A0157000A01B8000A01EE000A0175010A01C2010A01CB010A011A020A0152000B0156000B01"
  619. $S%+="B8000B01EE000B0174010B01C3010B01CB010B011B020B0152000C0154000C0155000C01B8000C01EE000C0174010C01C4010C01CA010C011B020C0152000D01"
  620. $S%+="53000D01B8000D01EE000D0173010D01C4010D01CA010D011C020D0152000E01B8000E01EE000E0173010E01C5010E01C9010E011C020E01B8000F01EE000F01"
  621. $S%+="72010F01C5010F01C9010F011D020F01B8001001EE001001EF001001F0001001F1001001F2001001F3001001F4001001F5001001F6001001F7001001F8001001"
  622. $S%+="F9001001FA001001FB001001FC001001FD001001FE001001FF001001000110010101100102011001030110010401100105011001060110010701100108011001"
  623. $S%+="090110010A0110010B0110010C0110010D0110010E0110010F011001100110011101100112011001130110011401100115011001160110011701100118011001"
  624. $S%+="190110011A0110011B0110011C0110011D0110011E0110011F011001200110012101100122011001230110012401100125011001260110012701100128011001"
  625. $S%+="290110012A0110012B0110012C0110012D0110012E0110012F011001300110013101100132011001330110013401100135011001360110013701100138011001"
  626. $S%+="390110013A0110013B0110013C0110013D0110013E0110013F011001400110014101100142011001430110014401100145011001460110014701100148011001"
  627. $S%+="490110014A0110014B0110014C0110014D0110014E0110014F01100172011001C6011001C80110011D021001B800110171011101C6011101C80111011E021101"
  628. $S%+="B800120171011201C70112011E021201700113011F021301700114011F021401240045017700450198004501FA004501190145018F0145012902450124004601"
  629. $S%+="7700460198004601FA004601190146018F01460129024601240047017700470199004701F9004701190147018F01470129024701240048017700480199004801"
  630. $S%+="F9004801190148018F0148012902480124004901770049019A004901F8004901190149018F0149012902490124004A0177004A019A004A01F8004A0119014A01"
  631. $S%+="8F014A0129024A0124004B0177004B019A004B01F7004B0119014B018F014B0129024B0124004C0177004C019B004C01F7004C0119014C018F014C0129024C01"
  632. $S%+="24004D0177004D019B004D01F6004D0119014D018F014D0129024D0124004E0177004E019C004E01F6004E0119014E018F014E0129024E0124004F0177004F01"
  633. $S%+="9C004F01F6004F0119014F018F014F0129024F0124005001770050019C005001F5005001190150018F0150012902500124005101770051019D005101F5005101"
  634. $S%+="190151018F0151012902510124005201770052019D005201F4005201190152018F0152012902520124005301770053019E005301F4005301190153018F015301"
  635. $S%+="2902530124005401770054019E005401F3005401190154018F0154012902540124005501770055019F005501F3005501190155018F0155012902550124005601"
  636. $S%+="770056019F005601F2005601190156018F0156012902560124005701770057019F005701F2005701190157018F015701290257012400580177005801A0005801"
  637. $S%+="F2005801190158018F015801290258012400590177005901A0005901F1005901190159018F0159012902590124005A0177005A01A1005A01F1005A0119015A01"
  638. $S%+="8F015A0129025A0124005B0177005B01A1005B01F0005B0119015B018F015B0129025B0124005C0177005C01A1005C01F0005C0119015C018F015C0129025C01"
  639. $S%+="24005D0177005D01A2005D01EF005D0119015D018F015D0129025D0124005E0177005E01A2005E01EF005E0119015E018F015E0129025E0124005F0177005F01"
  640. $S%+="A3005F01EE005F0119015F018F015F0129025F012400600177006001A3006001EE006001190160018F016001290260012400610177006101A3006101EE006101"
  641. $S%+="190161018F016101290261012400620177006201A4006201ED006201190162018F016201290262012400630177006301A4006301ED006301190163018F016301"
  642. $S%+="290263012400640177006401A5006401EC006401190164018F016401290264012400650177006501A5006501EC006501190165018F0165012902650124006601"
  643. $S%+="77006601A5006601EB006601190166018F016601290266012400670177006701A6006701EB006701190167018F016701290267012400680177006801A6006801"
  644. $S%+="EB006801190168018F016801290268012400690177006901A7006901EA006901190169018F0169012902690124006A0177006A01A7006A01EA006A0119016A01"
  645. $S%+="8F016A0129026A0124006B0177006B01A8006B01E9006B0119016B018F016B0129026B0124006C0177006C01A8006C01E9006C0119016C018F016C0129026C01"
  646. $S%+="24006D0177006D01A8006D01E8006D0119016D018F016D0129026D0124006E0177006E01A9006E01E8006E0119016E018F016E0129026E0124006F0177006F01"
  647. $S%+="A9006F01AA006F01AB006F01AC006F01AD006F01AE006F01AF006F01B0006F01B1006F01B2006F01B3006F01B4006F01B5006F01B6006F01B7006F01B8006F01"
  648. $S%+="B9006F01BA006F01BB006F01BC006F01BD006F01BE006F01BF006F01C0006F01C1006F01C2006F01C3006F01C4006F01C5006F01C6006F01C7006F01C8006F01"
  649. $S%+="C9006F01CA006F01CB006F01CC006F01CD006F01CE006F01CF006F01D0006F01D1006F01D2006F01D3006F01D4006F01D5006F01D6006F01D7006F01D8006F01"
  650. $S%+="D9006F01DA006F01DB006F01DC006F01DD006F01DE006F01DF006F01E0006F01E1006F01E2006F01E3006F01E4006F01E5006F01E6006F01E7006F0119016F01"
  651. $S%+="8F016F0129026F012400700177007001AA007001E7007001190170018F017001290270012400710177007101AA007101E7007101190171018F01710129027101"
  652. $S%+="2400720177007201AA007201E6007201190172018F017201290272012400730177007301AB007301E6007301190173018F017301290273012400740177007401"
  653. $S%+="AB007401E5007401190174018F017401290274012400750177007501AC007501E5007501190175018F017501290275012400760177007601AC007601E4007601"
  654. $S%+="190176018F017601290276012400770177007701AC007701E4007701190177018F017701290277012400780177007801AD007801E3007801190178018F017801"
  655. $S%+="290278012400790177007901AD007901E3007901190179018F0179012902790124007A0177007A01AE007A01E3007A0119017A018F017A0129027A0124007B01"
  656. $S%+="77007B01AE007B01E2007B0119017B018F017B0129027B0124007C0177007C01AE007C01E2007C0119017C018F017C0129027C012A027C0124007D0177007D01"
  657. $S%+="AF007D01E1007D0119017D018F017D0129027D0124007E0177007E01AF007E01E1007E0119017E011A017E011B017E011C017E011D017E011E017E011F017E01"
  658. $S%+="20017E0121017E0122017E0123017E0124017E0125017E0126017E0127017E0128017E0129017E012A017E012B017E012C017E012D017E012E017E012F017E01"
  659. $S%+="30017E0131017E0132017E0133017E0134017E0135017E0136017E0137017E0138017E0139017E013A017E013B017E013C017E013D017E013E017E013F017E01"
  660. $S%+="40017E0141017E0142017E0143017E0144017E0145017E0146017E0147017E0148017E0149017E014A017E014B017E014C017E014D017E014E017E014F017E01"
  661. $S%+="8F017E0190017E0191017E0192017E0193017E0194017E0195017E0196017E0197017E0198017E0199017E019A017E019B017E019C017E019D017E019E017E01"
  662. $S%+="9F017E01A0017E01A1017E01A2017E01A3017E01A4017E01A5017E01A6017E01A7017E01A8017E01A9017E01AA017E01AB017E01AC017E01AD017E01AE017E01"
  663. $S%+="AF017E01B0017E01B1017E01B2017E01B3017E01B4017E01B5017E01B6017E01B7017E01B8017E01B9017E01BA017E01BB017E01BC017E01BD017E01BE017E01"
  664. $S%+="BF017E01C0017E01C1017E01C2017E01C3017E01C4017E01C5017E0129027E012A027E0124007F0177007F01B0007F01E0007F0119017F0150017F0151017F01"
  665. $S%+="52017F0153017F0154017F0155017F018F017F01C6017F01C7017F01C8017F01C9017F01CA017F01CB017F0128027F012B027F012400800177008001B0008001"
  666. $S%+="E0008001190180015601800157018001580180018F018001CC018001CD018001CE018001270280012B0280012400810177008101B1008101DF00810119018101"
  667. $S%+="590181015A0181018F018101CF018101D0018101260281012C0281012400820177008201B1008201DF008201190182015B0182018F018201D101820126028201"
  668. $S%+="2D0282012400830177008301B1008301DF008301190183015C0183015D0183018F018301D2018301D3018301250283012E028301240084012500840126008401"
  669. $S%+="2700840128008401290084012A0084012B0084012C0084012D0084012E0084012F00840130008401310084013200840133008401340084013500840136008401"
  670. $S%+="3700840138008401390084013A0084013B0084013C0084013D0084013E0084013F00840140008401410084014200840143008401440084014500840146008401"
  671. $S%+="4700840148008401490084014A0084014B0084014C0084014D0084014E0084014F00840150008401510084015200840153008401540084015500840156008401"
  672. $S%+="5700840158008401590084015A0084015B0084015C0084015D0084015E0084015F00840160008401610084016200840163008401640084016500840166008401"
  673. $S%+="6700840168008401690084016A0084016B0084016C0084016D0084016E0084016F00840170008401710084017200840173008401740084017500840176008401"
  674. $S%+="77008401B2008401DE008401190184015E0184018F018401D4018401240284012E0284012400850177008501B2008501DE008501190185015F0185018F018501"
  675. $S%+="D5018501240285012F0285012400860177008601B3008601DD0086011901860160018601610186018F018601D6018601D7018601230286013002860124008701"
  676. $S%+="77008701B3008701DD00870119018701620187018F018701D801870122028701310287012400880177008801B3008801DC00880119018801630188018F018801"
  677. $S%+="D901880122028801310288012400890177008901B4008901DC00890119018901630189018F018901D9018901210289013202890124008A0177008A01B4008A01"
  678. $S%+="DB008A0119018A0164018A018F018A01DA018A0120028A0133028A0124008B0177008B01B5008B01DB008B0119018B0164018B018F018B01DA018B011F028B01"
  679. $S%+="34028B0124008C0177008C01B5008C01DB008C0119018C0165018C018F018C01DB018C011F028C0134028C0124008D0177008D01B5008D01DA008D0119018D01"
  680. $S%+="65018D018F018D01DB018D011E028D0135028D0124008E0177008E01B6008E01DA008E0119018E0166018E018F018E01DC018E011D028E0136028E0124008F01"
  681. $S%+="77008F01B6008F01D9008F0119018F0166018F018F018F01DC018F011D028F0137028F012400900177009001B7009001D900900119019001670190018F019001"
  682. $S%+="DD0190011C029001370290012400910177009101B7009101D800910119019101670191018F019101DD0191011B029101380291012400920177009201B7009201"
  683. $S%+="D800920119019201680192018F019201DE0192011B029201390292012400930177009301B8009301D700930119019301680193018F019301DE0193011A029301"
  684. $S%+="3A0293012400940177009401B8009401D700940119019401690194018F019401DF019401190294013A0294012400950177009501B9009501D700950119019501"
  685. $S%+="690195018F019501DF019501180295013B0295012400960177009601B9009601D600960119019601690196018F019601DF019601180296013C02960124009701"
  686. $S%+="77009701BA009701D600970119019701690197018F019701DF019701170297013D0297012400980177009801BA009801D500980119019801690198018F019801"
  687. $S%+="DF019801160298013D0298012400990177009901BA009901D500990119019901690199018F019901DF019901160299013E02990124009A0177009A01BB009A01"
  688. $S%+="D4009A0119019A0169019A018F019A01DF019A0115029A013F029A0124009B0177009B01BB009B01D4009B0119019B0169019B018F019B01DF019B0114029B01"
  689. $S%+="40029B0124009C0177009C01BC009C01D4009C0119019C0169019C018F019C01DF019C0114029C0140029C0124009D0177009D01BC009D01D3009D0119019D01"
  690. $S%+="69019D018F019D01DF019D0113029D0141029D0124009E0177009E01BC009E01D3009E0119019E0169019E018F019E01DF019E0112029E0142029E0124009F01"
  691. $S%+="77009F01BD009F01D2009F0119019F0169019F018F019F01DF019F0111029F0143029F012400A0017700A001BD00A001D200A0011901A0016901A0018F01A001"
  692. $S%+="DF01A0011102A0014302A0012400A1017700A101BE00A101D100A1011901A1016901A1018F01A101DF01A1011002A1014402A1012400A2017700A201BE00A201"
  693. $S%+="D100A2011901A2016901A2018F01A201DF01A2010F02A2014502A2012400A3017700A301BE00A301D000A3011901A3016901A3018F01A301DF01A3010F02A301"
  694. $S%+="4602A3012400A4017700A401BF00A401D000A4011901A4016801A4018F01A401DE01A4010E02A4014602A4012400A5017700A501BF00A501D000A5011901A501"
  695. $S%+="6801A5018F01A501DE01A5010D02A5014702A5012400A6017700A601C000A601CF00A6011901A6016701A6018F01A601DD01A6010C02A6014802A6012400A701"
  696. $S%+="7700A701C000A701CF00A7011901A7016701A7018F01A701DD01A7010C02A7014902A7012400A8017700A801C000A801CE00A8011901A8016601A8018F01A801"
  697. $S%+="DC01A8010B02A8014902A8012400A9017700A901C100A901CE00A9011901A9016601A9018F01A901DC01A9010A02A9014A02A9012400AA017700AA01C100AA01"
  698. $S%+="CD00AA011901AA016501AA018F01AA01DB01AA010A02AA014B02AA012400AB017700AB01C200AB01CD00AB011901AB016501AB018F01AB01DB01AB010902AB01"
  699. $S%+="4C02AB012400AC017700AC01C200AC01CC00AC011901AC016401AC018F01AC01DA01AC010802AC014C02AC012400AD017700AD01C300AD01CC00AD011901AD01"
  700. $S%+="6401AD018F01AD01DA01AD010802AD014D02AD012400AE017700AE01C300AE01CC00AE011901AE016301AE018F01AE01D901AE010702AE014E02AE012400AF01"
  701. $S%+="7700AF01C300AF01CB00AF011901AF016301AF018F01AF01D901AF010602AF014F02AF012400B0017700B001C400B001CB00B0011901B0016101B0016201B001"
  702. $S%+="8F01B001D701B001D801B0010502B0014F02B0012400B1017700B101C400B101CA00B1011901B1015E01B1015F01B1016001B1018F01B101D401B101D501B101"
  703. $S%+="D601B1010502B1015002B1012400B2017700B201C500B201CA00B2011901B2015B01B2015C01B2015D01B2018F01B201D101B201D201B201D301B2010402B201"
  704. $S%+="5102B2012400B3017700B301C500B301C900B3011901B3015701B3015801B3015901B3015A01B3018F01B301CD01B301CE01B301CF01B301D001B3010302B301"
  705. $S%+="5202B3012400B4017700B401C500B401C900B4011901B4015401B4015501B4015601B4018F01B401CA01B401CB01B401CC01B4010302B4015202B4012400B501"
  706. $S%+="7700B501C600B501C800B5011901B5015101B5015201B5015301B5018F01B501C701B501C801B501C901B5010202B5015302B5012400B6017700B601C600B601"
  707. $S%+="C800B6011A01B6011B01B6011C01B6011D01B6011E01B6011F01B6012001B6012101B6012201B6012301B6012401B6012501B6012601B6012701B6012801B601"
  708. $S%+="2901B6012A01B6012B01B6012C01B6012D01B6012E01B6012F01B6013001B6013101B6013201B6013301B6013401B6013501B6013601B6013701B6013801B601"
  709. $S%+="3901B6013A01B6013B01B6013C01B6013D01B6013E01B6013F01B6014001B6014101B6014201B6014301B6014401B6014501B6014601B6014701B6014801B601"
  710. $S%+="4901B6014A01B6014B01B6014C01B6014D01B6014E01B6014F01B6015001B6019001B6019101B6019201B6019301B6019401B6019501B6019601B6019701B601"
  711. $S%+="9801B6019901B6019A01B6019B01B6019C01B6019D01B6019E01B6019F01B601A001B601A101B601A201B601A301B601A401B601A501B601A601B601A701B601"
  712. $S%+="A801B601A901B601AA01B601AB01B601AC01B601AD01B601AE01B601AF01B601B001B601B101B601B201B601B301B601B401B601B501B601B601B601B701B601"
  713. $S%+="B801B601B901B601BA01B601BB01B601BC01B601BD01B601BE01B601BF01B601C001B601C101B601C201B601C301B601C401B601C501B601C601B6010102B601"
  714. $S%+="5402B6012400B7017700B701C700B7010102B7015502B7012400B8017700B801C700B8010002B8015502B8012400B9017700B901FF01B9015602B9012400BA01"
  715. $S%+="7700BA01FE01BA015702BA012400BB017700BB01FE01BB015802BB012400BC017700BC01FD01BC015802BC012400BD017700BD015902BD012400BE017700BE01"
  716. $S%+=""
  717. REM Byte count: 13760
  718. = S%
  719.  
  720. DATA &60000
  721. DATA &E0000
  722. DATA &170000
  723. DATA &210000
  724. DATA &2C0000
  725. DATA &380000
  726. DATA &440000
  727. DATA &510000
  728. DATA &5F0000
  729. DATA &6D0000
  730. DATA &7B0000
  731. DATA &880000
  732. DATA &940000
  733. DATA &A00000
  734. DATA &AD0000
  735. DATA &B80000
  736. DATA &C40000
  737. DATA &CF0000
  738. DATA &D90000
  739. DATA &E20000
  740. DATA &EA0000
  741. DATA &F20000
  742. DATA &F90000
  743. DATA &FF0000
  744. DATA &FF0500
  745. DATA &FF0A00
  746. DATA &FF1100
  747. DATA &FF1800
  748. DATA &FF1F00
  749. DATA &FF2800
  750. DATA &FF3100
  751. DATA &FF3A00
  752. DATA &FF4400
  753. DATA &FF4E00
  754. DATA &FF5900
  755. DATA &FF6300
  756. DATA &FF6E00
  757. DATA &FF7900
  758. DATA &FF8200
  759. DATA &FF8800
  760. DATA &FF8E00
  761. DATA &FF9400
  762. DATA &FF9900
  763. DATA &FF9F00
  764. DATA &FFA500
  765. DATA &FFAA00
  766. DATA &FFB000
  767. DATA &FFB600
  768. DATA &FFBB00
  769. DATA &FFC000
  770. DATA &FFC600
  771. DATA &FFCB00
  772. DATA &FFD000
  773. DATA &FFD400
  774. DATA &FFD900
  775. DATA &FFDE00
  776. DATA &FFE200
  777. DATA &FFE600
  778. DATA &FFEA00
  779. DATA &FFEE00
  780. DATA &FFF200
  781. DATA &FFF500
  782. DATA &FFF800
  783. DATA &FFFB00
  784. DATA &FFFE00
  785. DATA &FFFF02
  786. DATA &FFFF05
  787. DATA &FFFF0A
  788. DATA &FFFF0E
  789. DATA &FFFF13
  790. DATA &FFFF19
  791. DATA &FFFF1F
  792. DATA &FFFF25
  793. DATA &FFFF2C
  794. DATA &FFFF33
  795. DATA &FFFF3A
  796. DATA &FFFF41
  797. DATA &FFFF48
  798. DATA &FFFF50
  799. DATA &FFFF58
  800. DATA &FFFF60
  801. DATA &FFFF69
  802. DATA &FFFF71
  803. DATA &FFFF79
  804. DATA &FFFF82
  805. DATA &FFFF8C
  806. DATA &FFFF97
  807. DATA &FFFFA1
  808. DATA &FFFFAB
  809. DATA &FFFFB6
  810. DATA &FFFFBF
  811. DATA &FFFFC9
  812. DATA &FFFFD1
  813. DATA &FFFFDA
  814. DATA &FFFFE2
  815. DATA &FFFFE9
  816. DATA &FFFFF0
  817. DATA &FFFFF6
  818. DATA &FFFFFB
  819. DATA &FFFFFF
  820. DATA &FFFFFF
  821. DATA &FFFFFF
  822. DATA &FFFFFF
  823. DATA &FFFFFF
  824. DATA &FFFFFF
  825. DATA &FFFFFF
  826. DATA &FFFFFF
  827. DATA &FFFFFF
  828. DATA &FFFFFF
  829. DATA &FFFFFF
  830. DATA &FFFFFF
  831. DATA &FFFFFF
  832. DATA &FFFFFF
  833. DATA &FFFFFF
  834. DATA &FFFFFF
  835. DATA &FFFFFF
  836. DATA &FFFFFF
  837. DATA &FFFFFF
  838. DATA &FFFFFF
  839. DATA &FFFFFF
  840. DATA &FFFFFF
  841. DATA &FFFFFF
  842. DATA &FFFFFF
  843. DATA &FFFFFF
  844. DATA &FFFFFF
  845. DATA &FFFFFF
  846. DATA &FFFFFF
  847. DATA &FFFFFF
  848. DATA &FFFFFF
  849. DATA &FFFFFF
  850. DATA &FFFFFF
  851. DATA &FFFFFF
  852. DATA &FFFFFF
  853. DATA &FFFFFF
  854. DATA &FFFFFF
  855. DATA &FFFFFF
  856. DATA &FFFFFF
  857. DATA &FFFFFF
  858. DATA &FFFFFF
  859. DATA &FFFFFF
  860. DATA &FFFFFF
  861. DATA &FFFFFF
  862. DATA &FFFFFF
  863. DATA &FFFFFF
  864. DATA &FFFFFF
  865. DATA &FFFFFF
  866. DATA &FFFFFF
  867. DATA &FFFFFF
  868. DATA &FFFFFF
  869. DATA &FFFFFF
  870. DATA &FFFFFF
  871. DATA &FFFFFF
  872. DATA &FFFFFF
  873. DATA &FFFFFF
  874. DATA &FFFFFF
  875. DATA &FFFFFF
  876. DATA &FFFFFF
  877. DATA &FFFFFF
  878. DATA &FFFFFF
  879. DATA &FFFFFF
  880. DATA &FFFFFF
  881. DATA &FFFFFF
  882. DATA &FFFFFF
  883. DATA &FFFFFF
  884. DATA &FFFFFF
  885. DATA &FFFFFF
  886. DATA &FFFFFF
  887. DATA &FFFFFF
  888. DATA &FFFFFF
  889. DATA &FFFFFF
  890. DATA &FFFFFF
  891. DATA &FFFFFF
  892. DATA &FFFFFF
  893. DATA &FFFFFF
  894. DATA &FFFFFF
  895. DATA &FFFFFF
  896. DATA &FFFFFF
  897. DATA &FFFFFF
  898. DATA &FFFFFF
  899. DATA &FFFFFF
  900. DATA &FFFFFF
  901. DATA &FFFFFF
  902. DATA &FFFFFF
  903. DATA &FFFFFF
  904. DATA &FFFFFF
  905. DATA &FFFFFF
  906. DATA &FFFFFF
  907. DATA &FFFFFF
  908. DATA &FFFFFF
  909. DATA &FFFFFF
  910. DATA &FFFFFF
  911. DATA &FFFFFF
  912. DATA &FFFFFF
  913. DATA &FFFFFF
  914. DATA &FFFFFF
  915. DATA &FFFFFF
  916. DATA &FFFFFF
  917. DATA &FFFFFF
  918. DATA &FFFFFF
  919. DATA &FFFFFF
  920. DATA &FFFFFF
  921. DATA &FFFFFF
  922. DATA &FFFFFF
  923. DATA &FFFFFF
  924. DATA &FFFFFF
  925. DATA &FFFFFF
  926. DATA &FFFFFF
  927. DATA &FFFFFF
  928. DATA &FFFFFF
  929. DATA &FFFFFF
  930. DATA &FFFFFF
  931. DATA &FFFFFF
  932. DATA &FFFFFF
  933. DATA &FFFFFF
  934. DATA &FFFFFF
  935. DATA &FFFFFF
  936. DATA &FFFFFF
  937. DATA &FFFFFF
  938. DATA &FFFFFF
  939. DATA &FFFFFF
  940. DATA &FFFFFF
  941. DATA &FFFFFF
  942. DATA &FFFFFF
  943. DATA &FFFFFF
  944. DATA &FFFFFF
  945. DATA &FFFFFF
  946. DATA &FFFFFF
  947. DATA &FFFFFF
  948. DATA &FFFFFF
  949. DATA &FFFFFF
  950. DATA &FFFFFF
  951. DATA &FFFFFF
  952. DATA &FFFFFF
  953. DATA &FFFFFF
  954. DATA &FFFFFF
  955. DATA &FFFFFF
  956. DATA &FFFFFF
  957. DATA &FFFFFF
  958. DATA &FFFFFF
  959. DATA &FFFFFF
  960. DATA &FFFFFF
  961. DATA &FFFFFF
  962. DATA &FFFFFF
  963. DATA &FFFFFF
  964. DATA &FFFFFF
  965. DATA &FFFFFF
  966. DATA &FFFFFF
  967. DATA &FFFFFF
  968. DATA &FFFFFF
  969. DATA &FFFFFF
  970. DATA &FFFFFF
  971. DATA &FFFFFF
  972. DATA &FFFFFF
  973. DATA &FFFFFF
  974. DATA &FFFFFF
  975. DATA &FFFFFF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement